diff --git a/DEPS b/DEPS index 4dd510b6..6c9c911 100644 --- a/DEPS +++ b/DEPS
@@ -284,11 +284,11 @@ # 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': 'f2c525e817d83d7eefc67fcb27e3b77c4fa48742', + 'v8_revision': 'c55e2af970bcc5dfee0165c7b5aeccad62666fd6', # 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': '21c89c14831c0997742ed7c71e467ac90b180d2c', + 'angle_revision': '32c38e55ed44f22a99d227036fbd9059b24ebde6', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -331,7 +331,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': '47103b2f195e0f9664c9470182f063cb7d41dc9f', + 'freetype_revision': '4b6f92e6b3d0d99a839448bc897673b849981997', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -359,7 +359,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': 'cb1f7fe353d70c1ed1d4e41ab6675b2a83073f2e', + 'devtools_frontend_revision': '451dff4f370af90746b0cf8e9af8bf066cc8376d', # 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. @@ -395,7 +395,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': 'ffd3351ac51b400ff8b1644a54d3ca09dcdc3821', + 'dawn_revision': '3b3ef3624120551e2599c6a02bee1e8de3b01b0f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -466,7 +466,7 @@ 'libcxx_revision': 'b1269813eaf5b8ac78e35e45a0f7cc320bd3e7d6', # GN CIPD package version. - 'gn_version': 'git_revision:fcda46cf40422284f2e74b770da8b22f7f5d7006', + 'gn_version': 'git_revision:8883070fe77f9b484818e73e5892c08ca8a0fe7f', } # Only these hosts are allowed for dependencies in this DEPS file. @@ -617,7 +617,7 @@ 'packages': [ { 'package': 'chromium/third_party/updater/chrome_mac_universal', - 'version': 'vE_TO22Lykmt0Fiz5G8bN3pDSBCf9SDzn4a5HTyh_osC', + 'version': '3UoNd4X57YAONz6mhQPapIUoO1Ds6K5AIHTAZxNmLUUC', }, ], }, @@ -756,7 +756,7 @@ Var('chromium_git') + '/external/github.com/toji/webvr.info.git' + '@' + 'c58ae99b9ff9e2aa4c524633519570bf33536248', 'src/docs/website': { - 'url': Var('chromium_git') + '/website.git' + '@' + '4d915d5194f841f7dc7c59ef79999cdfa5850994', + 'url': Var('chromium_git') + '/website.git' + '@' + 'f754e2d8945e4500e4cb862d51f2a2289abb7be1', }, 'src/ios/third_party/earl_grey2/src': { @@ -850,7 +850,7 @@ 'packages': [ { 'package': 'chromium/rts/model/linux-amd64', - 'version': 'ZC3kqpoDAwfKJRomJp-VLoZpHAg2T-zaeP2tl845aK8C', + 'version': 'Wl6laXAv3QcBejp79gWdf6YQ5arK939SeUdPw0jweRsC', }, ], 'dep_type': 'cipd', @@ -861,7 +861,7 @@ 'packages': [ { 'package': 'chromium/rts/model/mac-amd64', - 'version': 'DTjo1uX71TXKzh1PkkynRjOoT7oLyq1xScSwqbnxBo8C', + 'version': 'rBaMMFN6UzwoR4I8XO4qmYnsjW2yra718cbXHaNQvjYC', }, ], 'dep_type': 'cipd', @@ -872,7 +872,7 @@ 'packages': [ { 'package': 'chromium/rts/model/windows-amd64', - 'version': 'KZTmv4YwstRZQKROdB3NB7qoYiYMRQOyKVTFQAQ8ROcC', + 'version': '9HAfnCiM-qWdfeUj64pS0sz_44H0odG5K3nS6EUm8KUC', }, ], 'dep_type': 'cipd', @@ -1542,7 +1542,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'b983faf1bf12b3c7a9b23ab845aec30024da795a', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '5c85522e6e4c1670e58b341f05b68892df56a3c7', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1712,7 +1712,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'f8000b0ea82de00b3cc7d337e7521d1e94fed587', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '86ebbdba50c6f1c9fe5971b1fdd6317da2261a84', + Var('webrtc_git') + '/src.git' + '@' + '573b145ab51ea59394b4763dece7b54751eea424', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1785,7 +1785,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@c4ef80a42c4fd42a4b4f8c3f92066658432a4d09', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@b502c2cb1ea4a926ac1e9cf33a78fb4e6fe0f08c', 'condition': 'checkout_src_internal', }, @@ -1837,7 +1837,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': '4sFgdFdoykTNSb13E-bijeKmgWbkO3Gweg5ViCGEKnYC', + 'version': 'liVdNj_9nO42XGCZf68gYmXhBK1ly1TQMszGmZpR9AUC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/browser/BUILD.gn b/android_webview/browser/BUILD.gn index aaf26bd..1e0721d6 100644 --- a/android_webview/browser/BUILD.gn +++ b/android_webview/browser/BUILD.gn
@@ -217,6 +217,7 @@ "//components/content_capture/android", "//components/content_capture/browser", "//components/embedder_support:browser_util", + "//components/embedder_support:embedder_support", "//components/embedder_support/android:util", "//components/embedder_support/origin_trials", "//components/favicon_base:favicon_base",
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc index d9bc031..4d73246 100644 --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc
@@ -54,6 +54,7 @@ #include "build/build_config.h" #include "components/cdm/browser/cdm_message_filter_android.h" #include "components/crash/content/browser/crash_handler_host_linux.h" +#include "components/embedder_support/switches.h" #include "components/embedder_support/user_agent_utils.h" #include "components/navigation_interception/intercept_navigation_delegate.h" #include "components/page_load_metrics/browser/metrics_navigation_throttle.h" @@ -347,15 +348,15 @@ DCHECK(process_type == switches::kRendererProcess || process_type == switches::kUtilityProcess) << process_type; - // Pass crash reporter enabled state to renderer processes. - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - ::switches::kEnableCrashReporter)) { - command_line->AppendSwitch(::switches::kEnableCrashReporter); - } - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - ::switches::kEnableCrashReporterForTesting)) { - command_line->AppendSwitch(::switches::kEnableCrashReporterForTesting); - } + + static const char* const kSwitchNames[] = { + ::switches::kEnableCrashReporter, + ::switches::kEnableCrashReporterForTesting, + embedder_support::kOriginTrialDisabledFeatures, + }; + + command_line->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(), + kSwitchNames, std::size(kSwitchNames)); } }
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java index f90ba99..3bc72e0 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/services/JsSandboxServiceTest.java
@@ -21,6 +21,7 @@ import org.chromium.android_webview.test.AwJUnit4ClassRunner; import org.chromium.base.ContextUtils; +import java.nio.charset.StandardCharsets; import java.util.Vector; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -224,4 +225,164 @@ } jsSandbox.close(); } + + @Test + @MediumTest + public void testSimpleArrayBuffer() throws Throwable { + final String provideString = "Hello World"; + final byte[] bytes = provideString.getBytes(StandardCharsets.US_ASCII); + final String code = "" + + "function ab2str(buf) {" + + " return String.fromCharCode.apply(null, new Uint8Array(buf));" + + "}" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return ab2str(value);" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + boolean provideNamedDataReturn = jsIsolate.provideNamedData("id-1", bytes); + Assert.assertTrue(provideNamedDataReturn); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(provideString, result); + } + } + + @Test + @MediumTest + public void testArrayBufferWasmCompilation() throws Throwable { + final String success = "success"; + // The bytes of a minimal WebAssembly module, courtesy of v8/test/cctest/test-api-wasm.cc + final byte[] bytes = {0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00}; + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return WebAssembly.compile(value).then((module) => {" + + " return \"success\";" + + " });" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + boolean provideNamedDataReturn = jsIsolate.provideNamedData("id-1", bytes); + Assert.assertTrue(provideNamedDataReturn); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(success, result); + } + } + + @Test + @MediumTest + public void testPromiseReturn() throws Throwable { + final String code = "Promise.resolve(\"PASS\")"; + final String expected = "PASS"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture = jsIsolate.evaluateJavascript(code); + String result = resultFuture.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(expected, result); + } + } + + @Test + @MediumTest + public void testPromiseReturnLaterResolve() throws Throwable { + final String code1 = "var promiseResolve, promiseReject;" + + "new Promise(function(resolve, reject){" + + " promiseResolve = resolve;" + + " promiseReject = reject;" + + "});"; + final String code2 = "promiseResolve(\"PASS\");"; + final String expected = "PASS"; + Context context = ContextUtils.getApplicationContext(); + + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code1); + ListenableFuture<String> resultFuture2 = jsIsolate.evaluateJavascript(code2); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(expected, result); + } + } + + @Test + @MediumTest + public void testNestedConsumeNamedDataAsArrayBuffer() throws Throwable { + final String success = "success"; + // The bytes of a minimal WebAssembly module, courtesy of v8/test/cctest/test-api-wasm.cc + final byte[] bytes = {0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00}; + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-2\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-3\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-4\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-5\").then((value) => {" + + " return \"success\";" + + " }, (error) => {" + + " return error.message;" + + " });" + + " });" + + " });" + + " });" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + jsIsolate.provideNamedData("id-1", bytes); + jsIsolate.provideNamedData("id-2", bytes); + jsIsolate.provideNamedData("id-3", bytes); + jsIsolate.provideNamedData("id-4", bytes); + jsIsolate.provideNamedData("id-5", bytes); + Thread.sleep(1000); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(success, result); + } + } + + @Test + @MediumTest + public void testPromiseEvaluationThrow() throws Throwable { + final String provideString = "Hello World"; + final byte[] bytes = provideString.getBytes(StandardCharsets.US_ASCII); + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").catch((error) => {" + + " throw new WebAssembly.LinkError('RandomLinkError');" + + "});"; + final String contains = "RandomLinkError"; + Context context = ContextUtils.getApplicationContext(); + + ListenableFuture<AwJsSandbox> awJsSandboxFuture = + AwJsSandbox.newConnectedInstanceForTesting(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture = jsIsolate.evaluateJavascript(code); + try { + String result = resultFuture.get(5, TimeUnit.SECONDS); + Assert.fail("Should have thrown."); + } catch (ExecutionException e) { + if (!(e.getCause() instanceof EvaluationFailedException)) { + throw e; + } + Assert.assertTrue(e.getCause().getMessage().contains(contains)); + } + } + } }
diff --git a/android_webview/js_sandbox/DEPS b/android_webview/js_sandbox/DEPS index b462077..681254d 100644 --- a/android_webview/js_sandbox/DEPS +++ b/android_webview/js_sandbox/DEPS
@@ -1,3 +1,4 @@ include_rules = [ "+gin", + "+v8/include", ]
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsIsolate.java b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsIsolate.java index 0608a12..887cd2d 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsIsolate.java +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsIsolate.java
@@ -4,10 +4,13 @@ package org.chromium.android_webview.js_sandbox.client; +import android.content.res.AssetFileDescriptor; import android.os.Build; +import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.util.Log; +import androidx.annotation.NonNull; import androidx.concurrent.futures.CallbackToFutureAdapter; import com.google.common.util.concurrent.ListenableFuture; @@ -16,18 +19,33 @@ import org.chromium.android_webview.js_sandbox.common.IJsSandboxIsolate; import org.chromium.android_webview.js_sandbox.common.IJsSandboxIsolateCallback; +import java.io.Closeable; +import java.io.IOException; +import java.io.OutputStream; import java.util.HashSet; import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.concurrent.GuardedBy; -/** Provides a sandboxed execution Isolate. This class is thread-safe. */ +/** Provides a sandboxed execution Isolate. This class should be accessed in a single-thread. */ public class AwJsIsolate implements AutoCloseable { private static final String TAG = "AwJsIsolate"; private final Object mSetLock = new Object(); private IJsSandboxIsolate mJsIsolateStub; private android.util.CloseGuard mGuard; - private Executor mExecutor; + private Executor mMainExecutor; + private final Executor mThreadPoolTaskExecutor = + Executors.newCachedThreadPool(new ThreadFactory() { + private final AtomicInteger mCount = new AtomicInteger(1); + + @Override + public Thread newThread(Runnable r) { + return new Thread(r, "AwJsIsolate Thread #" + mCount.getAndIncrement()); + } + }); @GuardedBy("mSetLock") private HashSet<CallbackToFutureAdapter.Completer> mPendingCompleterSet = @@ -55,7 +73,7 @@ } AwJsIsolate(IJsSandboxIsolate jsIsolateStub, Executor executor) { - mExecutor = executor; + mMainExecutor = executor; mJsIsolateStub = jsIsolateStub; if (Build.VERSION.SDK_INT >= 30) { mGuard = new android.util.CloseGuard(); @@ -116,6 +134,45 @@ } } + public boolean provideNamedData(@NonNull String name, byte[] inputBytes) { + if (mJsIsolateStub == null) { + throw new IllegalStateException("Calling provideNamedData() after closing the Isolate"); + } + if (name == null) { + throw new NullPointerException("name parameter cannot be null"); + } + try { + ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); + ParcelFileDescriptor readSide = pipe[0]; + ParcelFileDescriptor writeSide = pipe[1]; + OutputStream outputStream = new ParcelFileDescriptor.AutoCloseOutputStream(writeSide); + + mThreadPoolTaskExecutor.execute( + () -> { convertByteArrayToStream(inputBytes, outputStream); }); + + final long offset = 0; + final long length = inputBytes.length; + AssetFileDescriptor asd = new AssetFileDescriptor(readSide, offset, length); + return mJsIsolateStub.provideNamedData(name, asd); + } catch (RemoteException e) { + Log.e(TAG, "RemoteException was thrown during provideNamedData()", e); + } catch (IOException e) { + Log.e(TAG, "IOException was thrown during provideNamedData", e); + } + return false; + } + + private void convertByteArrayToStream(byte[] inputBytes, OutputStream outputStream) { + try { + outputStream.write(inputBytes); + outputStream.flush(); + } catch (IOException e) { + Log.e(TAG, "Writing to outputStream failed", e); + } finally { + closeQuietly(outputStream); + } + } + private void cancelAllPendingEvaluations(Exception e) { final HashSet<CallbackToFutureAdapter.Completer> pendingSet; synchronized (mSetLock) { @@ -135,6 +192,15 @@ } } + private static void closeQuietly(Closeable closeable) { + if (closeable == null) return; + try { + closeable.close(); + } catch (IOException ex) { + // Ignore the exception on close. + } + } + @Override protected void finalize() throws Throwable { try {
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsSandbox.java b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsSandbox.java index 8460375..cf69063 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsSandbox.java +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/client/AwJsSandbox.java
@@ -149,7 +149,7 @@ }); } - // We prevent direct initialitations of this class. Use AwJsSandbox.newConnectedInstance(). + // We prevent direct initializations of this class. Use AwJsSandbox.newConnectedInstance(). private AwJsSandbox(ConnectionSetup connectionSetup, IJsSandboxService jsSandboxService) { mConnection = connectionSetup; mJsSandboxService = jsSandboxService;
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolate.aidl b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolate.aidl index 13f596ef..b4f49a38 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolate.aidl +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxIsolate.aidl
@@ -4,6 +4,7 @@ package org.chromium.android_webview.js_sandbox.common; +import android.content.res.AssetFileDescriptor; import org.chromium.android_webview.js_sandbox.common.IJsSandboxIsolateCallback; /** @@ -22,4 +23,14 @@ * Stop the execution of the Isolate as soon as possible and destroy it. */ void close() = 1; + + /** + * Provides the data represented by afd such that it can be + * retrieved in the JS code by calling `consumeNamedDataAs*(name)` APIs. + * @param name the id used to refer to the data in JS. + * @param afd input AssetFileDescriptor which will be read to retrieve data. + * @return true if data with the given name can be retrieved + * in JS code, else false. + */ + boolean provideNamedData(String name, in AssetFileDescriptor afd) = 2; }
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxService.aidl b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxService.aidl index cbcc573..5eb164e 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxService.aidl +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/common/IJsSandboxService.aidl
@@ -19,6 +19,17 @@ const String ISOLATE_TERMINATION = "ISOLATE_TERMINATION"; /** + * This feature flag is a combination of three sub-features: + * - If evaluateJavascript() returns a promise, we wait for the promise + * to resolve and then return the resolved value. + * - Supports Java API provideNamedData() and JS API + * android.consumeNamedDataAsArrayBuffer(). + * - WebAssembly.compile() API is supported. Wasm can be compiled from + * an array buffer. + */ + const String WASM_FROM_ARRAY_BUFFER = "WASM_FROM_ARRAY_BUFFER"; + + /** * @return A list of feature names supported by this implementation. */ List<String> getSupportedFeatures() = 1;
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxIsolate.java b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxIsolate.java index 05b8fdaf..12a2c8c 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxIsolate.java +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxIsolate.java
@@ -4,6 +4,7 @@ package org.chromium.android_webview.js_sandbox.service; +import android.content.res.AssetFileDescriptor; import android.os.RemoteException; import org.chromium.android_webview.js_sandbox.common.IJsSandboxIsolate; @@ -20,7 +21,6 @@ public class JsSandboxIsolate extends IJsSandboxIsolate.Stub { private static final String TAG = "JsSandboxIsolate"; private final Object mLock = new Object(); - @GuardedBy("mLock") private long mJsSandboxIsolate; @@ -67,6 +67,31 @@ } } + @Override + public boolean provideNamedData(String name, AssetFileDescriptor afd) { + synchronized (mLock) { + if (mJsSandboxIsolate == 0) { + throw new IllegalStateException( + "provideNamedData(String, AssetFileDescriptor) called after close()"); + } + if (afd.getStartOffset() != 0) { + throw new UnsupportedOperationException( + "AssetFileDescriptor.getStartOffset() != 0"); + } + if (afd.getLength() < 0) { + throw new UnsupportedOperationException( + "AssetFileDescriptor.getLength() should be >=0"); + } + if (afd.getLength() > Integer.MAX_VALUE) { + throw new IllegalArgumentException( + "AssetFileDescriptor.getLength() should be < 2^31"); + } + boolean nativeReturn = JsSandboxIsolateJni.get().provideNamedData(mJsSandboxIsolate, + this, name, afd.getParcelFileDescriptor().detachFd(), (int) afd.getLength()); + return nativeReturn; + } + } + public static void initializeEnvironment() { JsSandboxIsolateJni.get().initializeEnvironment(); } @@ -82,5 +107,8 @@ boolean evaluateJavascript(long nativeJsSandboxIsolate, JsSandboxIsolate caller, String script, Callback<String> successCallback, Callback<String> failureCallback); + + boolean provideNamedData(long nativeJsSandboxIsolate, JsSandboxIsolate caller, String name, + int fd, int length); } }
diff --git a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxService.java b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxService.java index ff3b5b8d..71b3bf4 100644 --- a/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxService.java +++ b/android_webview/js_sandbox/java/src/org/chromium/android_webview/js_sandbox/service/JsSandboxService.java
@@ -20,8 +20,8 @@ public class JsSandboxService extends Service { private static final String TAG = "JsSandboxService"; - private static final List<String> SUPPORTED_FEATURES = - Arrays.asList(IJsSandboxService.ISOLATE_TERMINATION); + private static final List<String> SUPPORTED_FEATURES = Arrays.asList( + IJsSandboxService.ISOLATE_TERMINATION, IJsSandboxService.WASM_FROM_ARRAY_BUFFER); private final IJsSandboxService.Stub mBinder = new IJsSandboxService.Stub() { @Override
diff --git a/android_webview/js_sandbox/javatests/src/org/chromium/webview_js_sandbox_test/test/WebViewJsSandboxTest.java b/android_webview/js_sandbox/javatests/src/org/chromium/webview_js_sandbox_test/test/WebViewJsSandboxTest.java index bbc146d0..8f84164 100644 --- a/android_webview/js_sandbox/javatests/src/org/chromium/webview_js_sandbox_test/test/WebViewJsSandboxTest.java +++ b/android_webview/js_sandbox/javatests/src/org/chromium/webview_js_sandbox_test/test/WebViewJsSandboxTest.java
@@ -21,6 +21,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.test.BaseJUnit4ClassRunner; +import java.nio.charset.StandardCharsets; import java.util.Vector; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -226,4 +227,158 @@ Assert.assertTrue(jsSandbox.isIsolateTerminationSupported()); } } + + @Test + @MediumTest + public void testSimpleArrayBuffer() throws Throwable { + final String provideString = "Hello World"; + final byte[] bytes = provideString.getBytes(StandardCharsets.US_ASCII); + final String code = "" + + "function ab2str(buf) {" + + " return String.fromCharCode.apply(null, new Uint8Array(buf));" + + "}" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return ab2str(value);" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + boolean provideNamedDataReturn = jsIsolate.provideNamedData("id-1", bytes); + Assert.assertTrue(provideNamedDataReturn); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(provideString, result); + } + } + + @Test + @MediumTest + public void testArrayBufferWasmCompilation() throws Throwable { + final String success = "success"; + // The bytes of a minimal WebAssembly module, courtesy of v8/test/cctest/test-api-wasm.cc + final byte[] bytes = {0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00}; + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return WebAssembly.compile(value).then((module) => {" + + " return \"success\";" + + " });" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + boolean provideNamedDataReturn = jsIsolate.provideNamedData("id-1", bytes); + Assert.assertTrue(provideNamedDataReturn); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(success, result); + } + } + + @Test + @MediumTest + public void testPromiseReturn() throws Throwable { + final String code = "Promise.resolve(\"PASS\")"; + final String expected = "PASS"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture = jsIsolate.evaluateJavascript(code); + String result = resultFuture.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(expected, result); + } + } + + @Test + @MediumTest + public void testPromiseReturnLaterResolve() throws Throwable { + final String code1 = "var promiseResolve, promiseReject;" + + "new Promise(function(resolve, reject){" + + " promiseResolve = resolve;" + + " promiseReject = reject;" + + "});"; + final String code2 = "promiseResolve(\"PASS\");"; + final String expected = "PASS"; + Context context = ContextUtils.getApplicationContext(); + + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code1); + ListenableFuture<String> resultFuture2 = jsIsolate.evaluateJavascript(code2); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(expected, result); + } + } + + @Test + @MediumTest + public void testNestedConsumeNamedDataAsArrayBuffer() throws Throwable { + final String success = "success"; + // The bytes of a minimal WebAssembly module, courtesy of v8/test/cctest/test-api-wasm.cc + final byte[] bytes = {0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00}; + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-2\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-3\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-4\").then((value) => {" + + " return android.consumeNamedDataAsArrayBuffer(\"id-5\").then((value) => {" + + " return \"success\";" + + " }, (error) => {" + + " return error.message;" + + " });" + + " });" + + " });" + + " });" + + "});"; + Context context = ContextUtils.getApplicationContext(); + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + jsIsolate.provideNamedData("id-1", bytes); + jsIsolate.provideNamedData("id-2", bytes); + jsIsolate.provideNamedData("id-3", bytes); + jsIsolate.provideNamedData("id-4", bytes); + jsIsolate.provideNamedData("id-5", bytes); + Thread.sleep(1000); + ListenableFuture<String> resultFuture1 = jsIsolate.evaluateJavascript(code); + String result = resultFuture1.get(5, TimeUnit.SECONDS); + + Assert.assertEquals(success, result); + } + } + + @Test + @MediumTest + public void testPromiseEvaluationThrow() throws Throwable { + final String provideString = "Hello World"; + final byte[] bytes = provideString.getBytes(StandardCharsets.US_ASCII); + final String code = "" + + "android.consumeNamedDataAsArrayBuffer(\"id-1\").catch((error) => {" + + " throw new WebAssembly.LinkError('RandomLinkError');" + + "});"; + final String contains = "RandomLinkError"; + Context context = ContextUtils.getApplicationContext(); + + ListenableFuture<AwJsSandbox> awJsSandboxFuture = AwJsSandbox.newConnectedInstance(context); + try (AwJsSandbox jsSandbox = awJsSandboxFuture.get(5, TimeUnit.SECONDS); + AwJsIsolate jsIsolate = jsSandbox.createIsolate()) { + ListenableFuture<String> resultFuture = jsIsolate.evaluateJavascript(code); + try { + String result = resultFuture.get(5, TimeUnit.SECONDS); + Assert.fail("Should have thrown."); + } catch (ExecutionException e) { + if (!(e.getCause() instanceof EvaluationFailedException)) { + throw e; + } + Assert.assertTrue(e.getCause().getMessage().contains(contains)); + } + } + } }
diff --git a/android_webview/js_sandbox/service/js_sandbox_isolate.cc b/android_webview/js_sandbox/service/js_sandbox_isolate.cc index d57cd6c..76849b1 100644 --- a/android_webview/js_sandbox/service/js_sandbox_isolate.cc +++ b/android_webview/js_sandbox/service/js_sandbox_isolate.cc
@@ -4,6 +4,7 @@ #include "android_webview/js_sandbox/service/js_sandbox_isolate.h" +#include <unistd.h> #include <algorithm> #include <memory> #include <string> @@ -13,19 +14,27 @@ #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "base/bind.h" +#include "base/files/file_util.h" #include "base/logging.h" #include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" +#include "base/task/cancelable_task_tracker.h" #include "base/task/thread_pool.h" #include "base/task/thread_pool/thread_pool_instance.h" #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" +#include "gin/arguments.h" #include "gin/array_buffer.h" +#include "gin/function_template.h" +#include "gin/public/context_holder.h" #include "gin/public/isolate_holder.h" #include "gin/try_catch.h" #include "gin/v8_initializer.h" #include "js_sandbox_isolate.h" +#include "v8/include/v8-function.h" +#include "v8/include/v8-microtask-queue.h" +#include "v8/include/v8-template.h" using base::android::ConvertJavaStringToUTF8; using base::android::ConvertUTF8ToJavaString; @@ -44,14 +53,9 @@ return maybe.ToLocal(&source_line) ? source_line : v8::String::Empty(isolate); } -// Logic borrowed and kept similar to gin::TryCatch::GetStackTrace() -std::string GetStackTrace(v8::TryCatch& try_catch, v8::Isolate* isolate) { - if (!try_catch.HasCaught()) { - return ""; - } - +std::string GetStackTrace(v8::Local<v8::Message>& message, + v8::Isolate* isolate) { std::stringstream ss; - v8::Local<v8::Message> message = try_catch.Message(); ss << gin::V8ToString(isolate, message->Get()) << std::endl << gin::V8ToString(isolate, GetSourceLine(isolate, message)) << std::endl; @@ -68,10 +72,49 @@ } return ss.str(); } + +// Logic borrowed and kept similar to gin::TryCatch::GetStackTrace() +std::string GetStackTrace(v8::TryCatch& try_catch, v8::Isolate* isolate) { + if (!try_catch.HasCaught()) { + return ""; + } + v8::Local<v8::Message> message = try_catch.Message(); + return GetStackTrace(message, isolate); +} + +void WasmAsyncResolvePromiseCallback(v8::Isolate* isolate, + v8::Local<v8::Context> context, + v8::Local<v8::Promise::Resolver> resolver, + v8::Local<v8::Value> compilation_result, + v8::WasmAsyncSuccess success) { + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); + if (success == v8::WasmAsyncSuccess::kSuccess) { + CHECK(resolver->Resolve(context, compilation_result).FromJust()); + } else { + CHECK(resolver->Reject(context, compilation_result).FromJust()); + } +} } // namespace namespace android_webview { +class FdWithLength { + public: + base::ScopedFD fd; + ssize_t length; + + FdWithLength(int fd, ssize_t len); + ~FdWithLength() = default; + FdWithLength(FdWithLength&&) = default; + FdWithLength& operator=(FdWithLength&&) = default; +}; + +FdWithLength::FdWithLength(int fd_input, ssize_t len) { + fd = base::ScopedFD(fd_input); + length = len; +} + JsSandboxIsolate::JsSandboxIsolate() { control_task_runner_ = base::ThreadPool::CreateSequencedTaskRunner({}); isolate_task_runner_ = base::ThreadPool::CreateSingleThreadTaskRunner( @@ -126,6 +169,20 @@ base::Unretained(this))); } +// Called from Binder thread. +jboolean JsSandboxIsolate::ProvideNamedData( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj, + const base::android::JavaParamRef<jstring>& jname, + const jint fd, + const jint length) { + std::string name = ConvertJavaStringToUTF8(env, jname); + base::AutoLock hold(named_fd_lock_); + FdWithLength fd_with_length(fd, length); + return named_fd_.insert(std::make_pair(name, std::move(fd_with_length))) + .second; +} + // Called from control sequence. void JsSandboxIsolate::PostEvaluationToIsolateThread( const std::string code, @@ -170,6 +227,76 @@ isolate_init_complete = true; } +// Called from control sequence. +void JsSandboxIsolate::ConvertPromiseToArrayBufferInControlSequence( + std::string name, + std::unique_ptr<v8::BackingStore> backing_store) { + cancelable_task_tracker_->PostTask( + isolate_task_runner_.get(), FROM_HERE, + base::BindOnce( + &JsSandboxIsolate::ConvertPromiseToArrayBufferInIsolateSequence, + base::Unretained(this), std::move(name), std::move(backing_store))); +} + +// Called from control sequence. +void JsSandboxIsolate::ConvertPromiseToFailureInControlSequence( + std::string name, + std::string reason) { + cancelable_task_tracker_->PostTask( + isolate_task_runner_.get(), FROM_HERE, + base::BindOnce( + &JsSandboxIsolate::ConvertPromiseToFailureInIsolateSequence, + base::Unretained(this), std::move(name), std::move(reason))); +} + +// Called from Thread pool. +void JsSandboxIsolate::ConvertPromiseToArrayBufferInThreadPool( + base::ScopedFD fd, + ssize_t length, + std::string name) { + char* buffer = + (char*)gin::ArrayBufferAllocator::SharedInstance()->Allocate(length); + if (base::ReadFromFD(fd.get(), buffer, length)) { + auto deleter = [](void* buffer, size_t length, void* data) { + gin::ArrayBufferAllocator::SharedInstance()->Free(buffer, length); + }; + + std::unique_ptr<v8::BackingStore> backing_store = + v8::ArrayBuffer::NewBackingStore(buffer, length, deleter, nullptr); + control_task_runner_->PostTask( + FROM_HERE, + base::BindOnce( + &JsSandboxIsolate::ConvertPromiseToArrayBufferInControlSequence, + base::Unretained(this), std::move(name), std::move(backing_store))); + } else { + gin::ArrayBufferAllocator::SharedInstance()->Free(buffer, length); + std::string failure_reason = "Reading data failed."; + control_task_runner_->PostTask( + FROM_HERE, + base::BindOnce( + &JsSandboxIsolate::ConvertPromiseToFailureInControlSequence, + base::Unretained(this), std::move(name), + std::move(failure_reason))); + } +} + +// Called from isolate thread. +v8::Local<v8::ObjectTemplate> JsSandboxIsolate::CreateAndroidNamespaceTemplate( + v8::Isolate* isolate) { + v8::Local<v8::ObjectTemplate> android_namespace_template = + v8::ObjectTemplate::New(isolate); + v8::Local<v8::ObjectTemplate> consume_template = + v8::ObjectTemplate::New(isolate); + consume_template->Set( + isolate, "consumeNamedDataAsArrayBuffer", + gin::CreateFunctionTemplate( + isolate, + base::BindRepeating(&JsSandboxIsolate::ConsumeNamedDataAsArrayBuffer, + base::Unretained(this)))); + android_namespace_template->Set(isolate, "android", consume_template); + return android_namespace_template; +} + // Called from isolate thread. void JsSandboxIsolate::DeleteSelf() { delete this; @@ -182,9 +309,14 @@ gin::IsolateHolder::IsolateType::kUtility); v8::Isolate* isolate = isolate_holder_->isolate(); v8::Isolate::Scope isolate_scope(isolate); + isolate->SetMicrotasksPolicy(v8::MicrotasksPolicy::kAuto); + isolate->SetWasmAsyncResolvePromiseCallback(WasmAsyncResolvePromiseCallback); v8::HandleScope handle_scope(isolate); + + v8::Local<v8::ObjectTemplate> android_template = + CreateAndroidNamespaceTemplate(isolate); v8::Local<v8::Context> context = - v8::Context::New(isolate, NULL, v8::Local<v8::ObjectTemplate>()); + v8::Context::New(isolate, nullptr, android_template); context_holder_ = std::make_unique<gin::ContextHolder>(isolate); context_holder_->SetContext(context); @@ -233,13 +365,144 @@ } v8::Local<v8::Value> value; if (maybe_result.ToLocal(&value)) { - std::string result = gin::V8ToString(v8_isolate, value); - std::move(success_callback).Run(result); + if (value->IsPromise()) { + v8::Local<v8::Promise> promise = value.As<v8::Promise>(); + // If the promise is already completed, retrieve and handle the result + // directly. + if (promise->State() == v8::Promise::PromiseState::kFulfilled) { + std::string result = gin::V8ToString(v8_isolate, promise->Result()); + std::move(success_callback).Run(result); + return; + } + if (promise->State() == v8::Promise::PromiseState::kRejected) { + v8::Local<v8::Message> message = v8::Exception::CreateMessage( + isolate_holder_->isolate(), promise->Result()); + std::string error_message = GetStackTrace(message, v8_isolate); + std::move(error_callback).Run(error_message); + return; + } + v8::Local<v8::Function> fulfill_fun = + gin::CreateFunctionTemplate( + v8_isolate, + base::BindRepeating( + [](FinishedCallback success_callback, gin::Arguments* args) { + std::string output; + args->GetNext(&output); + std::move(success_callback).Run(output); + }, + base::Passed(std::move(success_callback)))) + ->GetFunction(context_holder_->context()) + .ToLocalChecked(); + v8::Local<v8::Function> reject_fun = + gin::CreateFunctionTemplate( + v8_isolate, + base::BindRepeating(&JsSandboxIsolate::PromiseRejectCallback, + base::Unretained(this), + base::Passed(std::move(error_callback)))) + ->GetFunction(context_holder_->context()) + .ToLocalChecked(); + + promise->Then(context_holder_->context(), fulfill_fun, reject_fun) + .ToLocalChecked(); + } else { + std::string result = gin::V8ToString(v8_isolate, value); + std::move(success_callback).Run(result); + } } else { std::move(error_callback).Run(run_error); } } +void JsSandboxIsolate::PromiseRejectCallback(FinishedCallback error_callback, + gin::Arguments* args) { + v8::Local<v8::Value> value; + args->GetNext(&value); + v8::Local<v8::Message> message = + v8::Exception::CreateMessage(isolate_holder_->isolate(), value); + std::string error_message = + GetStackTrace(message, isolate_holder_->isolate()); + std::move(error_callback).Run(error_message); +} + +// Called from isolate thread. +void JsSandboxIsolate::ConvertPromiseToArrayBufferInIsolateSequence( + std::string name, + std::unique_ptr<v8::BackingStore> backing_store) { + v8::Isolate::Scope isolate_scope(isolate_holder_->isolate()); + v8::HandleScope handle_scope(isolate_holder_->isolate()); + v8::Context::Scope scope(context_holder_->context()); + + v8::Local<v8::ArrayBuffer> array_buffer = v8::ArrayBuffer::New( + isolate_holder_->isolate(), std::move(backing_store)); + auto it = named_resolver_.find(name); + it->second.Get(isolate_holder_->isolate()) + ->Resolve(context_holder_->context(), array_buffer) + .ToChecked(); + named_resolver_.erase(it); +} + +// Called from isolate thread. +void JsSandboxIsolate::ConvertPromiseToFailureInIsolateSequence( + std::string name, + std::string reason) { + v8::Isolate::Scope isolate_scope(isolate_holder_->isolate()); + v8::HandleScope handle_scope(isolate_holder_->isolate()); + v8::Context::Scope scope(context_holder_->context()); + + named_resolver_[name] + .Get(isolate_holder_->isolate()) + ->Reject(context_holder_->context(), + v8::Exception::Error( + gin::StringToV8(isolate_holder_->isolate(), reason))) + .ToChecked(); +} + +// Called from isolate thread. +void JsSandboxIsolate::ConsumeNamedDataAsArrayBuffer(gin::Arguments* args) { + v8::Isolate* isolate = args->isolate(); + v8::Global<v8::Promise::Resolver> global_resolver( + isolate, v8::Promise::Resolver::New(isolate->GetCurrentContext()) + .ToLocalChecked()); + v8::Local<v8::Promise> promise = global_resolver.Get(isolate)->GetPromise(); + if (args->Length() != 1) { + std::string reason = "Unexpected number of arguments"; + global_resolver.Get(isolate_holder_->isolate()) + ->Reject(context_holder_->context(), + v8::Exception::Error( + gin::StringToV8(isolate_holder_->isolate(), reason))) + .ToChecked(); + args->Return(promise); + return; + } + std::string name; + args->GetNext(&name); + base::ScopedFD fd; + ssize_t length; + { + base::AutoLock lock(named_fd_lock_); + auto entry = named_fd_.find(name); + if (entry == named_fd_.end()) { + std::string reason = "No NamedData available with the given name"; + global_resolver.Get(isolate_holder_->isolate()) + ->Reject(context_holder_->context(), + v8::Exception::Error( + gin::StringToV8(isolate_holder_->isolate(), reason))) + .ToChecked(); + args->Return(promise); + return; + } + fd = std::move(entry->second.fd); + length = entry->second.length; + } + named_resolver_.insert({name, std::move(global_resolver)}); + base::ThreadPool::PostTask( + FROM_HERE, {base::MayBlock()}, + base::BindOnce(&JsSandboxIsolate::ConvertPromiseToArrayBufferInThreadPool, + base::Unretained(this), std::move(fd), length, + std::move(name))); + args->Return(promise); +} + static void JNI_JsSandboxIsolate_InitializeEnvironment(JNIEnv* env) { base::ThreadPoolInstance::CreateAndStartWithDefaultParams("JsSandboxIsolate"); #ifdef V8_USE_EXTERNAL_STARTUP_DATA
diff --git a/android_webview/js_sandbox/service/js_sandbox_isolate.h b/android_webview/js_sandbox/service/js_sandbox_isolate.h index 2b0ca1bc..581d4a8 100644 --- a/android_webview/js_sandbox/service/js_sandbox_isolate.h +++ b/android_webview/js_sandbox/service/js_sandbox_isolate.h
@@ -7,16 +7,38 @@ #include <memory> #include <string> +#include <unordered_map> #include "base/android/scoped_java_ref.h" #include "base/callback_forward.h" #include "base/compiler_specific.h" -#include "base/task/cancelable_task_tracker.h" -#include "gin/public/context_holder.h" -#include "gin/public/isolate_holder.h" +#include "base/files/scoped_file.h" +#include "base/memory/scoped_refptr.h" +#include "base/synchronization/lock.h" +#include "base/thread_annotations.h" +#include "v8/include/v8-promise.h" + +namespace base { +class CancelableTaskTracker; +class SequencedTaskRunner; +class SingleThreadTaskRunner; +} // namespace base + +namespace gin { +class Arguments; +class IsolateHolder; +class ContextHolder; +} // namespace gin + +namespace v8 { +class BackingStore; +class ObjectTemplate; +} // namespace v8 namespace android_webview { +class FdWithLength; + class JsSandboxIsolate { public: JsSandboxIsolate(); @@ -24,15 +46,19 @@ using FinishedCallback = base::OnceCallback<void(const std::string&)>; - void DestroyNative(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean EvaluateJavascript( JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jstring>& jcode, const base::android::JavaParamRef<jobject>& j_success_callback, const base::android::JavaParamRef<jobject>& j_failure_callback); + void DestroyNative(JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj); + jboolean ProvideNamedData(JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj, + const base::android::JavaParamRef<jstring>& jname, + const jint fd, + const jint length); private: void DeleteSelf(); @@ -40,6 +66,8 @@ void EvaluateJavascriptOnThread(const std::string code, FinishedCallback success_callback, FinishedCallback failure_callback); + void PromiseRejectCallback(FinishedCallback error_callback, + gin::Arguments* args); void TerminateAndDestroy(); void DestroyWhenPossible(); @@ -48,6 +76,23 @@ void PostEvaluationToIsolateThread(const std::string code, FinishedCallback success_callback, FinishedCallback error_callback); + void ConvertPromiseToArrayBufferInThreadPool(base::ScopedFD fd, + ssize_t length, + std::string name); + void ConvertPromiseToArrayBufferInControlSequence( + std::string name, + std::unique_ptr<v8::BackingStore> backing_store); + void ConvertPromiseToFailureInControlSequence(std::string name, + std::string reason); + void ConvertPromiseToFailureInIsolateSequence(std::string name, + std::string reason); + void ConvertPromiseToArrayBufferInIsolateSequence( + std::string name, + std::unique_ptr<v8::BackingStore>); + + void ConsumeNamedDataAsArrayBuffer(gin::Arguments* args); + v8::Local<v8::ObjectTemplate> CreateAndroidNamespaceTemplate( + v8::Isolate* isolate); // Used as a control sequence to add ordering to binder threadpool requests. scoped_refptr<base::SequencedTaskRunner> control_task_runner_; @@ -64,6 +109,13 @@ std::unique_ptr<gin::IsolateHolder> isolate_holder_; // Should be used from isolate_task_runner_. std::unique_ptr<gin::ContextHolder> context_holder_; + // Should be used from isolate_task_runner_. + std::unordered_map<std::string, v8::Global<v8::Promise::Resolver>> + named_resolver_; + + base::Lock named_fd_lock_; + std::unordered_map<std::string, FdWithLength> named_fd_ + GUARDED_BY(named_fd_lock_); }; } // namespace android_webview
diff --git a/android_webview/lib/BUILD.gn b/android_webview/lib/BUILD.gn index 66e2365..689557a 100644 --- a/android_webview/lib/BUILD.gn +++ b/android_webview/lib/BUILD.gn
@@ -25,6 +25,7 @@ "//cc/base", "//components/autofill/core/common", "//components/crash/core/common", + "//components/embedder_support:embedder_support", "//components/gwp_asan/buildflags", "//components/metrics", "//components/power_scheduler",
diff --git a/android_webview/lib/DEPS b/android_webview/lib/DEPS index 3f9040a..992e3c2 100644 --- a/android_webview/lib/DEPS +++ b/android_webview/lib/DEPS
@@ -2,6 +2,7 @@ "+cc/base/switches.h", "+components/autofill/core", "+components/crash/core", + "+components/embedder_support/switches.h", "+components/safe_browsing/android", "+components/spellcheck/common", "+components/translate/core/common",
diff --git a/android_webview/lib/aw_main_delegate.cc b/android_webview/lib/aw_main_delegate.cc index 0e69cca..be11e92 100644 --- a/android_webview/lib/aw_main_delegate.cc +++ b/android_webview/lib/aw_main_delegate.cc
@@ -38,6 +38,7 @@ #include "cc/base/switches.h" #include "components/autofill/core/common/autofill_features.h" #include "components/crash/core/common/crash_key.h" +#include "components/embedder_support/switches.h" #include "components/gwp_asan/buildflags/buildflags.h" #include "components/metrics/unsent_log_store_metrics.h" #include "components/safe_browsing/android/safe_browsing_api_handler_bridge.h" @@ -183,6 +184,13 @@ cl->AppendSwitch(switches::kInProcessGPU); } + // Disable origin trial features on Webview unless the flag was + // explicitly provided via command-line. + if (!cl->HasSwitch(embedder_support::kOriginTrialDisabledFeatures)) { + cl->AppendSwitchASCII(embedder_support::kOriginTrialDisabledFeatures, + "DocumentTransitionV2"); + } + { base::ScopedAddFeatureFlags features(cl);
diff --git a/ash/components/arc/memory_pressure/arc_memory_pressure_bridge_unittest.cc b/ash/components/arc/memory_pressure/arc_memory_pressure_bridge_unittest.cc index 989bc93..54e7567 100644 --- a/ash/components/arc/memory_pressure/arc_memory_pressure_bridge_unittest.cc +++ b/ash/components/arc/memory_pressure/arc_memory_pressure_bridge_unittest.cc
@@ -116,19 +116,15 @@ // priority. TEST_F(ArcMemoryPressureBridgeTest, PressureCached) { ASSERT_NE(nullptr, bridge()); - // Check for overflow for large reclaim values by passing 5 GiB to the - // callback, and then check that we report 5 MiB * KiB estimated_freed_kib. - process_instance().set_apply_host_memory_pressure_response( - 1 /* killed */, UINT64_C(5368709120) /* reclaimed */); resourced().FakeArcVmMemoryPressure( chromeos::ResourcedClient::PressureLevelArcVm::CACHED, 1 /* reclaim_target_kb */); ASSERT_TRUE(process_instance().CheckLastHostMemoryPressure( mojom::PressureLevel::kCached, 1024 /* reclaim_target */)); - - // Run the ApplyHostMemoryPressure callback. - base::RunLoop().RunUntilIdle(); - + // Check for overflow for large reclaim values by passing 5 GiB to the + // callback, and then check that we report 5 MiB * KiB estimated_freed_kib. + process_instance().RunHostMemoryPressureCallback( + 1 /* killed */, UINT64_C(5368709120) /* reclaimed */); ASSERT_TRUE(kill_observer().CheckLastMemoryPressureKill( 1 /* count */, 5242880 /* estimated_freed_kb */)); } @@ -136,17 +132,13 @@ // Tests that PERCEPTIBLE memory pressure triggers kills of R_TOP priority. TEST_F(ArcMemoryPressureBridgeTest, PressurePerceptible) { ASSERT_NE(nullptr, bridge()); - process_instance().set_apply_host_memory_pressure_response( - 1 /* killed */, 2048 /* reclaimed */); resourced().FakeArcVmMemoryPressure( chromeos::ResourcedClient::PressureLevelArcVm::PERCEPTIBLE, 1 /* reclaim_target_kb */); ASSERT_TRUE(process_instance().CheckLastHostMemoryPressure( mojom::PressureLevel::kPerceptible, 1024 /* reclaim_target */)); - - // Run the ApplyHostMemoryPressure callback. - base::RunLoop().RunUntilIdle(); - + process_instance().RunHostMemoryPressureCallback(1 /* killed */, + 2048 /* reclaimed */); ASSERT_TRUE(kill_observer().CheckLastMemoryPressureKill( 1 /* count */, 2 /* estimated_freed_kb */)); } @@ -154,17 +146,13 @@ // Tests that FOREGROUND memory pressure triggers kills of R_TOP priority. TEST_F(ArcMemoryPressureBridgeTest, PressureForeground) { ASSERT_NE(nullptr, bridge()); - process_instance().set_apply_host_memory_pressure_response( - 1 /* killed */, 2048 /* reclaimed */); resourced().FakeArcVmMemoryPressure( chromeos::ResourcedClient::PressureLevelArcVm::FOREGROUND, 1 /* reclaim_target_kb */); ASSERT_TRUE(process_instance().CheckLastHostMemoryPressure( mojom::PressureLevel::kForeground, 1024 /* reclaim_target */)); - - // Run the ApplyHostMemoryPressure callback. - base::RunLoop().RunUntilIdle(); - + process_instance().RunHostMemoryPressureCallback(1 /* killed */, + 2048 /* reclaimed */); ASSERT_TRUE(kill_observer().CheckLastMemoryPressureKill( 1 /* count */, 2 /* estimated_freed_kb */)); } @@ -173,8 +161,6 @@ // only cause one call into ARCVM. TEST_F(ArcMemoryPressureBridgeTest, DebouncePressure) { ASSERT_NE(nullptr, bridge()); - process_instance().set_apply_host_memory_pressure_response( - 1 /* killed */, 2048 /* reclaimed */); // FakeProcessInstance::HostMemoryPressure will DCHECK if // FakeProcessInstance::CheckLastHostMemoryPressure is not called first. So @@ -190,25 +176,19 @@ // did not get forwarded to Mojo. ASSERT_TRUE(process_instance().CheckLastHostMemoryPressure( mojom::PressureLevel::kPerceptible, 1024 /* reclaim_target */)); - - // Run the ApplyHostMemoryPressure callback. - base::RunLoop().RunUntilIdle(); - + process_instance().RunHostMemoryPressureCallback(1 /* killed */, + 2048 /* reclaimed */); ASSERT_TRUE(kill_observer().CheckLastMemoryPressureKill( 1 /* count */, 2 /* estimated_freed_kb */)); // Check that we do forward the next call after the callback is executed. - process_instance().set_apply_host_memory_pressure_response( - 3 /* killed */, 4096 /* reclaimed */); resourced().FakeArcVmMemoryPressure( chromeos::ResourcedClient::PressureLevelArcVm::PERCEPTIBLE, 3 /* reclaim_target_kb */); ASSERT_TRUE(process_instance().CheckLastHostMemoryPressure( mojom::PressureLevel::kPerceptible, 3072 /* reclaim_target */)); - - // Run the ApplyHostMemoryPressure callback. - base::RunLoop().RunUntilIdle(); - + process_instance().RunHostMemoryPressureCallback(3 /* killed */, + 4096 /* reclaimed */); ASSERT_TRUE(kill_observer().CheckLastMemoryPressureKill( 3 /* count */, 4 /* estimated_freed_kb */)); }
diff --git a/ash/components/arc/metrics/arc_metrics_service_unittest.cc b/ash/components/arc/metrics/arc_metrics_service_unittest.cc index 3c9d1d1..aa659a6 100644 --- a/ash/components/arc/metrics/arc_metrics_service_unittest.cc +++ b/ash/components/arc/metrics/arc_metrics_service_unittest.cc
@@ -77,12 +77,6 @@ command_line->InitFromArgv({"", "--enable-arcvm"}); } arc_service_manager_ = std::make_unique<ArcServiceManager>(); - // ArcMetricsService makes one call to RequestLowMemoryKillCounts when it - // starts, so make it return 0s. - fake_process_instance_.set_request_low_memory_kill_counts_response( - mojom::LowMemoryKillCounts::New(0, 0, 0, 0, 0, 0, 0)); - ArcServiceManager::Get()->arc_bridge_service()->process()->SetInstance( - &fake_process_instance_); context_ = std::make_unique<TestBrowserContext>(); prefs::RegisterLocalStatePrefs(context_->pref_registry()); prefs::RegisterProfilePrefs(context_->pref_registry()); @@ -91,6 +85,9 @@ service_->set_prefs(context_->prefs()); CreateFakeWindows(); + + ArcServiceManager::Get()->arc_bridge_service()->process()->SetInstance( + &fake_process_instance_); } ~ArcMetricsServiceTest() override { @@ -135,6 +132,10 @@ FakeProcessInstance& process_instance() { return fake_process_instance_; } + protected: + content::BrowserTaskEnvironment task_environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + private: void CreateFakeWindows() { fake_arc_window_.reset(aura::test::CreateTestWindowWithId( @@ -145,9 +146,6 @@ /*id=*/1, nullptr)); } - content::BrowserTaskEnvironment task_environment_{ - base::test::TaskEnvironment::TimeSource::MOCK_TIME}; - TestingPrefServiceSimple local_state_; session_manager::SessionManager session_manager_; @@ -422,13 +420,16 @@ protected: ArcVmArcMetricsServiceTest() : ArcMetricsServiceTest(true) {} + void RespondToFirstKillCountsRequest(mojom::LowMemoryKillCountsPtr counts) { + process_instance().RunRequestLowMemoryKillCountsCallback(std::move(counts)); + } + void RequestKillCountsAndRespond(mojom::LowMemoryKillCountsPtr counts) { ash::FakeConciergeClient::Get()->set_list_vms_response( std::move(GetParam())); - process_instance().set_request_low_memory_kill_counts_response( - std::move(counts)); service()->RequestKillCountsForTesting(); - base::RunLoop().RunUntilIdle(); + task_environment_.RunUntilIdle(); + process_instance().RunRequestLowMemoryKillCountsCallback(std::move(counts)); } }; @@ -585,10 +586,8 @@ TEST_P(ArcVmArcMetricsServiceTest, AppLowMemoryKills) { base::HistogramTester tester; - // The test code sets the initial counts to 0. - auto c0 = mojom::LowMemoryKillCounts::New(0, 0, 0, 0, 0, 0, 0); // First sample counts. - auto c1 = mojom::LowMemoryKillCounts::New(1, // oom. + auto c0 = mojom::LowMemoryKillCounts::New(1, // oom. 2, // lmkd_foreground. 3, // lmkd_perceptible. 4, // lmkd_cached. @@ -596,40 +595,60 @@ 6, // pressure_perceptible. 7); // pressure_cached. // Second sample counts. - auto c2 = mojom::LowMemoryKillCounts::New(17, // oom. + auto c1 = mojom::LowMemoryKillCounts::New(17, // oom. 16, // lmkd_foreground. 15, // lmkd_perceptible. 14, // lmkd_cached. 13, // pressure_foreground. 12, // pressure_perceptible. 11); // pressure_cached. - // Third sample counts all decrease by 1. - auto c3 = mojom::LowMemoryKillCounts::New(16, // oom. - 15, // lmkd_foreground. - 14, // lmkd_perceptible. - 13, // lmkd_cached. - 12, // pressure_foreground. - 11, // pressure_perceptible. - 10); // pressure_cached. + // ArcMetricsService requests kill counts on startup, so respond to that + // before making a new request. + RespondToFirstKillCountsRequest(c0->Clone()); - { - base::HistogramTester tester; - RequestKillCountsAndRespond(c1->Clone()); - ExpectOneSampleAppKillCounts(tester, GetParam(), c0, c1); - } + // The first callback doesn't log to histograms, since it's collecting the + // first baseline. + ExpectNoAppKillCounts(tester); - { - base::HistogramTester tester; - RequestKillCountsAndRespond(c2->Clone()); - ExpectOneSampleAppKillCounts(tester, GetParam(), c1, c2); - } + // Send another counter response, which should log the increase to histograms. + RequestKillCountsAndRespond(c1->Clone()); + ExpectOneSampleAppKillCounts(tester, GetParam(), c0, c1); +} - { - base::HistogramTester tester; - RequestKillCountsAndRespond(c3->Clone()); - // Counts decreased, so expect no samples. - ExpectNoAppKillCounts(tester); - } +TEST_P(ArcVmArcMetricsServiceTest, AppLowMemoryKillsDecrease) { + base::HistogramTester tester; + // First sample counts. + auto c0 = mojom::LowMemoryKillCounts::New(17, // oom. + 16, // lmkd_foreground. + 15, // lmkd_perceptible. + 14, // lmkd_cached. + 13, // pressure_foreground. + 12, // pressure_perceptible. + 11); // pressure_cached. + + // Second sample counts. + auto c1 = mojom::LowMemoryKillCounts::New(1, // oom. + 2, // lmkd_foreground. + 3, // lmkd_perceptible. + 4, // lmkd_cached. + 5, // pressure_foreground. + 6, // pressure_perceptible. + 7); // pressure_cached. + + // ArcMetricsService requests kill counts on startup, so respond to that + // before making a new request. + RespondToFirstKillCountsRequest(c0->Clone()); + + // The first callback doesn't log to histograms, since it's collecting the + // first baseline. + ExpectNoAppKillCounts(tester); + + // Send another counter response, which should log the increase to histograms. + RequestKillCountsAndRespond(c1->Clone()); + + // Except that all the counters decreased, so we don't expect anything to be + // logged. + ExpectNoAppKillCounts(tester); } } // namespace
diff --git a/ash/components/arc/test/fake_process_instance.cc b/ash/components/arc/test/fake_process_instance.cc index 09a1af2..b3deda8 100644 --- a/ash/components/arc/test/fake_process_instance.cc +++ b/ash/components/arc/test/fake_process_instance.cc
@@ -8,7 +8,6 @@ #include <utility> #include "base/check_op.h" -#include "base/threading/thread_task_runner_handle.h" namespace arc { @@ -51,21 +50,13 @@ host_memory_pressure_checked_ = false; host_memory_pressure_level_ = level; host_memory_pressure_reclaim_target_ = reclaim_target; - - DCHECK(host_memory_pressure_response_); - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::BindOnce(std::move(callback), host_memory_pressure_response_->first, - host_memory_pressure_response_->second)); - host_memory_pressure_response_ = absl::nullopt; + host_memory_pressure_callback_ = std::move(callback); } void FakeProcessInstance::RequestLowMemoryKillCounts( RequestLowMemoryKillCountsCallback callback) { - DCHECK(low_memory_kill_counts_response_); - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), - std::move(*low_memory_kill_counts_response_))); + DCHECK(!request_low_memory_kill_counts_callback_); + request_low_memory_kill_counts_callback_ = std::move(callback); } bool FakeProcessInstance::CheckLastHostMemoryPressure( @@ -77,4 +68,17 @@ reclaim_target == host_memory_pressure_reclaim_target_; } +void FakeProcessInstance::RunHostMemoryPressureCallback(uint32_t killed, + uint64_t reclaimed) { + DCHECK(host_memory_pressure_callback_); + // NB: two moves, one to reset the unique_ptr, and one to reset the callback. + std::move(host_memory_pressure_callback_).Run(killed, reclaimed); +} + +void FakeProcessInstance::RunRequestLowMemoryKillCountsCallback( + mojom::LowMemoryKillCountsPtr counts) { + DCHECK(request_low_memory_kill_counts_callback_); + std::move(request_low_memory_kill_counts_callback_).Run(std::move(counts)); +} + } // namespace arc
diff --git a/ash/components/arc/test/fake_process_instance.h b/ash/components/arc/test/fake_process_instance.h index cc45a6f..708bb00 100644 --- a/ash/components/arc/test/fake_process_instance.h +++ b/ash/components/arc/test/fake_process_instance.h
@@ -5,13 +5,9 @@ #ifndef ASH_COMPONENTS_ARC_TEST_FAKE_PROCESS_INSTANCE_H_ #define ASH_COMPONENTS_ARC_TEST_FAKE_PROCESS_INSTANCE_H_ -#include <deque> -#include <utility> - #include "ash/components/arc/mojom/process.mojom.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote.h" -#include "third_party/abseil-cpp/absl/types/optional.h" namespace arc { @@ -52,28 +48,22 @@ return host_memory_pressure_checked_; } - void set_apply_host_memory_pressure_response(uint32_t killed, - uint64_t reclaimed) { - host_memory_pressure_response_ = std::pair(killed, reclaimed); - } + // Executes the callback from the last call to HostMemoryPressure. + void RunHostMemoryPressureCallback(uint32_t killed, uint64_t reclaimed); - void set_request_low_memory_kill_counts_response( - arc::mojom::LowMemoryKillCountsPtr response) { - low_memory_kill_counts_response_ = std::move(response); - } + // Executes the callback from the last call to RequestLowMemoryKillCounts. + void RunRequestLowMemoryKillCountsCallback( + mojom::LowMemoryKillCountsPtr counts); private: // State to save the most recent call to HostMemoryPressure. bool host_memory_pressure_checked_ = true; mojom::PressureLevel host_memory_pressure_level_; int64_t host_memory_pressure_reclaim_target_; + ApplyHostMemoryPressureCallback host_memory_pressure_callback_; - // Response to next call to ApplyHostMemoryPressure. - absl::optional<std::pair<uint32_t, uint64_t>> host_memory_pressure_response_; - - // Response to next call to RequestLowMemoryKillCounts. - absl::optional<arc::mojom::LowMemoryKillCountsPtr> - low_memory_kill_counts_response_; + // State to save the most recent call to RequestLowMemoryKillCounts. + RequestLowMemoryKillCountsCallback request_low_memory_kill_counts_callback_; }; } // namespace arc
diff --git a/ash/services/chromebox_for_meetings/OWNERS b/ash/services/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/ash/services/chromebox_for_meetings/OWNERS +++ b/ash/services/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/ash/services/chromebox_for_meetings/public/mojom/OWNERS b/ash/services/chromebox_for_meetings/public/mojom/OWNERS index a53d01c5..660f86f 100644 --- a/ash/services/chromebox_for_meetings/public/mojom/OWNERS +++ b/ash/services/chromebox_for_meetings/public/mojom/OWNERS
@@ -2,6 +2,6 @@ # they are outside of the scope of the regular mojo security review process. per-file *.mojom=set noparent -per-file *.mojom=file://chromeos/components/chromebox_for_meetings/OWNERS +per-file *.mojom=file://chromeos/ash/components/chromebox_for_meetings/OWNERS per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *.mojom=file://chromeos/SECURITY_OWNERS
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb index 67c9e29..7e0efdc 100644 --- a/ash/strings/ash_strings_be.xtb +++ b/ash/strings/ash_strings_be.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />. Каб адкрыць Каляндар, націсніце Увод</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> і <ph name="SECOND_ITEM_TITLE" /> памяняліся месцамі</translation> +<translation id="1500926532737552529">Паказаць усе прапановы</translation> <translation id="1503394326855300303">У сеансе з уваходам у некалькі ўліковых запісаў гэты ўліковы запіс уладальніка павінен быць першым.</translation> <translation id="1510238584712386396">Панэль запуску</translation> <translation id="1516740043221086139">Рэжым "Не турбаваць" уключаны.</translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb index 502c2f7..c0c9171 100644 --- a/ash/strings/ash_strings_es-419.xtb +++ b/ash/strings/ash_strings_es-419.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, presiona la tecla Intro para abrir la vista del Calendario</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540">Se intercambió <ph name="FIRST_ITEM_TITLE" /> con <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Mostrar todas las sugerencias</translation> <translation id="1503394326855300303">El propietario de esta cuenta requiere que sea la primera a la que se acceda al crear una sesión de acceso múltiple.</translation> <translation id="1510238584712386396">Selector</translation> <translation id="1516740043221086139">No interrumpir está activado.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index 65211369..e1f117d8 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />، برای باز کردن نمای «تقویم»، کلید enter را فشار دهید</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> با <ph name="SECOND_ITEM_TITLE" /> جابهجا شد</translation> +<translation id="1500926532737552529">نمایش همه پیشنهادها</translation> <translation id="1503394326855300303">این حساب مالک باید اولین حسابی باشد که در یک جلسه ورود به سیستم چندگانه به سیستم وارد میشود.</translation> <translation id="1510238584712386396">راهانداز</translation> <translation id="1516740043221086139">«مزاحم نشوید» روشن است.</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index 14e5a3a9..e4ac44e4 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, Avaa kalenterinäkymä painamalla Enter</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> vaihdettiin: <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Näytä kaikki ehdotukset</translation> <translation id="1503394326855300303">Tämän omistajatilin täytyy olla ensimmäinen sisään kirjautuva tili useiden tilien istunnossa.</translation> <translation id="1510238584712386396">Käynnistysohjelma</translation> <translation id="1516740043221086139">Älä häiritse ‑tila on päällä.</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index 790d1ab..8c8434c9 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, Appuyez sur Entrée pour ouvrir la vue d'Agenda</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> a changé de place avec <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Afficher toutes les suggestions</translation> <translation id="1503394326855300303">Ce compte de propriétaire doit être le premier compte à être connecté lors de sessions de connexion multicompte.</translation> <translation id="1510238584712386396">Lanceur</translation> <translation id="1516740043221086139">Le mode Ne pas déranger est activé.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index ba3aa6f..f19f2543 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, Calendar વ્યૂ ખોલવા માટે, Enter કી દબાવો</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> અને <ph name="SECOND_ITEM_TITLE" />ની ફેરબદલ કરવામાં આવી</translation> +<translation id="1500926532737552529">બધા સૂચનો બતાવો</translation> <translation id="1503394326855300303">આ માલિક એકાઉન્ટ દ્વારા એકથી વધુ સાઇન ઇન સત્રમાં પહેલા સાઇન ઇન કરનાર એકાઉન્ટ હોવું જોઈએ.</translation> <translation id="1510238584712386396">લૉન્ચર</translation> <translation id="1516740043221086139">ખલેલ પાડશો નહીં ચાલુ છે.</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index a0fb69b..234f7bc2 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, Օրացույցը բացելու համար սեղմեք Enter ստեղնը</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540">«<ph name="FIRST_ITEM_TITLE" />» և «<ph name="SECOND_ITEM_TITLE" />» տարրերը տեղերով փոխվեցին</translation> +<translation id="1500926532737552529">Ցույց տալ բոլոր առաջարկները</translation> <translation id="1503394326855300303">Բազմակի մուտքի աշխատաշրջանում տիրոջ հաշիվը պետք է առաջին մուտք գործած հաշիվը լինի:</translation> <translation id="1510238584712386396">Գործարկիչ</translation> <translation id="1516740043221086139">«Չանհանգստացնել» ռեժիմն ակտիվ է։</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 7c0ec06..b4246ad 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, күнтізбені ашу үшін Enter пернесін басыңыз.</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> және <ph name="SECOND_ITEM_TITLE" /> өзара ауыстырылды.</translation> +<translation id="1500926532737552529">Барлық ұсынысты көрсету</translation> <translation id="1503394326855300303">Бұл иеленуші аккаунтсы көп кіру сеансында алғашқы жүйеге кірген аккаунт болуы керек.</translation> <translation id="1510238584712386396">Іске қосу құрылғысы</translation> <translation id="1516740043221086139">Мазаламау режимі қосулы.</translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb index 0890c09..b12c52f 100644 --- a/ash/strings/ash_strings_lv.xtb +++ b/ash/strings/ash_strings_lv.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, nospiediet ievadīšanas taustiņu, lai atvērtu Kalendāra skatu.</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> ir samainīts ar <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Rādīt visus ieteikumus</translation> <translation id="1503394326855300303">Vairākkārtējas pierakstīšanās sesijā šim īpašnieka kontam ir jābūt pirmajam kontam, kurā jāpierakstās.</translation> <translation id="1510238584712386396">Lietojumprogrammu palaidējs</translation> <translation id="1516740043221086139">Režīms “Netraucēt” ir ieslēgts.</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index f2eb96f..34f498d 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -1369,7 +1369,7 @@ <translation id="9085962983642906571">Je batterij wordt op 80% gehouden terwijl deze is aangesloten om de batterijduur te verlengen.</translation> <translation id="9089416786594320554">Invoermethoden</translation> <translation id="9091626656156419976">Scherm <ph name="DISPLAY_NAME" /> is verwijderd</translation> -<translation id="9098969848082897657">Geluid van telefoon uitzetten</translation> +<translation id="9098969848082897657">Telefoon dempen</translation> <translation id="9099154003160514616">Lacros-update beschikbaar</translation> <translation id="9100887602489003640">Profiel toevoegen. Wacht een paar minuten.</translation> <translation id="9105450214093926548">Een tweede gebruiker inloggen wordt niet ondersteund als de Lacros-browser actief is. Gebruik in plaats daarvan een tweede browserprofiel in Lacros of sluit Lacros en probeer het opnieuw.</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index f63867d1..7498667 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, чтобы открыть календарь, нажмите Ввод</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540">Вы поменяли местами объекты "<ph name="FIRST_ITEM_TITLE" />" и "<ph name="SECOND_ITEM_TITLE" />"</translation> +<translation id="1500926532737552529">Показать все рекомендации</translation> <translation id="1503394326855300303">При одновременной работе в нескольких аккаунтах необходимо сначала зайти в аккаунт владельца.</translation> <translation id="1510238584712386396">Панель запуска</translation> <translation id="1516740043221086139">Режим "Не беспокоить" включен</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 9373d035..c2d26cd2 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />. Shtyp tastin Enter për të hapur pamjen e "Kalendarit"</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> u ndërrua me <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Shfaq të gjitha sugjerimet</translation> <translation id="1503394326855300303">Kjo llogari zotëruesi duhet të jetë llogaria e parë e identifikimit në një sesion me identifikime të shumëfishta.</translation> <translation id="1510238584712386396">Nisësi</translation> <translation id="1516740043221086139">Modaliteti "Mos shqetëso" është aktiv.</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index 15877d3..b47830d 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />. Öppna kalendervyn genom att trycka på Retur</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> har bytts ut mot <ph name="SECOND_ITEM_TITLE" /></translation> +<translation id="1500926532737552529">Visa alla förslag</translation> <translation id="1503394326855300303">Det här ägarkontot måste vara det första inloggade kontot i en session med flera inloggningar.</translation> <translation id="1510238584712386396">Startprogram</translation> <translation id="1516740043221086139">Stör ej har aktiverats.</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 5db9ac53..a81aacf 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -102,6 +102,7 @@ <translation id="1480845547124508962"><ph name="CURRENT_TIME" />, Bofya kitufe cha enter ili ufungue mwonekano wa Kalenda</translation> <translation id="1484102317210609525"><ph name="DEVICE_NAME" /> (HDMI/DP)</translation> <translation id="1487931858675166540"><ph name="FIRST_ITEM_TITLE" /> na <ph name="SECOND_ITEM_TITLE" /> zimebadilishana nafasi</translation> +<translation id="1500926532737552529">Onyesha mapendekezo yote</translation> <translation id="1503394326855300303">Akaunti hii ya mmiliki lazima iwe ya kwanza kuingiwa katika kipindi cha kuingia katika akaunti mara nyingi.</translation> <translation id="1510238584712386396">Kizindua</translation> <translation id="1516740043221086139">Hali ya 'Usinisumbue' imewashwa</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb index 0aed0af7..32281f01 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_eu.xtb
@@ -52,7 +52,7 @@ Memoria atzitzeko baimena duten aplikazioek atzi ditzakete argazkiak eta bideoak.</translation> <translation id="3067436040345934772">Mugitu eskuinera</translation> <translation id="3081586908890909590">Aldatu bideoak grabatzeko modura</translation> -<translation id="313467653172006084">30 f/s</translation> +<translation id="313467653172006084">30 fps</translation> <translation id="3183731565330012717">Sareta mota</translation> <translation id="3227137524299004712">Mikrofonoa</translation> <translation id="3240426699337459095">Esteka kopiatu da</translation> @@ -144,7 +144,7 @@ <translation id="761421184377987513">Behera eta ezkerrera mugitzen ari da</translation> <translation id="7649070708921625228">Laguntza</translation> <translation id="7658239707568436148">Utzi</translation> -<translation id="7670511624014457267">60 f/s</translation> +<translation id="7670511624014457267">60 fps</translation> <translation id="7671804233658741790">Dokumentuaren beheko eskuinaldeko ertza</translation> <translation id="7692090236657809299">Gaitu irudia okertuta mugitzeko zooma</translation> <translation id="7726641833034062494">Grabatu bideo normal bat</translation>
diff --git a/base/bind_unittest.nc b/base/bind_unittest.nc index 2980729..caf77c7a 100644 --- a/base/bind_unittest.nc +++ b/base/bind_unittest.nc
@@ -118,7 +118,7 @@ no_ref_const_cb.Run(); } -#elif defined(NCTEST_METHOD_BIND_RAW_PTR_RECEIVER_NEEDS_REFCOUNTED_OBJECT) // [r"fatal error: static_assert failed due to requirement '!IsPointerV<base::raw_ptr<base::NoRef, [^>]+>> \|\| IsRefCountedType<base::NoRef, void>::value' \"Receivers may not be raw pointers. If using a raw pointer here is safe and has no lifetime concerns, use base::Unretained\(\) and document why it's safe.\""] +#elif defined(NCTEST_METHOD_BIND_RAW_PTR_RECEIVER_NEEDS_REFCOUNTED_OBJECT) // [r"fatal error: static_assert failed due to requirement '!IsPointerV<base::raw_ptr<base::NoRef, [^>]+>?>> \|\| IsRefCountedType<base::NoRef, void>::value' \"Receivers may not be raw pointers. If using a raw pointer here is safe and has no lifetime concerns, use base::Unretained\(\) and document why it's safe.\""] // Method bound to non-refcounted object. @@ -132,7 +132,7 @@ no_ref_cb.Run(); } -#elif defined(NCTEST_CONST_METHOD_BIND_RAW_PTR_RECEIVER_NEEDS_REFCOUNTED_OBJECT) // [r"fatal error: static_assert failed due to requirement '!IsPointerV<base::raw_ptr<base::NoRef, [^>]+>> \|\| IsRefCountedType<base::NoRef, void>::value' \"Receivers may not be raw pointers. If using a raw pointer here is safe and has no lifetime concerns, use base::Unretained\(\) and document why it's safe.\""] +#elif defined(NCTEST_CONST_METHOD_BIND_RAW_PTR_RECEIVER_NEEDS_REFCOUNTED_OBJECT) // [r"fatal error: static_assert failed due to requirement '!IsPointerV<base::raw_ptr<base::NoRef, [^>]+>?>> \|\| IsRefCountedType<base::NoRef, void>::value' \"Receivers may not be raw pointers. If using a raw pointer here is safe and has no lifetime concerns, use base::Unretained\(\) and document why it's safe.\""] // Const Method bound to non-refcounted object. //
diff --git a/base/debug/dwarf_line_no.cc b/base/debug/dwarf_line_no.cc index 5a9d097..c47e879 100644 --- a/base/debug/dwarf_line_no.cc +++ b/base/debug/dwarf_line_no.cc
@@ -4,6 +4,8 @@ #include "base/debug/dwarf_line_no.h" +#include "base/memory/raw_ptr.h" + #ifdef USE_SYMBOLIZE #include "base/debug/buffered_dwarf_reader.h" @@ -75,7 +77,7 @@ virtual void Do(LineNumberRegisters* registers) = 0; }; - OnCommit* on_commit; + raw_ptr<OnCommit> on_commit; LineNumberRegisters(ProgramInfo info, OnCommit* on_commit) : on_commit(on_commit), is_stmt(info.default_is_stmt) {} @@ -185,7 +187,7 @@ // number for an address. struct OnCommitImpl : public LineNumberRegisters::OnCommit { private: - LineNumberInfo* info; + raw_ptr<LineNumberInfo> info; uint64_t module_relative_pc; const ProgramInfo& program_info;
diff --git a/base/debug/stack_trace.h b/base/debug/stack_trace.h index 60c3c5c..47d8696 100644 --- a/base/debug/stack_trace.h +++ b/base/debug/stack_trace.h
@@ -12,6 +12,7 @@ #include "base/base_export.h" #include "base/debug/debugging_buildflags.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #if BUILDFLAG(IS_POSIX) @@ -235,9 +236,9 @@ ~ScopedStackFrameLinker(); private: - void* fp_; - void* parent_fp_; - void* original_parent_fp_; + raw_ptr<void> fp_; + raw_ptr<void> parent_fp_; + raw_ptr<void> original_parent_fp_; }; #endif // BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc index 31b8a4ca..37470d6e 100644 --- a/base/debug/stack_trace_posix.cc +++ b/base/debug/stack_trace_posix.cc
@@ -25,6 +25,7 @@ #include <tuple> #include <vector> +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #if !defined(USE_SYMBOLIZE) @@ -491,7 +492,7 @@ void HandleOutput(const char* output) override { (*os_) << output; } private: - std::ostream* os_; + raw_ptr<std::ostream> os_; }; void WarmUpBacktrace() {
diff --git a/base/message_loop/message_pump_glib.cc b/base/message_loop/message_pump_glib.cc index 7da03d89..5ec1d306 100644 --- a/base/message_loop/message_pump_glib.cc +++ b/base/message_loop/message_pump_glib.cc
@@ -9,6 +9,7 @@ #include <math.h> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/numerics/safe_conversions.h" #include "base/posix/eintr_wrapper.h" @@ -104,7 +105,7 @@ // around event handling. struct WorkSource : public GSource { - MessagePumpGlib* pump; + raw_ptr<MessagePumpGlib> pump; }; gboolean WorkSourcePrepare(GSource* source, gint* timeout_ms) { @@ -133,8 +134,8 @@ WorkSourceDispatch, nullptr}; struct FdWatchSource : public GSource { - MessagePumpGlib* pump; - MessagePumpGlib::FdWatchController* controller; + raw_ptr<MessagePumpGlib> pump; + raw_ptr<MessagePumpGlib::FdWatchController> controller; }; gboolean FdWatchSourcePrepare(GSource* source, gint* timeout_ms) { @@ -161,7 +162,7 @@ } // namespace struct MessagePumpGlib::RunState { - Delegate* delegate; + raw_ptr<Delegate> delegate; // Used to flag that the current Run() invocation should return ASAP. bool should_quit;
diff --git a/base/message_loop/message_pump_glib.h b/base/message_loop/message_pump_glib.h index 83b37df11..fdf0ac2 100644 --- a/base/message_loop/message_pump_glib.h +++ b/base/message_loop/message_pump_glib.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/base_export.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump.h" #include "base/message_loop/watchable_io_message_pump_posix.h" #include "base/threading/thread_checker.h" @@ -62,12 +63,12 @@ void NotifyCanRead(); void NotifyCanWrite(); - FdWatcher* watcher_ = nullptr; - GSource* source_ = nullptr; + raw_ptr<FdWatcher> watcher_ = nullptr; + raw_ptr<GSource> source_ = nullptr; std::unique_ptr<GPollFD> poll_fd_; // If this pointer is non-null, the pointee is set to true in the // destructor. - bool* was_destroyed_ = nullptr; + raw_ptr<bool> was_destroyed_ = nullptr; }; MessagePumpGlib(); @@ -115,17 +116,17 @@ // separate between them in this structure type. struct RunState; - RunState* state_; + raw_ptr<RunState> state_; // This is a GLib structure that we can add event sources to. On the main // thread, we use the default GLib context, which is the one to which all GTK // events are dispatched. - GMainContext* context_ = nullptr; + raw_ptr<GMainContext> context_ = nullptr; bool context_owned_ = false; // The work source. It is shared by all calls to Run and destroyed when // the message pump is destroyed. - GSource* work_source_; + raw_ptr<GSource> work_source_; // We use a wakeup pipe to make sure we'll get out of the glib polling phase // when another thread has scheduled us to do some work. There is a glib
diff --git a/base/message_loop/message_pump_glib_unittest.cc b/base/message_loop/message_pump_glib_unittest.cc index 3fcbde3..56bd465 100644 --- a/base/message_loop/message_pump_glib_unittest.cc +++ b/base/message_loop/message_pump_glib_unittest.cc
@@ -16,6 +16,7 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/message_loop/message_pump_type.h" #include "base/posix/eintr_wrapper.h" @@ -108,7 +109,7 @@ }; struct Source : public GSource { - EventInjector* injector; + raw_ptr<EventInjector> injector; }; void AddEventHelper(int delay_ms, OnceClosure callback, OnceClosure task) { @@ -139,7 +140,7 @@ return TRUE; } - Source* source_; + raw_ptr<Source> source_; std::vector<Event> events_; int processed_events_; static GSourceFuncs SourceFuncs; @@ -348,7 +349,7 @@ static const int kStartingEventCount = 20; static const int kStartingTaskCount = 20; - EventInjector* injector_; + raw_ptr<EventInjector> injector_; OnceClosure done_closure_; int event_count_; int task_count_; @@ -598,7 +599,7 @@ void OnFileCanWriteWithoutBlocking(int /* fd */) override { NOTREACHED(); } protected: - MessagePumpGlib::FdWatchController* controller_; + raw_ptr<MessagePumpGlib::FdWatchController> controller_; }; class DeleteWatcher : public BaseWatcher {
diff --git a/base/process/launch_posix.cc b/base/process/launch_posix.cc index c5eb76eb..be8f024 100644 --- a/base/process/launch_posix.cc +++ b/base/process/launch_posix.cc
@@ -33,6 +33,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_file.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/posix/eintr_wrapper.h" #include "base/process/environment_internal.h" @@ -127,9 +128,11 @@ // This is what struct sigaction looks like to the kernel at least on X86 and // ARM. MIPS, for instance, is very different. struct kernel_sigaction { - void* k_sa_handler; // For this usage it only needs to be a generic pointer. + raw_ptr<void> + k_sa_handler; // For this usage it only needs to be a generic pointer. unsigned long k_sa_flags; - void* k_sa_restorer; // For this usage it only needs to be a generic pointer. + raw_ptr<void> + k_sa_restorer; // For this usage it only needs to be a generic pointer. kernel_sigset_t k_sa_mask; };
diff --git a/base/test/scoped_logging_settings.h b/base/test/scoped_logging_settings.h index 0653bfeb..10c5dfe8 100644 --- a/base/test/scoped_logging_settings.h +++ b/base/test/scoped_logging_settings.h
@@ -10,6 +10,7 @@ #include "base/base_export.h" #include "base/files/file_path.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "build/chromeos_buildflags.h" namespace logging { @@ -84,8 +85,8 @@ #if BUILDFLAG(USE_RUNTIME_VLOG) // Creates a new instance of |VlogInfo| adding |vmodule_switch|. VlogInfo* CreateVlogInfoWithSwitches(const std::string& vmodule_switch); - VlogInfo* scoped_vlog_info_ = nullptr; - VlogInfo* previous_vlog_info_ = nullptr; + raw_ptr<VlogInfo> scoped_vlog_info_ = nullptr; + raw_ptr<VlogInfo> previous_vlog_info_ = nullptr; #endif // BUILDFLAG(USE_RUNTIME_VLOG) }; } // namespace logging
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index 7da1043..7eab6d0 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -8.20220621.0.1 +8.20220621.1.1
diff --git a/build/fuchsia/test/ffx_integration.py b/build/fuchsia/test/ffx_integration.py index 4025917..a97980e 100644 --- a/build/fuchsia/test/ffx_integration.py +++ b/build/fuchsia/test/ffx_integration.py
@@ -13,7 +13,8 @@ from contextlib import AbstractContextManager from typing import Iterable, Optional -from common import get_host_arch, run_ffx_command, run_continuous_ffx_command +from common import get_host_arch, run_ffx_command, run_continuous_ffx_command, \ + SDK_ROOT class ScopedFfxConfig(AbstractContextManager): @@ -86,6 +87,15 @@ node_name_suffix = random.randint(1, 9999) self._node_name = f'fuchsia-emulator-{node_name_suffix}' + @staticmethod + def _check_ssh_config_file() -> None: + """Checks for ssh keys and generates them if they are missing.""" + script_path = os.path.join(SDK_ROOT, 'bin', 'fuchsia-common.sh') + check_cmd = [ + 'bash', '-c', f'. {script_path}; check-fuchsia-ssh-config' + ] + subprocess.run(check_cmd, check=True) + def _download_product_bundle_if_necessary(self) -> None: """Download the image for a given product bundle.""" @@ -107,6 +117,7 @@ The node name of the emulator. """ + self._check_ssh_config_file() self._download_product_bundle_if_necessary() emu_command = [ 'emu', 'start', self._product_bundle, '--name', self._node_name
diff --git a/chrome/VERSION b/chrome/VERSION index f78b89a..ee53288 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=105 MINOR=0 -BUILD=5134 +BUILD=5135 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 65853fb2..7cf7b919 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -1018,6 +1018,7 @@ "//chrome/browser/image_editor/public:java", "//chrome/browser/incognito:incognito_junit_tests", "//chrome/browser/incognito:java", + "//chrome/browser/language/android:junit", "//chrome/browser/lens:delegate_public_impl_java", "//chrome/browser/lens:java", "//chrome/browser/loading_modal/android:junit", @@ -1327,6 +1328,7 @@ resources_package = "org.chromium.chrome.test" sources = [ "javatests/src/org/chromium/chrome/browser/IntentFilterUnitTest.java", + "javatests/src/org/chromium/chrome/browser/ntp/TitleUtilTest.java", "javatests/src/org/chromium/chrome/browser/IntentHandlerUnitTest.java", "javatests/src/org/chromium/chrome/browser/autofill/AutofillUnitTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRowTest.java", @@ -1350,6 +1352,7 @@ "javatests/src/org/chromium/chrome/browser/firstrun/FirstRunUtilsTest.java", "javatests/src/org/chromium/chrome/browser/init/ChainedTasksTest.java", "javatests/src/org/chromium/chrome/browser/init/FirstDrawDetectorTest.java", + "javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java", "javatests/src/org/chromium/chrome/browser/tab/WebContentsStateBridgeTest.java", "javatests/src/org/chromium/chrome/browser/tab/state/FilePersistedTabDataStorageTest.java", "javatests/src/org/chromium/chrome/browser/tab/state/PersistedTabDataTest.java", @@ -1389,6 +1392,7 @@ "//chrome/browser/ui/android/omnibox:java", "//chrome/browser/ui/android/toolbar:java", "//chrome/browser/ui/messages/android:java", + "//chrome/test/android:chrome_java_integration_test_support", "//chrome/test/android:chrome_java_unit_test_support", "//components/autofill/android:main_autofill_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index f55a28f..748cd0f6 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -268,7 +268,6 @@ "javatests/src/org/chromium/chrome/browser/notifications/NotificationTestRule.java", "javatests/src/org/chromium/chrome/browser/notifications/channels/SiteChannelsManagerTest.java", "javatests/src/org/chromium/chrome/browser/ntp/FakeRecentlyClosedTabManager.java", - "javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java", "javatests/src/org/chromium/chrome/browser/ntp/IncognitoNewTabPageTest.java", "javatests/src/org/chromium/chrome/browser/ntp/NewTabPageLoadTest.java", "javatests/src/org/chromium/chrome/browser/ntp/NewTabPageNavigationTest.java", @@ -277,7 +276,6 @@ "javatests/src/org/chromium/chrome/browser/ntp/RecentlyClosedBridgeTest.java", "javatests/src/org/chromium/chrome/browser/ntp/RevampedIncognitoDescriptionViewRenderTest.java", "javatests/src/org/chromium/chrome/browser/ntp/RevampedIncognitoNewTabPageTest.java", - "javatests/src/org/chromium/chrome/browser/ntp/TitleUtilTest.java", "javatests/src/org/chromium/chrome/browser/offlinepages/MHTMLPageTest.java", "javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageArchivePublisherBridgeTest.java", "javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageAutoFetchTest.java",
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java index e34f3e7..3a6460a 100644 --- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java +++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTest.java
@@ -66,6 +66,7 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.DisableIf; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.DoNotBatch; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Restriction; @@ -403,6 +404,7 @@ @MediumTest @Feature({"StartSurface"}) @CommandLineFlags.Add({START_SURFACE_TEST_BASE_PARAMS}) + @DisabledTest(message = "crbug.com/1170673 - NoInstant_NoReturn version is flaky") public void testSearchInSingleSurface() { if (!mImmediateReturn) { StartSurfaceTestUtils.pressHomePageButton(mActivityTestRule.getActivity());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java index 37a074e..c9253ee 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
@@ -43,7 +43,7 @@ new ObserverList<>(); @Nullable - private IncognitoReauthDialogDelegate mIncognitoReauthDialogDelegate; + protected IncognitoReauthDialogDelegate mIncognitoReauthDialogDelegate; private boolean mTabStateInitialized; private boolean mStartIncognito; @@ -133,13 +133,14 @@ previousModel.setActive(false); newModel.setActive(true); mActiveModelIndex = newIndex; - for (TabModelSelectorObserver listener : mObservers) { - listener.onTabModelSelected(newModel, previousModel); + + // Notify the re-auth code first so we show the re-auth dialog first. + if (mIncognitoReauthDialogDelegate != null && newModel.isIncognito()) { + mIncognitoReauthDialogDelegate.onBeforeIncognitoTabModelSelected(); } - // This should be invoked after all the other observers have been notified. - if (mIncognitoReauthDialogDelegate != null) { - mIncognitoReauthDialogDelegate.onAfterTabModelSelected(newModel, previousModel); + for (TabModelSelectorObserver listener : mObservers) { + listener.onTabModelSelected(newModel, previousModel); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java index 2fb2bc3..2eb5a8c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java
@@ -214,6 +214,11 @@ @Override public void run() { notifyChanged(); + // The tab model has changed to regular and all the visual elements wrt regular + // mode is in-place. We can now signal the re-auth to hide the dialog. + if (mIncognitoReauthDialogDelegate != null && !newModel.isIncognito()) { + mIncognitoReauthDialogDelegate.onAfterRegularTabModelChanged(); + } } }); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java index 95fd4fe..49f5257e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -797,11 +797,13 @@ } }; } - + Runnable showTabSwitcherRunnable = + () -> mLayoutManager.showLayout(LayoutType.TAB_SWITCHER, /*animate=*/false); IncognitoReauthCoordinatorFactory incognitoReauthCoordinatorFactory = new IncognitoReauthCoordinatorFactory(mActivity, tabModelSelector, mModalDialogManagerSupplier.get(), new SettingsLauncherImpl(), - tabSwitcherCustomViewSupplier, incognitoReauthTopToolbarDelegate); + tabSwitcherCustomViewSupplier, incognitoReauthTopToolbarDelegate, + showTabSwitcherRunnable); mIncognitoReauthController = new IncognitoReauthController(tabModelSelector, mActivityLifecycleDispatcher, mLayoutStateProviderOneShotSupplier, mProfileSupplier, incognitoReauthCoordinatorFactory);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java index 098541e..46b3c68 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/PersonalDataManagerTest.java
@@ -22,7 +22,6 @@ import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.util.Batch; -import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; @@ -438,7 +437,6 @@ @Test @SmallTest @Feature({"Autofill"}) - @DisabledTest(message = "https://crbug.com/1123852") public void testCreditCardsFrecency() throws TimeoutException { // Create 3 credit cards. CreditCard card1 = createLocalCreditCard("Visa", "1234123412341234", "5", "2020");
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java index 034f566..b3b7ed6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/IncognitoDescriptionViewRenderTest.java
@@ -28,9 +28,7 @@ import java.io.IOException; import java.util.List; -/** - * Render test of incognito description in the incognito ntp. - */ +/** Render test of incognito description in the incognito ntp. */ @RunWith(ParameterizedRunner.class) @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) public class IncognitoDescriptionViewRenderTest extends BlankUiTestActivityTestCase {
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 9c906ca..8b1ac35 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-104.0.5112.16_rc-r1-merged.afdo.bz2 +chromeos-chrome-amd64-104.0.5112.18_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 7522f8f..86cbf76 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -1558,6 +1558,7 @@ <translation id="2433836460518180625">Ontsluit net toestel</translation> <translation id="2434449159125086437">Kan nie drukker opstel nie. Gaan opstelling na en probeer weer.</translation> <translation id="2434758125294431199">Kies wie met jou kan deel</translation> +<translation id="2434915728183570229">Jy kan nou jou foon se programme bekyk</translation> <translation id="2435137177546457207">Google Chrome en Chrome OS Flex se bykomende bepalings</translation> <translation id="2435248616906486374">Netwerk ontkoppel</translation> <translation id="2435457462613246316">Wys wagwoord</translation> @@ -4242,6 +4243,7 @@ <translation id="5072900412896857127">Google Play se diensbepalings kan nie gelaai word nie. Gaan jou netwerkverbinding na en probeer weer.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> en nog #}}</translation> <translation id="5074318175948309511">Hierdie bladsy moet dalk herlaai word voor die nuwe instellings in werking sal tree.</translation> +<translation id="5074761966806028321">Toestemming word nog benodig om die opstelling te voltooi</translation> <translation id="5075910247684008552">Onveilige inhoud word by verstek op veilige werwe geblokkeer</translation> <translation id="5078638979202084724">Boekmerk alle oortjies</translation> <translation id="5078796286268621944">Verkeerde PIN</translation> @@ -4605,6 +4607,7 @@ <translation id="5449551289610225147">Ongeldige wagwoord</translation> <translation id="5449588825071916739">Boekmerk alle oortjies</translation> <translation id="5449716055534515760">Maak venster toe</translation> +<translation id="5452446625764825792">Jy kan nou jou foon se onlangse foto's, media en programme bekyk</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (werk vanlyn)</translation> <translation id="5454166040603940656">met <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Sien meer soekresultate</translation> @@ -4665,6 +4668,7 @@ <translation id="5499211612787418966">Hierdie dialoog is nie tans gefokus nie. Druk Alt-Shift A om hierdie dialoog te fokus.</translation> <translation id="5499313591153584299">Hierdie lêer kan skadelik vir jou rekenaar wees.</translation> <translation id="5499453227627332024">'n Opgradering is beskikbaar vir jou Linux-houer. Jy kan ook later deur die Instellings-program opgradeer.</translation> +<translation id="5499476581866658341">Jy kan nou jou foon se onlangse foto's en media bekyk</translation> <translation id="549957179819296104">Nuwe ikoon</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Soekgeskiedenis<ph name="END_LINK_SEARCH" /> en <ph name="BEGIN_LINK_GOOGLE" />ander soorte aktiwiteit<ph name="END_LINK_GOOGLE" /> sal dalk in jou Google-rekening gestoor word wanneer jy aangemeld is. Jy kan hulle enige tyd uitvee.</translation> <translation id="5500709606820808700">Veiligheidskontrole het vandag plaasgevind</translation> @@ -6330,6 +6334,7 @@ <translation id="7152478047064750137">Hierdie uitbreiding vereis geen spesiale toestemmings nie</translation> <translation id="7154130902455071009">Verander jou beginblad na: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Bestaande foto in kamera of lêer</translation> +<translation id="7160182524506337403">Jy kan nou jou foon se kennisgewings bekyk</translation> <translation id="7163202347044721291">Verifieer tans aktiveringkode …</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" kan prente, video en klanklêers in die gemerkte liggings lees.</translation> <translation id="7167486101654761064">Maak altyd hierdie tipe lêers oop</translation> @@ -7344,6 +7349,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" />-status</translation> <translation id="8139447493436036221">Google Drive-lêers</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Jy kan meer kenmerke in Foonsentrum-instellings opstel</translation> <translation id="8141584439523427891">Maak tans in alternatiewe blaaier oop</translation> <translation id="8141725884565838206">Bestuur jou wagwoorde</translation> <translation id="814204052173971714">{COUNT,plural, =1{'n video}other{# video's}}</translation> @@ -7551,6 +7557,7 @@ <translation id="833986336429795709">Kies 'n program om hierdie skakel oop te maak</translation> <translation id="8342221978608739536">Het nie probeer nie</translation> <translation id="8342861492835240085">Kies 'n versameling</translation> +<translation id="8345848587667658367">Jy kan nou jou foon se onlangse foto's, media, kennisgewings en programme bekyk</translation> <translation id="8347227221149377169">Druktake</translation> <translation id="834785183489258869">Terwyl jy in Incognito is, kan werwe nie jou webkoekies gebruik om jou blaai-aktiwiteit op verskillende werwe te sien nie, byvoorbeeld om advertensies te personaliseer. Kenmerke op sommige werwe sal dalk nie werk nie.</translation> <translation id="8350789879725387295">Stilusnutsgoed in dok</translation> @@ -8156,6 +8163,7 @@ <translation id="8957757410289731985">Pasmaak profiel</translation> <translation id="895944840846194039">JavaScript-geheue</translation> <translation id="8960208913905765425">Eenheidomskakeling vir Vinnige Antwoorde</translation> +<translation id="8960638196855923532">Jy kan nou jou foon se kennisgewings en programme bekyk</translation> <translation id="8962051932294470566">Jy kan slegs een lêer op 'n slag deel. Probeer weer nadat die huidige oordrag afgehandel is.</translation> <translation id="8962083179518285172">Versteek besonderhede</translation> <translation id="8962918469425892674">Hierdie werf gebruik beweging- of ligsensors.</translation> @@ -8307,6 +8315,7 @@ <translation id="9103868373786083162">Druk om terug te gaan, kontekskieslys om geskiedenis te sien</translation> <translation id="9108035152087032312">Naam en venster</translation> <translation id="9108072915170399168">Huidige datagebruikinstelling is Sonder Internet</translation> +<translation id="9108294543511800041">Jy kan nou jou foon se onlangse foto's, media en kennisgewings bekyk</translation> <translation id="9108674852930645435">Sien wat nuut is op jou <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Veilige DNS is dalk nie die hele tyd beskikbaar nie</translation> <translation id="9109122242323516435">Vee lêers uit toestelberging om spasie beskikbaar te maak.</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 258bc0be..535bf22 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1912,6 +1912,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{إزالة تطبيق واحد تم إيقافه نهائيًا}zero{إزالة # تطبيق تم إيقافه نهائيًا}two{إزالة تطبيقَين تم إيقافهما نهائيًا}few{إزالة # تطبيقات تم إيقافها نهائيًا}many{إزالة # تطبيقًا تم إيقافه نهائيًا}other{إزالة # تطبيق تم إيقافه نهائيًا}}</translation> <translation id="2776560192867872731">تعديل اسم الجهاز <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">حذف هذه الحاوية</translation> +<translation id="2778471504622896352">إضافة التطبيقات عن بُعد إلى مشغِّل التطبيقات في ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">حدث خطأ أثناء تثبيت تطبيق Linux</translation> <translation id="2783298271312924866">تم التنزيل</translation> @@ -2857,7 +2858,7 @@ <translation id="3714195043138862580">وُضِعَ هذا الجهاز التجريبي في الحالة "غير متوفِّر".</translation> <translation id="3719826155360621982">الصفحة الرئيسية</translation> <translation id="372062398998492895">إعدادات طابعات CUPS</translation> -<translation id="3721119614952978349">علاقتك مع Google</translation> +<translation id="3721119614952978349">أنت وGoogle</translation> <translation id="3722108462506185496">حدث خطأ أثناء بدء تشغيل خدمة الآلة الافتراضية. يُرجى إعادة المحاولة.</translation> <translation id="3727144509609414201">شبكات Wi-Fi المتاحة</translation> <translation id="3727187387656390258">فحص النوافذ المنبثقة</translation> @@ -3545,6 +3546,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" /> و<ph name="SECOND_SWITCH" /> و<ph name="THIRD_SWITCH" /> و<ph name="NUMBER_OF_OTHER_SWITCHES" /> مفتاح تبديل آخر</translation> <translation id="439266289085815679">يتم التحكّم في إعداد البلوتوث من قِبل <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">تعديل ملف الضبط</translation> +<translation id="4393713825278446281">الأجهزة التي تتضمّن ميزة "الإقران السريع" والمحفوظة في حساب <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">إيقاف</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&فتح كل العناوين}=1{&فتح إشارة مرجعية واحدة}two{&فتح كِلا العنوانَين ({COUNT})}few{&فتح كل الـ ({COUNT}) عناوين}many{&فتح كل الـ ({COUNT}) عنوانًا}other{&فتح كل الـ ({COUNT}) عنوان}}</translation> <translation id="4397372003838952832">لن تضطر إلى تذكُّر كلمة المرور هذه. سيتم حفظ كلمة المرور في <ph name="GOOGLE_PASSWORD_MANAGER" /> للحساب <ph name="EMAIL" />.</translation> @@ -3774,6 +3776,7 @@ <translation id="4615586811063744755">لم يتم اختيار أي ملفات تعريف ارتباط.</translation> <translation id="461661862154729886">مصدر الطاقة</translation> <translation id="4617001782309103936">قصير جدًا</translation> +<translation id="4617019240346358451">إعادة تحميل الصفحة لاستخدام "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">خيارات الإضافات</translation> <translation id="4617880081511131945">لا يمكن إجراء اتصال</translation> <translation id="4619564267100705184">إثبات هويّتك</translation> @@ -3989,6 +3992,7 @@ <translation id="4833683849865011483">تم العثور على طابعة واحدة من خادم الطباعة.</translation> <translation id="4836504898754963407">إدارة بصمات الإصبع</translation> <translation id="4837128290434901661">هل تريد التغيير مرة أخرى إلى "بحث Google"؟</translation> +<translation id="4837165100461973682">إعادة تحميل الصفحة لتطبيق التغييرات</translation> <translation id="4837926214103741331">لا يصرح لك باستخدام هذا الجهاز. يُرجى الاتصال بمالك الجهاز، للحصول على إذن تسجيل الدخول.</translation> <translation id="4837952862063191349">لإلغاء قفل بياناتك المحلية واستعادتها، يُرجى إدخال كلمة مرور <ph name="DEVICE_TYPE" /> القديمة.</translation> <translation id="4838170306476614339">عرض الصور والوسائط والإشعارات من هاتفك</translation> @@ -4199,7 +4203,7 @@ <translation id="5051836348807686060">لا تتوفر ميزة التدقيق الإملائي للغات التي اخترتها.</translation> <translation id="5052499409147950210">تعديل موقع إلكتروني</translation> <translation id="505347685865235222">مجموعة لم تتم تسميتها - <ph name="GROUP_CONTENT_STRING" /></translation> -<translation id="5053962746715621840">ابحث في الصور عبر "عدسة Google"</translation> +<translation id="5053962746715621840">البحث باستخدام الصورة بواسطة "عدسة Google"</translation> <translation id="5054374119096692193">الاطّلاع على كل خيارات البطاقة في القسم <ph name="BEGIN_LINK" />تخصيص Chrome<ph name="END_LINK" /></translation> <translation id="5056950756634735043">جارٍ الاتصال بالحاوية</translation> <translation id="5057110919553308744">عند النقر على "الإضافة"</translation> @@ -4298,6 +4302,7 @@ <translation id="5150254825601720210">اسم خادم بروتوكول SSL (طبقة المقابس الآمنة) لشهادة Netscape</translation> <translation id="5151354047782775295">احرص على تفريغ مساحة على القرص أو حدد بيانات قد يتم حذفها تلقائيًا</translation> <translation id="5153234146675181447">عدم تذكُّر الهاتف</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">الإعدادات المتقدمة لـ <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">الموضوع</translation> <translation id="5155327081870541046">في شريط العناوين، أدخِل اختصار الموقع الإلكتروني الذي تريد البحث فيه، مثل "@bookmarks". بعد ذلك، اضغط على اختصار لوحة المفاتيح المفضّل لديك وأدخِل عبارة البحث.</translation> @@ -5941,6 +5946,7 @@ <translation id="6790497603648687708">تمت إضافة <ph name="EXTENSION_NAME" /> عن بُعد</translation> <translation id="6790820461102226165">إضافة شخص...</translation> <translation id="6793604637258913070">تمييز علامة إقحام النص عندما تظهر أو تتحرك</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">تتيح لك ميزة "المسح التلقائي" إمكانية التنقُّل بين العناصر على الشاشة تلقائيًا. عند تمييز عنصر معيَّن، اضغط على "اختيار" لتنشيطه.</translation> <translation id="6795884519221689054">باندا</translation> <translation id="6797493596609571643">عفوًا، حدث خطأ ما.</translation> @@ -7816,6 +7822,7 @@ <translation id="8642947597466641025">لتكبير النص</translation> <translation id="8643443571868262066">قد يكون <ph name="FILE_NAME" /> خطيرًا. هل تريد إرساله إلى برنامج "الحماية المتقدّمة" من Google لفحصه؟</translation> <translation id="8644047503904673749">{COUNT,plural, =0{ما مِن ملفات تعريف ارتباط}=1{تم حظر ملف تعريف ارتباط واحد}two{تم حظر ملفَي تعريف ارتباط (#)}few{تم حظر # ملفات تعريف ارتباط}many{تم حظر # ملف تعريف ارتباط}other{تم حظر # ملف تعريف ارتباط}}</translation> +<translation id="864423554496711319">الأجهزة المحفوظة في حسابك</translation> <translation id="8644655801811752511">تعذّرت إعادة ضبط مفتاح الأمان هذا. يمكنك محاولة إعادة ضبط هذا المفتاح فورًا بعد إدخاله.</translation> <translation id="8645354835496065562">مواصلة السماح بالوصول إلى أجهزة الاستشعار</translation> <translation id="8645920082661222035">توقُّع الأحداث الخطيرة قبل حدوثها والتحذير منها</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index 8bb42fe..8a03d0e5 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -1920,6 +1920,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{১ টা অসমৰ্থিত এপ্ আঁতৰাওক}one{# টা অসমৰ্থিত এপ্ আঁতৰাওক}other{# টা অসমৰ্থিত এপ্ আঁতৰাওক}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" />ৰ বাবে ডিভাইচৰ নাম সলনি কৰক</translation> <translation id="2777251078198759550">এই কণ্টেনাৰটো মচক</translation> +<translation id="2778471504622896352">ChromeOS লঞ্চাৰটোত ৰিম’ট এপ্ যোগ দিয়ক</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux এপ্লিকেশ্বন ইনষ্টল কৰোঁতে কিবা আসোঁৱাহ হ’ল</translation> <translation id="2783298271312924866">ডাউনল’ড কৰা হ‘ল</translation> @@ -3554,6 +3555,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> আৰু অন্য <ph name="NUMBER_OF_OTHER_SWITCHES" /> টা ছুইচ</translation> <translation id="439266289085815679">ব্লুটুথ কনফিগাৰেশ্বন <ph name="USER_EMAIL" />ৰ দ্বাৰা নিয়ন্ত্ৰণ কৰা হয়।</translation> <translation id="4392896746540753732">কনফিগাৰেশ্বন ফাইলটো সম্পাদনা কৰক</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" />ত ছেভ কৰি থোৱা ডিভাইচসমূহ ক্ষিপ্ৰতাৰে পেয়াৰ কৰক</translation> <translation id="4394049700291259645">অক্ষম কৰক</translation> <translation id="4396956294839002702">{COUNT,plural, =0{সকলো &খোলক}=1{বুকমাৰ্ক &খোলক}one{সকলো ({COUNT} টা) &খোলক}other{সকলো ({COUNT} টা) &খোলক}}</translation> <translation id="4397372003838952832">আপুনি এই পাছৱৰ্ডটো মনত ৰখাৰ প্ৰয়োজন নাই। <ph name="EMAIL" />ৰ বাবে এইটো <ph name="GOOGLE_PASSWORD_MANAGER" />ত ছেভ কৰা হ’ব।</translation> @@ -3784,6 +3786,7 @@ <translation id="4615586811063744755">কোনো কুকি বাছনি কৰা হোৱা নাই</translation> <translation id="461661862154729886">শক্তিৰ উৎস</translation> <translation id="4617001782309103936">অতি চমু</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" ব্যৱহাৰ কৰিবলৈ পৃষ্ঠাখন পুনৰ ল’ড কৰক</translation> <translation id="4617270414136722281">এক্সটেনশ্বন বিকল্প</translation> <translation id="4617880081511131945">সংযোগ স্থাপন কৰিব নোৱাৰি</translation> <translation id="4619564267100705184">এয়া আপুনিয়েই বুলি সত্যাপন কৰক</translation> @@ -3999,6 +4002,7 @@ <translation id="4833683849865011483">প্ৰিণ্ট ছার্ভাৰটোৰ পৰা ১ টা প্ৰিণ্টাৰ বিচাৰি পোৱা গৈছে</translation> <translation id="4836504898754963407">ফিংগাৰপ্ৰিণ্টবোৰ পৰিচালনা কৰক</translation> <translation id="4837128290434901661">পুনৰ Google Searchলৈ সলনি কৰিবনে?</translation> +<translation id="4837165100461973682">আপুনি কৰা সালসলনিসমূহ প্ৰয়োগ কৰিবলৈ পৃ্ষ্ঠাখন পুনৰ ল’ড কৰক</translation> <translation id="4837926214103741331">আপোনাৰ এই ডিভাইচটো ব্যৱহাৰ কৰাৰ কৰ্তৃত্ব নাই। ছাইন ইনৰ অনুমতিৰ বাবে অনুগ্ৰহ কৰি ডিভাইচৰ গৰাকীৰ সৈতে যোগাযোগ কৰক।</translation> <translation id="4837952862063191349">আপোনাৰ স্থানীয় ডেটা আনলক আৰু পুনঃস্থাপন কৰিবলৈ , আপোনাৰ পুৰণি <ph name="DEVICE_TYPE" />ৰ পাছৱর্ড দিয়ক।</translation> <translation id="4838170306476614339">আপোনাৰ ফ’নটোৰ ফট’, মিডিয়া আৰু জাননী চাওক</translation> @@ -4308,6 +4312,7 @@ <translation id="5150254825601720210">Netscape প্ৰমাণপত্ৰ SSL ছার্ভাৰৰ নাম</translation> <translation id="5151354047782775295">ডিস্কৰ ঠাই খালী কৰক অন্যথা বাছনি কৰ ডেটা স্বয়ংক্ৰিয়ভাৱে মচা হ’ব</translation> <translation id="5153234146675181447">ফ’নৰ জৰিয়াতে ব্যৱহাৰ কৰা সুবিধাসমূহ বাদ দিয়ক</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" />ৰ বাবে উন্নত ছেটিং</translation> <translation id="5154702632169343078">বিষয়বস্তু</translation> <translation id="5155327081870541046">ঠিকনাৰ বাৰডালত আপুনি সন্ধান কৰিব বিচৰা ছাইটটোৰ শ্বৰ্টকাটটো, যেনে, "@bookmarks" লিখক। তাৰ পাছত, আপোনাৰ পচন্দৰ কীব’ৰ্ডৰ শ্বৰ্টকাটটো টিপক আৰু আপুনি সন্ধান কৰিবলৈ বিচৰা শব্দটো দিয়ক।</translation> @@ -5945,6 +5950,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> দূৰৰ পৰা যোগ কৰা হৈছে</translation> <translation id="6790820461102226165">অন্য লোকক যোগ কৰক...</translation> <translation id="6793604637258913070">পাঠৰ কাৰেট প্ৰদর্শিত হ’লে বা লৰচৰ কৰিলে সেইখিনি হাইলাইট কৰক</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">স্বয়ং-স্কেন সুবিধাটোৱে আপোনাক স্ক্ৰীনখনত বস্তুসমূহৰ মাজত স্বয়ংক্ৰিয়ভাৱে ইফাল-সিফাল কৰিবলৈ দিয়ে। কোনো এটা বস্তু হাইলাইট কৰা হ’লে, সেইটো সক্ৰিয় কৰিবলৈ "বাছনি কৰক" টিপক।</translation> <translation id="6795884519221689054">পাণ্ডা</translation> <translation id="6797493596609571643">দুঃখিত, কিবা ভুল হ'ল।</translation> @@ -7816,6 +7822,7 @@ <translation id="8642947597466641025">পাঠৰ আকাৰ ডাঙৰ কৰক</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> বিপজ্জনক হ’ব পাৰে। স্কেন কৰিবলৈ Googleৰ সুৰক্ষা সম্পৰ্কীয় উন্নত সুবিধাটোলৈ পঠিয়াবনে?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{কোনো কুকি নাই}=1{১ টা অৱৰোধ কৰা হ’ল}one{# টা অৱৰোধ কৰা হ’ল}other{# টা অৱৰোধ কৰা হ’ল}}</translation> +<translation id="864423554496711319">আপোনাৰ একাউণ্টত ছেভ কৰি থোৱা ডিভাইচ</translation> <translation id="8644655801811752511">এই সুৰক্ষা চাবিটো ৰিছেট কৰিব নোৱাৰি। চাবিটো ভৰোৱাৰ লগে লগে সেইটো ৰিছেট কৰি চাওক।</translation> <translation id="8645354835496065562">ছেন্সৰৰ এক্সেছ প্ৰদান কৰা কার্য অব্যাহত ৰাখক</translation> <translation id="8645920082661222035">বিপজ্জনক ঘটনাবোৰৰ সম্পর্কে অনুমান কৰে আৰু সেইবোৰ ঘটাৰ পূর্বে আপোনাক সকীয়নি দিয়ে</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 582ec7c..7f51d3c 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -1542,6 +1542,7 @@ <translation id="2433836460518180625">Yalnız cihazı kiliddən çıxarın</translation> <translation id="2434449159125086437">Printeri quraşdırmaq mümkün deyil. Konfiqurasiyanı yoxlayın və yenidən cəhd edin.</translation> <translation id="2434758125294431199">Sizinlə kimin paylaşa biləcəyini seçin</translation> +<translation id="2434915728183570229">İndi telefonunuzun tətbiqlərinə baxa bilərsiniz</translation> <translation id="2435137177546457207">Google Chrome və ChromeOS Flex üzrə Əlavə Şərtlər</translation> <translation id="2435248616906486374">Şəbəkə bağlantısı kəsildi</translation> <translation id="2435457462613246316">Parol görünsün</translation> @@ -1906,6 +1907,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1 dəstəklənməyən tətbiqi silin}other{# dəstəklənməyən tətbiqi silin}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> üçün cihaz adını dəyişin</translation> <translation id="2777251078198759550">Bu konteyneri silin</translation> +<translation id="2778471504622896352">Uzaqdan tətbiqləri ChromeOS başladıcıya əlavə edin</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux tətbiqini quraşdırarkən xəta baş verdi</translation> <translation id="2783298271312924866">Endirildi</translation> @@ -3539,6 +3541,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> və daha <ph name="NUMBER_OF_OTHER_SWITCHES" /> dəyişdirici</translation> <translation id="439266289085815679">Bluetooth konfiqurasiyası <ph name="USER_EMAIL" /> tərəfindən idarə olunur.</translation> <translation id="4392896746540753732">Konfiqurasiya faylına düzəliş edin</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" /> hesabında saxlanılan cihazları Sürətli Birləşdirin</translation> <translation id="4394049700291259645">Deaktiv edin</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Hamısını açın}=1{&Əlfəcini açın}other{&Hamısını açın ({COUNT})}}</translation> <translation id="4397372003838952832">Bu parolu yadda saxlamağa ehtiyac yoxdur. <ph name="EMAIL" /> üçün burada saxlanılacaq: <ph name="GOOGLE_PASSWORD_MANAGER" />.</translation> @@ -3768,6 +3771,7 @@ <translation id="4615586811063744755">kuki seçilməyib</translation> <translation id="461661862154729886">Enerji mənbəyi</translation> <translation id="4617001782309103936">Çox qısa</translation> +<translation id="4617019240346358451">Səhifəni yenidən yükləyərək "<ph name="EXTENSION_NAME" />" istifadə edin</translation> <translation id="4617270414136722281">Artırma seçimləri</translation> <translation id="4617880081511131945">Bağlantı qurmaq mümkün deyil</translation> <translation id="4619564267100705184">Kimliyinizi doğrulayın</translation> @@ -3983,6 +3987,7 @@ <translation id="4833683849865011483">Çap serverindən 1 printer tapıldı</translation> <translation id="4836504898754963407">Barmaq izlərini idarə edin</translation> <translation id="4837128290434901661">Google Axtarış seçiminə qayıtmaq istəyirsiniz?</translation> +<translation id="4837165100461973682">Dəyişikliklərinizi tətbiq etmək üçün səhifəni yenidən yükləyin</translation> <translation id="4837926214103741331">Bu cihazı istifadə etmək icazəniz yoxdur. Giriş icazəsi üçün cihaz sahibi ilə əlaqə saxlayın.</translation> <translation id="4837952862063191349">Lokal datanızı kiliddən çıxarmaq və bərpa etmək üçün köhnə <ph name="DEVICE_TYPE" /> parolunuzu daxil edin.</translation> <translation id="4838170306476614339">Telefonunuzun fotolarına, mediasına və bildirişlərinə baxın</translation> @@ -4218,6 +4223,7 @@ <translation id="5072900412896857127">Google Play Xidmət Şərtlərini yükləmək olmur. Şəbəkə bağlantınızı yoxlayıb yenidən cəhd edin.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> və daha #}}</translation> <translation id="5074318175948309511">Yeni ayarlar qüvvəyə minməmişdən əvvəl bu səhifə yenidən yüklənilməlidir.</translation> +<translation id="5074761966806028321">Ayarlamanı tamamlamaq üçün hələ də icazə tələb olunur</translation> <translation id="5075910247684008552">Təhlükəli məzmun defolt olaraq təhlükəsiz saytlarda blok edildi</translation> <translation id="5078638979202084724">Bütün vərəqələri əlfəcinləyin</translation> <translation id="5078796286268621944">Yanlış PIN</translation> @@ -4292,6 +4298,7 @@ <translation id="5150254825601720210">Netscape Sertifikat SSL Server adı</translation> <translation id="5151354047782775295">Diskdə yer boşaldın və ya avtomatik silinə bilən datanı seçin</translation> <translation id="5153234146675181447">Telefonu unudun</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> üçün qabaqcıl ayarlar</translation> <translation id="5154702632169343078">Mövzu</translation> <translation id="5155327081870541046">Ünvan panelinə axtarmaq istədiyiniz saytın qısayolunu daxil edin (məsələn: "@əlfəcinlər"). Sonra, istədiyiniz klaviatura qısayolunu basın və axtarış sözünü daxil edin.</translation> @@ -4580,6 +4587,7 @@ <translation id="5449551289610225147">Yanlış parol</translation> <translation id="5449588825071916739">Bütün Tabları Əlfəcinləyin</translation> <translation id="5449716055534515760">Pəncərəni bağlayın</translation> +<translation id="5452446625764825792">İndi telefonunuzun son fotolarına, mediasına və tətbiqlərinə baxa bilərsiniz</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (oflayn işləyir)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> ilə</translation> <translation id="545484289444831485">Digər axtarış nəticələrinə baxın</translation> @@ -4640,6 +4648,7 @@ <translation id="5499211612787418966">Bu dialoq hazırda fokuslanmayıb. Bu dialoqu fokuslamaq üçün Alt-Shift A düymələrini basın.</translation> <translation id="5499313591153584299">Bu fayl kompüteriniz üçün zərərli ola bilər.</translation> <translation id="5499453227627332024">Linux Konteyneriniz üçün təkmilləşdirmə əlçatandır. Daha sonra Ayarlar tətbiqində də təkmilləşdirə bilərsiniz.</translation> +<translation id="5499476581866658341">İndi telefonunuzun son fotolarına və mediasına baxa bilərsiniz</translation> <translation id="549957179819296104">Yeni işarə</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Axtarış tarixçəsi<ph name="END_LINK_SEARCH" /> və <ph name="BEGIN_LINK_GOOGLE" />digər fəaliyyət formaları<ph name="END_LINK_GOOGLE" /> daxil olduğunuz zaman Google Hesabınızda saxlanıla bilər. İstənilən zaman onları silə bilərsiniz.</translation> <translation id="5500709606820808700">Təhlükəsizlik yoxlanışı bu gün icra olunub</translation> @@ -5925,6 +5934,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> uzaqdan əlavə edildi</translation> <translation id="6790820461102226165">Şəxs əlavə edin...</translation> <translation id="6793604637258913070">Göründükdə və ya hərəkət etdikdə, mətn karetini vurğulayın.</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Avtomatik skanlama, ekrandakı elementlər arasında avtomatik olaraq keçid etməyinizə imkan verir. Element vurğulandıqda, onu aktivləşdirmək üçün "Seçin" düyməsini basın.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Xəta oldu.</translation> @@ -6301,6 +6311,7 @@ <translation id="7152478047064750137">Bu artırma xüsusi icazələr tələb etmir</translation> <translation id="7154130902455071009">Başlanğıc səhifənizi buna dəyişin: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Kamera və ya fayldan mövcud foto</translation> +<translation id="7160182524506337403">İndi telefonunuzun bildirişlərinə baxa bilərsiniz</translation> <translation id="7163202347044721291">Aktivləşdirmə kodu doğrulanır...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" yoxlanılmış məkanlarda şəkil, video və səs fayllarını oxuya bilər.</translation> <translation id="7167486101654761064">Bu növ faylları hər zaman açın</translation> @@ -7314,6 +7325,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> statusu</translation> <translation id="8139447493436036221">Google Disk faylları</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Telefon Mərkəzi ayarlarında daha çox funksiya ayarlaya bilərsiniz</translation> <translation id="8141584439523427891">İndi alternativ brauzerdə açılır</translation> <translation id="8141725884565838206">Parollarınızı idarə edin</translation> <translation id="814204052173971714">{COUNT,plural, =1{video}other{# video}}</translation> @@ -7521,6 +7533,7 @@ <translation id="833986336429795709">Bu linki açmaq üçün tətbiq seçin</translation> <translation id="8342221978608739536">Sınaqdan keçirilmədi</translation> <translation id="8342861492835240085">Kolleksiya seçin</translation> +<translation id="8345848587667658367">İndi telefonunuzun son fotolarına, mediasına, bildirişlərinə və tətbiqlərinə baxa bilərsiniz</translation> <translation id="8347227221149377169">Çap işləri</translation> <translation id="834785183489258869">Anonim rejimdə olduqda saytlar müxtəlif saytlarda axtarış fəaliyyətinizi görmək üçün kukilərinizdən istifadə edə bilmir (məsələn, reklamları fərdiləşdirmək üçün). Bəzi saytlardakı funksiyalar işləməyə bilər.</translation> <translation id="8350789879725387295">Dokda stilus alətləri</translation> @@ -7796,6 +7809,7 @@ <translation id="8642947597466641025">Mətni böyüdün</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> təhlükəli ola bilər. Skanlanması üçün Google Qabaqcıl Qorumaya göndərilsin?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Kuki yoxdur}=1{1 kuki bloklanıb}other{# kuki bloklanıb}}</translation> +<translation id="864423554496711319">Cihazlar hesabınızda saxlandı</translation> <translation id="8644655801811752511">Bu güvənlik açarını sıfırlamaq mümkün deyil. Açarı daxil etdikdən dərhal sonra sıfırlayın.</translation> <translation id="8645354835496065562">Sensor girişinə icazə verməyə davam edin</translation> <translation id="8645920082661222035">Təhlükəli hadisələr baş vermədən əvvəl onları proqnozlaşdırır və sizə xəbərdarlıq edir</translation> @@ -8123,6 +8137,7 @@ <translation id="8957757410289731985">Profili fərdiləşdirin</translation> <translation id="895944840846194039">JavaScript yaddaşı</translation> <translation id="8960208913905765425">Cəld Cavablar üzrə vahidin çevrilməsi</translation> +<translation id="8960638196855923532">İndi telefonunuzun bildirişlərinə və tətbiqlərinə baxa bilərsiniz</translation> <translation id="8962051932294470566">Hər dəfə yalnız bir fayl paylaşa bilərsiniz. Cari ötürmə başa çatdıqdan sonra yenidən sınayın.</translation> <translation id="8962083179518285172">Detalları gizlədin</translation> <translation id="8962918469425892674">Bu sayt hərəkət və ya açıq sensorlardan istifadə edir.</translation> @@ -8274,6 +8289,7 @@ <translation id="9103868373786083162">Geri qayıtmaq üçün basın və tarixməni görmək üçün kontekst menyuya basın</translation> <translation id="9108035152087032312">&Pəncərəyə ad verin...</translation> <translation id="9108072915170399168">Cari data istifadəsi ayarı: İnternet olmadan</translation> +<translation id="9108294543511800041">İndi telefonunuzun son fotolarına, mediasına və bildirişlərinə baxa bilərsiniz</translation> <translation id="9108674852930645435"><ph name="DEVICE_TYPE" /> cihazındakı yeniliklərə baxın</translation> <translation id="9108808586816295166">Təhlükəsiz DNS hər zaman əlçatan olmaya bilər</translation> <translation id="9109122242323516435">Yaddaşı boşaltmaq üçün faylları silin.</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 5f43367..aab48f5 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1910,6 +1910,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Выдаліць 1 праграму, якая не падтрымліваецца}one{Выдаліць # праграму, якая не падтрымліваецца}few{Выдаліць # праграмы, якія не падтрымліваюцца}many{Выдаліць # праграм, якія не падтрымліваюцца}other{Выдаліць # праграмы, якія не падтрымліваюцца}}</translation> <translation id="2776560192867872731">Змяніць назву прылады на "<ph name="DEVICE_NAME" />"</translation> <translation id="2777251078198759550">Выдаліць кантэйнер</translation> +<translation id="2778471504622896352">Дадаваць праграмы з аддаленым доступам на панэль запуску ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Памылка ўсталявання Linux-праграмы</translation> <translation id="2783298271312924866">Спампавана</translation> @@ -3545,6 +3546,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> і яшчэ некалькі (<ph name="NUMBER_OF_OTHER_SWITCHES" />) пераключальнікаў</translation> <translation id="439266289085815679">Карыстальнік <ph name="USER_EMAIL" /> кіруе канфігурацыяй Bluetooth.</translation> <translation id="4392896746540753732">Рэдагаванне файла канфігурацыі</translation> +<translation id="4393713825278446281">Прылады з Хуткім спалучэннем, захаваныя ва ўліковым запісе <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Выключыць</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Адкрыць усе}=1{&Адкрыць закладку}one{&Адкрыць усе ({COUNT})}few{&Адкрыць усе ({COUNT})}many{&Адкрыць усе ({COUNT})}other{&Адкрыць усе ({COUNT})}}</translation> <translation id="4397372003838952832">Вам не трэба запамінаць гэты пароль. <ph name="GOOGLE_PASSWORD_MANAGER" /> захавае яго для ўліковага запісу <ph name="EMAIL" />.</translation> @@ -3774,6 +3776,7 @@ <translation id="4615586811063744755">файлы cookie не выбраны</translation> <translation id="461661862154729886">Крыніца энергіі</translation> <translation id="4617001782309103936">Занадта кароткі</translation> +<translation id="4617019240346358451">Каб выкарыстаць пашырэнне "<ph name="EXTENSION_NAME" />", абнавіце старонку</translation> <translation id="4617270414136722281">Параметры пашырэння</translation> <translation id="4617880081511131945">Не ўдалося ўстанавіць падключэнне</translation> <translation id="4619564267100705184">Пацвердзіць маю асобу</translation> @@ -3923,6 +3926,7 @@ <translation id="4768332406694066911">У вас ёсць сертыфікаты ад гэтых арганізацый, якія ідэнтыфікуюць вас</translation> <translation id="4770119228883592393">Запытаны дазвол. Каб адказаць, націсніце ⌘ + Option + стрэлка ўніз</translation> <translation id="4773112038801431077">Абнаўленне Linux</translation> +<translation id="4774337692467964393">Калі Smart Lock уключаны, вам не трэба ўводзіць PIN-код або пароль</translation> <translation id="4775142426314270551">Дапамажыце нам паляпшаць функцыі і прадукцыйнасць Chrome і Chrome OS шляхам аўтаматычнай адпраўкі ў Google справаздач аб збоях, а таксама даных пра выкарыстанне і дыягностыку. Некаторыя сукупныя даныя будуць выкарыстаны таксама праграмамі для Android і партнёрамі Google. Калі захоўванне гісторыі дзеянняў у інтэрнэце і праграмах ва Уліковым запісе Google вашага дзіцяці ўключана, то ў гэтым уліковым запісе могуць захоўвацца і даныя Android дзіцяці.</translation> <translation id="477647109558161443">Стварыць ярлык на працоўным стале</translation> <translation id="4776594120007763294">Націсніце кнопку, каб дадаць старонку ў спіс на прагляд</translation> @@ -3972,6 +3976,7 @@ <translation id="4820236583224459650">Задаць білет у якасці актыўнага</translation> <translation id="4821935166599369261">&Прафіліраванне ўключана</translation> <translation id="4823484602432206655">Прагляд і змяненне налад прылады і карыстальніка</translation> +<translation id="4823894915586516138">PIN-код (пароль) абараняе вашы даныя на прыладзе <ph name="DEVICE_TYPE" />, у тым ліку звесткі, да якіх вы атрымліваеце доступ з тэлефона</translation> <translation id="4824037980212326045">Рэзервовае капіраванне і аднаўленне Linux</translation> <translation id="4824958205181053313">Скасаваць сінхранізацыю?</translation> <translation id="4827675678516992122">Не ўдалося падключыцца</translation> @@ -3987,6 +3992,7 @@ <translation id="4833683849865011483">На серверы друку знойдзены 1 прынтар</translation> <translation id="4836504898754963407">Кіраваць адбіткамі пальцаў</translation> <translation id="4837128290434901661">Зноў зрабіць Google Пошук стандартнай пошукавай сістэмай?</translation> +<translation id="4837165100461973682">Каб прымяніць змяненні, абнавіце старонку</translation> <translation id="4837926214103741331">Вы не аўтарызаваны для выкарыстання гэтай прылады. Звярніцеся да ўладальніка прылады з запытам дазволу на ўваход.</translation> <translation id="4837952862063191349">Каб разблакіраваць і аднавіць лакальныя даныя, увядзіце стары пароль прылады <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Прагляд фота, медыяфайлаў і апавяшчэнняў з тэлефона</translation> @@ -4296,6 +4302,7 @@ <translation id="5150254825601720210">Назва SSL-сервера сертыфіката Netscape</translation> <translation id="5151354047782775295">Вызваліце месца на дыску або выберыце даныя, якія могуць быць аўтаматычна выдалены</translation> <translation id="5153234146675181447">Забыць тэлефон</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Пашыраныя налады для прынтара "<ph name="PRINTING_DESTINATION" />"</translation> <translation id="5154702632169343078">Тэма</translation> <translation id="5155327081870541046">У адрасным радку ўвядзіце каманду для старонкі, на якой трэба выканаць пошук (напрыклад, "@bookmarks"). Потым націсніце выбранае спалучэнне клавіш і ўвядзіце пошукавы запыт.</translation> @@ -5629,6 +5636,7 @@ <translation id="648927581764831596">Даступных няма</translation> <translation id="6490471652906364588">Прылада USB-C (правы порт)</translation> <translation id="6491376743066338510">Памылка аўтарызацыі</translation> +<translation id="6492396476180293140">Унутраная камера выключана апаратным пераключальнікам</translation> <translation id="6494327278868541139">Паказаць падрабязныя звесткі аб палепшанай абароне</translation> <translation id="6494445798847293442">Не з'яўляецца цэнтрам сертыфікацыі</translation> <translation id="6494974875566443634">Наладжванне</translation> @@ -5936,6 +5944,7 @@ <translation id="6790497603648687708">Праграма <ph name="EXTENSION_NAME" /> дададзена з сервера</translation> <translation id="6790820461102226165">Дадаць карыстальніка...</translation> <translation id="6793604637258913070">Указваць на курсор рэдагавання тэксту, калі ён з'яўляецца або рухаецца</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Пры выкарыстанні аўтаматычнага сканіравання ажыццяўляецца аўтаматычны пераход ад аднаго элемента на экране да другога. Калі элемент вылучаны, націсніце "Выбраць" для яго актывацыі.</translation> <translation id="6795884519221689054">Панда</translation> <translation id="6797493596609571643">На жаль, нешта пайшло не так.</translation> @@ -7807,6 +7816,7 @@ <translation id="8642947597466641025">Павялічыць тэкст</translation> <translation id="8643443571868262066">Файл "<ph name="FILE_NAME" />" можа быць небяспечным. Адправіць яго на праверку ў Палепшаную абарону Google?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Няма файлаў cookie}=1{Заблакіраваны 1 файл cookie}one{Заблакіраваны # файл cookie}few{Заблакіравана # файлы cookie}many{Заблакіравана # файлаў cookie}other{Заблакіравана # файла cookie}}</translation> +<translation id="864423554496711319">Прылады, захаваныя ва ўліковым запісе</translation> <translation id="8644655801811752511">Не ўдалося скінуць гэты ключ бяспекі. Паспрабуйце скінуць ключ адразу пасля яго ўстаўкі.</translation> <translation id="8645354835496065562">Працягваць дазваляць доступ да датчыкаў</translation> <translation id="8645920082661222035">Прадказвае небяспечныя падзеі і папярэджвае пра іх да таго, як яны здараюцца</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 5c98ef4..d027b16 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -1919,6 +1919,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Премахване на 1 неподдържано приложение}other{Премахване на # неподдържани приложения}}</translation> <translation id="2776560192867872731">Промяна на името на устройството <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Изтриване на този контейнер</translation> +<translation id="2778471504622896352">Добавяйте отдалечени приложения към стартовия панел на ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Грешка при инсталирането на приложението за Linux</translation> <translation id="2783298271312924866">Изтеглено</translation> @@ -2234,6 +2235,7 @@ <translation id="3067198360141518313">Стартиране на тази приставка</translation> <translation id="3071624960923923138">Можете да кликнете тук, за да отворите нов раздел</translation> <translation id="3072775339180057696">Да се разреши ли на сайта да преглежда <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Превод на цялата страница</translation> <translation id="3075874217500066906">За започването на Powerwash се изисква рестартиране. След това ще бъдете помолени да потвърдите, че искате да продължите.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Запазване само на това устройство</translation> @@ -3555,6 +3557,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> и още <ph name="NUMBER_OF_OTHER_SWITCHES" /> превключвателя</translation> <translation id="439266289085815679">Конфигурацията на Bluetooth се управлява от <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Редактиране на конфигурационния файл</translation> +<translation id="4393713825278446281">Устройства с функцията за бързо сдвояване, запазени в(ъв) <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Деактивиране</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Отваряне на всички}=1{&Отваряне на отметката}other{&Отваряне на всички ({COUNT})}}</translation> <translation id="4397372003838952832">Няма да е нужно да помните тази парола. Тя ще бъде запазена в <ph name="GOOGLE_PASSWORD_MANAGER" /> за <ph name="EMAIL" />.</translation> @@ -3785,6 +3788,7 @@ <translation id="4615586811063744755">няма избрана „бисквитка“</translation> <translation id="461661862154729886">Енергиен източник</translation> <translation id="4617001782309103936">Твърде кратък</translation> +<translation id="4617019240346358451">Презаредете страницата, за да използвате <ph name="EXTENSION_NAME" /></translation> <translation id="4617270414136722281">Опции за разширението</translation> <translation id="4617880081511131945">Не може да се установи връзка</translation> <translation id="4619564267100705184">Потвърдете, че сте вие</translation> @@ -4000,6 +4004,7 @@ <translation id="4833683849865011483">В сървъра за отпечатване бе открит 1 принтер</translation> <translation id="4836504898754963407">Управление на отпечатъците</translation> <translation id="4837128290434901661">Искате ли да се върнете към Google Търсене?</translation> +<translation id="4837165100461973682">Презаредете страницата, за да приложите промените</translation> <translation id="4837926214103741331">Не сте упълномощени да използвате това устройство. За разрешение за вход се свържете със собственика му.</translation> <translation id="4837952862063191349">За отключване и възстановяване на локалните си данни, моля, въведете старата си парола за <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Преглед на снимките, мултимедийните файлове и известията на телефона ви</translation> @@ -4309,6 +4314,7 @@ <translation id="5150254825601720210">Име на SSL сървър за сертификат на Netscape</translation> <translation id="5151354047782775295">Освободете място на диска, в противен случай е възможно автоматично да бъдат изтрити определени данни</translation> <translation id="5153234146675181447">Забравяне на телефона</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Разширени настройки за „<ph name="PRINTING_DESTINATION" />“</translation> <translation id="5154702632169343078">Тема</translation> <translation id="5155327081870541046">В адресната лента въведете прекия път за сайта или частта от Chrome, в които искате да търсите, като например @bookmarks. След това натиснете предпочитаната от вас клавишна комбинация и въведете дума за търсене.</translation> @@ -5085,6 +5091,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> използва камерата и микрофона ви</translation> <translation id="5935158534896975820">Заявката за подписване на сертификат се подготвя (чака се сървърът)</translation> <translation id="5935656526031444304">Управление на „Безопасно сърфиране“</translation> +<translation id="5936065461722368675">Превод на цялата страница</translation> <translation id="5938002010494270685">Налице е надстройка за сигурност</translation> <translation id="5939518447894949180">Нулиране</translation> <translation id="5939719276406088041">Прекият път не бе създаден</translation> @@ -5945,6 +5952,7 @@ <translation id="6790497603648687708">Разширението <ph name="EXTENSION_NAME" /> бе добавено отдалечено</translation> <translation id="6790820461102226165">Добавяне на човек...</translation> <translation id="6793604637258913070">Открояване на точката на вмъкване в текста, когато се показва или движи</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Автоматичното сканиране позволява да се придвижвате автоматично през елементите на екрана. Когато даден елемент бъде откроен, натиснете „Избор“, за да го активирате.</translation> <translation id="6795884519221689054">Панда</translation> <translation id="6797493596609571643">Ами сега! Нещо се обърка.</translation> @@ -7818,6 +7826,7 @@ <translation id="8642947597466641025">Шрифтът на текста се уголемява</translation> <translation id="8643443571868262066">Файлът <ph name="FILE_NAME" /> може да е опасен. Искате ли да го изпратите до програмата на Google за разширена защита, за да бъде сканиран?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Няма „бисквитки“}=1{Блокирана е 1 „бисквитка“}other{Блокирани са # „бисквитки“}}</translation> +<translation id="864423554496711319">Устройства, запазени в профила ви</translation> <translation id="8644655801811752511">Този ключ за сигурност не може да бъде нулиран. Опитайте да го нулирате веднага след като го поставите.</translation> <translation id="8645354835496065562">Достъпът до сензорите да продължи да е разрешен</translation> <translation id="8645920082661222035">Предвижда и ви предупреждава за опасни събития, преди да се случат</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 835612b..185282f 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">শুধুমাত্র ডিভাইস আনলক করুন</translation> <translation id="2434449159125086437">প্রিন্টার সেট-আপ করা যাচ্ছে না। কনফিগারেশন চেক করে আবার চেষ্টা করুন।</translation> <translation id="2434758125294431199">বেছে নিন আপনার ডিভাইসের সাথে কারা শেয়ার করতে পারবে</translation> +<translation id="2434915728183570229">আপনি এখন আপনার ফোনের অ্যাপ দেখতে পারেন</translation> <translation id="2435137177546457207">Google Chrome ও ChromeOS Flex -এর অতিরিক্ত শর্তাবলী</translation> <translation id="2435248616906486374">নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হয়েছে</translation> <translation id="2435457462613246316">পাসওয়ার্ড দেখান</translation> @@ -1923,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{কাজ করবে না এমন ১টি অ্যাপ সরিয়ে দিন}one{কাজ করবে না এমন #টি অ্যাপ সরিয়ে দিন}other{কাজ করবে না এমন #টি অ্যাপ সরিয়ে দিন}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" />-এর জন্য ডিভাইসের নাম পরিবর্তন করুন</translation> <translation id="2777251078198759550">এই কন্টেনার মুছে দিন</translation> +<translation id="2778471504622896352">ChromeOS লঞ্চারে রিমোট অ্যাপ যোগ করুন</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux অ্যাপ ইনস্টল করার সময় সমস্যা</translation> <translation id="2783298271312924866">ডাউনলোড হয়েছে</translation> @@ -3558,6 +3560,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> এবং আরও <ph name="NUMBER_OF_OTHER_SWITCHES" />টি সুইচ</translation> <translation id="439266289085815679"><ph name="USER_EMAIL" /> এর মাধ্যমে ব্লুটুথ কনফিগারেশন নিয়ন্ত্রিত হয়।</translation> <translation id="4392896746540753732">কনফিগারেশন ফাইল এডিট করুন</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" />-এ দ্রুত পেয়ার ডিভাইসগুলি সেভ করা হয়েছে</translation> <translation id="4394049700291259645">বন্ধ</translation> <translation id="4396956294839002702">{COUNT,plural, =0{সবকটি &খুলুন}=1{বুকমার্ক &খুলুন}one{সবকটি ({COUNT}টি) &খুলুন}other{সবকটি ({COUNT}টি) &খুলুন}}</translation> <translation id="4397372003838952832">আপনার এই পাসওয়ার্ড মনে রাখার দরকার নেই। <ph name="EMAIL" />-এর জন্য <ph name="GOOGLE_PASSWORD_MANAGER" />-এ এটি সেভ করা হবে।</translation> @@ -3788,6 +3791,7 @@ <translation id="4615586811063744755">কোনও কুকি বেছে নেওয়া হয়নি</translation> <translation id="461661862154729886">পাওয়ার সোর্স</translation> <translation id="4617001782309103936">খুবই ছোট</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" ব্যবহার করতে, পৃষ্ঠা আবার লোড করুন</translation> <translation id="4617270414136722281">এক্সটেনশন বিকল্প</translation> <translation id="4617880081511131945">কানেকশন সেট-আপ করা যায়নি</translation> <translation id="4619564267100705184">নিজের পরিচয় যাচাই করুন</translation> @@ -4004,6 +4008,7 @@ <translation id="4833683849865011483">প্রিন্ট সার্ভারে ১টি প্রিন্টার পাওয়া গেছে</translation> <translation id="4836504898754963407">ফিঙ্গারপ্রিন্ট ম্যানেজ করুন</translation> <translation id="4837128290434901661">আবার পরিবর্তন করে Google Search-এ ফিরে আসতে চান?</translation> +<translation id="4837165100461973682">পরিবর্তনগুলি প্রয়োগ করার জন্য পৃষ্ঠা আবার লোড করুন</translation> <translation id="4837926214103741331">আপনার কাছে এই ডিভাইস ব্যবহারের অনুমতি নেই৷ অনুগ্রহ করে সাইন-ইন করার অনুমতির জন্য ডিভাইসের মালিকের সঙ্গে যোগাযোগ করুন৷</translation> <translation id="4837952862063191349">আপনার স্থানীয় ডেটা আনলক এবং পুনরুদ্ধার করতে, অনুগ্রহ করে আপনার পুরানো <ph name="DEVICE_TYPE" /> পাসওয়ার্ড লিখুন৷</translation> <translation id="4838170306476614339">আপনার ফোনের ফটো, মিডিয়া ও বিজ্ঞপ্তি দেখুন</translation> @@ -4239,6 +4244,7 @@ <translation id="5072900412896857127">Google Play পরিষেবার শর্তাবলী লোড করা যাচ্ছে না। আপনার নেটওয়ার্ক কানেকশন পরীক্ষা করে আবার চেষ্টা করুন।</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> ও আরও #টি}other{<ph name="FILE1" />, <ph name="FILE2" /> ও আরও #টি}}</translation> <translation id="5074318175948309511">নতুন সেটিংস কার্যকর করার আগে এই পৃষ্ঠাটি পুনরায় লোড করার প্রয়োজন হতে পারে৷</translation> +<translation id="5074761966806028321">সেট-আপ সম্পূর্ণ করতে এখনও অনুমতি প্রয়োজন</translation> <translation id="5075910247684008552">যেসব কন্টেন্ট নিরাপদ নয় সেগুলি নিরাপদ সাইটে ডিফল্ট হিসেবেই ব্লক করে দেওয়া হয়</translation> <translation id="5078638979202084724">সকল ট্যাব বুকমার্ক করুন</translation> <translation id="5078796286268621944">ভুল পিন</translation> @@ -4313,6 +4319,7 @@ <translation id="5150254825601720210">Netscape সার্টিফিকেট SSL সার্ভার নাম</translation> <translation id="5151354047782775295">ডিস্কের জায়গা খালি করুন, নাহলে নির্বাচিত তথ্য স্বয়ংক্রিয়ভাবে মুছে ফেলা হতে পারে</translation> <translation id="5153234146675181447">ফোন ভুলে যান</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> এর উন্নত সেটিংস</translation> <translation id="5154702632169343078">বিষয়</translation> <translation id="5155327081870541046">আপনি যে সাইট সার্চ করতে চান, অ্যাড্রেস বারে সেটির শর্টকাট লিখুন, যেমন "@bookmarks". এরপর, আপনার পছন্দের কীবোর্ড শর্টকাট প্রেস করে যে শব্দ দিয়ে সার্চ করতে চান সেটি লিখুন।</translation> @@ -4601,6 +4608,7 @@ <translation id="5449551289610225147">ভুল পাসওয়ার্ড</translation> <translation id="5449588825071916739">সবকটি ট্যাব বুকমার্ক করুন...</translation> <translation id="5449716055534515760">Close Win&dow</translation> +<translation id="5452446625764825792">আপনার ফোনের সাম্প্রতিক ফটো, মিডিয়া এবং অ্যাপ দেখতে পারেন</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (অফলাইনে কাজ করে)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> সহ</translation> <translation id="545484289444831485">আরও সার্চ ফলাফল দেখুন</translation> @@ -4661,6 +4669,7 @@ <translation id="5499211612787418966">এই ডায়ালগ বর্তমানে ফোকাসে নেই। এই ডায়ালগ ফোকাস করার জন্য Alt-Shift A প্রেস করুন।</translation> <translation id="5499313591153584299">এই ফাইলটি আপনার কম্পিউটারের জন্য ক্ষতিকারক হতে পারে৷</translation> <translation id="5499453227627332024">Linux কন্টেনারের আপগ্রেড ভার্সন এখন উপলভ্য। 'সেটিংস' অ্যাপ থেকে পরে এটি আপগ্রেড করে নিতে পারবেন।</translation> +<translation id="5499476581866658341">আপনি এখন আপনার ফোনের সাম্প্রতিক ফটো এবং মিডিয়া দেখতে পারবেন</translation> <translation id="549957179819296104">নতুন আইকন</translation> <translation id="5500168250243071806">আপনি সাইন-ইন করে থাকলে <ph name="BEGIN_LINK_SEARCH" />সার্চ ইতিহাস<ph name="END_LINK_SEARCH" /> এবং <ph name="BEGIN_LINK_GOOGLE" />অন্যান্য অ্যাক্টিভিটি<ph name="END_LINK_GOOGLE" /> আপনার Google অ্যাকাউন্টে সেভ হয়ে যেতে পারে। আপনি যেকোনও সময় সেগুলি মুছে দিতে পারেন।</translation> <translation id="5500709606820808700">আজ নিরাপত্তা সংক্রান্ত পরীক্ষা চালানো হয়েছে</translation> @@ -5952,6 +5961,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> কে দূরবর্তী লোকেশন থেকে যোগ করা হয়েছিল</translation> <translation id="6790820461102226165">ব্যক্তিকে যোগ করুন...</translation> <translation id="6793604637258913070">পাঠ্য লেখার সূচিত চিহ্নটি যখন নড়াচড়া করে বা প্রদর্শিত হয় তখন একে হাইলাইট করুন</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">অটো-স্ক্যানের মাধ্যমে স্ক্রিনের মধ্যে অটোমেটিক এক আইটেম থেকে অন্য আইটেমে যেতে পারবেন। কোনও আইটেম হাইলাইট করা থাকলে, সেটি চালু করতে 'বেছে নিন' বিকল্প প্রেস করুন।</translation> <translation id="6795884519221689054">পান্ডা</translation> <translation id="6797493596609571643">ওহো, কিছু সমস্যা হয়েছে৷</translation> @@ -6328,6 +6338,7 @@ <translation id="7152478047064750137">এই এক্সটেনশনটির জন্য কোনও বিশেষ অনুমতির প্রয়োজন নেই</translation> <translation id="7154130902455071009">আপনার সূচনা পৃষ্ঠাকে এতে পরিবর্তন করুন: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">ক্যামেরা বা ফাইল থেকে বিদ্যমান ফটো</translation> +<translation id="7160182524506337403">আপনি এখন আপনার ফোনের বিজ্ঞপ্তি দেখতে পারেন</translation> <translation id="7163202347044721291">অ্যাক্টিভেশন কোড যাচাই করা হচ্ছে...</translation> <translation id="716640248772308851">" <ph name="EXTENSION" /> " নির্দিষ্ট করা অবস্থানে ছবি, ভিডিও এবং সাউন্ড ফাইলগুলি পড়তে পারে৷</translation> <translation id="7167486101654761064">&সবসময় এই ধরনের ফাইল খুলুন</translation> @@ -7342,6 +7353,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> স্ট্যাটাস</translation> <translation id="8139447493436036221">Google Drive ফাইল</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">আপনি ফোন হাব সেটিংসে আরও ফিচার সেট-আপ করতে পারেন</translation> <translation id="8141584439523427891">এখন অন্য ব্রাউজারে খোলা হচ্ছে</translation> <translation id="8141725884565838206">আপনার পাসওয়ার্ডগুলি পরিচালনা করুন</translation> <translation id="814204052173971714">{COUNT,plural, =1{একটি ভিডিও}one{#টি ভিডিও}other{#টি ভিডিও}}</translation> @@ -7549,6 +7561,7 @@ <translation id="833986336429795709">এই লিঙ্কটি খুলতে, একটি অ্যাপ বেছে নিন</translation> <translation id="8342221978608739536">ব্যবহার করিনি</translation> <translation id="8342861492835240085">একটি সংগ্রহ বেছে নিন</translation> +<translation id="8345848587667658367">আপনি এখন আপনার ফোনের সাম্প্রতিক ফটো, মিডিয়া, বিজ্ঞপ্তি এবং অ্যাপ দেখতে পারেন</translation> <translation id="8347227221149377169">প্রিন্ট করার কাজগুলি</translation> <translation id="834785183489258869">ছদ্মবেশী মোডে থাকলে, বিভিন্ন ওয়েবসাইট জুড়ে বিজ্ঞাপন পছন্দ অনুযায়ী দেখানোর মতো ব্রাউজিং অ্যাক্টিভিটি দেখার জন্য সাইট কুকি ব্যবহার করতে পারে না। কিছু সাইটের ফিচার কাজ নাও করতে পারে।</translation> <translation id="8350789879725387295">ডকে স্টাইলাস টুল</translation> @@ -7824,6 +7837,7 @@ <translation id="8642947597466641025">পাঠ্যকে আরও বড় করুন</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> বিপজ্জনক হতে পারে। স্ক্যান করার জন্য Google-এর উন্নত সুরক্ষা প্রোগ্রামে পাঠাবেন?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{কোনও কুকি নেই}=1{১টি কুকি ব্লক করা হয়েছে}one{#টি কুকি ব্লক করা হয়েছে}other{#টি কুকি ব্লক করা হয়েছে}}</translation> +<translation id="864423554496711319">আপনার অ্যাকাউন্টে ডিভাইসের তথ্য সেভ করা হয়েছে</translation> <translation id="8644655801811752511">এই নিরাপত্তা কী রিসেট করা যাবে না। কী লেখার পরেই সেটি রিসেট করার চেষ্টা করুন।</translation> <translation id="8645354835496065562">সেন্সর অ্যাক্সেস করার অনুমতি চালু রাখুন</translation> <translation id="8645920082661222035">ক্ষতিকারক কিছু হতে পারে মনে হলে তা আগে থেকে অনুমান করে আপনাকে সতর্ক করে</translation> @@ -8154,6 +8168,7 @@ <translation id="8957757410289731985">প্রোফাইল কাস্টমাইজ করুন</translation> <translation id="895944840846194039">জাভাস্ক্রিপ্ট মেমোরি</translation> <translation id="8960208913905765425">কুইক আন্সারের ইউনিট কনভার্সন</translation> +<translation id="8960638196855923532">আপনি এখন আপনার ফোনের বিজ্ঞপ্তি এবং অ্যাপ দেখতে পারেন</translation> <translation id="8962051932294470566">আপনি একসাথে কেবল একটি ফাইল শেয়ার করতে পারবেন। বর্তমান ফাইলটি ট্রান্সফার করা হয়ে গেলে, আবার চেষ্টা করুন।</translation> <translation id="8962083179518285172">বিবরণ লুকান</translation> <translation id="8962918469425892674">এই সাইটটি মোশন এবং লাইট সেন্সর ব্যবহার করছে।</translation> @@ -8305,6 +8320,7 @@ <translation id="9103868373786083162">ইতিহাস দেখার জন্য ফিরে গিয়ে সংশ্লিষ্ট মেনুতে যেতে টিপুন</translation> <translation id="9108035152087032312">নাম ও উইন্ডো...</translation> <translation id="9108072915170399168">বর্তমান ডেটা ব্যবহারের সেটিংয়ে, ইন্টারনেটের কানেকশন ছাড়াই ডেটা ট্রান্সফার করা যাবে</translation> +<translation id="9108294543511800041">আপনি এখন আপনার ফোনের সাম্প্রতিক ফটো, মিডিয়া এবং বিজ্ঞপ্তি দেখতে পারেন</translation> <translation id="9108674852930645435"><ph name="DEVICE_TYPE" />-এ নতুন কী আছে তা দেখুন</translation> <translation id="9108808586816295166">নিরাপদ ডিএনএস সবসময় উপলভ্য নাও থাকতে পারে</translation> <translation id="9109122242323516435">জায়গা খালি করার জন্য, ডিভাইস স্টোরেজ থেকে ফাইল মুছুন।</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index d05f915..bd17a45c 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -1557,6 +1557,7 @@ <translation id="2433836460518180625">Otključaj samo uređaj</translation> <translation id="2434449159125086437">Nije moguće postaviti štampač. Provjerite konfiguraciju i pokušajte ponovo.</translation> <translation id="2434758125294431199">Odaberite ko može dijeliti s vama</translation> +<translation id="2434915728183570229">Sada možete pregledati aplikacije telefona</translation> <translation id="2435137177546457207">Dodatni uslovi za Google Chrome i ChromeOS Flex</translation> <translation id="2435248616906486374">Mrežna veza je prekinuta</translation> <translation id="2435457462613246316">Prikaži lozinku</translation> @@ -1921,7 +1922,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Uklonite 1 nepodržanu aplikaciju}one{Uklonite # nepodržanu aplikaciju}few{Uklonite # nepodržane aplikacije}other{Uklonite # nepodržanih aplikacija}}</translation> <translation id="2776560192867872731">Promijenite naziv uređaja <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Obriši ovaj spremnik</translation> -<translation id="2778471504622896352">Dodavanje udaljenih aplikacija u pokretač OS-a Chrome</translation> +<translation id="2778471504622896352">Dodajte udaljene aplikacije ChromeOS pokretaču</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Greška prilikom instalacije Linux aplikacije</translation> <translation id="2783298271312924866">Preuzeto</translation> @@ -3558,7 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> i još sljedeći broj prekidača: <ph name="NUMBER_OF_OTHER_SWITCHES" /></translation> <translation id="439266289085815679">Konfiguriranje Bluetootha kontrolira <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Uredite fajl za konfiguraciju</translation> -<translation id="4393713825278446281">Uređaji za Brzo uparivanje spremljeni su na <ph name="PRIMARY_EMAIL" /></translation> +<translation id="4393713825278446281">Brzo uparite uređaje sačuvane na <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Onemogući</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Otvori sve}=1{&Otvori oznaku}one{&Otvori sve ({COUNT})}few{&Otvori sve ({COUNT})}other{&Otvori sve ({COUNT})}}</translation> <translation id="4397372003838952832">Nećete morati zapamtiti ovu lozinku. Sačuvat će se u aplikaciji <ph name="GOOGLE_PASSWORD_MANAGER" /> za račun <ph name="EMAIL" />.</translation> @@ -3789,7 +3790,7 @@ <translation id="4615586811063744755">nije izabran kolačić</translation> <translation id="461661862154729886">Izvor energije</translation> <translation id="4617001782309103936">Prekratak</translation> -<translation id="4617019240346358451">Ponovno učitajte stranicu da biste koristili proširenje <ph name="EXTENSION_NAME" /></translation> +<translation id="4617019240346358451">Osvježite stranicu da koristite ekstenziju "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Opcije ekstenzija</translation> <translation id="4617880081511131945">Nije moguće uspostaviti vezu</translation> <translation id="4619564267100705184">Potvrdite identitet</translation> @@ -4005,7 +4006,7 @@ <translation id="4833683849865011483">Pronađen je 1 štampač na serveru za štampanje</translation> <translation id="4836504898754963407">Upravljajte otiscima prstiju</translation> <translation id="4837128290434901661">Vratiti na Google Pretraživanje?</translation> -<translation id="4837165100461973682">Ponovno učitajte stranicu da biste primijenili izmjene</translation> +<translation id="4837165100461973682">Ponovo učitajte stranicu da primijenite promjene</translation> <translation id="4837926214103741331">Nemate odobrenje za korištenje ovog uređaja. Kontaktirajte vlasnika uređaja zbog odobrenja za prijavu.</translation> <translation id="4837952862063191349">Za otključavanje i vraćanje svojih lokalnih podataka, unesite svoju staru lozinku za uređaj <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Pregledajte fotografije, medijski sadržaj i obavještenja telefona</translation> @@ -4241,6 +4242,7 @@ <translation id="5072900412896857127">Nije moguće učitati Uslove korištenja usluge Google Play. Provjerite mrežnu vezu i pokušajte ponovo.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> i još #}few{<ph name="FILE1" />, <ph name="FILE2" /> i još #}other{<ph name="FILE1" />, <ph name="FILE2" /> i još #}}</translation> <translation id="5074318175948309511">Moguće je da ćete trebati ponovo učitati ovu stranicu prije nego nove postavke stupe na snagu.</translation> +<translation id="5074761966806028321">Još uvijek je potrebno odobrenje da završite postavljanje</translation> <translation id="5075910247684008552">Nesiguran sadržaj se blokira prema zadanim postavkama na sigurnim web lokacijama</translation> <translation id="5078638979202084724">Označite sve kartice</translation> <translation id="5078796286268621944">Pogrešan PIN</translation> @@ -4604,6 +4606,7 @@ <translation id="5449551289610225147">Pogrešna lozinka</translation> <translation id="5449588825071916739">Označavanje svih kartica</translation> <translation id="5449716055534515760">Zatvori prozor</translation> +<translation id="5452446625764825792">Sada možete pregledati nedavne fotografije, medijski sadržaj i aplikacije telefona</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (funkcionira van mreže)</translation> <translation id="5454166040603940656">s pružaocem usluge <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Prikaži više rezultata pretraživanja</translation> @@ -4664,6 +4667,7 @@ <translation id="5499211612787418966">Ovaj dijaloški okvir trenutno nije u fokusu. Pritisnite Alt-Shift A da fokusirate ovaj dijaloški okvir.</translation> <translation id="5499313591153584299">Ovaj fajl može naštetiti vašem računaru.</translation> <translation id="5499453227627332024">Dostupna je nadogradnja za Linux spremnik. Također možete nadograditi kasnije putem aplikacije Postavke.</translation> +<translation id="5499476581866658341">Sada možete pregledati nedavne fotografije i medijski sadržaj telefona</translation> <translation id="549957179819296104">Nova ikona</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Historija pretraživanja<ph name="END_LINK_SEARCH" /> i <ph name="BEGIN_LINK_GOOGLE" />ostali oblici aktivnosti<ph name="END_LINK_GOOGLE" /> se mogu pohranjivati na vaš Google račun kada ste prijavljeni. Možete ih izbrisati bilo kada.</translation> <translation id="5500709606820808700">Sigurnosna provjera je izvršena danas</translation> @@ -6333,6 +6337,7 @@ <translation id="7152478047064750137">Za ovu ekstenziju nisu potrebna posebna odobrenja</translation> <translation id="7154130902455071009">Promijenite početnu stranicu na: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Postojeća fotografija sa kamere ili fajl</translation> +<translation id="7160182524506337403">Sada možete pregledati obavještenja telefona</translation> <translation id="7163202347044721291">Potvrđivanje koda za aktivaciju...</translation> <translation id="716640248772308851">Ekstenzija "<ph name="EXTENSION" />" može čitati fajlove za slike, videozapise i zvuk u označenim lokacijama.</translation> <translation id="7167486101654761064">&Uvijek otvori ovu vrstu datoteka</translation> @@ -7348,6 +7353,7 @@ <translation id="8138997515734480534">Status: <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Fajlovi Google Diska</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Možete postaviti više funkcija u postavkama Phone Huba</translation> <translation id="8141584439523427891">Otvaranje u alternativnom pregledniku</translation> <translation id="8141725884565838206">Upravljanje lozinkama</translation> <translation id="814204052173971714">{COUNT,plural, =1{videozapis}one{# videozapis}few{# videozapisa}other{# videozapisa}}</translation> @@ -7555,6 +7561,7 @@ <translation id="833986336429795709">Odaberite aplikaciju da otvorite ovaj link</translation> <translation id="8342221978608739536">Nisam probao/la</translation> <translation id="8342861492835240085">Odaberite kolekciju</translation> +<translation id="8345848587667658367">Sada možete pregledati nedavne fotografije, medijski sadržaj, obavještenja i aplikacije telefona</translation> <translation id="8347227221149377169">Zadaci štampanja</translation> <translation id="834785183489258869">U anonimnom načinu rada web lokacije ne mogu koristiti kolačiće da vide vašu aktivnost pregledanja na različitim web lokacijama, npr. radi personaliziranja oglasa. Moguće je da funkcije neće raditi na nekim web lokacijama.</translation> <translation id="8350789879725387295">Alati olovke na priključnoj traci</translation> @@ -7830,7 +7837,7 @@ <translation id="8642947597466641025">Uvećavanje teksta</translation> <translation id="8643443571868262066">Fajl <ph name="FILE_NAME" /> može biti opasan. Poslati Googleovoj Naprednoj zaštiti radi skeniranja?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Nema kolačića}=1{1 kolačić je blokiran}one{# kolačić je blokiran}few{# kolačića su blokirana}other{# kolačića je blokirano}}</translation> -<translation id="864423554496711319">Uređaji spremljeni na vaš račun</translation> +<translation id="864423554496711319">Uređaji sačuvani na vašem računu</translation> <translation id="8644655801811752511">Nije moguće poništiti ovaj sigurnosni ključ. Pokušajte poništiti ključ odmah nakon umetanja.</translation> <translation id="8645354835496065562">Nastavi dozvoljavati pristup senzorima</translation> <translation id="8645920082661222035">Predviđa opasne događaje i upozorava vas na njih prije nego što nastupe</translation> @@ -8162,6 +8169,7 @@ <translation id="8957757410289731985">Prilagodite profil</translation> <translation id="895944840846194039">JavaScript memorija</translation> <translation id="8960208913905765425">Pretvaranje jedinica Brzih odgovora</translation> +<translation id="8960638196855923532">Sada možete pregledati obavještenja i aplikacije telefona</translation> <translation id="8962051932294470566">Možete dijeliti samo jedan fajl u datom trenutku. Pokušajte ponovo kada se trenutni prijenos završi.</translation> <translation id="8962083179518285172">Sakrij detalje</translation> <translation id="8962918469425892674">Ova web lokacija koristi senzore pokreta ili svjetlosne senzore.</translation> @@ -8313,6 +8321,7 @@ <translation id="9103868373786083162">Pritisnite da se vratite nazad i na kontekstni meni da pogledate historiju</translation> <translation id="9108035152087032312">Postavi naziv &prozora...</translation> <translation id="9108072915170399168">Trenutna postavka prijenosa podataka je Bez interneta</translation> +<translation id="9108294543511800041">Sada možete pregledati nedavne fotografije, medijski sadržaj i obavještenja telefona</translation> <translation id="9108674852930645435">Istražite šta je novo na uređaju <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Moguće je da sigurnosni DNS neće uvijek biti dostupan</translation> <translation id="9109122242323516435">Da oslobodite prostor, izbrišite fajlove iz pohrane uređaja.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 1abb771..4135265 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1909,6 +1909,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Odstranit 1 nepodporovanou aplikaci}few{Odstraňte # nepodporované aplikace}many{Odstraňte # nepodporované aplikace}other{Odstranit # nepodporovaných aplikací}}</translation> <translation id="2776560192867872731">Změnit název zařízení <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Smazat tento kontejner</translation> +<translation id="2778471504622896352">Přidání vzdálených aplikací do spouštěče ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Při instalaci aplikace pro Linux došlo k chybě</translation> <translation id="2783298271312924866">Staženo</translation> @@ -2224,6 +2225,7 @@ <translation id="3067198360141518313">Spustit plugin</translation> <translation id="3071624960923923138">Kliknutím sem otevřete novou kartu</translation> <translation id="3072775339180057696">Povolit webu zobrazení souboru <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Přeložit celou stránku</translation> <translation id="3075874217500066906">K zahájení obnovení pomocí funkce Powerwash je vyžadován restart. Po restartování budete požádáni o potvrzení, že chcete pokračovat.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Uložit pouze do tohoto zařízení</translation> @@ -3543,6 +3545,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> a další přepínače<ph name="NUMBER_OF_OTHER_SWITCHES" /></translation> <translation id="439266289085815679">Konfiguraci rozhraní Bluetooth spravuje <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Upravit konfigurační soubor</translation> +<translation id="4393713825278446281">Zařízení s rychlým párováním byla uložena do účtu <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Deaktivovat</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Otevřít vše}=1{&Otevřít záložku}few{&Otevřít vše ({COUNT})}many{&Otevřít vše ({COUNT})}other{&Otevřít vše ({COUNT})}}</translation> <translation id="4397372003838952832">Toto heslo si nebudete muset pamatovat. Uloží se do správce hesel <ph name="GOOGLE_PASSWORD_MANAGER" /> pro <ph name="EMAIL" /></translation> @@ -3772,6 +3775,7 @@ <translation id="4615586811063744755">není vybrán žádný soubor cookie</translation> <translation id="461661862154729886">Zdroj energie</translation> <translation id="4617001782309103936">Příliš krátké</translation> +<translation id="4617019240346358451">Pokud chcete použít rozšíření <ph name="EXTENSION_NAME" />, znovu načtěte stránku</translation> <translation id="4617270414136722281">Možnosti rozšíření</translation> <translation id="4617880081511131945">Nelze navázat spojení</translation> <translation id="4619564267100705184">Ověřte svou totožnost</translation> @@ -3987,6 +3991,7 @@ <translation id="4833683849865011483">Na tiskovém serveru byla nalezena jedna tiskárna</translation> <translation id="4836504898754963407">Správa otisků prstů</translation> <translation id="4837128290434901661">Změnit zpět na Vyhledávání Google?</translation> +<translation id="4837165100461973682">Změny se projeví po opětovném načtení stránky</translation> <translation id="4837926214103741331">Nemáte oprávnění používat toto zařízení. Kontaktujte vlastníka zařízení a požádejte jej o oprávnění k přihlášení.</translation> <translation id="4837952862063191349">Chcete-li zařízení odemknout a obnovit svá místní data, zadejte staré heslo zařízení <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Zobrazovat fotky, média a oznámení z telefonu</translation> @@ -4296,6 +4301,7 @@ <translation id="5150254825601720210">Název serveru SSL certifikátu Netscape</translation> <translation id="5151354047782775295">Uvolněte místo na disku, jinak může dojít k automatickému smazání některých dat.</translation> <translation id="5153234146675181447">Zapomenout telefon</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Rozšířené nastavení tiskárny <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Předmět</translation> <translation id="5155327081870541046">Do adresního řádku zadejte zkratku pro web, na kterém chcete vyhledávat, například „@bookmarks“. Potom stiskněte požadovanou klávesovou zkratku a zadejte vyhledávací dotaz.</translation> @@ -5069,6 +5075,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> používá vaši kameru a mikrofon.</translation> <translation id="5935158534896975820">Probíhá příprava žádosti o podepsání certifikátu (čeká se na server)</translation> <translation id="5935656526031444304">Spravovat bezpečné prohlížení</translation> +<translation id="5936065461722368675">Přeložit celou stránku</translation> <translation id="5938002010494270685">Je k dispozici bezpečnostní upgrade</translation> <translation id="5939518447894949180">Resetovat</translation> <translation id="5939719276406088041">Zkratku nelze vytvořit</translation> @@ -5932,6 +5939,7 @@ <translation id="6790497603648687708">Rozšíření <ph name="EXTENSION_NAME" /> bylo přidáno vzdáleně</translation> <translation id="6790820461102226165">Přidat uživatele...</translation> <translation id="6793604637258913070">Zvýraznit textový kurzor, když se zobrazí nebo pohne</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Automatické prohledávání umožňuje automaticky přecházet mezi položkami na obrazovce. Zvýrazněnou položku aktivujete stisknutím tlačítka Vybrat.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Jejda, něco se pokazilo.</translation> @@ -7804,6 +7812,7 @@ <translation id="8642947597466641025">Zvětšit text</translation> <translation id="8643443571868262066">Soubor <ph name="FILE_NAME" /> může být nebezpečný. Chcete ho odeslat ke kontrole prostřednictvím pokročilé ochrany Google?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Žádné soubory cookie}=1{1 soubor cookie je blokován}few{# soubory cookie jsou blokovány}many{# souboru cookie je blokováno}other{# souborů cookie je blokováno}}</translation> +<translation id="864423554496711319">Zařízení uložená do vašeho účtu</translation> <translation id="8644655801811752511">Tento bezpečnostní klíč nelze resetovat. Zkuste tento klíč resetovat ihned po vložení.</translation> <translation id="8645354835496065562">I nadále povolovat přístup k senzorům</translation> <translation id="8645920082661222035">Předvídá nebezpečné události a upozorňuje vás na ně ještě předtím, než k nim dojde</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb index 292cb2a..073d387 100644 --- a/chrome/app/resources/generated_resources_cy.xtb +++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -1926,6 +1926,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Tynnu 1 ap na chefnogir}zero{Tynnu # ap na chefnogir}two{Tynnu # ap na chefnogir}few{Tynnu # ap na chefnogir}many{Tynnu # ap na chefnogir}other{Tynnu # ap na chefnogir}}</translation> <translation id="2776560192867872731">Newid enw dyfais ar gyfer <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Dileu'r cynhwysydd hwn</translation> +<translation id="2778471504622896352">Ychwanegu apiau o bell i lansiwr ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Bu gwall wrth osod yr ap Linux</translation> <translation id="2783298271312924866">Wedi lawrlwytho</translation> @@ -3561,6 +3562,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, a <ph name="NUMBER_OF_OTHER_SWITCHES" /> switsh arall</translation> <translation id="439266289085815679">Rheolir y ffurfweddiad Bluetooth gan <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Golygu'r ffeil ffurfweddu</translation> +<translation id="4393713825278446281">Dyfeisiau Paru Cyflym sydd wedi'u cadw i <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Analluogi</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Agor pob un}=1{&Agor nod tudalen}two{&Agor pob un ({COUNT})}few{&Agor pob un ({COUNT})}many{&Agor pob un ({COUNT})}other{&Agor pob un ({COUNT})}}</translation> <translation id="4397372003838952832">Ni fydd angen i chi gofio'r cyfrinair hwn. Bydd yn cael ei gadw i <ph name="GOOGLE_PASSWORD_MANAGER" /> ar gyfer <ph name="EMAIL" />.</translation> @@ -3791,6 +3793,7 @@ <translation id="4615586811063744755">Heb ddewis cwci</translation> <translation id="461661862154729886">Ffynhonnell ynni</translation> <translation id="4617001782309103936">Rhy fyr</translation> +<translation id="4617019240346358451">Ail-lwythwch y dudalen i ddefnyddio "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Dewisiadau'r estyniad</translation> <translation id="4617880081511131945">Methu â sefydlu cysylltiad</translation> <translation id="4619564267100705184">Cadarnhewch mai chi sydd yno</translation> @@ -4006,6 +4009,7 @@ <translation id="4833683849865011483">Wedi dod o hyd i 1 argraffydd o'r gweinydd argraffu</translation> <translation id="4836504898754963407">Rheoli olion bysedd</translation> <translation id="4837128290434901661">Newid yn ôl i Google Search?</translation> +<translation id="4837165100461973682">Ail-lwythwch y dudalen i gymhwyso'ch newidiadau</translation> <translation id="4837926214103741331">Nid oes gennych awdurdod i ddefnyddio'r ddyfais hon. Cysylltwch â pherchennog y ddyfais i gael caniatâd mewngofnodi.</translation> <translation id="4837952862063191349">I ddatgloi ac adfer eich data lleol, rhowch eich hen gyfrinair <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Gweld lluniau, cyfryngau a hysbysiadau eich ffôn</translation> @@ -4315,6 +4319,7 @@ <translation id="5150254825601720210">Enw Gweinydd SSL Tystysgrif Netscape</translation> <translation id="5151354047782775295">Crëwch ragor o le ar y disg neu mae'n bosib y bydd rhai data yn cael eu dileu yn awtomatig</translation> <translation id="5153234146675181447">Anghofio'r ffôn</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Gosodiadau uwch ar gyfer <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Pwnc</translation> <translation id="5155327081870541046">Yn y bar cyfeiriad, defnyddiwch y llwybr byr ar gyfer y wefan rydych am ei chwilio, megis "@bookmarks". Yna, pwyswch eich llwybr byr bysellffwrdd a ffefrir, a rhowch eich term chwilio.</translation> @@ -5958,6 +5963,7 @@ <translation id="6790497603648687708">Cafodd <ph name="EXTENSION_NAME" /> ei ychwanegu o bell</translation> <translation id="6790820461102226165">Ychwanegu person...</translation> <translation id="6793604637258913070">Amlygu'r caret testun pan fydd yn ymddangos neu'n symud</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Mae awtosganio yn caniatáu i chi symud drwy eitemau ar y sgrîn yn awtomatig. Pan fydd eitem wedi'i hamlygu, pwyswch "Dewis" i'w gweithredu.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Wps, aeth rhywbeth o'i le.</translation> @@ -7830,6 +7836,7 @@ <translation id="8642947597466641025">Gwneud Testun yn Fwy</translation> <translation id="8643443571868262066">Gallai <ph name="FILE_NAME" /> fod yn beryglus. Anfon at Google Advanced Protection i'w sganio?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Dim cwcis}=1{Mae 1 cwci wedi'i rwystro}two{Mae # gwci wedi'u rhwystro}few{Mae # chwci wedi'u rhwystro}many{Mae # chwci wedi'u rhwystro}other{Mae # cwci wedi'u rhwystro}}</translation> +<translation id="864423554496711319">Dyfeisiau sydd wedi'u cadw i'ch cyfrif</translation> <translation id="8644655801811752511">Methu ag ailosod yr allwedd ddiogelwch hon. Rhowch gynnig ar ailosod yr allwedd yn syth ar ôl ei mewnosod.</translation> <translation id="8645354835496065562">Parhau i ganiatáu mynediad at synhwyrydd</translation> <translation id="8645920082661222035">Yn rhagweld ac yn eich rhybuddio am ddigwyddiadau peryglus cyn iddynt ddigwydd</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 8df96f9..b7d6d9cb 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">Lås kun denne enhed op</translation> <translation id="2434449159125086437">Printeren kunne ikke konfigureres. Tjek konfigurationen, og prøv igen.</translation> <translation id="2434758125294431199">Vælg, hvem der kan dele med dig</translation> +<translation id="2434915728183570229">Du kan nu se din telefons apps</translation> <translation id="2435137177546457207">Yderligere vilkår for Google Chrome og ChromeOS Flex</translation> <translation id="2435248616906486374">Forbindelsen til netværket blev afbrudt</translation> <translation id="2435457462613246316">Vis adgangskode</translation> @@ -1924,6 +1925,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Fjern 1 ikke-understøttet app}one{Fjern # ikke-understøttet app}other{Fjern # ikke-understøttede apps}}</translation> <translation id="2776560192867872731">Rediger navnet på enheden <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Slet denne container</translation> +<translation id="2778471504622896352">Føj eksterne apps til Chrome OS-applisten</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Der opstod en fejl ved installation af Linux-appen</translation> <translation id="2783298271312924866">Downloadet</translation> @@ -3559,6 +3561,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> og <ph name="NUMBER_OF_OTHER_SWITCHES" /> andre kontakter</translation> <translation id="439266289085815679">Bluetooth-konfiguration kontrolleres af <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Rediger konfigurationsfilen</translation> +<translation id="4393713825278446281">Hurtig parring af enheder, der er gemt på <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Deaktiver</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Åbn alle}=1{&Åbn bogmærke}one{&Åbn ({COUNT})}other{&Åbn alle ({COUNT})}}</translation> <translation id="4397372003838952832">Du behøver ikke at huske denne adgangskode. Den gemmes i <ph name="GOOGLE_PASSWORD_MANAGER" /> for <ph name="EMAIL" /></translation> @@ -3789,6 +3792,7 @@ <translation id="4615586811063744755">der er ikke valgt nogen cookie</translation> <translation id="461661862154729886">Energikilde</translation> <translation id="4617001782309103936">For kort</translation> +<translation id="4617019240346358451">Genindlæs siden for at anvende "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Valgmuligheder for udvidelser</translation> <translation id="4617880081511131945">Der kan ikke oprettes forbindelse</translation> <translation id="4619564267100705184">Bekræft din identitet</translation> @@ -4004,6 +4008,7 @@ <translation id="4833683849865011483">Der blev fundet 1 printer på printerserveren</translation> <translation id="4836504898754963407">Administrer fingeraftryk</translation> <translation id="4837128290434901661">Vil du skifte tilbage til Google Søgning?</translation> +<translation id="4837165100461973682">Genindlæs siden for at anvende dine ændringer</translation> <translation id="4837926214103741331">Du har ikke tilladelse til at bruge denne enhed. Kontakt enhedsejeren for at få tilladelse til at logge ind.</translation> <translation id="4837952862063191349">Angiv din gamle <ph name="DEVICE_TYPE" /> adgangskode for at låse op for og gendanne dine lokale data.</translation> <translation id="4838170306476614339">Se din telefons billeder, mediefiler og notifikationer</translation> @@ -4239,6 +4244,7 @@ <translation id="5072900412896857127">Servicevilkårene for Google Play kan ikke indlæses. Tjek din netværksforbindelse, og prøv igen.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> og # anden}other{<ph name="FILE1" />, <ph name="FILE2" /> og # andre}}</translation> <translation id="5074318175948309511">Det kan være nødvendigt at genindlæse siden, så de nye indstillinger kan træde i kraft.</translation> +<translation id="5074761966806028321">Der kræves stadig tilladelse til at fuldføre konfigurationen</translation> <translation id="5075910247684008552">Usikkert indhold blokeres som standard på sikre sider</translation> <translation id="5078638979202084724">Tilføj alle faner som bogmærker</translation> <translation id="5078796286268621944">Forkert pinkode</translation> @@ -4313,6 +4319,7 @@ <translation id="5150254825601720210">SSL-servernavn for Netscape-certifikat</translation> <translation id="5151354047782775295">Hvis du ikke frigør diskplads, slettes udvalgte data muligvis automatisk</translation> <translation id="5153234146675181447">Glem telefon</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Avancerede indstillinger for <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Emne</translation> <translation id="5155327081870541046">I adresselinjen skal du angive genvejen til det website, du vil søge på, f.eks. "@bogmærker". Tryk derefter på din foretrukne tastaturgenvej, og angiv din søgeterm.</translation> @@ -4601,6 +4608,7 @@ <translation id="5449551289610225147">Ugyldig adgangskode</translation> <translation id="5449588825071916739">Tilføj alle faner som bogmærker</translation> <translation id="5449716055534515760">Luk vin&due</translation> +<translation id="5452446625764825792">Du kan nu se din telefons seneste billeder, medier og apps</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (fungerer offline)</translation> <translation id="5454166040603940656">med <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Se flere søgeresultater</translation> @@ -4661,6 +4669,7 @@ <translation id="5499211612787418966">Denne dialogboks er ikke fremhævet i øjeblikket. Tryk på Alt+Shift+A for at fremhæve denne dialogboks.</translation> <translation id="5499313591153584299">Denne fil kan være skadelig for din computer.</translation> <translation id="5499453227627332024">Der er en tilgængelig opgradering til din Linux-container. Du kan også opgradere senere via appen Indstillinger.</translation> +<translation id="5499476581866658341">Du kan nu se din telefons seneste billeder og medier</translation> <translation id="549957179819296104">Nyt ikon</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Søgehistorik<ph name="END_LINK_SEARCH" /> og <ph name="BEGIN_LINK_GOOGLE" />andre former for aktivitet<ph name="END_LINK_GOOGLE" /> kan blive gemt på din Google-konto, når du er logget ind. Du kan til enhver tid slette dem.</translation> <translation id="5500709606820808700">Sikkerhedstjekket blev udført i dag</translation> @@ -5950,6 +5959,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> blev tilføjet eksternt</translation> <translation id="6790820461102226165">Tilføj person...</translation> <translation id="6793604637258913070">Fremhæv tekstmarkøren, når den vises eller flyttes</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Med automatisk scanning kan du automatisk gå frem og tilbage mellem elementer på skærmen. Når et element fremhæves, skal du trykke på "Vælg" for at aktivere det.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Ups! Noget gik galt.</translation> @@ -6326,6 +6336,7 @@ <translation id="7152478047064750137">Denne udvidelse kræver ikke nogen særlige tilladelser</translation> <translation id="7154130902455071009">Skifte din startside til: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Eksisterende billede fra kamera eller fil</translation> +<translation id="7160182524506337403">Du kan nu se din telefons notifikationer</translation> <translation id="7163202347044721291">Bekræfter aktiveringskode...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" har læserettigheder til billed-, video- og lydfiler på de markerede placeringer.</translation> <translation id="7167486101654761064">&Åbn altid filer af denne type</translation> @@ -7340,6 +7351,7 @@ <translation id="8138997515734480534">Status for <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Google Drev-filer</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Du kan konfigurere flere funktioner i indstillingerne for Telefonstyring</translation> <translation id="8141584439523427891">Åbner i en alternativ browser nu</translation> <translation id="8141725884565838206">Administrer dine adgangskoder</translation> <translation id="814204052173971714">{COUNT,plural, =1{en video}one{# video}other{# videoer}}</translation> @@ -7547,6 +7559,7 @@ <translation id="833986336429795709">Vælg en app for at åbne dette link</translation> <translation id="8342221978608739536">Jeg prøvede ikke</translation> <translation id="8342861492835240085">Vælg en samling</translation> +<translation id="8345848587667658367">Du kan nu se din telefons seneste billeder, medier, notifikationer og apps</translation> <translation id="8347227221149377169">Udskriftsjobs</translation> <translation id="834785183489258869">Når du er i inkognitotilstand, kan websites ikke bruge dine cookies til at se din browserhistorik på forskellige websites for f.eks. at tilpasse annoncer. Funktionerne på visse websites virker muligvis ikke.</translation> <translation id="8350789879725387295">Fastgjorte styluspenværktøjer</translation> @@ -7822,6 +7835,7 @@ <translation id="8642947597466641025">Gør teksten større</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> kan være skadelig. Skal Google Avanceret beskyttelse scanne den?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Der er ingen cookies}=1{1 cookie er blokeret}one{# cookie er blokeret}other{# cookies er blokeret}}</translation> +<translation id="864423554496711319">Enheder, der er gemt på din konto</translation> <translation id="8644655801811752511">Denne sikkerhedsnøgle kan ikke nulstilles. Prøv at nulstille nøglen, lige efter du har indsat den.</translation> <translation id="8645354835496065562">Fortsæt med at tillade adgang til sensorer</translation> <translation id="8645920082661222035">Forudser og advarer dig om skadelige hændelser, før de opstår</translation> @@ -8153,6 +8167,7 @@ <translation id="8957757410289731985">Tilpas profil</translation> <translation id="895944840846194039">JavaScript-hukommelse</translation> <translation id="8960208913905765425">Enhedsomregning i Hurtig info</translation> +<translation id="8960638196855923532">Du kan nu se din telefons notifikationer og apps</translation> <translation id="8962051932294470566">Du kan kun dele én fil ad gangen. Prøv igen, når den igangværende overførsel er fuldført.</translation> <translation id="8962083179518285172">Skjul detaljer</translation> <translation id="8962918469425892674">Dette website anvender bevægelses- og lyssensorer.</translation> @@ -8304,6 +8319,7 @@ <translation id="9103868373786083162">Tryk for at gå tilbage til genvejsmenuen for at se historik</translation> <translation id="9108035152087032312">Navngiv vindue...</translation> <translation id="9108072915170399168">Den aktuelle indstilling for dataforbrug er Uden internet</translation> +<translation id="9108294543511800041">Du kan nu se din telefons seneste billeder, medier og notifikationer</translation> <translation id="9108674852930645435">Se nyheder på din <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Sikre DNS-servere er muligvis ikke altid tilgængelige</translation> <translation id="9109122242323516435">Slet filer fra lageret på din enhed for at frigøre plads.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 06043376..7b587e16 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1540,6 +1540,7 @@ <translation id="2433836460518180625">Gerät nur entsperren</translation> <translation id="2434449159125086437">Der Drucker kann nicht eingerichtet werden. Prüfe die Konfiguration und probiere es dann noch einmal.</translation> <translation id="2434758125294431199">Wähle aus, wer Inhalte mit dir teilen kann</translation> +<translation id="2434915728183570229">Du kannst jetzt die Apps von deinem Smartphone aufrufen</translation> <translation id="2435137177546457207">Google Chrome und Chrome OS Flex – zusätzliche Nutzungsbedingungen</translation> <translation id="2435248616906486374">Netzwerkverbindung getrennt</translation> <translation id="2435457462613246316">Passwort anzeigen</translation> @@ -1905,6 +1906,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1 nicht unterstützte App entfernen}other{# nicht unterstützte Apps entfernen}}</translation> <translation id="2776560192867872731">Gerätename für <ph name="DEVICE_NAME" /> ändern</translation> <translation id="2777251078198759550">Diesen Container löschen</translation> +<translation id="2778471504622896352">Remote-Apps zum Chrome OS-Launcher hinzufügen</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Fehler beim Installieren der Linux-Anwendung</translation> <translation id="2783298271312924866">Heruntergeladen</translation> @@ -3540,6 +3542,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> und <ph name="NUMBER_OF_OTHER_SWITCHES" /> weitere Schalter</translation> <translation id="439266289085815679">Die Bluetooth-Konfiguration wird von <ph name="USER_EMAIL" /> festgelegt.</translation> <translation id="4392896746540753732">Konfigurationsdatei bearbeiten</translation> +<translation id="4393713825278446281">Mit schnellem Pairing gekoppelte Geräte, die in <ph name="PRIMARY_EMAIL" /> gespeichert sind</translation> <translation id="4394049700291259645">Deaktivieren</translation> <translation id="4396956294839002702">{COUNT,plural, =0{Alle &öffnen}=1{Lesezeichen &öffnen}other{Alle ({COUNT}) &öffnen}}</translation> <translation id="4397372003838952832">Du musst dir dieses Passwort nicht merken. Es wird für <ph name="EMAIL" /> im <ph name="GOOGLE_PASSWORD_MANAGER" /> gespeichert.</translation> @@ -3769,6 +3772,7 @@ <translation id="4615586811063744755">Kein Cookie ausgewählt</translation> <translation id="461661862154729886">Energiequelle</translation> <translation id="4617001782309103936">Zu kurz</translation> +<translation id="4617019240346358451">Seite aktualisieren, um „<ph name="EXTENSION_NAME" />“ zu verwenden</translation> <translation id="4617270414136722281">Optionen</translation> <translation id="4617880081511131945">Verbindung kann nicht hergestellt werden</translation> <translation id="4619564267100705184">Identität bestätigen</translation> @@ -3984,6 +3988,7 @@ <translation id="4833683849865011483">Auf dem Druckserver wurde 1 Drucker gefunden</translation> <translation id="4836504898754963407">Fingerabdrücke verwalten</translation> <translation id="4837128290434901661">Wieder zur Google Suche wechseln?</translation> +<translation id="4837165100461973682">Seite aktualisieren, um Änderungen zu übernehmen</translation> <translation id="4837926214103741331">Du bist nicht zur Verwendung dieses Geräts berechtigt. Bitte den Geräteinhaber um eine Anmeldeberechtigung.</translation> <translation id="4837952862063191349">Gib dein altes <ph name="DEVICE_TYPE" />-Passwort ein, um deine lokalen Daten zu entsperren und wiederherzustellen.</translation> <translation id="4838170306476614339">Fotos, Medien und Benachrichtigungen von deinem Smartphone abrufen</translation> @@ -4219,6 +4224,7 @@ <translation id="5072900412896857127">Fehler beim Laden der Google Play-Nutzungsbedingungen. Bitte prüfe die Netzwerkverbindung und versuche es noch einmal.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> und # weitere}}</translation> <translation id="5074318175948309511">Damit die neuen Einstellungen wirksam werden, muss die Seite eventuell neu geladen werden.</translation> +<translation id="5074761966806028321">Zum Abschluss der Einrichtung fehlt noch eine Berechtigung</translation> <translation id="5075910247684008552">Unsichere Inhalte werden auf sicheren Websites standardmäßig blockiert</translation> <translation id="5078638979202084724">Alle Tabs als Lesezeichen speichern</translation> <translation id="5078796286268621944">Falsche PIN</translation> @@ -4293,6 +4299,7 @@ <translation id="5150254825601720210">SSL-Servername für Netscape-Zertifikat</translation> <translation id="5151354047782775295">Gib Speicherplatz frei oder ausgewählte Daten werden automatisch gelöscht</translation> <translation id="5153234146675181447">Smartphone entfernen</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Erweiterte Einstellungen für <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Betreff</translation> <translation id="5155327081870541046">Gib in die Adressleiste das Kürzel für die Website ein, auf der du suchen möchtest, z. B. „@bookmarks“. Drücke dann das von dir bevorzugte Tastenkürzel und gib den gewünschten Suchbegriff ein.</translation> @@ -4581,6 +4588,7 @@ <translation id="5449551289610225147">Ungültiges Passwort</translation> <translation id="5449588825071916739">Alle Tabs als Lesezeichen speichern</translation> <translation id="5449716055534515760">Fen&ster schließen</translation> +<translation id="5452446625764825792">Du kannst jetzt die neuesten Fotos, Medien und Apps von deinem Smartphone aufrufen</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (funktioniert im Offlinemodus)</translation> <translation id="5454166040603940656">mit <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Weitere Suchergebnisse einblenden</translation> @@ -4641,6 +4649,7 @@ <translation id="5499211612787418966">Dieses Dialogfeld ist aktuell nicht aktiv. Drücke ALT+Umschalttaste+A, um dieses Dialogfeld hervorzuheben.</translation> <translation id="5499313591153584299">Diese Datei könnte schädlich für deinen Computer sein.</translation> <translation id="5499453227627332024">Für deinen Linux-Container ist ein Upgrade verfügbar. Du kannst es auch später über die App "Einstellungen" ausführen.</translation> +<translation id="5499476581866658341">Du kannst jetzt die neuesten Fotos und Medien von deinem Smartphone aufrufen</translation> <translation id="549957179819296104">Neues Symbol</translation> <translation id="5500168250243071806">Der <ph name="BEGIN_LINK_SEARCH" />Suchverlauf<ph name="END_LINK_SEARCH" /> und <ph name="BEGIN_LINK_GOOGLE" />andere Arten von Aktivitäten<ph name="END_LINK_GOOGLE" /> können in deinem Google-Konto gespeichert werden, wenn du angemeldet bist. Du kannst sie jederzeit löschen.</translation> <translation id="5500709606820808700">Der Sicherheitscheck wurde heute durchgeführt</translation> @@ -5925,6 +5934,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> wurde per Remotezugriff hinzugefügt</translation> <translation id="6790820461102226165">Person hinzufügen...</translation> <translation id="6793604637258913070">Textcursor hervorheben, wenn er erscheint oder sich bewegt</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Mit dem automatischen Scan kannst du dich automatisch durch die Elemente auf dem Bildschirm bewegen. Wenn ein Element markiert ist, drücke auf „Auswählen“, um es zu aktivieren.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Hoppla, ein Fehler ist aufgetreten.</translation> @@ -6301,6 +6311,7 @@ <translation id="7152478047064750137">Diese Erweiterung erfordert keine speziellen Berechtigungen</translation> <translation id="7154130902455071009">Startseite in <ph name="START_PAGE" /> ändern</translation> <translation id="7155171745945906037">Vorhandenes Foto von der Kamera oder als Datei</translation> +<translation id="7160182524506337403">Du kannst jetzt die Benachrichtigungen von deinem Smartphone aufrufen</translation> <translation id="7163202347044721291">Aktivierungscode wird geprüft…</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" kann Bilder, Video- und Sounddateien an den geprüften Orten lesen.</translation> <translation id="7167486101654761064">Dateien dieses Typs &immer öffnen</translation> @@ -7315,6 +7326,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" />-Status</translation> <translation id="8139447493436036221">Google Drive-Dateien</translation> <translation id="8140070492745508800">„<ph name="FIRST_DEVICE" />“, „<ph name="SECOND_DEVICE" />“</translation> +<translation id="8141418916163800697">In den Phone Hub-Einstellungen kannst du weitere Funktionen einrichten</translation> <translation id="8141584439523427891">Wird in einem alternativen Browser geöffnet</translation> <translation id="8141725884565838206">Passwörter verwalten</translation> <translation id="814204052173971714">{COUNT,plural, =1{ein Video}other{# Videos}}</translation> @@ -7522,6 +7534,7 @@ <translation id="833986336429795709">App auswählen, um diesen Link zu öffnen</translation> <translation id="8342221978608739536">Nicht ausprobiert</translation> <translation id="8342861492835240085">Sammlung auswählen</translation> +<translation id="8345848587667658367">Du kannst jetzt die neuesten Fotos, Medien, Benachrichtigungen und Apps von deinem Smartphone aufrufen</translation> <translation id="8347227221149377169">Druckaufträge</translation> <translation id="834785183489258869">Wenn der Inkognitomodus aktiviert ist, können Websites keine Cookies verwenden, um deine Browseraktivitäten auf anderen Websites zu sehen und beispielsweise zur Personalisierung von Werbung zu nutzen. Einige Websites funktionieren dann möglicherweise nicht mehr richtig.</translation> <translation id="8350789879725387295">Eingabestift-Tools in Leiste</translation> @@ -7797,6 +7810,7 @@ <translation id="8642947597466641025">Schriftgrad vergrößern</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> könnte schädlich sein. Soll sie zum Scannen an das erweiterte Sicherheitsprogramm von Google gesendet werden?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Keine Cookies}=1{1 Cookie ist blockiert}other{# Cookies sind blockiert}}</translation> +<translation id="864423554496711319">In deinem Konto gespeicherte Geräte</translation> <translation id="8644655801811752511">Dieser Sicherheitsschlüssel kann nicht zurückgesetzt werden. Versuche, den Schlüssel direkt nach dem Einstecken zurückzusetzen.</translation> <translation id="8645354835496065562">Zugriff auf Sensor weiterhin zulassen</translation> <translation id="8645920082661222035">Erkennt schädliche Ereignisse im Voraus und warnt dich, bevor sie eintreten</translation> @@ -8126,6 +8140,7 @@ <translation id="8957757410289731985">Profil anpassen</translation> <translation id="895944840846194039">JavaScript-Speicher</translation> <translation id="8960208913905765425">Schnellinfo – Umrechnung von Einheiten</translation> +<translation id="8960638196855923532">Du kannst jetzt die Benachrichtigungen und Apps von deinem Smartphone aufrufen</translation> <translation id="8962051932294470566">Du kannst nur jeweils eine Datei teilen. Versuche es noch einmal, wenn die aktuelle Übertragung abgeschlossen ist.</translation> <translation id="8962083179518285172">Details ausblenden</translation> <translation id="8962918469425892674">Diese Website nutzt Bewegungs- oder Lichtsensoren.</translation> @@ -8277,6 +8292,7 @@ <translation id="9103868373786083162">Drücken, um zurückzugehen. Kontextmenü, um Verlauf aufzurufen</translation> <translation id="9108035152087032312">Fenster &benennen…</translation> <translation id="9108072915170399168">Aktuelle Einstellung für Datennutzung ist "Ohne Internet"</translation> +<translation id="9108294543511800041">Du kannst jetzt die neuesten Fotos, Medien und Benachrichtigungen von deinem Smartphone aufrufen</translation> <translation id="9108674852930645435"><ph name="DEVICE_TYPE" /> – Neuigkeiten</translation> <translation id="9108808586816295166">Sicheres DNS ist möglicherweise nicht immer verfügbar</translation> <translation id="9109122242323516435">Lösche Dateien aus dem Gerätespeicher, um Speicherplatz freizugeben.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index ec54fb6a..ac8fbd9 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -1558,6 +1558,7 @@ <translation id="2433836460518180625">Ξεκλείδωμα μόνο από τη συσκευή</translation> <translation id="2434449159125086437">Δεν είναι δυνατή η ρύθμιση του εκτυπωτή. Ελέγξτε τη διαμόρφωση και δοκιμάστε ξανά.</translation> <translation id="2434758125294431199">Επιλέξτε ποιος θα μπορεί να μοιράζεται μαζί σας</translation> +<translation id="2434915728183570229">Μπορείτε πλέον να βλέπετε τις εφαρμογές του τηλεφώνου σας</translation> <translation id="2435137177546457207">Πρόσθετοι Όροι Google Chrome και ChromeOS Flex</translation> <translation id="2435248616906486374">Η σύνδεση δικτύου διακόπηκε</translation> <translation id="2435457462613246316">Εμφάνιση κωδικού πρόσβασης</translation> @@ -4242,6 +4243,7 @@ <translation id="5072900412896857127">Δεν είναι δυνατή η φόρτωση των Όρων Παροχής Υπηρεσιών του Google Play. Ελέγξτε τη σύνδεση δικτύου σας και δοκιμάστε ξανά.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> και # ακόμη}}</translation> <translation id="5074318175948309511">Αυτή η σελίδα ενδεχομένως να πρέπει να φορτωθεί εκ νέου προτού ενεργοποιηθούν οι νέες ρυθμίσεις.</translation> +<translation id="5074761966806028321">Απαιτείται ακόμη άδεια για την ολοκλήρωση της ρύθμισης</translation> <translation id="5075910247684008552">Το μη ασφαλές περιεχόμενο αποκλείεται από προεπιλογή στους ασφαλείς ιστοτόπους</translation> <translation id="5078638979202084724">Δημιουργία σελιδοδείκτη για όλες τις καρτέλες</translation> <translation id="5078796286268621944">Εσφαλμένο PIN</translation> @@ -4605,6 +4607,7 @@ <translation id="5449551289610225147">Μη έγκυρος κωδικός πρόσβασης</translation> <translation id="5449588825071916739">Δημιουργία σελιδοδείκτη για όλες τις καρτέλες</translation> <translation id="5449716055534515760">Κλείσιμο παραθύρου</translation> +<translation id="5452446625764825792">Μπορείτε πλέον να βλέπετε τις πρόσφατες φωτογραφίες, τα μέσα και τις εφαρμογές του τηλεφώνου σας.</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (λειτουργεί εκτός σύνδεσης)</translation> <translation id="5454166040603940656">με <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Δείτε περισσότερα αποτελέσματα αναζήτησης</translation> @@ -4665,6 +4668,7 @@ <translation id="5499211612787418966">Αυτήν τη στιγμή δεν γίνεται εστίαση σε αυτό το παράθυρο διαλόγου. Πατήστε τα πλήκτρα Alt-Shift A για εστίαση σε αυτό παράθυρο διαλόγου.</translation> <translation id="5499313591153584299">Αυτό το αρχείο ενδέχεται να είναι επιβλαβές για τον υπολογιστή σας.</translation> <translation id="5499453227627332024">Υπάρχει διαθέσιμη αναβάθμιση για το κοντέινερ Linux. Μπορείτε επίσης να το αναβαθμίσετε αργότερα από την εφαρμογή Ρυθμίσεις.</translation> +<translation id="5499476581866658341">Μπορείτε πλέον να βλέπετε τις πρόσφατες φωτογραφίες και τα μέσα του τηλεφώνου σας</translation> <translation id="549957179819296104">Νέο εικονίδιο</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Το ιστορικό αναζήτησης<ph name="END_LINK_SEARCH" /> και <ph name="BEGIN_LINK_GOOGLE" />άλλες μορφές δραστηριότητας<ph name="END_LINK_GOOGLE" /> ενδέχεται να αποθηκεύονται στον Λογαριασμό σας Google όταν είστε συνδεδεμένοι. Μπορείτε να τα διαγράψετε ανά πάσα στιγμή.</translation> <translation id="5500709606820808700">Ο έλεγχος ασφαλείας εκτελέστηκε σήμερα</translation> @@ -6330,6 +6334,7 @@ <translation id="7152478047064750137">Αυτή η επέκταση δεν απαιτεί ειδικές άδειες</translation> <translation id="7154130902455071009">Αλλαγή της σελίδας έναρξης σε: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Υπάρχουσα φωτογραφία από την κάμερα ή το αρχείο</translation> +<translation id="7160182524506337403">Μπορείτε πλέον να βλέπετε τις ειδοποιήσεις του τηλεφώνου σας</translation> <translation id="7163202347044721291">Επαλήθευση κωδικού ενεργοποίησης…</translation> <translation id="716640248772308851">Η επέκταση "<ph name="EXTENSION" />" μπορεί να διαβάσει εικόνες, βίντεο και αρχεία ήχου στις επιλεγμένες τοποθεσίες.</translation> <translation id="7167486101654761064">&Πάντα άνοιγμα αρχείων αυτού του τύπου</translation> @@ -7345,6 +7350,7 @@ <translation id="8138997515734480534">Κατάσταση <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Αρχεία Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Μπορείτε να ρυθμίσετε περισσότερες λειτουργίες στις ρυθμίσεις του Phone Hub</translation> <translation id="8141584439523427891">Άνοιγμα σε εναλλακτικό πρόγραμμα περιήγησης τώρα</translation> <translation id="8141725884565838206">Διαχείριση των κωδικών πρόσβασής σας</translation> <translation id="814204052173971714">{COUNT,plural, =1{ένα βίντεο}other{# βίντεο}}</translation> @@ -7552,6 +7558,7 @@ <translation id="833986336429795709">Για να ανοίξετε αυτόν τον σύνδεσμο, επιλέξτε μια εφαρμογή</translation> <translation id="8342221978608739536">Δεν το δοκίμασα</translation> <translation id="8342861492835240085">Επιλέξτε μια συλλογή</translation> +<translation id="8345848587667658367">Μπορείτε πλέον να βλέπετε τις πρόσφατες φωτογραφίες, τα μέσα, τις ειδοποιήσεις και τις εφαρμογές του τηλεφώνου σας.</translation> <translation id="8347227221149377169">Εργασίες εκτύπωσης</translation> <translation id="834785183489258869">Ενώ βρίσκεστε σε κατάσταση ανώνυμης περιήγησης, οι ιστότοποι δεν μπορούν να χρησιμοποιήσουν τα cookie σας για να βλέπουν τη δραστηριότητα περιήγησής σας σε διαφορετικούς ιστοτόπους, για παράδειγμα, για την εξατομίκευση των διαφημίσεων. Ορισμένες λειτουργίες κάποιων ιστοτόπων μπορεί να μην είναι διαθέσιμες.</translation> <translation id="8350789879725387295">Εργαλεία γραφίδας στη θέση αγκύρωσης</translation> @@ -8155,6 +8162,7 @@ <translation id="8957757410289731985">Εξατομίκευση προφίλ</translation> <translation id="895944840846194039">Μνήμη JavaScript</translation> <translation id="8960208913905765425">Μετατροπή μονάδας Γρήγορων απαντήσεων</translation> +<translation id="8960638196855923532">Μπορείτε πλέον να βλέπετε τις ειδοποιήσεις και τις εφαρμογές του τηλεφώνου σας</translation> <translation id="8962051932294470566">Μπορείτε να μοιράζεστε μόνο ένα αρχείο τη φορά. Δοκιμάστε ξανά όταν ολοκληρωθεί η τρέχουσα μεταφορά.</translation> <translation id="8962083179518285172">Απόκρυψη λεπτομερειών</translation> <translation id="8962918469425892674">Αυτός ο ιστότοπος χρησιμοποιεί αισθητήρες κίνησης και φωτός.</translation> @@ -8306,6 +8314,7 @@ <translation id="9103868373786083162">Πατήστε για να επιστρέψετε στο μενού περιβάλλοντος για να δείτε το ιστορικό</translation> <translation id="9108035152087032312">Όνομα και παράθυρο…</translation> <translation id="9108072915170399168">Η τρέχουσα ρύθμιση χρήσης δεδομένων είναι Χωρίς διαδίκτυο.</translation> +<translation id="9108294543511800041">Μπορείτε πλέον να βλέπετε τις πρόσφατες φωτογραφίες, τα μέσα και τις ειδοποιήσεις του τηλεφώνου σας.</translation> <translation id="9108674852930645435">Εξερευνήστε τι νέο υπάρχει στη συσκευή <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Το ασφαλές DNS μπορεί να μην είναι διαθέσιμο πάντα.</translation> <translation id="9109122242323516435">Για να ελευθερώσετε χώρο, διαγράψτε αρχεία από τον αποθηκευτικό χώρο της συσκευής.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index e01327f..ffb1f78c 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -2240,6 +2240,7 @@ <translation id="3067198360141518313">Run this plug-in</translation> <translation id="3071624960923923138">You can click here to open a new tab</translation> <translation id="3072775339180057696">Let site view <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Translate full page</translation> <translation id="3075874217500066906">A restart is required to begin the Powerwash process. After restart you will be asked to confirm that you want to proceed.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Save only on this device</translation> @@ -5096,6 +5097,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> is using your camera and microphone</translation> <translation id="5935158534896975820">Preparing certificate signing request (waiting on server)</translation> <translation id="5935656526031444304">Manage Safe Browsing</translation> +<translation id="5936065461722368675">Translate full page</translation> <translation id="5938002010494270685">Security upgrade available</translation> <translation id="5939518447894949180">Reset</translation> <translation id="5939719276406088041">Can't create shortcut</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index f034026..cb3b455 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -3897,7 +3897,7 @@ <translation id="473936925429402449">Seleccionado, contenido adicional: <ph name="CURRENT_ELEMENT" /> de <ph name="TOTAL_ELEMENTS" /></translation> <translation id="4739639199548674512">Tickets</translation> <translation id="4742334355511750246">No puede mostrar imágenes</translation> -<translation id="4742970037960872810">Quitar el texto destacado</translation> +<translation id="4742970037960872810">Dejar de destacar</translation> <translation id="4743260470722568160"><ph name="BEGIN_LINK" />Obtener información sobre cómo actualizar las aplicaciones<ph name="END_LINK" /></translation> <translation id="4744981231093950366">{NUM_TABS,plural, =1{Activar el sonido del sitio}other{Activar el sonido de los sitios}}</translation> <translation id="474609389162964566">Accede a tu Asistente con "Hey Google"</translation> @@ -3918,6 +3918,7 @@ <translation id="4768332406694066911">Tienes certificados de esas organizaciones que te identifican</translation> <translation id="4770119228883592393">Se solicitó un permiso; para responder, presiona ⌘ + Opción + flecha hacia abajo</translation> <translation id="4773112038801431077">Actualiza Linux</translation> +<translation id="4774337692467964393">Si la función Smart Lock está activada, no tendrás que ingresar un PIN ni una contraseña.</translation> <translation id="4775142426314270551">Para ayudar a mejorar las funciones y el rendimiento de Chrome y Chrome OS, envía automáticamente informes de fallas y datos de uso y de diagnóstico a Google. Algunos datos agregados también ayudarán a los socios de Google y las apps para Android. Si se activó la configuración Actividad web y de aplicaciones para la Cuenta de Google de tu hijo, es posible que se almacenen sus datos de Android en la cuenta.</translation> <translation id="477647109558161443">Crear un acceso directo de escritorio</translation> <translation id="4776594120007763294">Si quieres agregar una página para leerla más tarde, haz clic en el botón</translation> @@ -3967,6 +3968,7 @@ <translation id="4820236583224459650">Establecer como ticket activo</translation> <translation id="4821935166599369261">&Perfiles activados</translation> <translation id="4823484602432206655">Leer y cambiar la configuración del dispositivo y del usuario</translation> +<translation id="4823894915586516138">El PIN o la contraseña protegen los datos que tienes en este dispositivo <ph name="DEVICE_TYPE" />, incluida la información a la que accedes desde el teléfono.</translation> <translation id="4824037980212326045">Copia de seguridad y restablecimiento de Linux</translation> <translation id="4824958205181053313">¿Quieres cancelar la sincronización?</translation> <translation id="4827675678516992122">No se pudo establecer conexión</translation> @@ -5624,6 +5626,7 @@ <translation id="648927581764831596">Ningún medio disponible</translation> <translation id="6490471652906364588">Dispositivo USB-C (puerto derecho)</translation> <translation id="6491376743066338510">Se produjo un error en la autorización</translation> +<translation id="6492396476180293140">El interruptor de hardware desactivó la cámara interna</translation> <translation id="6494327278868541139">Mostrar detalles de la protección mejorada</translation> <translation id="6494445798847293442">No es una entidad de certificación</translation> <translation id="6494974875566443634">Personalización</translation> @@ -6177,7 +6180,7 @@ <translation id="701080569351381435">Ver código fuente</translation> <translation id="7011797924920577670">estima tus intereses</translation> <translation id="7014174261166285193">Error de instalación</translation> -<translation id="7014480873681694324">Quitar el texto destacado</translation> +<translation id="7014480873681694324">Dejar de destacar</translation> <translation id="7017004637493394352">Di "OK Google" otra vez.</translation> <translation id="7017219178341817193">Agregar nueva página</translation> <translation id="7017354871202642555">No es posible configurar el modo después de que se ha configurado la ventana.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index ad38ae7..a08099f 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1914,6 +1914,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Eemalda 1 toetamata rakendus}other{Eemalda # toetamata rakendust}}</translation> <translation id="2776560192867872731">Muuda seadme <ph name="DEVICE_NAME" /> nime</translation> <translation id="2777251078198759550">Kustuta see konteiner</translation> +<translation id="2778471504622896352">Kaugrakenduste lisamine ChromeOS-i käivitajasse</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Viga Linuxi rakenduse installimisel</translation> <translation id="2783298271312924866">Allalaaditud</translation> @@ -3549,6 +3550,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ja veel <ph name="NUMBER_OF_OTHER_SWITCHES" /> lülitit</translation> <translation id="439266289085815679">Bluetoothi seadistust juhib <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Konfiguratsioonifaili muutmine</translation> +<translation id="4393713825278446281">Kiirsidumisega seadmed salvestati kontole <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Keela</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Ava kõik}=1{&Ava järjehoidja}other{&Ava kõik ({COUNT})}}</translation> <translation id="4397372003838952832">Te ei pea seda parooli meelde jätma. See salvestatakse konto <ph name="EMAIL" /> puhul teenusesse <ph name="GOOGLE_PASSWORD_MANAGER" />.</translation> @@ -3778,6 +3780,7 @@ <translation id="4615586811063744755">ühtki küpsisefaili ei ole valitud</translation> <translation id="461661862154729886">Energiaallikas</translation> <translation id="4617001782309103936">Liiga lühike</translation> +<translation id="4617019240346358451">Laadige leht uuesti, et laiendust „<ph name="EXTENSION_NAME" />“ kasutada</translation> <translation id="4617270414136722281">Laienduse valikud</translation> <translation id="4617880081511131945">Ei saa ühendust luua</translation> <translation id="4619564267100705184">Kinnitage, et see olete teie</translation> @@ -3993,6 +3996,7 @@ <translation id="4833683849865011483">Prindiserverist leiti 1 printer</translation> <translation id="4836504898754963407">Sõrmejälgede haldamine</translation> <translation id="4837128290434901661">Kas muuta tagasi Google'i otsingule?</translation> +<translation id="4837165100461973682">Laadige leht uuesti, et muudatused rakendada</translation> <translation id="4837926214103741331">Teil ei ole seadme kasutamiseks volitust. Sisselogimisloa saamiseks võtke ühendust omanikuga.</translation> <translation id="4837952862063191349">Kohalike andmete avamiseks ja taastamiseks sisestage oma seadme <ph name="DEVICE_TYPE" /> vana parool.</translation> <translation id="4838170306476614339">Teie telefoni fotode, meedia ja märguannete vaatamine</translation> @@ -4302,6 +4306,7 @@ <translation id="5150254825601720210">Netscape'i sertifikaadi SSL-serveri nimi</translation> <translation id="5151354047782775295">Vabastage kettaruumi, muidu võidakse valitud andmed automaatselt kustutada</translation> <translation id="5153234146675181447">Telefoni unustamine</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Printeri <ph name="PRINTING_DESTINATION" /> täpsemad seaded</translation> <translation id="5154702632169343078">Teema</translation> <translation id="5155327081870541046">Sisestage aadressiribale selle saidi otsetee, millel soovite otsida, näiteks „@järjehoidjad“. Seejärel vajutage valitud klaviatuuriotseteed ja sisestage otsingutermin.</translation> @@ -5937,6 +5942,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> lisati kaugühenduse kaudu</translation> <translation id="6790820461102226165">Lisa isik ...</translation> <translation id="6793604637258913070">Kui tekstisisestusmärk ilmub või liigub, tõstetakse see esile</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Automaatne skannimine võimaldab teil ekraanil kuvatud üksuste vahel automaatselt liikuda. Kui üksus on esile tõstetud, vajutage selle aktiveerimiseks nuppu „Vali“.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Vabandust! Midagi läks valesti.</translation> @@ -7810,6 +7816,7 @@ <translation id="8642947597466641025">Saate teksti suurendada</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> võib olla ohtlik. Kas saata skannimiseks Google'i täiustatud kaitse programmile?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Küpsisefaile pole}=1{1 küpsisefail on blokeeritud}other{# küpsisefaili on blokeeritud}}</translation> +<translation id="864423554496711319">Teie kontole salvestatud seadmed</translation> <translation id="8644655801811752511">Seda turvavõtit ei saa lähtestada. Proovige võti lähtestada kohe pärast sisestamist.</translation> <translation id="8645354835496065562">Luba ka edaspidi juurdepääs anduritele</translation> <translation id="8645920082661222035">Ennustab ohtlikke sündmusi ja hoiatab teid</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 1992a3248..e08e58613 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1907,6 +1907,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Ezabatu bateragarria ez den aplikazio bat}other{Ezabatu bateragarriak ez diren # aplikazio}}</translation> <translation id="2776560192867872731">Aldatu <ph name="DEVICE_NAME" /> gailuaren izena</translation> <translation id="2777251078198759550">Ezabatu edukiontzia</translation> +<translation id="2778471504622896352">Gehitu urruneko aplikazioak Chrome OS-ren abiarazlean</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Errore bat gertatu da Linux aplikazioa instalatzean</translation> <translation id="2783298271312924866">Deskargatu da</translation> @@ -3542,6 +3543,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> eta beste <ph name="NUMBER_OF_OTHER_SWITCHES" /> erabilerraztasun-etengailu</translation> <translation id="439266289085815679"><ph name="USER_EMAIL" /> erabiltzaileak kontrolatzen du Bluetooth konfigurazioa.</translation> <translation id="4392896746540753732">Editatu konfigurazio-fitxategia</translation> +<translation id="4393713825278446281">Erabili Parekatze bizkorra <ph name="PRIMARY_EMAIL" /> kontuan gordetako gailuekin</translation> <translation id="4394049700291259645">Desgaitu</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Ireki guztiak}=1{&Ireki laster-marka}other{&Ireki guztiak ({COUNT})}}</translation> <translation id="4397372003838952832">Ez duzu pasahitza gogoratu beharko. <ph name="EMAIL" /> kontuari dagokion <ph name="GOOGLE_PASSWORD_MANAGER" /> zerbitzuan gordeko da.</translation> @@ -3771,6 +3773,7 @@ <translation id="4615586811063744755">ez da hautatu cookierik</translation> <translation id="461661862154729886">Energia-iturburua</translation> <translation id="4617001782309103936">Laburregia</translation> +<translation id="4617019240346358451">Kargatu berriro orria "<ph name="EXTENSION_NAME" />" erabiltzeko</translation> <translation id="4617270414136722281">Luzapenaren aukerak</translation> <translation id="4617880081511131945">Ezin da ezarri konexioa</translation> <translation id="4619564267100705184">Egiaztatu zeu zarela</translation> @@ -3986,6 +3989,7 @@ <translation id="4833683849865011483">Inprimagailu bat aurkitu da inprimatze-zerbitzarian</translation> <translation id="4836504898754963407">Kudeatu hatz-markak</translation> <translation id="4837128290434901661">Google Bilaketa zerbitzura itzuli nahi duzu?</translation> +<translation id="4837165100461973682">Aldaketa aplikatzeko, kargatu orria berriro</translation> <translation id="4837926214103741331">Ez duzu gailua erabiltzeko baimenik. Saioa hasteko baimena lortzeko, jarri gailuaren jabearekin harremanetan.</translation> <translation id="4837952862063191349">Tokiko datuak desblokeatzeko eta gailuko datuak leheneratzeko, idatzi <ph name="DEVICE_TYPE" /> gailuaren pasahitz zaharra.</translation> <translation id="4838170306476614339">Ikusi telefonoko argazkiak, multimedia-elementuak eta jakinarazpenak</translation> @@ -4295,6 +4299,7 @@ <translation id="5150254825601720210">Netscape ziurtagiriaren SSL zerbitzariaren izena</translation> <translation id="5151354047782775295">Egin tokia diskoan; bestela, automatikoki ezabatuko dira datu jakin batzuk</translation> <translation id="5153234146675181447">Ahaztu telefonoa</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> inprimagailuaren ezarpen aurreratuak</translation> <translation id="5154702632169343078">Hartzailea</translation> <translation id="5155327081870541046">Helbide-barran, idatzi zer webgune edo ataletan egin nahi duzun bilaketa; adibidez, "@laster-markak". Ondoren, sakatu erabili ohi duzun lasterbidea eta idatzi bilaketa-hitza.</translation> @@ -5927,6 +5932,7 @@ <translation id="6790497603648687708">Urrunetik gehitu da <ph name="EXTENSION_NAME" /></translation> <translation id="6790820461102226165">Gehitu pertsona bat...</translation> <translation id="6793604637258913070">Agertzen edo mugitzen denean, nabarmendu testu-kurtsorea</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Pantailan automatikoki mugitzeko aukerari esker, automatikoki joan zaitezke pantailako elementu batetik bestera. Elementu bat nabarmentzen denean, sakatu "Hautatu" hura aktibatzeko.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Arazo bat izan da.</translation> @@ -7798,6 +7804,7 @@ <translation id="8642947597466641025">Handitu testua</translation> <translation id="8643443571868262066">Baliteke <ph name="FILE_NAME" /> arriskutsua izatea. Google-ren Babes aurreratua programara bidali nahi duzu aztertzeko?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Ez da blokeatu cookierik}=1{1 cookie blokeatu da}other{# cookie blokeatu dira}}</translation> +<translation id="864423554496711319">Kontuan gordetako gailuak</translation> <translation id="8644655801811752511">Ezin da berrezarri segurtasun-giltza. Saiatu giltza sartu eta berehala berrezartzen.</translation> <translation id="8645354835496065562">Jarraitu sentsoreetarako sarbidea baimentzen</translation> <translation id="8645920082661222035">Gertaera arriskutsuak iragartzen ditu eta haien berri ematen dizu gertatu aurretik.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index f1daf5e..3dda714 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1555,6 +1555,7 @@ <translation id="2433836460518180625">فقط باز کردن قفل دستگاه</translation> <translation id="2434449159125086437">چاپگر راهاندازی نشد لطفاً پیکربندی را بررسی کنید و دوباره امتحان کنید.</translation> <translation id="2434758125294431199">انتخاب افرادی که میتوانند با شما همرسانی انجام دهند</translation> +<translation id="2434915728183570229">اکنون میتوانید برنامههای تلفنتان را مشاهده کنید</translation> <translation id="2435137177546457207">شرایط تکمیلی Google Chrome و ChromeOS Flex</translation> <translation id="2435248616906486374">شبکه قطع شد</translation> <translation id="2435457462613246316">نمایش گذرواژه</translation> @@ -1920,6 +1921,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{برداشتن یک برنامه پشتیبانینشده}one{برداشتن # برنامه پشتیبانینشده}other{برداشتن # برنامه پشتیبانینشده}}</translation> <translation id="2776560192867872731">تغییر نام دستگاه <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">حذف این محتوی</translation> +<translation id="2778471504622896352">افزودن برنامههای کنترل ازراهدور به راهانداز ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">خطا هنگام نصب برنامه Linux</translation> <translation id="2783298271312924866">بارگیری شد</translation> @@ -3555,6 +3557,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />، <ph name="SECOND_SWITCH" />، <ph name="THIRD_SWITCH" />، و <ph name="NUMBER_OF_OTHER_SWITCHES" /> کلید دیگر</translation> <translation id="439266289085815679">پیکربندی Bluetooth توسط <ph name="USER_EMAIL" /> کنترل میشود.</translation> <translation id="4392896746540753732">ویرایش فایل پیکربندی</translation> +<translation id="4393713825278446281">دستگاههای «مرتبطسازی سریع» ذخیرهشده در <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">غیر فعال کردن</translation> <translation id="4396956294839002702">{COUNT,plural, =0{باز کردن همه}=1{باز کردن نشانک}one{باز کردن همه ({COUNT})}other{باز کردن همه ({COUNT})}}</translation> <translation id="4397372003838952832">لازم نیست این گذرواژه را بهخاطر بسپارید. این گذرواژه در <ph name="GOOGLE_PASSWORD_MANAGER" /> برای <ph name="EMAIL" /> ذخیره خواهد شد.</translation> @@ -3785,6 +3788,7 @@ <translation id="4615586811063744755">کوکیای انتخاب نشده است</translation> <translation id="461661862154729886">منبع انرژی</translation> <translation id="4617001782309103936">بسیار کوتاه</translation> +<translation id="4617019240346358451">مجدد بار کردن صفحه برای استفاده از «<ph name="EXTENSION_NAME" />»</translation> <translation id="4617270414136722281">گزینههای افزونه</translation> <translation id="4617880081511131945">امکان برقراری اتصال وجود ندارد</translation> <translation id="4619564267100705184">تأیید هویت</translation> @@ -3934,6 +3938,7 @@ <translation id="4768332406694066911">گواهیهایی از این سازمانها دارید که هویت شما را شناسایی میکنند</translation> <translation id="4770119228883592393">درخواست اجازه ارائه شده است؛ برای پاسخ دادن، کلید «⌘ + گزینه + پیکان روبهپایین» را فشار دهید</translation> <translation id="4773112038801431077">ارتقای Linux</translation> +<translation id="4774337692467964393">اگر Smart Lock روشن باشد، دیگر نیازی به وارد کردن پین یا گذرواژه نخواهید داشت</translation> <translation id="4775142426314270551">با ارسال خودکار گزارشهای خرابی و همچنین دادههای استفاده و عیبیابی به Google، به بهبود ویژگیها و عملکرد سیستمعامل Chrome و ChromeOS کمک کنید. برخیاز دادههای انبوهشی نیز به شرکای Google و برنامههای Android کمک خواهند کرد. اگر تنظیم «فعالیت وب و برنامه» برای «حساب Google» فرزندتان روشن باشد، ممکن است این دادههای Android فرزندتان در حسابش ذخیره شود.</translation> <translation id="477647109558161443">ایجاد میانبر میزکار</translation> <translation id="4776594120007763294">برای افزودن صفحهای که میخواهید بعداً بخوانید، روی این دکمه کلیک کنید</translation> @@ -3983,6 +3988,7 @@ <translation id="4820236583224459650">تنظیم بهعنوان بلیت فعال</translation> <translation id="4821935166599369261">&ایجاد نمایه فعال شد</translation> <translation id="4823484602432206655">تغییر و خواندن تنظیمات کاربر و دستگاه</translation> +<translation id="4823894915586516138">این پین یا گذرواژه از دادههای شما در این <ph name="DEVICE_TYPE" /> (ازجمله اطلاعاتی که از تلفنتان به آن دسترسی پیدا میکنید) محافظت میکند</translation> <translation id="4824037980212326045">پشتیبانگیری و بازیابی Linux</translation> <translation id="4824958205181053313">همگامسازی لغو شود؟</translation> <translation id="4827675678516992122">متصل نشد</translation> @@ -3998,6 +4004,7 @@ <translation id="4833683849865011483">۱ چاپگر از این سرور چاپ پیدا شد</translation> <translation id="4836504898754963407">مدیریت اثر انگشت</translation> <translation id="4837128290434901661">به «جستجوی Google» تغییر میدهید؟</translation> +<translation id="4837165100461973682">مجدد بار کردن صفحه برای اعمال تغییرات</translation> <translation id="4837926214103741331">مجاز به استفاده از این دستگاه نیستید. لطفاً برای دریافت اجازه ورود به سیستم با مالک دستگاه تماس بگیرید.</translation> <translation id="4837952862063191349">برای باز کردن قفل و بازیابی دادههای محلیتان، لطفاً گذرواژه <ph name="DEVICE_TYPE" /> قدیمیتان را وارد کنید.</translation> <translation id="4838170306476614339">مشاهده عکسها، رسانه، و اعلانهای تلفن</translation> @@ -4233,6 +4240,7 @@ <translation id="5072900412896857127">«شرایط خدمات Google Play» را نمیتوان بار کرد. لطفاً اتصال شبکهتان را بررسی کنید و دوباره امتحان کنید.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />،<ph name="FILE2" />}one{<ph name="FILE1" />،<ph name="FILE2" />، و # مورد دیگر}other{<ph name="FILE1" />،<ph name="FILE2" />، و # مورد دیگر}}</translation> <translation id="5074318175948309511">شاید لازم باشد که این صفحه قبل از اعمال شدن تنظیمات جدید، بارگذاری مجدد شود.</translation> +<translation id="5074761966806028321">برای تکمیل راهاندازی، همچنان به اجازه نیاز دارید</translation> <translation id="5075910247684008552">محتوای ناامن بهطور پیشفرض در سایتهای ایمن مسدود میشود</translation> <translation id="5078638979202084724">نشانک گذاری همه برگهها</translation> <translation id="5078796286268621944">پین اشتباه</translation> @@ -4307,6 +4315,7 @@ <translation id="5150254825601720210">نام سرور SSL گواهی Netscape</translation> <translation id="5151354047782775295">فضای دیسک را آزاد کنید، در غیر این صورت ممکن است دادههای انتخابی بهصورت خودکار حذف شوند</translation> <translation id="5153234146675181447">فراموش کردن تلفن</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">تنظیمات پیشرفته برای <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">موضوع</translation> <translation id="5155327081870541046">در نوار نشانی، میانبر سایتی را که میخواهید جستجو کنید وارد کنید، مثلاً «@bookmarks». سپس، میانبر ترجیحی صفحهکلید را فشار دهید و عبارت جستجو را وارد کنید.</translation> @@ -4595,6 +4604,7 @@ <translation id="5449551289610225147">گذرواژه نامعتبر است</translation> <translation id="5449588825071916739">نشانکگذاری همه برگهها...</translation> <translation id="5449716055534515760">بستن &پنجره</translation> +<translation id="5452446625764825792">اکنون میتوانید عکسها، رسانهها، و برنامههای جدید تلفنتان را مشاهده کنید</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (آفلاین کار میکند)</translation> <translation id="5454166040603940656">با <ph name="PROVIDER" /></translation> <translation id="545484289444831485">دیدن نتایج جستجوی بیشتر</translation> @@ -4655,6 +4665,7 @@ <translation id="5499211612787418966">درحالحاضر، این کادر گفتگو متمرکز نشده است. برای تمرکز کردن روی این کادر گفتگو، کلیدهای «دگرساز+تبدیل+A» را فشار دهید.</translation> <translation id="5499313591153584299">شاید این فایل برای کامپیوتر شما مضر باشد.</translation> <translation id="5499453227627332024">نسخهای برای ارتقای محتوی Linux شما دردسترس است. همچنین میتوانید بعداً در «تنظیمات» ارتقا دهید.</translation> +<translation id="5499476581866658341">اکنون میتوانید عکسها و رسانههای جدید تلفنتان را مشاهده کنید</translation> <translation id="549957179819296104">نماد جدید</translation> <translation id="5500168250243071806">وقتی به سیستم وارد شده باشید، ممکن است <ph name="BEGIN_LINK_SEARCH" />سابقه جستجو<ph name="END_LINK_SEARCH" /> و <ph name="BEGIN_LINK_GOOGLE" />انواع دیگر فعالیت<ph name="END_LINK_GOOGLE" /> در «حساب Google» شما ذخیره شوند. هر زمان خواستید میتوانید آنها را حذف کنید.</translation> <translation id="5500709606820808700">بررسی ایمنی امروز اجرا شد</translation> @@ -5640,6 +5651,7 @@ <translation id="648927581764831596">هیچکدام در دسترس نیست</translation> <translation id="6490471652906364588">دستگاه USB-C (درگاه سمت راست)</translation> <translation id="6491376743066338510">مجوز صادر نشد</translation> +<translation id="6492396476180293140">با تغییروضعیت سختافزار، دوربین داخلی غیرفعال شد</translation> <translation id="6494327278868541139">نمایش جزئیات محافظت بهبودیافته</translation> <translation id="6494445798847293442">یک ارائهدهنده مجوز نیست</translation> <translation id="6494974875566443634">سفارشی کردن</translation> @@ -5943,6 +5955,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> ازراهدور اضافه شد</translation> <translation id="6790820461102226165">افزودن شخص...</translation> <translation id="6793604637258913070">برجسته کردن نشانگر نوشتار درصورتیکه ظاهر شود یا حرکت کند</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">اسکن خودکار به شما اجازه میدهد بهطور خودکار بین موارد موجود در صفحه جابهجا شوید. وقتی موردی برجسته میشود، با فشار دادن «انتخاب» آن را فعال کنید.</translation> <translation id="6795884519221689054">پاندا</translation> <translation id="6797493596609571643">اوه، مشکلی روی داد.</translation> @@ -6319,6 +6332,7 @@ <translation id="7152478047064750137">این افزونه به مجوز خاصی نیاز ندارد</translation> <translation id="7154130902455071009">تغییر صفحه شروعتان به: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">عکس موجود از دوربین یا فایل</translation> +<translation id="7160182524506337403">اکنون میتوانید اعلانهای تلفنتان را مشاهده کنید</translation> <translation id="7163202347044721291">درحال راستیآزمایی کد فعالسازی…</translation> <translation id="716640248772308851">«<ph name="EXTENSION" />» میتواند تصاویر، ویدئوها و فایلهای صوتی موجود در مکانهای انتخاب شده را بخواند.</translation> <translation id="7167486101654761064">&همیشه این نوع فایلها باز شوند</translation> @@ -7333,6 +7347,7 @@ <translation id="8138997515734480534">وضعیت <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">فایلهای Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />،<ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">میتوانید در تنظیمات «مرکز کنترل تلفن»، ویژگیهای بیشتری را راهاندازی کنید</translation> <translation id="8141584439523427891">اکنون باز کردن در مرورگر جایگزین</translation> <translation id="8141725884565838206">مدیریت گذرواژههای شما</translation> <translation id="814204052173971714">{COUNT,plural, =1{یک ویدیو}one{# ویدیو}other{# ویدیو}}</translation> @@ -7540,6 +7555,7 @@ <translation id="833986336429795709">برای باز کردن این پیوند، برنامهای انتخاب کنید</translation> <translation id="8342221978608739536">امتحان نکردهام</translation> <translation id="8342861492835240085">انتخاب مجموعه</translation> +<translation id="8345848587667658367">اکنون میتوانید عکسها، رسانهها، اعلانها، و برنامههای جدید تلفنتان را مشاهده کنید</translation> <translation id="8347227221149377169">کارهای چاپی</translation> <translation id="834785183489258869">در «حالت ناشناس»، سایتها نمیتوانند از کوکیهای شما برای دیدن فعالیت مرور شما در سایتهای مختلف و برای مثال شخصیسازی آگهیها استفاده کنند. ممکن است ویژگیهای برخیاز سایتها کار نکند.</translation> <translation id="8350789879725387295">ابزارهای قلم در قفسه</translation> @@ -7815,6 +7831,7 @@ <translation id="8642947597466641025">طولانی تر کردن متن</translation> <translation id="8643443571868262066">ممکن است <ph name="FILE_NAME" /> خطرناک باشد. برای اسکن کردن به «محافظت پیشرفته Google» ارسال شود؟</translation> <translation id="8644047503904673749">{COUNT,plural, =0{کوکی وجود ندارد}=1{۱ کوکی مسدود شده است}one{# کوکی مسدود شده است}other{# کوکی مسدود شده است}}</translation> +<translation id="864423554496711319">دستگاههای ذخیرهشده در حسابتان</translation> <translation id="8644655801811752511">نمیتوان این کلید امنیتی را بازنشانی کرد. بازنشاندن این کلید را بلافاصله پس از وارد کردنش امتحان کنید.</translation> <translation id="8645354835496065562">دسترسی به حسگر همچنان مجاز باشد</translation> <translation id="8645920082661222035">رویدادهای خطرناک را پیش از اینکه اتفاق بیفتند پیشبینی میکند و درباره آنها به شما هشدار میدهد</translation> @@ -8145,6 +8162,7 @@ <translation id="8957757410289731985">سفارشی کردن نمایه</translation> <translation id="895944840846194039">حافطه جاوا اسکریپت</translation> <translation id="8960208913905765425">تبدیل واحد «پاسخهای سریع»</translation> +<translation id="8960638196855923532">اکنون میتوانید اعلانها و برنامههای تلفنتان را مشاهده کنید</translation> <translation id="8962051932294470566">هر بار فقط یک فایل را میتوانید همرسانی کنید. وقتی انتقال فعلی بهپایان رسید، دوباره امتحان کنید.</translation> <translation id="8962083179518285172">پنهان کردن جزئیات</translation> <translation id="8962918469425892674">این سایت از حسگرهای نور یا حرکت استفاده میکند.</translation> @@ -8296,6 +8314,7 @@ <translation id="9103868373786083162">برای دیدن سابقه، دکمه را فشار دهید تا به عقب، و به منوی بافت برگردید</translation> <translation id="9108035152087032312">نامگذاری پنجره…</translation> <translation id="9108072915170399168">تنظیم کنونی مصرف داده روی «بدون اینترنت» است</translation> +<translation id="9108294543511800041">اکنون میتوانید عکسها، رسانهها، و اعلانهای جدید تلفنتان را مشاهده کنید</translation> <translation id="9108674852930645435">ویژگیهای جدید <ph name="DEVICE_TYPE" /> را کاوش کنید</translation> <translation id="9108808586816295166">ممکن است DNS ایمن همیشه در دسترس نباشد</translation> <translation id="9109122242323516435">برای آزاد کردن فضا، فایلها را در حافظه دستگاه حذف کنید.</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index cf3499c..6a27441c 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -1922,6 +1922,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Poista 1 ei-tuettu sovellus}other{Poista # ei-tuettua sovellusta}}</translation> <translation id="2776560192867872731">Vaihda laitteen nimeksi <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Poista tämä säilö</translation> +<translation id="2778471504622896352">Etäsovellusten lisääminen Chrome-käyttöjärjestelmän käynnistysohjelmaan</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Virhe Linux-sovelluksen asennuksessa</translation> <translation id="2783298271312924866">Ladatut</translation> @@ -3554,6 +3555,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ja <ph name="NUMBER_OF_OTHER_SWITCHES" /> muuta kytkintä</translation> <translation id="439266289085815679"><ph name="USER_EMAIL" /> ohjaa Bluetooth-määritystä.</translation> <translation id="4392896746540753732">Muokkaa määritystiedostoa</translation> +<translation id="4393713825278446281">Pikaparilaitteet tallennettu: <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Poista käytöstä</translation> <translation id="4396956294839002702">{COUNT,plural, =0{Avaa (&O) kaikki}=1{Avaa (&O) kirjanmerkki}other{Avaa (&O) kaikki ({COUNT})}}</translation> <translation id="4397372003838952832">Sinun ei tarvitse muistaa tätä salasanaa. <ph name="EMAIL" />-sähköpostin salasana tallennetaan tänne: <ph name="GOOGLE_PASSWORD_MANAGER" /></translation> @@ -3784,6 +3786,7 @@ <translation id="4615586811063744755">ei evästeitä valittuna</translation> <translation id="461661862154729886">Energianlähde</translation> <translation id="4617001782309103936">Liian lyhyt</translation> +<translation id="4617019240346358451">Päivitä sivu käyttääksesi laajennusta: <ph name="EXTENSION_NAME" /></translation> <translation id="4617270414136722281">Laajennusasetukset</translation> <translation id="4617880081511131945">Yhteyttä ei voi muodostaa</translation> <translation id="4619564267100705184">Todenna henkilöllisyytesi</translation> @@ -3933,6 +3936,7 @@ <translation id="4768332406694066911">Sinulla on varmenteita seuraavilta sinut tunnistavilta organisaatioilta</translation> <translation id="4770119228883592393">Lupaa pyydetty, vastaa painamalla ⌘ + Option + alanuoli</translation> <translation id="4773112038801431077">Päivitä Linux</translation> +<translation id="4774337692467964393">Jos Smart Lock on päällä, PIN-koodia tai salasanaa ei tarvitse lisätä</translation> <translation id="4775142426314270551">Auta parantamaan Chromen ja ChromeOS:n ominaisuuksia ja suorituskykyä lähettämällä automaattisesti virheraportteja sekä diagnostiikka- ja käyttödataa Googlelle. Kootusta datasta on hyötyä myös Android-sovelluksille ja Googlen kumppaneille. Jos Verkko- ja sovellustoiminta ‑asetus on päällä lapsen Google-tilillä, Android-dataa voidaan tallentaa hänen tililleen.</translation> <translation id="477647109558161443">Luo työpöytäkuvake</translation> <translation id="4776594120007763294">Voit lisätä sivun myöhempää lukemista varten painamalla painiketta</translation> @@ -3982,6 +3986,7 @@ <translation id="4820236583224459650">Määritä aktiiviseksi tukipyynnöksi</translation> <translation id="4821935166599369261">&Profilointi on käytössä</translation> <translation id="4823484602432206655">Lukea ja muokata käyttäjän ja laitteen asetuksia.</translation> +<translation id="4823894915586516138">PIN-koodi tai salasana suojaa dataasi laitteella (<ph name="DEVICE_TYPE" />), esim. puhelimella käyttämiäsi tietoja</translation> <translation id="4824037980212326045">Linuxin varmuuskopiointi ja palautus</translation> <translation id="4824958205181053313">Perutaanko synkronointi?</translation> <translation id="4827675678516992122">Ei yhteyttä</translation> @@ -3997,6 +4002,7 @@ <translation id="4833683849865011483">Tulostuspalvelimelta löytyi yksi tulostin</translation> <translation id="4836504898754963407">Sormenjälkien ylläpito</translation> <translation id="4837128290434901661">Vaihdetaanko takaisin Google Hakuun?</translation> +<translation id="4837165100461973682">Ota muutokset käyttöön päivittämällä sivu</translation> <translation id="4837926214103741331">Sinulla ei ole tämän laitteen käyttölupaa. Pyydä laitteen omistajalta kirjautumislupa.</translation> <translation id="4837952862063191349">Jos haluat avata paikallisten tietojesi lukituksen ja palauttaa ne, anna vanhan laitteen <ph name="DEVICE_TYPE" /> salasana.</translation> <translation id="4838170306476614339">Katsele puhelimesi kuvia, mediaa ja ilmoituksia</translation> @@ -4306,6 +4312,7 @@ <translation id="5150254825601720210">Netscape-varmenteen SSL-palvelimen nimi</translation> <translation id="5151354047782775295">Vapauta levytilaa, tai tiettyjä tietoja voidaan poistaa automaattisesti.</translation> <translation id="5153234146675181447">Unohda puhelin</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Tulostimen <ph name="PRINTING_DESTINATION" /> lisäasetukset</translation> <translation id="5154702632169343078">Kohde</translation> <translation id="5155327081870541046">Lisää osoitekenttään hakemasi sivuston pikakomento, esim. "@bookmarks". Paina sitten valitsemaasi pikanäppäintä ja lisää hakutermisi.</translation> @@ -5639,6 +5646,7 @@ <translation id="648927581764831596">Ei saatavilla</translation> <translation id="6490471652906364588">C-tyypin USB-laite (oikean sivun portti)</translation> <translation id="6491376743066338510">Valtuutus epäonnistui.</translation> +<translation id="6492396476180293140">Sisäinen kamera poistettu käytöstä laitteiston kytkimellä</translation> <translation id="6494327278868541139">Näytä tiedot parannetusta suojauksesta</translation> <translation id="6494445798847293442">Ei varmenteen myöntäjä</translation> <translation id="6494974875566443634">Personointi</translation> @@ -5940,6 +5948,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> lisättiin etäyhteyden kautta</translation> <translation id="6790820461102226165">Lisää henkilö…</translation> <translation id="6793604637258913070">Korosta tekstikursori, kun se on näkyvissä tai liikkuu</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Automaattisen skannauksen avulla voit siirtyä näytöllä olevien kohteiden välillä automaattisesti. Kun kohde on korostettuna, voit aktivoida sen painamalla Valinta.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Hups… Jotain meni pieleen.</translation> @@ -7812,6 +7821,7 @@ <translation id="8642947597466641025">Suurenna tekstiä</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> voi olla vaarallinen. Lähetetäänkö se Googlen Lisäsuojaukseen tarkistettavaksi?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Ei evästeitä}=1{1 eväste on estetty}other{# evästettä on estetty}}</translation> +<translation id="864423554496711319">Tilillesi tallennetut laitteet</translation> <translation id="8644655801811752511">Tätä suojausavainta ei voi nollata. Yritä nollata avain heti sen asettamisen jälkeen.</translation> <translation id="8645354835496065562">Salli edelleen tunnistimien käyttö</translation> <translation id="8645920082661222035">Ennustaa vaarallisia tapahtumia ja varoittaa niistä etukäteen</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index b22f183e..d2033d7f 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -3923,6 +3923,7 @@ <translation id="4768332406694066911">Vous avez des certificats provenant de ces organisations qui vous identifient</translation> <translation id="4770119228883592393">Autorisation demandée, appuyez sur ⌘+Option+flèche vers le bas pour répondre</translation> <translation id="4773112038801431077">Mettre à niveau Linux</translation> +<translation id="4774337692467964393">Lorsque Smart Lock est activé, vous n'avez pas besoin d'entrer de NIP ni de mot de passe</translation> <translation id="4775142426314270551">Aidez-nous à améliorer les fonctionnalités et les performances de Chrome et de Chrome OS en envoyant automatiquement les rapports de plantage ainsi que les données de diagnostic et d'utilisation à Google. Certaines données agrégées seront également utiles aux applications Android et aux partenaires Google. Si le paramètre Activité sur le Web et dans les applications est activé pour le compte Google de votre enfant, les données Android de votre enfant peuvent être enregistrées dans le compte Google de votre enfant.</translation> <translation id="477647109558161443">Créer un raccourci sur le bureau</translation> <translation id="4776594120007763294">Pour ajouter une page à lire plus tard, cliquez sur le bouton</translation> @@ -3972,6 +3973,7 @@ <translation id="4820236583224459650">Enregistrer comme ticket actif</translation> <translation id="4821935166599369261">&Profilage activé</translation> <translation id="4823484602432206655">Lire et modifier les paramètres de l’utilisateur et de l'appareil</translation> +<translation id="4823894915586516138">Ce NIP ou ce mot de passe protège vos données sur ce <ph name="DEVICE_TYPE" />, y compris toutes celles auxquelles vous accédez à partir de votre téléphone</translation> <translation id="4824037980212326045">Sauvegarder et restaurer le contenu Linux</translation> <translation id="4824958205181053313">Annuler la synchronisation?</translation> <translation id="4827675678516992122">Impossible de se connecter</translation> @@ -5629,6 +5631,7 @@ <translation id="648927581764831596">Aucun</translation> <translation id="6490471652906364588">Appareil USB-C (port de droite)</translation> <translation id="6491376743066338510">Échec de l'autorisation</translation> +<translation id="6492396476180293140">Caméra interne désactivée par le commutateur matériel</translation> <translation id="6494327278868541139">Afficher les renseignements sur la protection renforcée</translation> <translation id="6494445798847293442">N'est pas une autorité de certification</translation> <translation id="6494974875566443634">Personnalisation</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 249ef5d..57d53d2 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -1906,6 +1906,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{સપોર્ટ ન કરવામાં આવતી 1 ઍપ કાઢી નાખો}one{સપોર્ટ ન કરવામાં આવતી # ઍપ કાઢી નાખો}other{સપોર્ટ ન કરવામાં આવતી # ઍપ કાઢી નાખો}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> માટે ડિવાઇસનું નામ બદલો</translation> <translation id="2777251078198759550">આ કન્ટેનર ડિલીટ કરો</translation> +<translation id="2778471504622896352">ChromeOS લૉન્ચરમાં રિમોટ ઍપ ઉમેરો</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux ઍપ્લિકેશન ઇન્સ્ટૉલ કરવામાં ભૂલ</translation> <translation id="2783298271312924866">ડાઉનલોડ કરેલ</translation> @@ -3541,6 +3542,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> અને વધુ <ph name="NUMBER_OF_OTHER_SWITCHES" /> સ્વિચ</translation> <translation id="439266289085815679">નેટવર્ક ગોઠવણી, <ph name="USER_EMAIL" /> દ્વારા નિયંત્રિત છે.</translation> <translation id="4392896746540753732">કન્ફિગ્યુરેશનની ફાઇલમાં ફેરફાર કરો</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" />માં સાચવવામાં આવેલા ઝડપી જોડાણવાળા ડિવાઇસ</translation> <translation id="4394049700291259645">બંધ કરો</translation> <translation id="4396956294839002702">{COUNT,plural, =0{તમામ URLને &ખોલો}=1{બુકમાર્ક &ખોલો}one{તમામ ({COUNT}) URLને &ખોલો}other{તમામ ({COUNT}) URLને &ખોલો}}</translation> <translation id="4397372003838952832">તમારે આ પાસવર્ડ યાદ રાખવાની જરૂર રહેશે નહીં. તેને <ph name="EMAIL" /> માટે <ph name="GOOGLE_PASSWORD_MANAGER" />માં સાચવવામાં આવશે.</translation> @@ -3770,6 +3772,7 @@ <translation id="4615586811063744755">કોઈ કુકી પસંદ કરી નથી</translation> <translation id="461661862154729886">ઊર્જાનો સૉર્સ</translation> <translation id="4617001782309103936">ઘણું નાનું</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />"નો ઉપયોગ કરવા માટે પેજ ફરીથી લોડ કરો</translation> <translation id="4617270414136722281">એક્સ્ટેન્શન વિકલ્પો</translation> <translation id="4617880081511131945">કનેક્શન મેળવી શકાતું નથી</translation> <translation id="4619564267100705184">આ તમે જ છો તેની ચકાસણી કરો</translation> @@ -3919,6 +3922,7 @@ <translation id="4768332406694066911">તમારી પાસે આ સંસ્થાઓના પ્રમાણપત્ર છે કે જે તમને ઓળખે છે</translation> <translation id="4770119228883592393">પરવાનગીની વિનંતી કરવામાં આવી, જવાબ આપવા માટે ⌘ + Option + નીચેનો ઍરો દબાવો</translation> <translation id="4773112038801431077">Linux અપગ્રેડ કરો</translation> +<translation id="4774337692467964393">જો Smart Lock ચાલુ કરેલું હોય, તો તમારે પિન અથવા પાસવર્ડ દાખલ કરવાની જરૂર પડશે નહીં</translation> <translation id="4775142426314270551">Googleને ક્રૅશ રિપોર્ટ તેમજ નિદાન અને વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલીને Chrome અને ChromeOSની સુવિધાઓ અને કાર્યપ્રદર્શનને બહેતર બનાવવામાં સહાય કરો. કુલ ડેટામાંથી કેટલોક ડેટા Android ઍપ અને Googleના ભાગીદારોને પણ સહાય કરશે. જો તમારા બાળકના Google એકાઉન્ટ માટે વેબ અને ઍપ પ્રવૃત્તિનું સેટિંગ ચાલુ હોય, તો તમારા બાળકના Google એકાઉન્ટમાં તમારા બાળકનો Android ડેટા સાચવવામાં આવી શકે છે.</translation> <translation id="477647109558161443">ડેસ્કટૉપ શૉર્ટકટ બનાવો</translation> <translation id="4776594120007763294">થોડા સમય પછી વાંચી શકવા કોઈ પેજને ઉમેરવા માટે, આ બટન ક્લિક કરો</translation> @@ -3968,6 +3972,7 @@ <translation id="4820236583224459650">સક્રિય ટિકિટ તરીકે સેટ કરો</translation> <translation id="4821935166599369261">&પ્રોફાઇલિંગ સક્ષમ</translation> <translation id="4823484602432206655">વપરાશકર્તા અને ડિવાઇસ સેટિંગ વાંચો અને બદલો</translation> +<translation id="4823894915586516138">આ પિન અથવા પાસવર્ડ તમારા ફોન પરથી તમે ઍક્સેસ કરો છો તેવી કોઈપણ માહિતી સહિત <ph name="DEVICE_TYPE" /> પરના તમારા ડેટાનું રક્ષણ કરે છે</translation> <translation id="4824037980212326045">Linux બૅકઅપ લો અને રિસ્ટોર કરો</translation> <translation id="4824958205181053313">સિંક કરવાનું રદ કરીએ?</translation> <translation id="4827675678516992122">કનેક્ટ કરી શકાયું નથી</translation> @@ -3983,6 +3988,7 @@ <translation id="4833683849865011483">પ્રિન્ટ સર્વરમાંથી 1 પ્રિન્ટર મળ્યું</translation> <translation id="4836504898754963407">ફિંગરપ્રિન્ટને મેનેજ કરો</translation> <translation id="4837128290434901661">બદલીને પાછા Google Search પર આવીએ?</translation> +<translation id="4837165100461973682">તમારા ફેરફારોને લાગુ કરવા પેજ ફરીથી લોડ કરો</translation> <translation id="4837926214103741331">તમે આ ઉપકરણ વાપરવા માટે અધિકૃત નથી. કૃપા કરીને સાઇન ઇન કરવાની પરવાનગી માટે ઉપકરણના માલિકનો સંપર્ક કરો.</translation> <translation id="4837952862063191349">તમારો સ્થાનિક ડેટા અનલૉક અને પુનઃસ્થાપિત કરવા માટે, કૃપા કરીને તમારા જૂના <ph name="DEVICE_TYPE" /> નો પાસવર્ડ દાખલ કરો.</translation> <translation id="4838170306476614339">તમારા ફોનના ફોટા, મીડિયા અને નોટિફિકેશન જુઓ</translation> @@ -4292,6 +4298,7 @@ <translation id="5150254825601720210">નેટસ્કેપ પ્રમાણપત્ર SSL સર્વર નામ</translation> <translation id="5151354047782775295">ડિસ્ક સ્થાન ખાલી કરો અથવા પસંદ કરેલ ડેટા ઑટોમૅટિક રીતે કાઢી નાખવામાં આવી શકે છે</translation> <translation id="5153234146675181447">ફોન ભૂલી જાઓ</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> માટે વિગતવાર સેટિંગ</translation> <translation id="5154702632169343078">વિષય</translation> <translation id="5155327081870541046">ઍડ્રેસ બારમાં, તમે જે સાઇટમાં શોધવા માગતા હો, તેના માટેનો શૉર્ટકટ દાખલ કરો, જેમ કે "@bookmarks". પછી, તમારી પસંદગીનો કીબોર્ડ શૉર્ટકટ દબાવો અને તમારો શોધ શબ્દ દાખલ કરો.</translation> @@ -5627,6 +5634,7 @@ <translation id="648927581764831596">કંઈપણ ઉપલબ્ધ નથી</translation> <translation id="6490471652906364588">USB-C ઉપકરણ (જમણું પોર્ટ)</translation> <translation id="6491376743066338510">પ્રમાણીકરણ નિષ્ફળ</translation> +<translation id="6492396476180293140">હાર્ડવેર સ્વિચ દબાવીને આંતરિક કૅમેરા બંધ કર્યો</translation> <translation id="6494327278868541139">વધારાની સુરક્ષાની વિગતો બતાવો</translation> <translation id="6494445798847293442">કોઈ પ્રમાણન અધિકારી નથી</translation> <translation id="6494974875566443634">કસ્ટમાઇઝેશન</translation> @@ -5930,6 +5938,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> રિમોટ્લી ઉમેર્યું હતું</translation> <translation id="6790820461102226165">વ્યક્તિ ઉમેરો...</translation> <translation id="6793604637258913070">દેખાવા પર અથવા ખસેડવા પર ટેક્સ્ટ કૅરેટ હાઇલાઇટ કરો</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">ઑટો-સ્કૅનની સુવિધા સ્ક્રીન પર ઑટોમૅટિક રીતે એક આઇટમથી બીજી પર જવાની સરળતા પ્રદાન કરે છે. જ્યારે કોઈ આઇટમ હાઇલાઇટ કરવામાં આવી હોય, ત્યારે તેને સક્રિય કરવા માટે “પસંદ કરો” દબાવો.</translation> <translation id="6795884519221689054">પાંડા</translation> <translation id="6797493596609571643">અરેરે, કંઈક ખોટું થયું.</translation> @@ -7797,6 +7806,7 @@ <translation id="8642947597466641025">ટેક્સ્ટ મોટો કરો</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> જોખમકારક હોઈ શકે છે. તપાસ કરવા માટે Googleની વિગતવાર સુરક્ષાને મોકલીએ?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{કોઈ કુકી નથી}=1{1 કુકી બ્લૉક કરવામાં આવી છે}one{# કુકી બ્લૉક કરવામાં આવી છે}other{# કુકી બ્લૉક કરવામાં આવી છે}}</translation> +<translation id="864423554496711319">તમારા એકાઉન્ટમાં સાચવવામાં આવેલા ડિવાઇસ</translation> <translation id="8644655801811752511">સુરક્ષા કોડ રીસેટ કરી શકાતો નથી. કોડ શામેલ કર્યા પછી તરત જ તેને રીસેટ કરવાનો પ્રયાસ કરો.</translation> <translation id="8645354835496065562">સેન્સરના ઍક્સેસની મંજૂરી ચાલુ રાખો</translation> <translation id="8645920082661222035">જોખમકારક ઇવેન્ટ થાય તે પહેલાં તેનું અનુમાન લગાવીને તેના વિશે તમને ચેતવણી આપે છે</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index bb113f12..29e9a08b 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">सिर्फ़ डिवाइस अनलॉक करें</translation> <translation id="2434449159125086437">प्रिंटर सेट अप नहीं किया जा सका. कृपया कॉन्फ़िगरेशन की जाँच करें और फिर से कोशिश करें.</translation> <translation id="2434758125294431199">चुनें कि आपके डिवाइस के साथ कौन फ़ाइलें शेयर कर सकता है</translation> +<translation id="2434915728183570229">अब आपके पास अपने फ़ोन में मौजूद ऐप्लिकेशन देखने का विकल्प है</translation> <translation id="2435137177546457207">Google Chrome और ChromeOS Flex की अन्य शर्तें</translation> <translation id="2435248616906486374">नेटवर्क डिस्कनेक्ट है</translation> <translation id="2435457462613246316">पासवर्ड दिखाएं</translation> @@ -1923,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1 ऐसा ऐप्लिकेशन मिटाएं जो अब उपलब्ध नहीं है}one{# ऐसा ऐप्लिकेशन मिटाएं जो अब उपलब्ध नहीं है}other{# ऐसे ऐप्लिकेशन मिटाएं जो अब उपलब्ध नहीं हैं}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> के लिए डिवाइस का नाम बदलें</translation> <translation id="2777251078198759550">यह कंटेनर मिटाएं</translation> +<translation id="2778471504622896352">ChromeOS लॉन्चर में रिमोट ऐप्लिकेशन जोड़ें</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux ऐप्लिकेशन इंस्टॉल करते समय गड़बड़ी</translation> <translation id="2783298271312924866">डाउनलोड किए गए</translation> @@ -3557,6 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, और <ph name="NUMBER_OF_OTHER_SWITCHES" /> और स्विच ऐक्सेस बटन</translation> <translation id="439266289085815679">ब्लूटूथ कॉन्फ़िगरेशन को <ph name="USER_EMAIL" /> से नियंत्रित किया जाता है.</translation> <translation id="4392896746540753732">कॉन्फ़िगरेशन फ़ाइल में बदलाव करें</translation> +<translation id="4393713825278446281">फ़ास्ट पेयर डिवाइसों को <ph name="PRIMARY_EMAIL" /> में सेव किया गया</translation> <translation id="4394049700291259645">बंद करें</translation> <translation id="4396956294839002702">{COUNT,plural, =0{सभी यूआरएल &खोलें}=1{बुकमार्क &खोलें}one{दिया गया ({COUNT}) यूआरएल &खोलें}other{सभी ({COUNT}) यूआरएल &खोलें}}</translation> <translation id="4397372003838952832">आपको यह पासवर्ड याद नहीं रखना पड़ेगा. <ph name="EMAIL" /> के लिए, इस पासवर्ड को <ph name="GOOGLE_PASSWORD_MANAGER" /> में सेव किया जाएगा.</translation> @@ -3787,6 +3790,7 @@ <translation id="4615586811063744755">कोई कुकी नहीं चुनी गई है</translation> <translation id="461661862154729886">ऊर्जा का स्रोत</translation> <translation id="4617001782309103936">बहुत छोटा है</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" का इस्तेमाल करने के लिए, इस पेज को फिर से लोड करें</translation> <translation id="4617270414136722281">एक्सटेंशन के विकल्प</translation> <translation id="4617880081511131945">फ़ोन से कनेक्ट नहीं किया जा सका</translation> <translation id="4619564267100705184">अपनी पहचान की पुष्टि करें</translation> @@ -4002,6 +4006,7 @@ <translation id="4833683849865011483">प्रिंट सर्वर पर एक प्रिंटर मिला</translation> <translation id="4836504898754963407">फ़िंगरप्रिंट प्रबंधित करें</translation> <translation id="4837128290434901661">इसे बदलकर फिर से Google Search करें?</translation> +<translation id="4837165100461973682">अपने बदलावों को लागू करने के लिए, पेज को फिर से लोड करें</translation> <translation id="4837926214103741331">आपको इस डिवाइस का इस्तेमाल करने का अधिकार नहीं हैं. कृपया साइन इन की अनुमति के लिए डिवाइस के मालिक से संपर्क करें.</translation> <translation id="4837952862063191349">अपने स्थानीय डेटा को अनलॉक और पुनर्स्थापित करने के लिए, कृपया अपना पुराना <ph name="DEVICE_TYPE" /> पासवर्ड डालें.</translation> <translation id="4838170306476614339">अपने फ़ोन में मौजूद फ़ोटो, मीडिया, और सूचनाएं देखें</translation> @@ -4237,6 +4242,7 @@ <translation id="5072900412896857127">Google Play सेवा की शर्तें लोड नहीं की जा सकीं. कृपया अपना इंटरनेट कनेक्शन जांचें और फिर से कोशिश करें.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" />, और # दूसरी फ़ाइल}other{<ph name="FILE1" />, <ph name="FILE2" />, और # दूसरी फ़ाइल}}</translation> <translation id="5074318175948309511">नई सेटिंग के प्रभावी होने से पहले इस पृष्ठ को रीलोड करने की आवश्यकता हो सकती है.</translation> +<translation id="5074761966806028321">सेट अप पूरा करने के लिए, अब भी अनुमति ज़रूरी है</translation> <translation id="5075910247684008552">सुरक्षित साइटों पर असुरक्षित सामग्री, डिफ़ॉल्ट रूप से ब्लॉक है</translation> <translation id="5078638979202084724">सभी टैब बुकमार्क करें</translation> <translation id="5078796286268621944">गलत पिन</translation> @@ -4311,6 +4317,7 @@ <translation id="5150254825601720210">Netscape प्रमाणपत्र SSL सर्वर नाम</translation> <translation id="5151354047782775295">डिस्क स्पेस खाली करें अन्यथा चयनित डेटा अपने आप हट जाएगा</translation> <translation id="5153234146675181447">फ़ोन को भूल जाएं</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> के लिए अतिरिक्त सेटिंग</translation> <translation id="5154702632169343078">विषय</translation> <translation id="5155327081870541046">पता बार में, उस साइट के लिए शॉर्टकट डालें जिसे आप खोजना चाहते हैं, जैसे कि "@bookmarks". इसके बाद, अपने हिसाब से कीबोर्ड शॉर्टकट दबाएं और खोज के लिए शब्द डालें.</translation> @@ -4599,6 +4606,7 @@ <translation id="5449551289610225147">गलत पासवर्ड</translation> <translation id="5449588825071916739">सभी टैब बुकमार्क करें</translation> <translation id="5449716055534515760">विं&डो बंद करें</translation> +<translation id="5452446625764825792">अब आपके पास अपने फ़ोन में मौजूद हाल की फ़ोटो, मीडिया, और ऐप्लिकेशन देखने का विकल्प है</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (ऑफ़लाइन उपलब्ध है)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> के साथ</translation> <translation id="545484289444831485">ज़्यादा खोज नतीजे देखें</translation> @@ -4659,6 +4667,7 @@ <translation id="5499211612787418966">यह डायलॉग इस समय फ़ोकस में नहीं है. इस पर फ़ोकस करने के लिए, Alt-Shift A दबाएं.</translation> <translation id="5499313591153584299">यह फ़ाइल आपके कंप्यूटर के लिए हानिकारक हो सकती है.</translation> <translation id="5499453227627332024">आपके Linux कंटेनर का नया वर्शन उपलब्ध है. आप सेटिंग ऐप्लिकेशन में जाकर, इसे बाद में भी अपग्रेड कर सकते हैं.</translation> +<translation id="5499476581866658341">अब आपके पास अपने फ़ोन में मौजूद हाल की फ़ोटो और मीडिया देखने का विकल्प है</translation> <translation id="549957179819296104">नया आइकॉन</translation> <translation id="5500168250243071806">जब आप साइन इन होंगे, तब हो सकता है कि <ph name="BEGIN_LINK_SEARCH" />खोज इतिहास<ph name="END_LINK_SEARCH" /> और <ph name="BEGIN_LINK_GOOGLE" />अन्य तरह की गतिविधियां<ph name="END_LINK_GOOGLE" /> आपके Google खाते में सेव हो जाएं. आप किसी भी समय उन्हें मिटा सकते हैं.</translation> <translation id="5500709606820808700">आज सुरक्षा जांच हुई है</translation> @@ -5948,6 +5957,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> को दूरस्थ रूप से जोड़ा गया है</translation> <translation id="6790820461102226165">व्यक्ति जोड़ें...</translation> <translation id="6793604637258913070">लेख कैरेट के दिखाई देने या उसके इधर-उधर जाने पर उसे हाइलाइट करें</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">अपने-आप स्कैन होने की सुविधा, आपको स्क्रीन पर दिए अलग-अलग आइटम पर अपने-आप जाने देती है. जब किसी आइटम को हाइलाइट किया गया हो, तो इसे चालू करने के लिए, “चुनें” को दबाएं.</translation> <translation id="6795884519221689054">पांडा</translation> <translation id="6797493596609571643">ओह! कुछ गड़बड़ी हो गई है.</translation> @@ -6324,6 +6334,7 @@ <translation id="7152478047064750137">इस एक्सटेंशन को कोई खास अनुमति नहीं चाहिए</translation> <translation id="7154130902455071009">अपना आरंभ पेज इसमें बदलें: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">कैमरा या फ़ाइल से मौजूदा फ़ोटो</translation> +<translation id="7160182524506337403">अब आपके पास अपने फ़ोन की सूचनाएं देखने का विकल्प है</translation> <translation id="7163202347044721291">ऐक्टिवेशन कोड की पुष्टि की जा रही है...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" चेक किए गए स्थानों में चित्रों, वीडियो, और ध्वनि फ़ाइलों को पढ़ सकता है.</translation> <translation id="7167486101654761064">इस प्रकार की फ़ाइलें &हमेशा खोलें</translation> @@ -7338,6 +7349,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> की स्थिति</translation> <translation id="8139447493436036221">Google Drive फ़ाइलें</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">आपके पास फ़ोन हब की सेटिंग में जाकर, ज़्यादा सुविधाएं सेट अप करने का विकल्प है</translation> <translation id="8141584439523427891">अब वैकल्पिक ब्राउज़र में खोला जा रहा है</translation> <translation id="8141725884565838206">अपने पासवर्ड प्रबंधित करें</translation> <translation id="814204052173971714">{COUNT,plural, =1{एक वीडियो}one{# वीडियो}other{# वीडियो}}</translation> @@ -7545,6 +7557,7 @@ <translation id="833986336429795709">यह लिंक खोलने के लिए कोई ऐप्लिकेशन चुनें</translation> <translation id="8342221978608739536">कोशिश नहीं की गई</translation> <translation id="8342861492835240085">कोई संग्रह चुनें</translation> +<translation id="8345848587667658367">अब आपके पास अपने फ़ोन में मौजूद हाल की फ़ोटो, मीडिया, सूचनाएं, और ऐप्लिकेशन देखने का विकल्प है</translation> <translation id="8347227221149377169">प्रिंट जॉब</translation> <translation id="834785183489258869">गुप्त मोड इस्तेमाल करने पर, अलग-अलग साइटों पर की गई आपकी ब्राउज़िंग गतिविधि देखने के लिए, साइटें, कुकी इस्तेमाल नहीं कर सकतीं. जैसे, लोगों के हिसाब से विज्ञापन दिखाने के लिए. हो सकता है कि कुछ साइटों पर खास सुविधाएं काम न करें.</translation> <translation id="8350789879725387295">डॉक में स्टाइलस टूल</translation> @@ -7820,6 +7833,7 @@ <translation id="8642947597466641025">लेख को बड़ा करें</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> खतरनाक हो सकती है. क्या आप इसे स्कैनिंग के लिए 'Google बेहतर सुरक्षा' को भेजना चाहते हैं?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{कोई भी कुकी नहीं है}=1{1 कुकी को ब्लॉक किया गया है}one{# कुकी को ब्लॉक किया गया है}other{# कुकी ब्लॉक की गई हैं}}</translation> +<translation id="864423554496711319">आपके खाते में सेव किए गए डिवाइस</translation> <translation id="8644655801811752511">यह सुरक्षा कुंजी रीसेट नहीं हो पा रही है. कुंजी डालने के तुरंत बाद इसे रीसेट करके देखें.</translation> <translation id="8645354835496065562">सेंसर का ऐक्सेस जारी रहने दें</translation> <translation id="8645920082661222035">यह सुविधा, नुकसान पहुंचाने वाली घटनाओं का पहले से अंदाज़ा लगाती है और उनके बारे में आपको चेतावनी देती है</translation> @@ -8150,6 +8164,7 @@ <translation id="8957757410289731985">प्रोफ़ाइल को पसंद के मुताबिक बनाएं</translation> <translation id="895944840846194039">JavaScript मेमोरी</translation> <translation id="8960208913905765425">'हाज़िर जवाब' का यूनिट कन्वर्ज़न</translation> +<translation id="8960638196855923532">अब आपके पास अपने फ़ोन की सूचनाएं और ऐप्लिकेशन देखने का विकल्प है</translation> <translation id="8962051932294470566">आप एक बार में सिर्फ़ एक फ़ाइल शेयर कर सकते हैं. मौजूदा ट्रांसफ़र पूरा हो जाने के बाद कोशिश करें.</translation> <translation id="8962083179518285172">विवरण छुपाएं</translation> <translation id="8962918469425892674">यह साइट गति या रोशनी के सेंसर का इस्तेमाल कर रही है.</translation> @@ -8301,6 +8316,7 @@ <translation id="9103868373786083162">वापस जाने के लिए इसे दबाएं, इतिहास देखने के लिए संदर्भ मेन्यू पर जाएं</translation> <translation id="9108035152087032312">&विंडो को कोई नाम दें...</translation> <translation id="9108072915170399168">मौजूदा डेटा खर्च सेटिंग में इंटरनेट का इस्तेमाल नहीं होगा</translation> +<translation id="9108294543511800041">अब आपके पास अपने फ़ोन में मौजूद हाल की फ़ोटो, मीडिया, और सूचनाएं देखने का विकल्प है</translation> <translation id="9108674852930645435">देखें कि आपके <ph name="DEVICE_TYPE" /> पर नया क्या है</translation> <translation id="9108808586816295166">हो सकता है कि सुरक्षित डीएनएस हर समय उपलब्ध न हो</translation> <translation id="9109122242323516435">जगह खाली करने के लिए, डिवाइस की मेमोरी से फ़ाइलों को मिटाएं.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 9b7f8ae..614a808 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -1557,6 +1557,7 @@ <translation id="2433836460518180625">Feloldás csak az adott eszközzel</translation> <translation id="2434449159125086437">Nem sikerült a nyomtató beállítása. Ellenőrizze a beállításokat, majd próbálja újra.</translation> <translation id="2434758125294431199">Válassza ki, ki oszthat meg Önnel tartalmakat</translation> +<translation id="2434915728183570229">Mostantól megtekintheti a telefonra telepített alkalmazásokat</translation> <translation id="2435137177546457207">A Google Chrome és a ChromeOS Flex Kiegészítő Általános Szerződési Feltételei</translation> <translation id="2435248616906486374">A hálózat leválasztva</translation> <translation id="2435457462613246316">Jelszó megjelenítése</translation> @@ -4239,6 +4240,7 @@ <translation id="5072900412896857127">Nem sikerült betölteni a Google Play Általános Szerződési Feltételeit. Ellenőrizze a hálózati kapcsolatot, és próbálkozzon újra.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> és # további}}</translation> <translation id="5074318175948309511">Előfordulhat, hogy az új beállítások életbe lépéséhez az oldal újratöltése szükséges.</translation> +<translation id="5074761966806028321">A beállítás befejezéséhez engedélyre van szükség</translation> <translation id="5075910247684008552">A nem biztonságos tartalmak alapértelmezés szerint le vannak tiltva a biztonságos webhelyeken</translation> <translation id="5078638979202084724">Összes lap hozzáadása a könyvjelzőkhöz</translation> <translation id="5078796286268621944">Helytelen PIN-kód</translation> @@ -4603,6 +4605,7 @@ <translation id="5449551289610225147">Érvénytelen jelszó</translation> <translation id="5449588825071916739">Összes lap hozzáadása a könyvjelzőkhöz</translation> <translation id="5449716055534515760">A&blak bezárása</translation> +<translation id="5452446625764825792">Mostantól megtekintheti a telefonon legutóbb megnyitott fotókat, médiatartalmakat és alkalmazásokat</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (offline állapotban is működik)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> szolgáltatóval</translation> <translation id="545484289444831485">További keresési találatok megelenítése</translation> @@ -4663,6 +4666,7 @@ <translation id="5499211612787418966">Ez a párbeszédpanel jelenleg nincs fókuszban. Nyomja le az Alt + Shift + A billentyűparancsot, ha erre a párbeszédpanelre szeretne fókuszálni.</translation> <translation id="5499313591153584299">Ez a fájl káros lehet a számítógépre.</translation> <translation id="5499453227627332024">Frissítés áll rendelkezésre a Linux-tárolóban. A frissítést később is végrehajthatja a Beállítások alkalmazásban.</translation> +<translation id="5499476581866658341">Mostantól megtekintheti a telefonon legutóbb megnyitott fotókat és médiatartalmakat</translation> <translation id="549957179819296104">Új ikon</translation> <translation id="5500168250243071806">Amikor be van jelentkezve, a <ph name="BEGIN_LINK_SEARCH" />keresési előzményeket<ph name="END_LINK_SEARCH" /> és <ph name="BEGIN_LINK_GOOGLE" />más tevékenységformákat<ph name="END_LINK_GOOGLE" /> a rendszer elmentheti a Google-fiókjába. Bármikor törölheti őket.</translation> <translation id="5500709606820808700">A biztonsági ellenőrzés ma lefutott</translation> @@ -6328,6 +6332,7 @@ <translation id="7152478047064750137">A bővítmény nem igényel különleges engedélyeket</translation> <translation id="7154130902455071009">Kezdőoldal módosítása a következőre: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Meglévő fénykép a fényképezőgépről vagy fájlból</translation> +<translation id="7160182524506337403">Mostantól megtekintheti a telefon értesítéseit</translation> <translation id="7163202347044721291">Aktiváló kód ellenőrzése…</translation> <translation id="716640248772308851">A(z) „<ph name="EXTENSION" />” olvashatja a megjelölt helyeken lévő képeket, videókat és hangfájlokat.</translation> <translation id="7167486101654761064">&Az ilyen típusú fájlokat mindig nyissa meg</translation> @@ -7342,6 +7347,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> állapota</translation> <translation id="8139447493436036221">Google Drive-fájlok</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">További funkciókat is beállíthat a Telefonközpont beállításaiban</translation> <translation id="8141584439523427891">Megnyitás másik böngészőben most</translation> <translation id="8141725884565838206">Jelszavak kezelése</translation> <translation id="814204052173971714">{COUNT,plural, =1{egy videót}other{# videót}}</translation> @@ -7549,6 +7555,7 @@ <translation id="833986336429795709">Válassza ki, hogy melyik alkalmazással szeretné megnyitni ezt a linket</translation> <translation id="8342221978608739536">Nem próbáltam</translation> <translation id="8342861492835240085">Válasszon gyűjteményt</translation> +<translation id="8345848587667658367">Mostantól megtekintheti a telefonon legutóbb megnyitott fotókat, médiatartalmakat, értesítéseket és alkalmazásokat</translation> <translation id="8347227221149377169">Nyomtatási feladatok</translation> <translation id="834785183489258869">Inkognitó módban a webhelyek nem használhatják fel az Ön cookie-jait arra, hogy lássák a különböző webhelyeken végzett böngészési tevékenységeit például annak érdekében, hogy a hirdetéseket személyre szabják. Előfordulhat, hogy bizonyos webhelyek funkciói nem működnek majd megfelelően.</translation> <translation id="8350789879725387295">Érintőceruza eszközei a dokkon</translation> @@ -8154,6 +8161,7 @@ <translation id="8957757410289731985">Profil személyre szabása</translation> <translation id="895944840846194039">JavaScript-memória</translation> <translation id="8960208913905765425">Gyors válaszok – mértékegységváltás</translation> +<translation id="8960638196855923532">Mostantól megtekintheti a telefon értesítéseit és alkalmazásait</translation> <translation id="8962051932294470566">Egyszerre csak egy fájlt oszthat meg. Próbálja újra, miután végzett a jelenlegi fájlátvitellel.</translation> <translation id="8962083179518285172">Részletek elrejtése</translation> <translation id="8962918469425892674">Ez a webhely mozgás- vagy fényérzékelőket használ.</translation> @@ -8305,6 +8313,7 @@ <translation id="9103868373786083162">Nyomja meg a visszalépéshez, illetve választhatja a helyi menüt az előzmények megtekintéséshez</translation> <translation id="9108035152087032312">Ablak elnevezése…</translation> <translation id="9108072915170399168">A jelenlegi adathasználati beállítás: Internet nélkül</translation> +<translation id="9108294543511800041">Mostantól megtekintheti a telefonon legutóbb megnyitott fotókat, médiatartalmakat és értesítéseket</translation> <translation id="9108674852930645435">Fedezze fel a(z) <ph name="DEVICE_TYPE" /> újdonságait</translation> <translation id="9108808586816295166">Előfordulhat, hogy a biztonságos DNS nem mindig áll rendelkezésre</translation> <translation id="9109122242323516435">Tárhely felszabadításához töröljön fájlokat az eszköz tárhelyéből.</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index d545563..9907432 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1909,6 +1909,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Հեռացնել 1 չաջակցվող հավելված}one{Հեռացնել # չաջակցվող հավելված}other{Հեռացնել # չաջակցվող հավելված}}</translation> <translation id="2776560192867872731">Փոխել <ph name="DEVICE_NAME" /> սարքի անունը</translation> <translation id="2777251078198759550">Ջնջել այս կոնտեյները</translation> +<translation id="2778471504622896352">Ավելացնել հեռակա հավելվածներ ChromeOS-ի գործարկիչում</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Չհաջողվեց տեղադրել Լինուքսի հավելվածը</translation> <translation id="2783298271312924866">Ներբեռնված է</translation> @@ -3543,6 +3544,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ու ևս <ph name="NUMBER_OF_OTHER_SWITCHES" /> փոխանջատիչ</translation> <translation id="439266289085815679">Bluetooth-ի կազմաձևումը վերահսկում է <ph name="USER_EMAIL" /> հաշվի օգտատերը:</translation> <translation id="4392896746540753732">Կարգավորման ֆայլի փոփոխում</translation> +<translation id="4393713825278446281">Արագ զուգակցման սարքեր՝ պահված <ph name="PRIMARY_EMAIL" /> հաշվում</translation> <translation id="4394049700291259645">Անջատել</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Բացել բոլորը}=1{&Բացել էջանիշը}one{&Բացել բոլորը ({COUNT})}other{&Բացել բոլորը ({COUNT})}}</translation> <translation id="4397372003838952832">Այս գաղտնաբառը հիշելու կարիք չկա։ Այն <ph name="EMAIL" /> հաշվի համար կպահվի <ph name="GOOGLE_PASSWORD_MANAGER" />ում։</translation> @@ -3772,6 +3774,7 @@ <translation id="4615586811063744755">քուքիներ ընտրված չեն</translation> <translation id="461661862154729886">Էներգիայի աղբյուր</translation> <translation id="4617001782309103936">Չափազանց կարճ է</translation> +<translation id="4617019240346358451">Վերաբեռնեք էջը՝ «<ph name="EXTENSION_NAME" />» ընդլայնումն օգտագործելու համար</translation> <translation id="4617270414136722281">Ընդլայնումների ընտրանքներ</translation> <translation id="4617880081511131945">Հնարավոր չէ կապ հաստատել</translation> <translation id="4619564267100705184">Հաստատեք ձեր ինքնությունը</translation> @@ -3920,6 +3923,7 @@ <translation id="4768332406694066911">Դուք այս կազմակերպություններից այնպիսի հավաստագրեր ունեք, որոնք ձեզ կարող են նույնականացնել</translation> <translation id="4770119228883592393">Պահանջվում է թույլտվություն։ Արձագանքելու համար սեղմեք ⌘ + Option + վար սլաք։</translation> <translation id="4773112038801431077">Լինուքսի նորացում</translation> +<translation id="4774337692467964393">Եթե Smart Lock-ը միացված է, PIN կոդ կամ գաղտնաբառ մուտքագրելու կարիք չի լինի</translation> <translation id="4775142426314270551">Օգնեք ավելի լավը դարձնել Chrome-ի և ChromeOS-ի գործառույթներն ու աշխատանքը՝ Google-ին ավտոմատ ուղարկելով խափանման մասին հաշվետվությունները, ինչպես նաև օգտագործման և դիագնոստիկ տվյալները։ Որոշ ագրեգացված տվյալներ օգտակար կլինեն նաև Android-ի հավելվածների և Google-ի գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը ձեր երեխայի Google հաշվի համար միացված է, երեխայի Android-ի տվյալները կպահվեն նրա Google հաշվում։</translation> <translation id="477647109558161443">Ստեղծել աշխատասեղանի դյուրանցում</translation> <translation id="4776594120007763294">Սեղմեք կոճակը՝ ավելացնելու էջ՝ այն ավելի ուշ կարդալու համար</translation> @@ -3969,6 +3973,7 @@ <translation id="4820236583224459650">Նշել որպես ակտիվ տոմս</translation> <translation id="4821935166599369261">&Տվյալների հավաքումը միացված է</translation> <translation id="4823484602432206655">Կարդալ և փոփոխել օգտատիրոջ և սարքի կարգավորումները</translation> +<translation id="4823894915586516138">Այս PIN կոդը կամ գաղտնաբառը կպաշտպանի ձեր տվյալները <ph name="DEVICE_TYPE" /> սարքում, այդ թվում՝ տեղեկությունները, որոնք դուք բացում եք ձեր հեռախոսից</translation> <translation id="4824037980212326045">Լինուքսի պահուստավորում և վերականգնում</translation> <translation id="4824958205181053313">Չեղարկե՞լ համաժամացումը</translation> <translation id="4827675678516992122">Չհաջողվեց միանալ</translation> @@ -3984,6 +3989,7 @@ <translation id="4833683849865011483">Տպման սերվերում գտնվել է 1 տպիչ։</translation> <translation id="4836504898754963407">Մատնահետքերի կառավարում</translation> <translation id="4837128290434901661">Վերադառնա՞լ Google Որոնմանը</translation> +<translation id="4837165100461973682">Վերաբեռնեք էջը՝ փոփոխությունները կիրառելու համար</translation> <translation id="4837926214103741331">Դուք այս սարքից օգտվելու իրավունք չունեք: Մուտք գործելու թույլտվության համար դիմեք սարքի սեփականատիրոջը:</translation> <translation id="4837952862063191349">Տեղական տվյալներն ապակողպելու և վերականգնելու համար մուտքագրեք նախկին <ph name="DEVICE_TYPE" /> սարքի գաղտնաբառը:</translation> <translation id="4838170306476614339">Դիտել հեռախոսի լուսանկարները, մեդիաֆայլերը և ծանուցումները</translation> @@ -4294,6 +4300,7 @@ <translation id="5150254825601720210">Netscape-ի SSL վկայագրերի սերվերի անունը</translation> <translation id="5151354047782775295">Ազատեք սկավառակի տարածքը, այլապես որոշ տվյալներ կարող են ավտոմատ ջնջվել</translation> <translation id="5153234146675181447">Հեռախոսի հեռացում</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Լրացուցիչ կարգավորումներ <ph name="PRINTING_DESTINATION" />-ի համար</translation> <translation id="5154702632169343078">Սուբյեկտ</translation> <translation id="5155327081870541046">Հասցեագոտում մուտքագրեք այն կայքի դյուրանցումը, որում ուզում եք որոնում կատարել, օրինակ՝ @bookmarks։ Այնուհետև սեղմեք նախընտրած ստեղնային դյուրանցումը և մուտքագրեք հիմնաբառը։</translation> @@ -5626,6 +5633,7 @@ <translation id="648927581764831596">Ոչ մեկը մատչելի չէ</translation> <translation id="6490471652906364588">USB-C սարք (աջ միացք)</translation> <translation id="6491376743066338510">Լիազորումը ձախողվեց</translation> +<translation id="6492396476180293140">Ներքին տեսախցիկն ապակտիվացվել է սարքակազմի փոխանջատիչի միջոցով</translation> <translation id="6494327278868541139">Ցույց տալ լրացուցիչ պաշտպանության մանրամասն նկարագրությունը</translation> <translation id="6494445798847293442">Հավաստագրման կենտրոն չէ</translation> <translation id="6494974875566443634">Անհատականացում</translation> @@ -5929,6 +5937,7 @@ <translation id="6790497603648687708">«<ph name="EXTENSION_NAME" />» ընդլայնումն ավելացվել է հեռակա կարգով</translation> <translation id="6790820461102226165">Ավելացնել անձ…</translation> <translation id="6793604637258913070">Ընդգծել տեքստի նշորդը, երբ այն հայտնվում կամ շարժվում է</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Ավտոմատ սկանավորումը թույլ է տալիս էկրանին ավտոմատ կերպով անցնել մեկ տարրից մյուսին։ Երբ որևէ տարր ընդգծված է, սեղմեք «Ընտրել»՝ այն ակտիվացնելու համար։</translation> <translation id="6795884519221689054">Պանդա</translation> <translation id="6797493596609571643">Ինչ-որ սխալ տեղի ունեցավ:</translation> @@ -7799,6 +7808,7 @@ <translation id="8642947597466641025">Մեծացնել տեքստը</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> ֆայլը կարող է վտանգավոր լինել: Ստուգե՞լ այն Google-ի լրացուցիչ պաշտպանության միջոցով։</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Քուքիներ չկան}=1{Արգելափակված է 1 քուքի}one{Արգելափակված է # քուքի}other{Արգելափակված է # քուքի}}</translation> +<translation id="864423554496711319">Ձեր հաշվում պահված սարքեր</translation> <translation id="8644655801811752511">Չհաջողվեց զրոյացնել անվտանգության բանալու կարգավորումները։ Փորձեք անել դա անմիջապես բանալին տեղադրելուց հետո։</translation> <translation id="8645354835496065562">Միշտ թույլատրել տվիչների օգտագործումը</translation> <translation id="8645920082661222035">Հայտնաբերում է վտանգավոր իրադարձություններն ու զգուշացնում դրանց մասին</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index c839e17..30cb73bf 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -1923,6 +1923,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Hapus 1 aplikasi yang tidak didukung}other{Hapus # aplikasi yang tidak didukung}}</translation> <translation id="2776560192867872731">Ubah nama perangkat untuk <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Hapus penampung ini</translation> +<translation id="2778471504622896352">Menambahkan aplikasi jarak jauh ke peluncur ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Error saat menginstal aplikasi Linux</translation> <translation id="2783298271312924866">Telah Didownload</translation> @@ -3558,6 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, dan <ph name="NUMBER_OF_OTHER_SWITCHES" /> tombol lainnya</translation> <translation id="439266289085815679">Konfigurasi Bluetooth dikontrol oleh <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Edit file konfigurasi</translation> +<translation id="4393713825278446281">Perangkat Sambungan Cepat disimpan ke <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Nonaktifkan</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Buka semua}=1{&Buka bookmark}other{&Buka semua ({COUNT})}}</translation> <translation id="4397372003838952832">Anda tidak perlu mengingat sandi ini. Sandi akan disimpan ke <ph name="GOOGLE_PASSWORD_MANAGER" /> untuk <ph name="EMAIL" />.</translation> @@ -3788,6 +3790,7 @@ <translation id="4615586811063744755">tidak ada cookie yang dipilih</translation> <translation id="461661862154729886">Sumber energi</translation> <translation id="4617001782309103936">Terlalu pendek</translation> +<translation id="4617019240346358451">Muat ulang halaman untuk menggunakan "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Opsi ekstensi</translation> <translation id="4617880081511131945">Tidak dapat menghubungkan</translation> <translation id="4619564267100705184">Verifikasi diri Anda</translation> @@ -4003,6 +4006,7 @@ <translation id="4833683849865011483">Menemukan 1 printer dari server cetak</translation> <translation id="4836504898754963407">Mengelola sidik jari</translation> <translation id="4837128290434901661">Ubah kembali ke Google Penelusuran?</translation> +<translation id="4837165100461973682">Muat ulang halaman untuk menerapkan perubahan</translation> <translation id="4837926214103741331">Anda tidak diizinkan untuk menggunakan perangkat ini. Untuk izin masuk, hubungi pemilik perangkat.</translation> <translation id="4837952862063191349">Untuk membuka kunci dan memulihkan data lokal, masukkan sandi <ph name="DEVICE_TYPE" /> lama.</translation> <translation id="4838170306476614339">Lihat foto, media, dan notifikasi ponsel</translation> @@ -4312,6 +4316,7 @@ <translation id="5150254825601720210">Netscape Certificate SSL Server Name</translation> <translation id="5151354047782775295">Kosongkan ruang penyimpanan atau pilih data yang dapat dihapus otomatis.</translation> <translation id="5153234146675181447">Lupakan ponsel</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Setelan lanjutan untuk <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Subjek</translation> <translation id="5155327081870541046">Di kolom URL, masukkan pintasan untuk situs yang ingin Anda telusuri, seperti "@bookmark". Lalu, tekan pintasan keyboard yang diinginkan, dan masukkan istilah penelusuran Anda.</translation> @@ -5947,6 +5952,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> telah ditambahkan dari jauh</translation> <translation id="6790820461102226165">Tambahkan Pengguna...</translation> <translation id="6793604637258913070">Sorot tempat penyisipan teks saat muncul atau berpindah</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Pemindaian otomatis memungkinkan Anda berpindah-pindah item di layar secara otomatis. Saat sebuah item ditandai, tekan “Pilih” untuk mengaktifkannya.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Ups, ada yang tidak beres.</translation> @@ -7820,6 +7826,7 @@ <translation id="8642947597466641025">Perbesar Teks</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> mungkin berbahaya. Kirim file ke Perlindungan Lanjutan Google untuk dipindai?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Tidak ada cookie}=1{1 cookie diblokir}other{# cookie diblokir}}</translation> +<translation id="864423554496711319">Perangkat yang disimpan ke akun Anda</translation> <translation id="8644655801811752511">Tidak dapat menyetel ulang kunci keamanan. Coba reset kunci setelah memasukkannya.</translation> <translation id="8645354835496065562">Terus izinkan akses sensor</translation> <translation id="8645920082661222035">Memperkirakan dan memberikan peringatan terkait peristiwa berbahaya sebelum terjadi</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 0e6c71b..5fd6d65f 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">Taka aðeins tæki úr lás</translation> <translation id="2434449159125086437">Ekki tókst að setja upp prentara. Athugaðu stillinguna og reyndu aftur.</translation> <translation id="2434758125294431199">Veldu hver getur deilt efni með þér</translation> +<translation id="2434915728183570229">Nú geturðu séð forrit símans</translation> <translation id="2435137177546457207">Viðbótarskilmálar Google Chrome og ChromeOs Flex</translation> <translation id="2435248616906486374">Nettenging slitnaði</translation> <translation id="2435457462613246316">Sýna aðgangsorð</translation> @@ -1923,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Fjarlægja 1 óstutt forrit}one{Fjarlægja # óstutt forrit}other{Fjarlægja # óstudd forrit}}</translation> <translation id="2776560192867872731">Breyta heiti tækisins <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Eyða þessum geymi</translation> +<translation id="2778471504622896352">Bættu fjartengdum forritum við ChromeOS ræsiforritið</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Villa við uppsetningu Linux-forrits</translation> <translation id="2783298271312924866">Sótt</translation> @@ -3558,6 +3560,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> og <ph name="NUMBER_OF_OTHER_SWITCHES" /> rofar í viðbót</translation> <translation id="439266289085815679">Bluetooth-stillingu er stjórnað af <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Breyta stillingaskrá</translation> +<translation id="4393713825278446281">Hraðparaðu tæki sem vistuð eru á <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Slökkva</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Opna allt}=1{&Opna bókamerki}one{&Opna allt ({COUNT})}other{&Opna allt ({COUNT})}}</translation> <translation id="4397372003838952832">Þú þarft ekki að muna þetta aðgangsorð. Það verður vistað í <ph name="GOOGLE_PASSWORD_MANAGER" /> fyrir <ph name="EMAIL" /></translation> @@ -3788,6 +3791,7 @@ <translation id="4615586811063744755">ekkert fótspor valið</translation> <translation id="461661862154729886">Orkugjafi</translation> <translation id="4617001782309103936">Of stutt</translation> +<translation id="4617019240346358451">Endurhladdu síðunni til að nota „<ph name="EXTENSION_NAME" />“</translation> <translation id="4617270414136722281">Valkostir viðbótar</translation> <translation id="4617880081511131945">Ekki er hægt að koma á tengingu</translation> <translation id="4619564267100705184">Staðfestu hver þú ert</translation> @@ -4003,6 +4007,7 @@ <translation id="4833683849865011483">Einn prentari fannst á prentþjóninum</translation> <translation id="4836504898754963407">Stjórna fingraförum</translation> <translation id="4837128290434901661">Viltu skipta aftur yfir í Google leit?</translation> +<translation id="4837165100461973682">Endurhladdu síðunni til að breytingarnar taki gildi</translation> <translation id="4837926214103741331">Þú hefur ekki leyfi til að nota þetta tæki. Hafðu samband við eiganda tækisins til að fá leyfi til að skrá þig inn.</translation> <translation id="4837952862063191349">Til að opna og endurheimta staðbundnu gögnin þín skaltu slá inn eldra aðgangsorðið þitt fyrir <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Skoðaðu myndir, margmiðlunarefni og tilkynningar símans</translation> @@ -4238,6 +4243,7 @@ <translation id="5072900412896857127">Ekki er hægt að hlaða þjónustuskilmálum Google Play. Athugaðu nettenginguna og reyndu aftur.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> og # í viðbót}other{<ph name="FILE1" />, <ph name="FILE2" /> og # í viðbót}}</translation> <translation id="5074318175948309511">Þú gætir þurft að endurhlaða þessa síðu svo að nýju stillingarnar taki gildi.</translation> +<translation id="5074761966806028321">Heimildar er enn krafist til að ljúka uppsetningu</translation> <translation id="5075910247684008552">Sjálfgefið er að loka á óöruggt efni á öruggum vefsvæðum</translation> <translation id="5078638979202084724">Bókamerkja alla flipa</translation> <translation id="5078796286268621944">Rangt PIN-númer</translation> @@ -4312,6 +4318,7 @@ <translation id="5150254825601720210">SSL-þjónsheiti Netscape-vottorðs</translation> <translation id="5151354047782775295">Losaðu um geymslupláss eða veldu gögn sem má eyða sjálfkrafa</translation> <translation id="5153234146675181447">Gleyma síma</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Ítarlegar stillingar fyrir <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Viðfang</translation> <translation id="5155327081870541046">Sláðu flýtileiðina inn í veffangastikuna fyrir vefsvæðið sem þú vilt leita á, t.d. „@bookmarks“. Ýttu svo á valinn flýtilykil og sláðu inn leitarfyrirspurnina.</translation> @@ -4600,6 +4607,7 @@ <translation id="5449551289610225147">Ógilt aðgangsorð</translation> <translation id="5449588825071916739">Bókamerkja alla flipa</translation> <translation id="5449716055534515760">Loka glugga</translation> +<translation id="5452446625764825792">Nú geturðu séð nýlegar myndir, margmiðlunarefni og forrit símans</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (virkar án nettengingar)</translation> <translation id="5454166040603940656">hjá <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Sjá fleiri leitarniðurstöður</translation> @@ -4660,6 +4668,7 @@ <translation id="5499211612787418966">Þessi gluggi er ekki í fókus. Ýttu á Alt-Shift A til að setja þennan glugga í fókus.</translation> <translation id="5499313591153584299">Þessi skrá getur skaðað tölvuna þína.</translation> <translation id="5499453227627332024">Uppfærsla er tiltæk fyrir Linux-ramma. Þú getur einnig uppfært síðar í stillingaforritinu.</translation> +<translation id="5499476581866658341">Nú geturðu séð nýlegar myndir og margmiðlunarefni símans</translation> <translation id="549957179819296104">Nýtt tákn</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Leitarferill<ph name="END_LINK_SEARCH" /> og <ph name="BEGIN_LINK_GOOGLE" />aðrar aðgerðir<ph name="END_LINK_GOOGLE" /> kunna að vera vistaðar á Google reikningnum þínum ef þú ert innskráð(ur). Þú getur eytt þessu hvenær sem er.</translation> <translation id="5500709606820808700">Öryggisathugun var keyrð í dag</translation> @@ -5949,6 +5958,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> var bætt við með fjartengingu</translation> <translation id="6790820461102226165">Bæta notanda við...</translation> <translation id="6793604637258913070">Auðkenna textainnskotsmerkið þegar það birtist eða hreyfist.</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Notaðu sjálfvirka skönnun til að fletta sjálfkrafa á milli atriða á skjánum. Ýttu á „Velja“ til að virkja atriði þegar atriðið er yfirstrikað.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Úbbs, eitthvað fór úrskeiðis.</translation> @@ -6325,6 +6335,7 @@ <translation id="7152478047064750137">Þessi viðbót þarf engar sérstakar heimildir</translation> <translation id="7154130902455071009">Breyta upphafssíðunni í: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Fyrirliggjandi mynd úr myndavél eða skrá</translation> +<translation id="7160182524506337403">Nú geturðu séð tilkynningar símans</translation> <translation id="7163202347044721291">Staðfestir virkjunarkóða...</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />“ getur lesið myndir, myndskeið og hljóðskrár á merktu stöðunum.</translation> <translation id="7167486101654761064">Opna &alltaf skrár af þessari tegund</translation> @@ -7339,6 +7350,7 @@ <translation id="8138997515734480534">Staða <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Google Drive skrár</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Þú getur sett upp fleiri eiginleika í stillingum símstöðvar</translation> <translation id="8141584439523427891">Opnar í öðrum vafra núna</translation> <translation id="8141725884565838206">Stjórna aðgangsorðunum þínum</translation> <translation id="814204052173971714">{COUNT,plural, =1{myndskeið}one{# myndskeið}other{# myndskeið}}</translation> @@ -7546,6 +7558,7 @@ <translation id="833986336429795709">Veldu forrit til að opna þennan tengil</translation> <translation id="8342221978608739536">Prófaði ekki</translation> <translation id="8342861492835240085">Velja safn</translation> +<translation id="8345848587667658367">Nú geturðu séð nýlegar myndir, margmiðlunarefni, tilkynningar og forrit símans</translation> <translation id="8347227221149377169">Prentverk</translation> <translation id="834785183489258869">Þegar huliðsstilling er notuð geta vefsvæði ekki notað fótspor til að sjá vafranotkun þína á vefsvæðum, til dæmis til að sérsníða auglýsingar. Óvíst er að eiginleikar á sumum vefsvæðum virki.</translation> <translation id="8350789879725387295">Pennaverkfæri í dokku</translation> @@ -7821,6 +7834,7 @@ <translation id="8642947597466641025">Stækka texta</translation> <translation id="8643443571868262066">Skráin <ph name="FILE_NAME" /> gæti verið hættuleg. Viltu senda hana í skönnun Ítarlegrar verndar hjá Google?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Engin fótspor}=1{1 fótspor útilokað}one{# fótspor útilokað}other{# fótspor útilokuð}}</translation> +<translation id="864423554496711319">Tæki sem eru vistuð á þínum reikningi</translation> <translation id="8644655801811752511">Ekki er hægt að endurstilla þennan öryggislykil. Prófaðu að endurstilla lykilinn strax eftir að þú setur hann inn.</translation> <translation id="8645354835496065562">Halda áfram að leyfa aðgang að skynjurum</translation> <translation id="8645920082661222035">Spáir fyrir um og varar þig við hættulegum atvikum áður en þau eiga sér stað</translation> @@ -8151,6 +8165,7 @@ <translation id="8957757410289731985">Sérsníða prófíl</translation> <translation id="895944840846194039">JavaScript-minni</translation> <translation id="8960208913905765425">Umreikningur mæligilda skjótra svara</translation> +<translation id="8960638196855923532">Nú geturðu séð tilkynningar og forrit símans</translation> <translation id="8962051932294470566">Þú getur aðeins deilt einni skrá í einu. Reyndu aftur þegar yfirstandandi flutningi er lokið.</translation> <translation id="8962083179518285172">Fela upplýsingar</translation> <translation id="8962918469425892674">Þessi síða notar hreyfi- eða birtuskynjara.</translation> @@ -8302,6 +8317,7 @@ <translation id="9103868373786083162">Ýttu til að fara til baka, farðu í efnisvalmyndina til að sjá ferilinn</translation> <translation id="9108035152087032312">Nefna &glugga...</translation> <translation id="9108072915170399168">Núverandi stilling gagnanotkunar er „Án nettengingar“</translation> +<translation id="9108294543511800041">Nú geturðu séð nýlegar myndir, margmiðlunarefni og tilkynningar símans</translation> <translation id="9108674852930645435">Skoðaðu nýjungar í <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Ekki er víst að hægt sé að nota örugg DNS alltaf</translation> <translation id="9109122242323516435">Eyddu skrám úr geymslu tækisins til að losa um pláss.</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 0f98cf74..2beedda 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1909,6 +1909,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Rimuovi 1 app non supportata}other{Rimuovi # app non supportate}}</translation> <translation id="2776560192867872731">Cambia il nome del dispositivo per <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Elimina questo container</translation> +<translation id="2778471504622896352">Aggiunta di app remote ad Avvio app di Chrome OS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Errore durante l'installazione dell'applicazione Linux</translation> <translation id="2783298271312924866">Scaricato</translation> @@ -2224,6 +2225,7 @@ <translation id="3067198360141518313">Esegui questo plug-in</translation> <translation id="3071624960923923138">Puoi fare clic qui per aprire una nuova scheda</translation> <translation id="3072775339180057696">Vuoi consentire al sito di visualizzare il file <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Traduci pagina intera</translation> <translation id="3075874217500066906">È necessario riavviare per iniziare la procedura di Powerwash. Dopo il riavvio ti verrà chiesto di confermare di voler procedere.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Salva solo su questo dispositivo</translation> @@ -3544,6 +3546,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> e altri <ph name="NUMBER_OF_OTHER_SWITCHES" /> sensori</translation> <translation id="439266289085815679">Configurazione Bluetooth controllata da <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Modifica il file di configurazione</translation> +<translation id="4393713825278446281">Dispositivi con Accoppiamento rapido salvati in <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Disabilita</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Apri tutti}=1{&Apri preferito}other{&Apri tutti ({COUNT})}}</translation> <translation id="4397372003838952832">Non dovrai ricordare questa password perché verrà salvata in <ph name="GOOGLE_PASSWORD_MANAGER" /> per <ph name="EMAIL" />.</translation> @@ -3773,6 +3776,7 @@ <translation id="4615586811063744755">nessun cookie selezionato</translation> <translation id="461661862154729886">Fonte di energia</translation> <translation id="4617001782309103936">Troppo corto</translation> +<translation id="4617019240346358451">Ricarica la pagina per utilizzare "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Opzioni estensione</translation> <translation id="4617880081511131945">Impossibile stabilire una connessione</translation> <translation id="4619564267100705184">Verifica la tua identità</translation> @@ -3988,6 +3992,7 @@ <translation id="4833683849865011483">1 stampante trovata sul server di stampa</translation> <translation id="4836504898754963407">Gestisci impronte</translation> <translation id="4837128290434901661">Tornare a Ricerca Google?</translation> +<translation id="4837165100461973682">Ricarica la pagina per applicare le modifiche</translation> <translation id="4837926214103741331">Non sei autorizzato a utilizzare questo dispositivo. Per ottenere l'autorizzazione di accesso contatta il proprietario del dispositivo.</translation> <translation id="4837952862063191349">Per sbloccare e ripristinare i dati locali, inserisci la vecchia password del dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Visualizza foto, contenuti multimediali e notifiche del tuo telefono</translation> @@ -4298,6 +4303,7 @@ <translation id="5150254825601720210">Nome server SSL certificato Netscape</translation> <translation id="5151354047782775295">Libera spazio sul disco, altrimenti alcuni dati potrebbero essere eliminati automaticamente</translation> <translation id="5153234146675181447">Elimina telefono</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Impostazioni avanzate per <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Oggetto</translation> <translation id="5155327081870541046">Nella barra degli indirizzi, inserisci la scorciatoia relativa al sito in cui vuoi eseguire la ricerca, come "@segnalibri". Successivamente, digita la tua scorciatoia da tastiera preferita e inserisci il termine di ricerca.</translation> @@ -5073,6 +5079,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> sta usando la videocamera e il microfono</translation> <translation id="5935158534896975820">Preparazione della richiesta di firma del certificato (in attesa sul server)</translation> <translation id="5935656526031444304">Gestisci Navigazione sicura</translation> +<translation id="5936065461722368675">Traduci pagina intera</translation> <translation id="5938002010494270685">Upgrade di sicurezza disponibile</translation> <translation id="5939518447894949180">Reimposta</translation> <translation id="5939719276406088041">Impossibile creare la scorciatoia</translation> @@ -5611,7 +5618,7 @@ <translation id="6466258437571594570">I siti non possono interromperti quando chiedono di poter inviare notifiche</translation> <translation id="6466988389784393586">&Apri tutti i Preferiti</translation> <translation id="6467304607960172345">Ottimizza video a schermo intero</translation> -<translation id="6467377768028664108"><ph name="DEVICE_TYPE" /> potrà poi:</translation> +<translation id="6467377768028664108">Su <ph name="DEVICE_TYPE" />:</translation> <translation id="6468485451923838994">Caratteri</translation> <translation id="6468773105221177474"><ph name="FILE_COUNT" /> file</translation> <translation id="6469557521904094793">Attiva rete mobile</translation> @@ -5932,6 +5939,7 @@ <translation id="6790497603648687708">L'estensione <ph name="EXTENSION_NAME" /> è stata aggiunta da remoto</translation> <translation id="6790820461102226165">Aggiungi persona...</translation> <translation id="6793604637258913070">Evidenzia il cursore di testo quando viene visualizzato o spostato</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">La scansione automatica ti consente di spostarti da un elemento all'altro sullo schermo in modo automatico. Quando un elemento è evidenziato, premi "Seleziona" per attivarlo.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Spiacenti, qualcosa è andato storto.</translation> @@ -7808,6 +7816,7 @@ <translation id="8642947597466641025">Ingrandisci le dimensioni del testo</translation> <translation id="8643443571868262066">Il file <ph name="FILE_NAME" /> potrebbe essere pericoloso. Inviare alla protezione avanzata di Google per la scansione?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Nessun cookie}=1{1 cookie bloccato}other{# cookie bloccati}}</translation> +<translation id="864423554496711319">Dispositivi salvati nel tuo account</translation> <translation id="8644655801811752511">Impossibile reimpostare questo token di sicurezza. Prova a reimpostare il token subito dopo averlo inserito.</translation> <translation id="8645354835496065562">Continua a consentire l'accesso ai sensori</translation> <translation id="8645920082661222035">Prevede eventi pericolosi e ti avvisa prima che si verifichino</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 7650323..52891c3 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1923,6 +1923,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{הסרת אפליקציה אחת שלא נתמכת}two{הסרת # אפליקציות שלא נתמכות}many{הסרת # אפליקציות שלא נתמכות}other{הסרת # אפליקציות שלא נתמכות}}</translation> <translation id="2776560192867872731">שינוי השם של <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">מחיקת הקונטיינר הזה</translation> +<translation id="2778471504622896352">הוספת אפליקציות מרוחקות למרכז האפליקציות של ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">קרתה שגיאה במהלך ההתקנה של אפליקציית Linux</translation> <translation id="2783298271312924866">ההורדה בוצעה</translation> @@ -3558,6 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ועוד <ph name="NUMBER_OF_OTHER_SWITCHES" /> מתגים</translation> <translation id="439266289085815679">הגדרת ה-Bluetooth היא בשליטת <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">עריכת קובץ התצורה</translation> +<translation id="4393713825278446281">המכשירים להתאמה מהירה נשמרו ב-<ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">השבתה</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&פתיחת כל הכתובות}=1{&פתיחת הסימנייה}two{&פתיחת כל הכתובות ({COUNT})}many{&פתיחת כל הכתובות ({COUNT})}other{&פתיחת כל הכתובות ({COUNT})}}</translation> <translation id="4397372003838952832">לא צריך לזכור את הסיסמה הזו. היא תישמר ב<ph name="GOOGLE_PASSWORD_MANAGER" /> עבור <ph name="EMAIL" />.</translation> @@ -3788,6 +3790,7 @@ <translation id="4615586811063744755">לא נבחר קובץ Cookie</translation> <translation id="461661862154729886">מקור חשמל</translation> <translation id="4617001782309103936">קצר מדי</translation> +<translation id="4617019240346358451">יש לטעון את הדף מחדש כדי להשתמש בתוסף '<ph name="EXTENSION_NAME" />'</translation> <translation id="4617270414136722281">אפשרויות של תוספים</translation> <translation id="4617880081511131945">לא ניתן ליצור חיבור</translation> <translation id="4619564267100705184">אימות הזהות שלך</translation> @@ -4003,6 +4006,7 @@ <translation id="4833683849865011483">נמצאה מדפסת אחת המשויכת לשרת ההדפסה</translation> <translation id="4836504898754963407">ניהול של טביעות אצבעות</translation> <translation id="4837128290434901661">לשנות חזרה אל Google Search?</translation> +<translation id="4837165100461973682">יש לטעון את הדף מחדש כדי להחיל את השינויים</translation> <translation id="4837926214103741331">אין לך אישור להשתמש במכשיר הזה. יש ליצור קשר עם בעל המכשיר כדי לקבל הרשאת כניסה.</translation> <translation id="4837952862063191349">כדי לבטל את הנעילה של הנתונים המקומיים ולשחזר אותם, יש להזין את הסיסמה הקודמת שלך עבור <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">הצגת התמונות, המדיה וההתראות שבטלפון</translation> @@ -4312,6 +4316,7 @@ <translation id="5150254825601720210">שם שרת SSL של אישור Netscape</translation> <translation id="5151354047782775295">אם לא מפנים שטח אחסון, ייבחרו נתונים למחיקה אוטומטית</translation> <translation id="5153234146675181447">מחיקת הטלפון</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">הגדרות מתקדמות עבור <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">נושא</translation> <translation id="5155327081870541046">בסרגל הכתובות, מזינים את קיצור הדרך לאתר שרוצים לחפש בו, כמו למשל "@bookmarks". לאחר מכן, מקישים על מקש הקיצור המועדף במקלדת ומזינים את מונח החיפוש.</translation> @@ -5951,6 +5956,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> נוסף מרחוק</translation> <translation id="6790820461102226165">הוספת משתמש...</translation> <translation id="6793604637258913070">הדגשת סמן הטקסט כשהוא מופיע או זז</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">בעזרת סריקות אוטומטיות אפשר לעבור אוטומטית בין פריטים שמופיעים במסך. כשפריט כלשהו מודגש, מקישים על "בחירה" כדי להפעיל אותו.</translation> <translation id="6795884519221689054">פנדה</translation> <translation id="6797493596609571643">אופס. משהו השתבש.</translation> @@ -7825,6 +7831,7 @@ <translation id="8642947597466641025">הגדלת טקסט</translation> <translation id="8643443571868262066">הקובץ <ph name="FILE_NAME" /> עשוי להיות מסוכן. האם לשלוח אותו לסריקה באמצעות ההגנה המתקדמת של Google?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{אין קובצי cookie}=1{קובץ cookie אחד חסום}two{# קובצי cookie חסומים}many{# קובצי cookie חסומים}other{# קובצי cookie חסומים}}</translation> +<translation id="864423554496711319">מכשירים שנשמרו בחשבון שלך</translation> <translation id="8644655801811752511">לא ניתן לאפס את מפתח האבטחה הזה. צריך לנסות לאפס אותו מיד אחרי החיבור.</translation> <translation id="8645354835496065562">המשך התרת הגישה לחיישנים</translation> <translation id="8645920082661222035">המערכת חוזה אירועים מסוכנים ומזהירה אותך לגביהם לפני שהם מתרחשים</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 577533327..8fcf1a79 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1902,6 +1902,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1 件のサポートされていないアプリを削除}other{# 件のサポートされていないアプリを削除}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> のデバイス名を変更</translation> <translation id="2777251078198759550">このコンテナを削除</translation> +<translation id="2778471504622896352">ChromeOS ランチャーにリモートアプリを追加する</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux アプリケーションのインストール中にエラーが発生しました</translation> <translation id="2783298271312924866">ダウンロード済み</translation> @@ -3532,6 +3533,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />、<ph name="SECOND_SWITCH" />、<ph name="THIRD_SWITCH" />、他 <ph name="NUMBER_OF_OTHER_SWITCHES" /> 個のスイッチ</translation> <translation id="439266289085815679">Bluetooth 設定は <ph name="USER_EMAIL" /> によって管理されています。</translation> <translation id="4392896746540753732">設定ファイルを編集します</translation> +<translation id="4393713825278446281">「<ph name="PRIMARY_EMAIL" />」に保存されているファスト ペアリング デバイス</translation> <translation id="4394049700291259645">無効にする</translation> <translation id="4396956294839002702">{COUNT,plural, =0{すべてを開く(&O)}=1{ブックマークを開く(&O)}other{すべて({COUNT} 個)を開く(&O)}}</translation> <translation id="4397372003838952832">このパスワードを覚えておく必要はありません。<ph name="EMAIL" /> の <ph name="GOOGLE_PASSWORD_MANAGER" /> に保存されます。</translation> @@ -3761,6 +3763,7 @@ <translation id="4615586811063744755">Cookie が選択されていません</translation> <translation id="461661862154729886">電源</translation> <translation id="4617001782309103936">短すぎます</translation> +<translation id="4617019240346358451">「<ph name="EXTENSION_NAME" />」を使用するにはページを更新してください</translation> <translation id="4617270414136722281">拡張機能のオプション</translation> <translation id="4617880081511131945">接続を確立できません</translation> <translation id="4619564267100705184">本人確認</translation> @@ -3975,6 +3978,7 @@ <translation id="4833683849865011483">プリント サーバーで 1 個のプリンタが見つかりました</translation> <translation id="4836504898754963407">フィンガープリントの管理</translation> <translation id="4837128290434901661">Google 検索に戻しますか?</translation> +<translation id="4837165100461973682">変更を適用するにはページを更新してください</translation> <translation id="4837926214103741331">このデバイスを使用する権限がありません。ログイン権限については、デバイスの所有者にお問い合わせください。</translation> <translation id="4837952862063191349">ロックを解除してローカルデータを復元するには、<ph name="DEVICE_TYPE" /> の以前のパスワードを入力してください。</translation> <translation id="4838170306476614339">スマートフォンの写真、メディア、通知を表示します</translation> @@ -4284,6 +4288,7 @@ <translation id="5150254825601720210">Netscape 証明書 SSL サーバー名</translation> <translation id="5151354047782775295">ディスクの空き領域を確保してください。十分な空き領域がない場合、一部のデータが自動的に削除される可能性があります</translation> <translation id="5153234146675181447">スマートフォンを削除</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> の詳細設定</translation> <translation id="5154702632169343078">件名</translation> <translation id="5155327081870541046">検索するサイトのショートカット(例: 「@bookmarks」)をアドレスバーに入力します。続けて、設定したキーボード ショートカットを押して、検索語句を入力します。</translation> @@ -5912,6 +5917,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> がリモートで追加されました</translation> <translation id="6790820461102226165">ユーザーを追加...</translation> <translation id="6793604637258913070">テキスト キャレットが表示されるか移動したときに強調表示する</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">自動スキャンを使用すると、画面上のアイテム間を自動的に移動できます。アイテムがハイライト表示されているときに「選択」を押すとアクティブになります。</translation> <translation id="6795884519221689054">パンダ</translation> <translation id="6797493596609571643">エラーが発生しました。</translation> @@ -7782,6 +7788,7 @@ <translation id="8642947597466641025">テキストを拡大する</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> は危害を及ぼす可能性があります。Google の高度な保護機能に送信してスキャンしますか?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Cookie なし}=1{1 件の Cookie がブロックされています}other{# 件の Cookie がブロックされています}}</translation> +<translation id="864423554496711319">アカウントに保存されているデバイス</translation> <translation id="8644655801811752511">このセキュリティ キーをリセットできません。キーの挿入直後にリセットしてみてください。</translation> <translation id="8645354835496065562">センサーへのアクセスを引き続き許可する</translation> <translation id="8645920082661222035">危険なイベントの発生を予測して警告します</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index f6fecb7..b2f79a7 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -3917,6 +3917,7 @@ <translation id="4768332406694066911">Осы ұйымдардан алынған және сізді анықтайтын сертификаттар бар</translation> <translation id="4770119228883592393">Рұқсат сұралды, жауап беру үшін ⌘ + Option + төменге бағыттауыш перне тіркесімін басыңыз.</translation> <translation id="4773112038801431077">Linux жүйесін жаңарту</translation> +<translation id="4774337692467964393">Smart Lock қосулы болса, PIN кодын немесе құпия сөзді енгізудің қажеті жоқ.</translation> <translation id="4775142426314270551">Жаңылыс туралы есептер, диагностика және пайдалану туралы деректі Google-ға автоматты түрде жіберу арқылы Chrome және ChromeOS жүйесінің функциялары мен жұмыс өнімділігін жақсартуға көмектесіңіз. Кейбір топтастырылған деректер де Android қолданбалары мен Google серіктестері үшін пайдалы болады. Егер балаңыздың Google аккаунтында Интернет пен қолданбаларды пайдалану тарихы қосулы болса, балаңыздың Android құрылғысындағы деректері оның Google аккаунтына сақталуы мүмкін.</translation> <translation id="477647109558161443">Жұмыс үстеліндегі таңбаша жасау</translation> <translation id="4776594120007763294">Бетті кейінірек оқылатын беттер тізіміне қосу үшін осы түймені басыңыз.</translation> @@ -3966,6 +3967,7 @@ <translation id="4820236583224459650">Белсенді билет ретінде орнату</translation> <translation id="4821935166599369261">&Профильдеу қосылды</translation> <translation id="4823484602432206655">Пайдаланушы және құрылғы параметрлерін оқу және өзгерту</translation> +<translation id="4823894915586516138">Бұл PIN коды немесе құпия сөз <ph name="DEVICE_TYPE" /> құрылғысындағы деректі, соның ішінде телефоннан пайдаланылатын барлық ақпаратты қорғайды.</translation> <translation id="4824037980212326045">Linux қолданбалары мен файлдарының сақтық көшірмесін жасау және оларды қалпына келтіру</translation> <translation id="4824958205181053313">Синхрондауды тоқтату қажет пе?</translation> <translation id="4827675678516992122">Жалғанбады</translation> @@ -5620,6 +5622,7 @@ <translation id="648927581764831596">Жоқ</translation> <translation id="6490471652906364588">USB-C құрылғысы (оң жақ ұяшық)</translation> <translation id="6491376743066338510">Авторизация сәтсіз</translation> +<translation id="6492396476180293140">Ішкі камера аппараттық ауыстырғыш арқылы өшірілген.</translation> <translation id="6494327278868541139">Жақсартылған қорғаныс туралы мәліметтерді көрсету</translation> <translation id="6494445798847293442">Сертификат беру органы емес</translation> <translation id="6494974875566443634">Бейімдеу</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 529dae2..98433cc5 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -1558,6 +1558,7 @@ <translation id="2433836460518180625">ដោះសោឧបករណ៍តែប៉ុណ្ណោះ</translation> <translation id="2434449159125086437">មិនអាចរៀបចំម៉ាស៊ីនបោះពុម្ពបានទេ។ សូមពិនិត្យមើលការកំណត់រចនាសម្ព័ន្ធ រួចព្យាយាមម្តងទៀត។</translation> <translation id="2434758125294431199">ជ្រើសរើសអ្នកដែលអាចចែករំលែកជាមួយអ្នក</translation> +<translation id="2434915728183570229">ឥឡូវនេះ អ្នកអាចមើលកម្មវិធីលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="2435137177546457207">លក្ខខណ្ឌបន្ថែមរបស់ Google Chrome និង ChromeOS Flex</translation> <translation id="2435248616906486374">បណ្តាញត្រូវបានផ្តាច់</translation> <translation id="2435457462613246316">បង្ហាញពាក្យសម្ងាត់</translation> @@ -4242,6 +4243,7 @@ <translation id="5072900412896857127">មិនអាចផ្ទុកលក្ខខណ្ឌប្រើប្រាស់ Google Play បានទេ។ សូមពិនិត្យការតភ្ជាប់បណ្ដាញរបស់អ្នក រួចព្យាយាមម្ដងទៀត។</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> និង # ទៀត}}</translation> <translation id="5074318175948309511">ទំព័រនេះត្រូវការដំណើរការឡើងវិញ ដើម្បីឲ្យការកំណត់ថ្មីមានប្រសិទ្ធភាព។</translation> +<translation id="5074761966806028321">នៅតែត្រូវការការអនុញ្ញាត ដើម្បីបញ្ចប់ការរៀបចំ</translation> <translation id="5075910247684008552">ខ្លឹមសារដែលគ្មានសុវត្ថិភាពត្រូវបានទប់ស្កាត់តាមលំនាំដើមនៅលើគេហទំព័រដែលមានសុវត្ថិភាព</translation> <translation id="5078638979202084724">ចំណាំផ្ទាំងទាំងអស់</translation> <translation id="5078796286268621944">លេខសម្គាល់មិនត្រឹមត្រូវ</translation> @@ -4605,6 +4607,7 @@ <translation id="5449551289610225147">ពាក្យសម្ងាត់មិនត្រឹមត្រូវ</translation> <translation id="5449588825071916739">ចំណាំផ្ទាំងទាំងអស់</translation> <translation id="5449716055534515760">បិទផ្ទាំង</translation> +<translation id="5452446625764825792">ឥឡូវនេះ អ្នកអាចមើលរូបថត មេឌៀ និងកម្មវិធីថ្មីៗលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (ដំណើរការដោយគ្មានអ៊ីនធឺណិត)</translation> <translation id="5454166040603940656">ជាមួយ <ph name="PROVIDER" /></translation> <translation id="545484289444831485">មើលលទ្ធផលស្វែងរកច្រើនទៀត</translation> @@ -4665,6 +4668,7 @@ <translation id="5499211612787418966">បច្ចុប្បន្ន ប្រអប់នេះមិនត្រូវបានផ្ដោតទេ។ សូមចុច "Alt-Shift A" ដើម្បីផ្ដោតលើប្រអប់នេះ។</translation> <translation id="5499313591153584299">ឯកសារនេះអាចបង្កគ្រោះថ្នាក់ដល់កុំព្យូទ័ររបស់អ្នក។</translation> <translation id="5499453227627332024">មានកំណែថ្មីសម្រាប់ទម្រង់ផ្ទុក Linux របស់អ្នក។ អ្នកក៏អាចដំឡើងកំណែក្នុងកម្មវិធីការកំណត់នៅពេលក្រោយបានផងដែរ។</translation> +<translation id="5499476581866658341">ឥឡូវនេះ អ្នកអាចមើលរូបថត និងមេឌៀថ្មីៗលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="549957179819296104">រូបតំណាងថ្មី</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />ប្រវត្តិស្វែងរក<ph name="END_LINK_SEARCH" /> និង<ph name="BEGIN_LINK_GOOGLE" />ទម្រង់ផ្សេងទៀតនៃសកម្មភាព<ph name="END_LINK_GOOGLE" />អាចត្រូវបានរក្សាទុកនៅក្នុងគណនី Google របស់អ្នក នៅពេលអ្នកចូលគណនី។ អ្នកអាចលុបវាបានគ្រប់ពេល។</translation> <translation id="5500709606820808700">ការពិនិត្យសុវត្ថិភាពបានដំណើរការនៅថ្ងៃនេះ</translation> @@ -6330,6 +6334,7 @@ <translation id="7152478047064750137">កម្មវិធីបន្ថែមនេះមិនតម្រូវឱ្យមានការអនុញ្ញាតពិសេសទេ</translation> <translation id="7154130902455071009">ប្តូរទំព័រចាប់ផ្តើមរបស់អ្នកទៅ៖ <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">រូបភាពពីកាមេរ៉ា និងឯកសារដែលមានស្រាប់</translation> +<translation id="7160182524506337403">ឥឡូវនេះ អ្នកអាចមើលការជូនដំណឹងលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="7163202347044721291">កំពុងផ្ទៀងផ្ទាត់លេខកូដបើកដំណើរការ...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" មិនអាចអានឯកសាររូបភាព វីដេអូ និងសម្លេងនៅក្នុងទីតាំងដែលបានពិនិត្យទេ។</translation> <translation id="7167486101654761064">បើកឯកសារប្រភេទនេះជានិច្ច</translation> @@ -7344,6 +7349,7 @@ <translation id="8138997515734480534">ស្ថានភាព <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">ឯកសារ Google ថាស</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">អ្នកអាចរៀបចំមុខងារច្រើនទៀតនៅក្នុងការកំណត់មណ្ឌលទូរសព្ទ</translation> <translation id="8141584439523427891">កំពុងបើកនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិតផ្សេងឥឡូវនេះ</translation> <translation id="8141725884565838206">គ្រប់គ្រងពាក្យសម្ងាត់របស់អ្នក</translation> <translation id="814204052173971714">{COUNT,plural, =1{វីដេអូមួយ}other{វីដេអូ #}}</translation> @@ -7551,6 +7557,7 @@ <translation id="833986336429795709">ដើម្បីបើកតំណនេះ សូមជ្រើសរើសកម្មវិធីមួយ</translation> <translation id="8342221978608739536">មិនបានព្យាយាមទេ</translation> <translation id="8342861492835240085">ជ្រើសរើសបណ្ដុំ</translation> +<translation id="8345848587667658367">ឥឡូវនេះ អ្នកអាចមើលរូបថត មេឌៀ ការជូនដំណឹង និងកម្មវិធីថ្មីៗលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="8347227221149377169">ការងារបោះពុម្ព</translation> <translation id="834785183489258869">នៅពេលប្រើមុខងារឯកជន គេហទំព័រមិនអាចប្រើខូគី ដើម្បីមើលសកម្មភាពរុករកតាមអ៊ីនធឺណិតរបស់អ្នកនៅលើគេហទំព័រផ្សេងៗ ឧទាហរណ៍ ដើម្បីកំណត់ការផ្សាយពាណិជ្ជកម្មឱ្យស្របនឹងអ្នកបានទេ។ មុខងារនៅលើគេហទំព័រមួយចំនួនអាចនឹងមិនដំណើរការទេ។</translation> <translation id="8350789879725387295">ឧបករណ៍របស់ប៊ិកនៅក្នុងរបារឧបករណ៍</translation> @@ -8157,6 +8164,7 @@ <translation id="8957757410289731985">ប្ដូរកម្រងព័ត៌មានតាមបំណង</translation> <translation id="895944840846194039">មេម៉ូរី JavaScript</translation> <translation id="8960208913905765425">ការបំប្លែងខ្នាតចម្លើយរហ័ស</translation> +<translation id="8960638196855923532">ឥឡូវនេះ អ្នកអាចមើលការជូនដំណឹង និងកម្មវិធីលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="8962051932294470566">អ្នកអាចចែករំលែកឯកសារម្ដងមួយតែប៉ុណ្ណោះ។ សូមព្យាយាមម្ដងទៀត នៅពេលការផ្ទេរបច្ចុប្បន្នបញ្ចប់។</translation> <translation id="8962083179518285172">លាក់ព័ត៌មានលំអិត</translation> <translation id="8962918469425892674">គេហទំព័រនេះកំពុងប្រើឧបករណ៍ចាប់ពន្លឺ ឬឧបករណ៍ចាប់ចលនា។</translation> @@ -8308,6 +8316,7 @@ <translation id="9103868373786083162">ចុចដើម្បីថយក្រោយ ហើយចុចម៉ឺនុយបរិបទដើម្បីមើលប្រវត្តិ</translation> <translation id="9108035152087032312">ឈ្មោះ និងវិនដូ...</translation> <translation id="9108072915170399168">ការកំណត់ការប្រើទិន្នន័យបច្ចុប្បន្នគឺ "ដោយគ្មានអ៊ីនធឺណិត"</translation> +<translation id="9108294543511800041">ឥឡូវនេះ អ្នកអាចមើលរូបថត មេឌៀ និងការជូនដំណឹងថ្មីៗលើទូរសព្ទរបស់អ្នកបានហើយ</translation> <translation id="9108674852930645435">រុករកអ្វីដែលថ្មីនៅលើ <ph name="DEVICE_TYPE" /> របស់អ្នក</translation> <translation id="9108808586816295166">DNS សុវត្ថិភាពប្រហែលជាមិនអាចប្រើបានគ្រប់ពេលនោះទេ</translation> <translation id="9109122242323516435">ដើម្បីបង្កើនទំហំផ្ទុក សូមលុបឯកសារពីឧបករណ៍ផ្ទុក។</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index bd50e68..ea87447 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1924,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{지원되지 않는 앱 1개 삭제}other{지원되지 않는 앱 #개 삭제}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> 기기 이름 변경</translation> <translation id="2777251078198759550">컨테이너 삭제</translation> +<translation id="2778471504622896352">Chrome OS 런처에 원격 앱 추가</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux 애플리케이션 설치 중 오류 발생</translation> <translation id="2783298271312924866">다운로드됨</translation> @@ -3557,6 +3558,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> 외 <ph name="NUMBER_OF_OTHER_SWITCHES" />개</translation> <translation id="439266289085815679">블루투스 구성은 <ph name="USER_EMAIL" />님이 관리합니다.</translation> <translation id="4392896746540753732">설정 파일 수정</translation> +<translation id="4393713825278446281">빠른 페어링 기기가 <ph name="PRIMARY_EMAIL" />에 저장됩니다</translation> <translation id="4394049700291259645">사용 중지</translation> <translation id="4396956294839002702">{COUNT,plural, =0{모두 열기(O)}=1{북마크 열기(O)}other{{COUNT}개 모두 열기(O)}}</translation> <translation id="4397372003838952832">비밀번호를 기억하지 않아도 됩니다. 비밀번호는 <ph name="EMAIL" />의 <ph name="GOOGLE_PASSWORD_MANAGER" />에 저장됩니다.</translation> @@ -3787,6 +3789,7 @@ <translation id="4615586811063744755">선택된 쿠키 없음</translation> <translation id="461661862154729886">전원</translation> <translation id="4617001782309103936">너무 짧음</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" 확장 프로그램을 사용하려면 페이지를 새로고침하세요</translation> <translation id="4617270414136722281">확장 프로그램 옵션</translation> <translation id="4617880081511131945">연결을 설정할 수 없음</translation> <translation id="4619564267100705184">본인 인증</translation> @@ -4002,6 +4005,7 @@ <translation id="4833683849865011483">인쇄 서버에 프린터 1대가 있습니다.</translation> <translation id="4836504898754963407">지문 관리</translation> <translation id="4837128290434901661">Google 검색으로 되돌리시겠습니까?</translation> +<translation id="4837165100461973682">변경사항을 적용하려면 페이지를 새로고침하세요</translation> <translation id="4837926214103741331">더 이상 이 기기를 사용할 권한이 없습니다. 기기 소유자에게 로그인 권한에 대해 문의하세요.</translation> <translation id="4837952862063191349">로컬 데이터를 잠금 해제하고 복원하려면 이전 <ph name="DEVICE_TYPE" /> 비밀번호 입력</translation> <translation id="4838170306476614339">휴대전화의 사진, 미디어, 알림을 봅니다.</translation> @@ -4311,6 +4315,7 @@ <translation id="5150254825601720210">Netscape Certificate SSL Server Name</translation> <translation id="5151354047782775295">디스크 저장 공간을 확보하지 않으면 일부 데이터가 자동으로 삭제됩니다.</translation> <translation id="5153234146675181447">휴대전화 지우기</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> 고급 설정</translation> <translation id="5154702632169343078">대상</translation> <translation id="5155327081870541046">주소 표시줄에 '@bookmarks'와 같이 검색하려는 사이트의 바로가기를 입력하세요. 그런 다음 원하는 단축키를 누르고 검색어를 입력하세요.</translation> @@ -5946,6 +5951,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" />이(가) 원격으로 추가됨</translation> <translation id="6790820461102226165">사용자 추가...</translation> <translation id="6793604637258913070">텍스트 캐럿이 나타나거나 이동할 때 이를 강조표시합니다.</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">자동 스캔을 사용하면 화면에 있는 항목 간에 자동으로 이동할 수 있습니다. 항목이 강조표시된 상태에서 '선택'을 누르면 해당 항목이 활성화됩니다.</translation> <translation id="6795884519221689054">판다</translation> <translation id="6797493596609571643">문제가 발생했습니다.</translation> @@ -7820,6 +7826,7 @@ <translation id="8642947597466641025">텍스트 확대</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> 파일은 위험할 수 있습니다. 검사를 위해 Google 고급 보호 프로그램에 전송할까요?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{쿠키 없음}=1{쿠키 1개 차단됨}other{쿠키 #개 차단됨}}</translation> +<translation id="864423554496711319">계정에 저장된 기기</translation> <translation id="8644655801811752511">보안 키를 재설정할 수 없습니다. 보안 키를 삽입한 직후 키를 재설정해 보세요.</translation> <translation id="8645354835496065562">계속해서 센서 액세스 허용</translation> <translation id="8645920082661222035">위험한 이벤트가 발생하기 전에 이를 예측하여 알립니다.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index a4bd467..ee63e74f 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1923,6 +1923,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Колдоого алынбаган 1 колдонмону өчүрүү}other{Колдоого алынбаган # колдонмону өчүрүү}}</translation> <translation id="2776560192867872731">Түзмөктүн аталышын төмөнкүгө өзгөртүү: <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Бул контейнерди өчүрүү</translation> +<translation id="2778471504622896352">ChromeOS жүргүзгүчүнө пульт колдонмолорун кошуу</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux колдонмосун орнотууда ката кетти</translation> <translation id="2783298271312924866">Жүктөлүп алынды</translation> @@ -3558,6 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> жана дагы <ph name="NUMBER_OF_OTHER_SWITCHES" /> которгуч</translation> <translation id="439266289085815679">Bluetooth конфигурациясы <ph name="USER_EMAIL" /> тарабынан көзөмөлдөнөт.</translation> <translation id="4392896746540753732">Конфигурациялоо файлын түзөтүү</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" /> аккаунтуна сакталган Ыкчам туташуу түзмөктөрү</translation> <translation id="4394049700291259645">Ө</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Баарын ачуу}=1{&Кыстарманы ачуу}other{&Баарын ачуу ({COUNT})}}</translation> <translation id="4397372003838952832">Бул сырсөздү эстеп калуунун кереги жок. Ал <ph name="EMAIL" /> аккаунту үчүн <ph name="GOOGLE_PASSWORD_MANAGER" /> бөлүмүнө сакталат.</translation> @@ -3788,6 +3790,7 @@ <translation id="4615586811063744755">кукилер тандалган жок</translation> <translation id="461661862154729886">Кубат булагы</translation> <translation id="4617001782309103936">Өтө кыска</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" кеңейтүүсүн колдонуу үчүн баракты кайрадан жүктөңүз</translation> <translation id="4617270414136722281">Кеңейтүү параметрлери</translation> <translation id="4617880081511131945">Туташкан жок</translation> <translation id="4619564267100705184">Өзүңүз экениңизди ырастаңыз</translation> @@ -4003,6 +4006,7 @@ <translation id="4833683849865011483">Басып чыгаруу серверинен 1 принтер табылды</translation> <translation id="4836504898754963407">Манжа издерин башкаруу</translation> <translation id="4837128290434901661">Google Издөө кайтарылсынбы?</translation> +<translation id="4837165100461973682">Өзгөртүүлөрдү колдонуу үчүн баракты кайрадан жүктөңүз</translation> <translation id="4837926214103741331">Бул түзмөктү пайдаланууга уруксатыңыз жок. Кирүүгө уруксат алуу үчүн түзмөк ээсине кайрылыңыз.</translation> <translation id="4837952862063191349">Кулпуну ачып жана жергиликтүү дайын-даректериңизди калыбына келтирүү үчүн, эски <ph name="DEVICE_TYPE" /> сырсөзүңүздү киргизиңиз.</translation> <translation id="4838170306476614339">Телефонуңуздагы сүрөттөрдү, медиа файлдарды жана билдирмелерди көрүү</translation> @@ -4312,6 +4316,7 @@ <translation id="5150254825601720210">Netscape Тастыктама SSL сервер аталышы</translation> <translation id="5151354047782775295">Дисктен орун бошотуңуз же автоматтык түрдө жок кылына турган дайындарды тандаңыз</translation> <translation id="5153234146675181447">Телефон унутулсун</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> үчүн өркүндөтүлгөн жөндөөлөр</translation> <translation id="5154702632169343078">Субъект</translation> <translation id="5155327081870541046">Дарек тилкесинде керектүү сайттын ыкчам баскычын (мисалы, "@кыстармалар") киргизиңиз. Андан кийин артыкчылыктуу ыкчам баскычты басып, изделүүчү атоону киргизиңиз.</translation> @@ -5947,6 +5952,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> алыстан кошулду</translation> <translation id="6790820461102226165">Адам кошуу…</translation> <translation id="6793604637258913070">Курсор пайда болгондо же жылып жатканда баса белгиленсин</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Автоматтык түрдө скандоо функциясы менен экрандагы элементтерге автоматтык түрдө өтө аласыз. Элемент бөлүнүп көрсөтүлгөндө аны иштетүү үчүн “Тандоону” басыңыз.</translation> <translation id="6795884519221689054">Панда</translation> <translation id="6797493596609571643">Ой, бир жерден ката кетти окшойт.</translation> @@ -7819,6 +7825,7 @@ <translation id="8642947597466641025">Текстти чоңураак кылуу</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> кооптуу болушу мүмкүн. Google'дун Өркүндөтүлгөн коргоо программасына текшерүү үчүн жөнөтүлсүнбү?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Cookie файлдары жок}=1{1 cookie файлы бөгөттөлдү}other{# cookie файлы бөгөттөлдү}}</translation> +<translation id="864423554496711319">Аккаунтуңузда сакталган түзмөктөр</translation> <translation id="8644655801811752511">Бул коопсуздук ачкычы баштапкы абалга келтирилбей жатат. Ачкычты киргизериңиз менен, баштапкы абалына келтирип көрүңүз.</translation> <translation id="8645354835496065562">Сенсорду колдонуу мүмкүнчүлүгүнө уруксат бериле берсин</translation> <translation id="8645920082661222035">Кооптуу нерселерди божомолдоп, алар орун алганга чейин сизге кабарлап турат</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 84ad8616..1458e2c 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1561,6 +1561,7 @@ <translation id="2433836460518180625">Atrakinti tik įrenginį</translation> <translation id="2434449159125086437">Nepavyko nustatyti spausdintuvo. Patikrinkite konfigūraciją ir bandykite dar kartą.</translation> <translation id="2434758125294431199">Pasirinkite, kas gali bendrinti su jumis</translation> +<translation id="2434915728183570229">Dabar galite peržiūrėti telefono programas</translation> <translation id="2435137177546457207">„Google Chrome“ ir „ChromeOS Flex“ papildomos sąlygos</translation> <translation id="2435248616906486374">Tinklas atjungtas</translation> <translation id="2435457462613246316">Rodyti slaptažodį</translation> @@ -1926,6 +1927,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Pašalinkite vieną nepalaikomą programą}one{Pašalinkite # nepalaikomą programą}few{Pašalinkite # nepalaikomas programas}many{Pašalinkite # nepalaikomos programos}other{Pašalinkite # nepalaikomų programų}}</translation> <translation id="2776560192867872731">Pakeiskite įrenginio „<ph name="DEVICE_NAME" />“ pavadinimą</translation> <translation id="2777251078198759550">Ištrinti šį sudėtinį failą</translation> +<translation id="2778471504622896352">Pridėkite nuotolinių programų prie „ChromeOS“ paleidimo priemonės</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Įdiegiant „Linux“ programą įvyko klaida</translation> <translation id="2783298271312924866">Atsisiųsta</translation> @@ -3561,6 +3563,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ir dar tiek jungiklių: <ph name="NUMBER_OF_OTHER_SWITCHES" /></translation> <translation id="439266289085815679">„Bluetooth“ konfigūravimą valdo <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Redaguoti konfigūracijos failą</translation> +<translation id="4393713825278446281">Sparčiojo susiejimo įrenginiai išsaugoti <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Neleisti</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Atidaryti viską}=1{&Atidaryti žymę}one{&Atidaryti viską ({COUNT})}few{&Atidaryti viską ({COUNT})}many{&Atidaryti viską ({COUNT})}other{&Atidaryti viską ({COUNT})}}</translation> <translation id="4397372003838952832">Jums nereikia prisiminti šio slaptažodžio. Jį išsaugos <ph name="GOOGLE_PASSWORD_MANAGER" /> kaip priskirtą el. pašto adresui <ph name="EMAIL" /></translation> @@ -3791,6 +3794,7 @@ <translation id="4615586811063744755">nepasirinktas joks slapukas</translation> <translation id="461661862154729886">Energijos šaltinis</translation> <translation id="4617001782309103936">Per trumpas</translation> +<translation id="4617019240346358451">Puslapio įkėlimas iš naujo norint naudoti „<ph name="EXTENSION_NAME" />“</translation> <translation id="4617270414136722281">Plėtinių parinktys</translation> <translation id="4617880081511131945">Nepavyko užmegzti ryšio</translation> <translation id="4619564267100705184">Patvirtinti tapatybę</translation> @@ -4006,6 +4010,7 @@ <translation id="4833683849865011483">Rastas vienas spausdintuvas iš spausdinimo serverio</translation> <translation id="4836504898754963407">Kontrolinių kodų tvarkymas</translation> <translation id="4837128290434901661">Pakeisti atgal į „Google“ paiešką?</translation> +<translation id="4837165100461973682">Norėdami taikyti pakeitimus, įkelkite puslapį iš naujo</translation> <translation id="4837926214103741331">Neturite leidimo naudoti šį įrenginį. Susisiekite su įrenginio savininku, kad gautumėte leidimą prisijungti.</translation> <translation id="4837952862063191349">Kad atrakintumėte ir atkurtumėte vietinius duomenis, įveskite seną „<ph name="DEVICE_TYPE" />“ slaptažodį.</translation> <translation id="4838170306476614339">Peržiūrėkite telefono nuotraukas, mediją ir pranešimus</translation> @@ -4241,6 +4246,7 @@ <translation id="5072900412896857127">Nepavyksta įkelti „Google Play“ paslaugų teikimo sąlygų. Patikrinkite tinklo ryšį ir bandykite dar kartą.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" />, ir dar #}few{<ph name="FILE1" />, <ph name="FILE2" />, ir dar #}many{<ph name="FILE1" />, <ph name="FILE2" />, ir dar #}other{<ph name="FILE1" />, <ph name="FILE2" />, ir dar #}}</translation> <translation id="5074318175948309511">Kad nauji nustatymai įsigaliotų, šį puslapį gali tekti įkelti iš naujo.</translation> +<translation id="5074761966806028321">Norint užbaigti sąranką vis tiek reikia leidimo</translation> <translation id="5075910247684008552">Nesaugus turinys blokuojamas pagal numatytuosius nustatymus saugiose svetainėse</translation> <translation id="5078638979202084724">Žymėti visus skirtukus</translation> <translation id="5078796286268621944">Neteisingas PIN kodas</translation> @@ -4315,6 +4321,7 @@ <translation id="5150254825601720210">„Netscape“ sertifikato SSL serverio pavadinimas</translation> <translation id="5151354047782775295">Atlaisvinkite vietos diske arba pasirinkite duomenis, kuriuos galima automatiškai ištrinti</translation> <translation id="5153234146675181447">Pamiršti telefoną</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Išplėstiniai <ph name="PRINTING_DESTINATION" /> nustatymai</translation> <translation id="5154702632169343078">Tema</translation> <translation id="5155327081870541046">Adreso juostoje įveskite svetainės, kurios norite ieškoti, šaukinį, pvz., „@bookmarks“. Tada paspauskite norimą spartųjį klavišą ir įveskite paieškos terminą.</translation> @@ -4603,6 +4610,7 @@ <translation id="5449551289610225147">Netinkamas slaptažodis</translation> <translation id="5449588825071916739">Žymėti visus skirtukus</translation> <translation id="5449716055534515760">Uždaryti lan&gą</translation> +<translation id="5452446625764825792">Dabar galite peržiūrėti naujausias telefono nuotraukas, mediją ir programas</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (veikia neprisijungus)</translation> <translation id="5454166040603940656">naudojant <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Žiūrėti daugiau paieškos rezultatų</translation> @@ -4663,6 +4671,7 @@ <translation id="5499211612787418966">Šis dialogo langas šiuo metu nesuaktyvintas. Paspauskite „Alt“ – „Shift“ A, kad suaktyvintumėte šį dialogo langą.</translation> <translation id="5499313591153584299">Šis failas gali pažeisti jūsų kompiuterį.</translation> <translation id="5499453227627332024">Yra „Linux“ sudėtiniam rodiniui skirtas naujovinimas. Taip pat galite naujovinti galite ir vėliau iš Nustatymų programos.</translation> +<translation id="5499476581866658341">Dabar galite peržiūrėti naujausias telefono nuotraukas ir mediją</translation> <translation id="549957179819296104">Nauja piktograma</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Paieškos istorija<ph name="END_LINK_SEARCH" /> ir <ph name="BEGIN_LINK_GOOGLE" />kitos veiklos formos<ph name="END_LINK_GOOGLE" /> gali būti išsaugotos jūsų „Google“ paskyroje, kai esate prisijungę. Galite bet kada jas ištrinti.</translation> <translation id="5500709606820808700">Saugos patikra atlikta šiandien</translation> @@ -5957,6 +5966,7 @@ <translation id="6790497603648687708">Plėtinys „<ph name="EXTENSION_NAME" />“ buvo pridėtas nuotoliniu būdu</translation> <translation id="6790820461102226165">Pridėti asmenį...</translation> <translation id="6793604637258913070">Paryškinkite teksto žymeklį, kai jis rodomas arba juda</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Naudodami automatinį nuskaitymą galite automatiškai pereiti nuo vieno ekrano elemento prie kito. Kai elementas paryškintas, paspauskite „Pasirinkti“, kad jį suaktyvintumėte.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Oi, kažkas ne taip.</translation> @@ -6333,6 +6343,7 @@ <translation id="7152478047064750137">Šiam plėtiniui nereikia specialių leidimų</translation> <translation id="7154130902455071009">Pakeiskite pradžios puslapį į: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Esama nuotrauka iš fotoaparato arba failo</translation> +<translation id="7160182524506337403">Dabar galite peržiūrėti telefono pranešimus</translation> <translation id="7163202347044721291">Patvirtinamas aktyvinimo kodas...</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />“ patikrintose vietose gali nuskaityti vaizdus, vaizdo įrašus ir garso failus.</translation> <translation id="7167486101654761064">&Visada atidaryti tokio tipo failus</translation> @@ -7348,6 +7359,7 @@ <translation id="8138997515734480534">Virtualaus įrenginio „<ph name="VM_NAME" />“ būsena</translation> <translation id="8139447493436036221">„Google“ disko failai</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Daugiau funkcijų galite nustatyti „Phone Hub“ nustatymuose</translation> <translation id="8141584439523427891">Atidaroma alternatyvioje naršyklėje</translation> <translation id="8141725884565838206">Tvarkykite slaptažodžius</translation> <translation id="814204052173971714">{COUNT,plural, =1{vaizdo įrašą}one{# vaizdo įrašą}few{# vaizdo įrašus}many{# vaizdo įrašo}other{# vaizdo įrašų}}</translation> @@ -7555,6 +7567,7 @@ <translation id="833986336429795709">Kad atidarytumėte šią nuorodą, pasirinkite programą</translation> <translation id="8342221978608739536">Nebandžiau</translation> <translation id="8342861492835240085">Pasirinkti kolekciją</translation> +<translation id="8345848587667658367">Dabar galite peržiūrėti naujausias telefono nuotraukas, mediją, pranešimus ir programas</translation> <translation id="8347227221149377169">Spausdinimo užduotys</translation> <translation id="834785183489258869">Kai įjungtas inkognito režimas, svetainės negali naudoti slapukų, siekdamos sužinoti apie naršymo veiklą skirtingose svetainėse, pavyzdžiui, kad galėtų suasmeninti skelbimus. Funkcijos gali neveikti kai kuriose svetainėse.</translation> <translation id="8350789879725387295">Rašiklio įrankiai doke</translation> @@ -7830,6 +7843,7 @@ <translation id="8642947597466641025">Padidinti tekstą</translation> <translation id="8643443571868262066">Failas „<ph name="FILE_NAME" />“ gali būti pavojingas. Siųsti „Google“ papildomos apsaugos programai, kad nuskaitytų?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Nėra jokių slapukų}=1{Užblokuotas 1 slapukas}one{Užblokuotas # slapukas}few{Užblokuoti # slapukai}many{Užblokuota # slapuko}other{Užblokuota # slapukų}}</translation> +<translation id="864423554496711319">Jūsų paskyroje išsaugoti įrenginiai</translation> <translation id="8644655801811752511">Šio saugos rakto nustatyti iš naujo nepavyko. Pabandykite nustatyti raktą iš naujo iš karto jį įdėję.</translation> <translation id="8645354835496065562">Toliau leisti prieigą prie jutiklio</translation> <translation id="8645920082661222035">Numato ir įspėja jus apie pavojingus įvykius, prieš jiems nutinkant</translation> @@ -8162,6 +8176,7 @@ <translation id="8957757410289731985">Tinkinti profilį</translation> <translation id="895944840846194039">„JavaScript“ atmintis</translation> <translation id="8960208913905765425">Sparčiųjų atsakymų matavimo vienetų konvertavimas</translation> +<translation id="8960638196855923532">Dabar galite peržiūrėti telefono pranešimus ir programas</translation> <translation id="8962051932294470566">Vienu metu galite bendrinti tik vieną failą. Bandykite dar kartą, kai dabartinis perkėlimas bus baigtas.</translation> <translation id="8962083179518285172">Slėpti išsamią informaciją</translation> <translation id="8962918469425892674">Šioje svetainėje naudojami judesio arba šviesos jutikliai.</translation> @@ -8313,6 +8328,7 @@ <translation id="9103868373786083162">Paspauskite, kad eitumėte atgal į kontekstinį meniu ir peržiūrėtumėte istoriją</translation> <translation id="9108035152087032312">Pavadinti &langą...</translation> <translation id="9108072915170399168">Dabartinis duomenų naudojimo nustatymas yra „Be interneto“</translation> +<translation id="9108294543511800041">Dabar galite peržiūrėti naujausias telefono nuotraukas, mediją ir pranešimus</translation> <translation id="9108674852930645435">Peržiūrėkite, kas naujo „<ph name="DEVICE_TYPE" />“</translation> <translation id="9108808586816295166">Saugi DNS gali būti pasiekiama ne visą laiką</translation> <translation id="9109122242323516435">Kad atlaisvintumėte vietos, ištrinkite failus iš įrenginio saugyklos.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index ce32990..f04fcd9 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1910,6 +1910,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Noņemt vienu neatbalstītu lietotni}zero{Noņemt # neatbalstītas lietotnes}one{Noņemt # neatbalstītu lietotni}other{Noņemt # neatbalstītas lietotnes}}</translation> <translation id="2776560192867872731">Mainīt ierīces <ph name="DEVICE_NAME" /> nosaukumu</translation> <translation id="2777251078198759550">Dzēst šo konteineru</translation> +<translation id="2778471504622896352">Pievienot attālās lietotnes Chrome OS palaidējam</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Instalējot Linux lietojumprogrammu, radās kļūda</translation> <translation id="2783298271312924866">Lejupielādēts</translation> @@ -3545,6 +3546,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> un vēl <ph name="NUMBER_OF_OTHER_SWITCHES" /> slēdža taustiņi</translation> <translation id="439266289085815679">Bluetooth konfigurāciju kontrolē <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Rediģēt konfigurācijas failu</translation> +<translation id="4393713825278446281">Kontā <ph name="PRIMARY_EMAIL" /> saglabātās ierīces, kas savienotas, izmantojot ātro savienošanu pārī.</translation> <translation id="4394049700291259645">Atspējot</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Atvērt visas}=1{&Atvērt grāmatzīmi}zero{&Atvērt visas ({COUNT})}one{&Atvērt visas ({COUNT})}other{&Atvērt visas ({COUNT})}}</translation> <translation id="4397372003838952832">Jums nebūs jāatceras šī parole. Tā tiks saglabāta pakalpojumā “<ph name="GOOGLE_PASSWORD_MANAGER" />” ar kontu <ph name="EMAIL" />.</translation> @@ -3774,6 +3776,7 @@ <translation id="4615586811063744755">nav atlasīts neviens sīkfails</translation> <translation id="461661862154729886">Barošanas avots</translation> <translation id="4617001782309103936">Pārāk īss</translation> +<translation id="4617019240346358451">Atkārtoti ielādējiet lapu, lai izmantotu paplašinājumu “<ph name="EXTENSION_NAME" />”</translation> <translation id="4617270414136722281">Paplašinājumu opcijas</translation> <translation id="4617880081511131945">Nevar izveidot savienojumu</translation> <translation id="4619564267100705184">Apstiprināt identitāti</translation> @@ -3923,6 +3926,7 @@ <translation id="4768332406694066911">Jums ir sertifikāti no šīm organizācijām, kas jūs identificē</translation> <translation id="4770119228883592393">Pieprasīta atļauja. Lai atbildētu, nospiediet taustiņu ⌘, taustiņu Option un lejupvērsto bulttaustiņu.</translation> <translation id="4773112038801431077">Linux jaunināšana</translation> +<translation id="4774337692467964393">Ja ir ieslēgta funkcija Smart Lock, nav jāievada PIN vai parole.</translation> <translation id="4775142426314270551">Palīdziet uzlabot Chrome un Chrome OS funkcijas un veiktspēju, automātiski nosūtot Google serveriem avāriju pārskatus, kā arī diagnostikas un lietojuma datus. Noteiktus apkopotus datus izmantos arī Android lietotņu izstrādātāji un Google partneri. Ja bērna Google kontā ir ieslēgts iestatījums “Darbības tīmeklī un lietotnēs”, bērna Android dati var tikt saglabāti viņa Google kontā.</translation> <translation id="477647109558161443">Izveidot darbvirsmas saīsni</translation> <translation id="4776594120007763294">Lai pievienotu lapu, ko vēlaties lasīt vēlāk, noklikšķiniet uz pogas</translation> @@ -3972,6 +3976,7 @@ <translation id="4820236583224459650">Iestatīt kā aktīvu biļeti</translation> <translation id="4821935166599369261">%Profilēšana iespējota</translation> <translation id="4823484602432206655">Lasīt un mainīt lietotāja un ierīces iestatījumus</translation> +<translation id="4823894915586516138">Ar šo PIN vai paroli tiks aizsargāti jūsu dati šajā ierīcē (<ph name="DEVICE_TYPE" />), tostarp jebkāda informācija, kurai piekļūstat no sava tālruņa.</translation> <translation id="4824037980212326045">Linux datu dublēšana un atjaunošana</translation> <translation id="4824958205181053313">Vai atcelt sinhronizāciju?</translation> <translation id="4827675678516992122">Nevarēja izveidot savienojumu</translation> @@ -3987,6 +3992,7 @@ <translation id="4833683849865011483">Atrasts 1 printeris no drukas servera.</translation> <translation id="4836504898754963407">Pirkstu nospiedumu pārvaldība</translation> <translation id="4837128290434901661">Vai mainīt atpakaļ uz meklētājprogrammu Google meklēšana?</translation> +<translation id="4837165100461973682">Atkārtoti ielādējiet lapu, lai lietotu izmaiņas</translation> <translation id="4837926214103741331">Jums nav atļaujas izmantot šo ierīci. Lūdzu, sazinieties ar ierīces īpašnieku, lai saņemtu pierakstīšanās atļauju.</translation> <translation id="4837952862063191349">Lai atbloķētu un atjaunotu lokālos datus, lūdzu, ievadiet savu iepriekšējo ierīces <ph name="DEVICE_TYPE" /> paroli.</translation> <translation id="4838170306476614339">Skatiet tālruņa fotoattēlus, multivides saturu un paziņojumus.</translation> @@ -4296,6 +4302,7 @@ <translation id="5150254825601720210">Netscape sertifikāta SSL servera nosaukums</translation> <translation id="5151354047782775295">Atbrīvojiet diskā vietu; pretējā gadījumā atlasītie dati var tikt automātiski dzēsti.</translation> <translation id="5153234146675181447">Tālruņa aizmiršana</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" />: papildu iestatījumi</translation> <translation id="5154702632169343078">Tēma</translation> <translation id="5155327081870541046">Adreses joslā ievadiet tās vietnes saīsni, kurā vēlaties meklēt saturu, piemēram, “@bookmarks”. Pēc tam nospiediet izvēlēto īsinājumtaustiņu un ievadiet meklēšanas vienumu.</translation> @@ -5626,6 +5633,7 @@ <translation id="648927581764831596">Nav pieejama neviena ierīce</translation> <translation id="6490471652906364588">USB-C ierīce (pieslēgvieta pa labi)</translation> <translation id="6491376743066338510">Autorizācija neizdevās</translation> +<translation id="6492396476180293140">Iekšējā kamera tika deaktivizēta, nospiežot aparatūras slēdzi.</translation> <translation id="6494327278868541139">Rādīt uzlabotās aizsardzības informāciju</translation> <translation id="6494445798847293442">Nav sertifikāta izdevējiestāde</translation> <translation id="6494974875566443634">Pielāgošana</translation> @@ -5931,6 +5939,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> tika pievienots attāli</translation> <translation id="6790820461102226165">Pievienot lietotāju...</translation> <translation id="6793604637258913070">Izcelt teksta ievietošanas punktu, kad tas ir redzams vai tiek kustināts</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Ja ir ieslēgta automātiskā pārlūkošana, pārvietošanās pa vienumiem ekrānā notiek automātiski. Kad vienums ir izcelts, nospiediet slēdzi “Atlasīt”, lai vienumu aktivizētu.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Šķiet, ka radās kļūda.</translation> @@ -7803,6 +7812,7 @@ <translation id="8642947597466641025">Palielināt tekstu</translation> <translation id="8643443571868262066">Fails <ph name="FILE_NAME" />, iespējams, ir bīstams. Vai nosūtīt to pārbaudīšanai Google papildu aizsardzības programmā?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Nav sīkfailu}=1{Bloķēts 1 sīkfails}zero{Bloķēti # sīkfaili}one{Bloķēts # sīkfails}other{Bloķēti # sīkfaili}}</translation> +<translation id="864423554496711319">Jūsu kontā saglabātās ierīces</translation> <translation id="8644655801811752511">Nevar atiestatīt šo drošības atslēgu. Mēģiniet atiestatīt atslēgu uzreiz pēc tās ievietošanas.</translation> <translation id="8645354835496065562">Turpināt atļaut piekļuvi sensoriem</translation> <translation id="8645920082661222035">Tiek prognozēti bīstami notikumi, un jau iepriekš tiek parādīti brīdinājumi.</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 26ae2ab..f495da7 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">Отклучи го само уредот</translation> <translation id="2434449159125086437">Не може да се постави печатач. Проверете ја конфигурацијата и обидете се повторно.</translation> <translation id="2434758125294431199">Изберете кој може да споделува со вас</translation> +<translation id="2434915728183570229">Сега можете да ги прегледувате апликациите од телефонот</translation> <translation id="2435137177546457207">Дополнителни услови на Google Chrome и ChromeOS Flex</translation> <translation id="2435248616906486374">Мрежата е исклучена</translation> <translation id="2435457462613246316">Прикажи ја лозинката</translation> @@ -2240,6 +2241,7 @@ <translation id="3067198360141518313">Стартувај го приклучокот</translation> <translation id="3071624960923923138">Може да кликнете тука за да отворите нова картичка</translation> <translation id="3072775339180057696">Да се дозволи сајтот да прикажува <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Преведи ја целата страница</translation> <translation id="3075874217500066906">Потребно е рестартирање за да започне процесот на фабричко ресетирање. По рестартирањето ќе бидете прашани за потврда дали сакате да продолжите.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Зачувај само на уредов</translation> @@ -4243,6 +4245,7 @@ <translation id="5072900412896857127">„Условите за користење на Google Play“ не може да се вчитаат. Проверете ја мрежната врска и обидете се повторно.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> и уште #}other{<ph name="FILE1" />, <ph name="FILE2" /> и уште #}}</translation> <translation id="5074318175948309511">Можно е да биде потребно оваа страница повторно да се вчита пред новите поставки да стапат на сила.</translation> +<translation id="5074761966806028321">Сепак е потребна дозвола за да го завршите поставувањето</translation> <translation id="5075910247684008552">Несигурните содржини се стандардно блокирани на безбедни сајтови</translation> <translation id="5078638979202084724">Обележи ги сите картички</translation> <translation id="5078796286268621944">Неточен PIN</translation> @@ -4606,6 +4609,7 @@ <translation id="5449551289610225147">Погрешна лозинка</translation> <translation id="5449588825071916739">Обележи ги сите картички...</translation> <translation id="5449716055534515760">Затвори го про&зорецот</translation> +<translation id="5452446625764825792">Сега можете да ги прегледувате неодамнешните фотографии, аудиовизуелни содржини и апликации од телефонот</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (работи офлајн)</translation> <translation id="5454166040603940656">со <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Гледајте повеќе резултати од пребарувањето</translation> @@ -4666,6 +4670,7 @@ <translation id="5499211612787418966">Дијалогов не е нагласен во моментов. Притиснете Alt-Shift A за да го нагласите дијалогов.</translation> <translation id="5499313591153584299">Оваа датотека може да биде штетна за вашиот компјутер.</translation> <translation id="5499453227627332024">Достапна е надградба за вашиот контејнер за Linux. Може да го надградите и подоцна од апликацијата „Поставки“.</translation> +<translation id="5499476581866658341">Сега можете да ги прегледувате неодамнешните фотографии и аудиовизуелни содржини од телефонот</translation> <translation id="549957179819296104">Нова икона</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Историјата на пребарување<ph name="END_LINK_SEARCH" /> и <ph name="BEGIN_LINK_GOOGLE" />други форми на активност<ph name="END_LINK_GOOGLE" /> може да се зачувуваат во вашата сметка на Google кога сте најавени. Може да ги избришете во секое време.</translation> <translation id="5500709606820808700">Безбедносната проверка беше извршена денеска</translation> @@ -5093,6 +5098,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> ги користи камерата и микрофонот</translation> <translation id="5935158534896975820">Се подготвува барање за најавување со сертификат (се чека серверот)</translation> <translation id="5935656526031444304">Управувајте со „Безбедното прелистување“</translation> +<translation id="5936065461722368675">Преведи ја целата страница</translation> <translation id="5938002010494270685">Достапна е надградба за безбедност</translation> <translation id="5939518447894949180">Ресетирај</translation> <translation id="5939719276406088041">Не може да се создаде кратенката</translation> @@ -6332,6 +6338,7 @@ <translation id="7152478047064750137">Екстензијава не бара специјални дозволи</translation> <translation id="7154130902455071009">Променете ја почетната страница во: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Постојна фотографија од камера или датотека</translation> +<translation id="7160182524506337403">Сега можете да ги прегледувате известувањата од телефонот</translation> <translation id="7163202347044721291">Се потврдува кодот за активација…</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />“ може да чита слики, видео и аудио датотеки на означените локации.</translation> <translation id="7167486101654761064">&Секогаш отворај датотеки од овој тип</translation> @@ -7346,6 +7353,7 @@ <translation id="8138997515734480534">Статус на <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Датотеки на Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" /> <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Можете да поставите други функции во поставките за Phone Hub</translation> <translation id="8141584439523427891">Се отвора во алтернативен прелистувач сега</translation> <translation id="8141725884565838206">Управувај со своите лозинки</translation> <translation id="814204052173971714">{COUNT,plural, =1{видео}one{# видео}other{# видеа}}</translation> @@ -7556,6 +7564,7 @@ <translation id="833986336429795709">Изберете апликација за да го отворите линков</translation> <translation id="8342221978608739536">Не го пробав</translation> <translation id="8342861492835240085">Изберете колекција</translation> +<translation id="8345848587667658367">Сега можете да ги прегледувате неодамнешните фотографии, аудиовизуелни содржини, известувања и апликации од телефонот</translation> <translation id="8347227221149377169">Налози за печатење</translation> <translation id="834785183489258869">Додека сте во „Инкогнито“, сајтовите не може да ги користат колачињата за да ја гледаат вашата активност од прелистувањето на различни сајтови, на пример, за персонализирање реклами. Функциите на некои сајтови може да не функционираат</translation> <translation id="8350789879725387295">Алатката пенкало на док</translation> @@ -8162,6 +8171,7 @@ <translation id="8957757410289731985">Приспособете го профилот</translation> <translation id="895944840846194039">Меморија на JavaScript</translation> <translation id="8960208913905765425">Конверзија на валути на „Брзи одговори“</translation> +<translation id="8960638196855923532">Сега можете да ги прегледувате неодамнешните известувања и апликации од телефонот</translation> <translation id="8962051932294470566">Може да споделувате само по една датотека. Обидете се повторно кога ќе заврши тековниот пренос.</translation> <translation id="8962083179518285172">Сокриј детали</translation> <translation id="8962918469425892674">Сајтов користи сензори за движење или светлина.</translation> @@ -8313,6 +8323,7 @@ <translation id="9103868373786083162">Притиснете за да се вратите назад, контекстуално мени за да ја видите историјата</translation> <translation id="9108035152087032312">Именувајте го &прозорецот…</translation> <translation id="9108072915170399168">Моменталната поставка за користење интернет е „Без интернет“</translation> +<translation id="9108294543511800041">Сега можете да ги прегледувате неодамнешните фотографии, аудиовизуелни содржини и известувања од телефонот</translation> <translation id="9108674852930645435">Откријте што има ново на <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">Безбедниот DNS можеби не е достапен во секое време</translation> <translation id="9109122242323516435">За да ослободите простор, избришете датотеки од меморијата на уредот.</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index b56ac660..0ac47803 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1542,6 +1542,7 @@ <translation id="2433836460518180625">ഉപകരണം മാത്രം അൺലോക്ക് ചെയ്യുക</translation> <translation id="2434449159125086437">പ്രിന്റർ സജ്ജീകരിക്കാനാവുന്നില്ല. കോൺഫിഗറേഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="2434758125294431199">നിങ്ങളുമായി പങ്കിടാൻ ആർക്കെല്ലാം കഴിയുമെന്നത് തിരഞ്ഞെടുക്കുക</translation> +<translation id="2434915728183570229">നിങ്ങളുടെ ഫോണിലെ ആപ്പുകൾ ഇപ്പോൾ കാണാനാകും</translation> <translation id="2435137177546457207">Google Chrome, ChromeOS Flex അധിക നിബന്ധനകൾ</translation> <translation id="2435248616906486374">നെറ്റ്വർക്ക് വിച്ഛേദിച്ചു</translation> <translation id="2435457462613246316">പാസ്വേഡ് കാണിക്കുക</translation> @@ -4224,6 +4225,7 @@ <translation id="5072900412896857127">Google Play സേവന നിബന്ധനകൾ ലോഡ് ചെയ്യാനാകുന്നില്ല. നിങ്ങളുടെ നെറ്റ്വർക്ക് കണക്ഷൻ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" /> എന്നിവ}other{<ph name="FILE1" />, <ph name="FILE2" /> എന്നിവയും മറ്റ് # എണ്ണവും}}</translation> <translation id="5074318175948309511">പുതിയ ക്രമീകരണങ്ങൾ പ്രയോഗത്തിൽ വരുന്നതിന് മുമ്പ് ഈ പേജ് റീലോഡ് ചെയ്യേണ്ടതായി വരാം.</translation> +<translation id="5074761966806028321">സജ്ജീകരണം പൂർത്തിയാക്കാൻ ഇപ്പോഴും അനുമതി ആവശ്യമാണ്</translation> <translation id="5075910247684008552">സുരക്ഷിതമല്ലാത്ത ഉള്ളടക്കം, സുരക്ഷിത സൈറ്റുകളിൽ ഡിഫോൾട്ടായി ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു</translation> <translation id="5078638979202084724">എല്ലാ ടാബുകളും ബുക്ക്മാര്ക്ക് ചെയ്യുക</translation> <translation id="5078796286268621944">തെറ്റായ PIN</translation> @@ -4587,6 +4589,7 @@ <translation id="5449551289610225147">പാസ്വേഡ് അസാധുവാണ്</translation> <translation id="5449588825071916739">എല്ലാ ടാബുകളും ബുക്ക്മാര്ക്ക് ചെയ്യുക</translation> <translation id="5449716055534515760">വി&ന്ഡോ അടയ്ക്കുക</translation> +<translation id="5452446625764825792">നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും ആപ്പുകളും ഇപ്പോൾ കാണാനാകും</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (ഓഫ്ലൈനിൽ പ്രവർത്തിക്കുന്നു)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> എന്നതിനൊപ്പം</translation> <translation id="545484289444831485">കൂടുതൽ തിരയൽ ഫലങ്ങൾ കാണുക</translation> @@ -4647,6 +4650,7 @@ <translation id="5499211612787418966">ഈ ഡയലോഗ് നിലവിൽ ഫോക്കസ് ചെയ്തിട്ടില്ല. ഈ ഡയലോഗ് ഫോക്കസ് ചെയ്യാൻ Alt-Shift A അമർത്തുക.</translation> <translation id="5499313591153584299">ഈ ഫയൽ നിങ്ങളുടെ കമ്പ്യൂട്ടറിന് ഹാനികരമായേക്കാം.</translation> <translation id="5499453227627332024">നിങ്ങളുടെ Linux കണ്ടെയ്നറിനുള്ള അപ്ഗ്രേഡ് ലഭ്യമാണ്. പിന്നീട് ക്രമീകരണ ആപ്പിലൂടെയും നിങ്ങൾക്ക് അപ്ഗ്രേഡ് ചെയ്യാം.</translation> +<translation id="5499476581866658341">നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും ഇപ്പോൾ കാണാനാകും</translation> <translation id="549957179819296104">പുതിയ ഐക്കൺ</translation> <translation id="5500168250243071806">നിങ്ങൾ സൈൻ ഇൻ ചെയ്തിരിക്കുമ്പോൾ <ph name="BEGIN_LINK_SEARCH" />തിരയൽ ചരിത്രവും<ph name="END_LINK_SEARCH" /> <ph name="BEGIN_LINK_GOOGLE" />മറ്റ് തരത്തിലുള്ള ആക്റ്റിവിറ്റിയും<ph name="END_LINK_GOOGLE" /> Google അക്കൗണ്ടിൽ സംരക്ഷിച്ചേക്കാം. അവ ഏതുസമയത്തും നിങ്ങൾക്ക് ഇല്ലാതാക്കാം.</translation> <translation id="5500709606820808700">സുരക്ഷാ പരിശോധന ഇന്ന് നടത്തി</translation> @@ -6313,6 +6317,7 @@ <translation id="7152478047064750137">ഈ വിപുലീകരണത്തിന് പ്രത്യേക അനുമതികളൊന്നും ആവശ്യമില്ല</translation> <translation id="7154130902455071009">നിങ്ങളുടെ ആരംഭ പേജ് ഇതായി മാറ്റുക: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">ക്യാമറയിൽ നിന്നോ ഫയലിൽ നിന്നോ ഉള്ള നിലവിലെ ഫോട്ടോ</translation> +<translation id="7160182524506337403">നിങ്ങളുടെ ഫോണിലെ അറിയിപ്പുകൾ ഇപ്പോൾ കാണാനാകും</translation> <translation id="7163202347044721291">സജീവമാക്കൽ കോഡ് പരിശോധിച്ചുറപ്പിക്കുന്നു...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" എന്നതിന് ചെക്ക് ചെയ്ത ലൊക്കേഷനുകളിൽ ചിത്രങ്ങളും വീഡിയോകളും ശബ്ദ ഫയലുകളും റീഡ് ചെയ്യാനാകും.</translation> <translation id="7167486101654761064">&എപ്പോഴും ഈ തരത്തിലുള്ള ഫയലുകള് തുറക്കുക</translation> @@ -7327,6 +7332,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> നില</translation> <translation id="8139447493436036221">Google Drive ഫയലുകൾ</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">ഫോൺ ഹബ് ക്രമീകരണത്തിൽ നിങ്ങൾക്ക് കൂടുതൽ ഫീച്ചറുകൾ സജ്ജീകരിക്കാം</translation> <translation id="8141584439523427891">ഇപ്പോൾ മറ്റൊരു ബ്രൗസറിൽ തുറക്കുന്നു</translation> <translation id="8141725884565838206">നിങ്ങളുടെ പാസ്വേഡുകൾ നിയന്ത്രിക്കുക</translation> <translation id="814204052173971714">{COUNT,plural, =1{ഒരു വീഡിയോ}other{# വീഡിയോകൾ}}</translation> @@ -7534,6 +7540,7 @@ <translation id="833986336429795709">ഈ ലിങ്ക് തുറക്കാൻ ഒരു ആപ്പ് തിരഞ്ഞെടുക്കുക</translation> <translation id="8342221978608739536">ശ്രമിച്ചില്ല</translation> <translation id="8342861492835240085">ഒരു ശേഖരം തിരഞ്ഞെടുക്കുക</translation> +<translation id="8345848587667658367">നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും അറിയിപ്പുകളും ആപ്പുകളും ഇപ്പോൾ കാണാനാകും</translation> <translation id="8347227221149377169">പ്രിന്റ് ജോലികൾ</translation> <translation id="834785183489258869">അദൃശ്യ മോഡിലായിരിക്കുമ്പോൾ, വ്യത്യസ്ത സൈറ്റുകളിലുടനീളമുള്ള നിങ്ങളുടെ ബ്രൗസിംഗ് ആക്റ്റിവിറ്റി കാണാൻ സൈറ്റുകൾക്ക് നിങ്ങളുടെ കുക്കികൾ ഉപയോഗിക്കാനാകില്ല. ഉദാഹരണത്തിന്, പരസ്യങ്ങൾ വ്യക്തിപരമാക്കാൻ. ചില സൈറ്റുകളിലെ ഫീച്ചറുകൾ പ്രവർത്തിച്ചേക്കില്ല.</translation> <translation id="8350789879725387295">ഡോക്കിലെ സ്റ്റൈലസ് ടൂളുകൾ</translation> @@ -8138,6 +8145,7 @@ <translation id="8957757410289731985">പ്രൊഫൈൽ ഇഷ്ടാനുസൃതമാക്കുക</translation> <translation id="895944840846194039">JavaScript മെമ്മറി</translation> <translation id="8960208913905765425">'വേഗത്തിലുള്ള ഉത്തരങ്ങൾ' യൂണിറ്റ് പരിവർത്തനം</translation> +<translation id="8960638196855923532">നിങ്ങളുടെ ഫോണിലെ അറിയിപ്പുകളും ആപ്പുകളും ഇപ്പോൾ കാണാനാകും</translation> <translation id="8962051932294470566">നിങ്ങൾക്ക് ഒരു സമയത്ത് ഒരു ഫയൽ മാത്രമേ പങ്കിടാൻ കഴിയൂ. നിലവിലെ കൈമാറ്റം പൂർത്തിയാക്കുമ്പോൾ വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="8962083179518285172">വിശദാംശങ്ങൾ മറയ്ക്കുക</translation> <translation id="8962918469425892674">ഈ സൈറ്റ് ചലന സെൻസർ അല്ലെങ്കിൽ വെളിച്ച സെൻസർ ഉപയോഗിക്കുന്നു.</translation> @@ -8289,6 +8297,7 @@ <translation id="9103868373786083162">ചരിത്രം കാണാൻ തിരികെ പോകുന്നതിന് സന്ദർഭ മെനു അമർത്തുക</translation> <translation id="9108035152087032312">&വിൻഡോയ്ക്ക് പേര് നൽകുക...</translation> <translation id="9108072915170399168">നിലവിലെ ഡാറ്റ ഉപയോഗ ക്രമീകരണം "ഇന്റർനെറ്റ് ഇല്ലാതെ" ആണ്</translation> +<translation id="9108294543511800041">നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും അറിയിപ്പുകളും ഇപ്പോൾ കാണാനാകും</translation> <translation id="9108674852930645435"><ph name="DEVICE_TYPE" /> എന്നതിൽ പുതുതായി എന്താണുള്ളതെന്ന് കാണൂ</translation> <translation id="9108808586816295166">എപ്പോഴും സുരക്ഷിത DNS ലഭ്യമായേക്കില്ല</translation> <translation id="9109122242323516435">ഇടം സൃഷ്ടിക്കാൻ, ഉപകരണ സ്റ്റോറേജിൽ നിന്ന് ഫയലുകൾ ഇല്ലാതാക്കുക.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index d568ea4..3626e36 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -2236,6 +2236,7 @@ <translation id="3067198360141518313">Энэ нэмэлт өргөтгөлийг ажиллуул</translation> <translation id="3071624960923923138">Та шинэ таб нээхийн тулд энд товших боломжтой</translation> <translation id="3072775339180057696">Сайтад <ph name="FILE_NAME" /> файлыг харахыг зөвшөөрөх үү?</translation> +<translation id="3074499504015191586">Бүтэн хуудсыг орчуулах</translation> <translation id="3075874217500066906">Powerwash процессыг эхлүүлэхийн тулд та төхөөрөмжөө дахин эхлүүлнэ үү. Төхөөрөмжийг дахин эхлүүлсний дараагаар танаас цаашид үргэлжлэх эсэхийг асууна.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" /> / <ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Зөвхөн энэ төхөөрөмж дээр хадгалах</translation> @@ -5091,6 +5092,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> таны камер болон микрофоныг ашиглаж байна</translation> <translation id="5935158534896975820">Гэрчилгээнд гарын үсэг зурах хүсэлтийг бэлтгэж байна (сервер дээр хүлээж байна)</translation> <translation id="5935656526031444304">Аюулгүй хайлтыг удирдах</translation> +<translation id="5936065461722368675">Бүтэн хуудсыг орчуулах</translation> <translation id="5938002010494270685">Аюулгүй байдлын сайжруулалтыг хийх боломжтой</translation> <translation id="5939518447894949180">Дахин сэргээх</translation> <translation id="5939719276406088041">Товчлол үүсгэх боломжгүй</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 0d5cc5c..5d20bd495 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1557,6 +1557,7 @@ <translation id="2433836460518180625">फक्त डिव्हाइस अनलॉक करा</translation> <translation id="2434449159125086437">प्रिंटर सेट करू शकलो नाही. कृपया कॉंफिगरेशन तपासा आणि पुन्हा प्रयत्न करा.</translation> <translation id="2434758125294431199">तुमच्यासोबत कोण शेअर करू शकते ते निवडा</translation> +<translation id="2434915728183570229">तुम्ही आता तुमच्या फोनमधील ॲप्स पाहू शकता</translation> <translation id="2435137177546457207">Google Chrome आणि ChromeOS Flex अतिरिक्त अटी</translation> <translation id="2435248616906486374">नेटवर्क डिस्कनेक्ट झाले</translation> <translation id="2435457462613246316">पासवर्ड दर्शवा</translation> @@ -4239,6 +4240,7 @@ <translation id="5072900412896857127">Google Play सेवा अटी लोड केल्या जाऊ शकत नाही. कृपया तुमचे नेटवर्क कनेक्शन तपासा आणि पुन्हा प्रयत्न करा.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> आणि आणखी #}}</translation> <translation id="5074318175948309511">नवीन सेटिंग्ज प्रभावी होण्यापूर्वी या पृष्ठास रीलोड करण्याची आवश्यकता असू शकते.</translation> +<translation id="5074761966806028321">सेटअप पूर्ण करण्यासाठी अजूनही परवानगी आवश्यक आहे</translation> <translation id="5075910247684008552">सुरक्षित साइटवर असुरक्षित आशय बाय डीफॉल्ट ब्लॉक केला आहे</translation> <translation id="5078638979202084724">सर्व टॅब बुकमार्क करा</translation> <translation id="5078796286268621944">चुकीचा पिन</translation> @@ -4602,6 +4604,7 @@ <translation id="5449551289610225147">चुकीचा पासवर्ड</translation> <translation id="5449588825071916739">सर्व टॅब बुकमार्क करा</translation> <translation id="5449716055534515760">विं&डो बंद करा</translation> +<translation id="5452446625764825792">तुम्ही आता तुमच्या फोनमधील अलीकडील फोटो, मीडिया आणि ॲप्स पाहू शकता</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (ऑफलाइन काम करते)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> सह</translation> <translation id="545484289444831485">आणखी शोध परिणाम पहा</translation> @@ -4662,6 +4665,7 @@ <translation id="5499211612787418966">हा डायलॉग सध्या फोकस केलेला नाही. हा डायलॉग फोकस करण्यासाठी, Alt-Shift A दाबा.</translation> <translation id="5499313591153584299">ही फाइल तुमच्या कॉंप्युटरसाठी हानिकारक ठरू शकते.</translation> <translation id="5499453227627332024">तुमच्या Linux कंटेनर साठी अपग्रेड उपलब्ध आहे. सेटिंग्ज अॅपमधून तुम्ही नंतरदेखील अपग्रेड करू शकता.</translation> +<translation id="5499476581866658341">तुम्ही आता तुमच्या फोनमधील अलीकडील फोटो आणि मीडिया पाहू शकता</translation> <translation id="549957179819296104">नवीन आयकन</translation> <translation id="5500168250243071806">तुम्ही साइन इन केलेले असते तेव्हा, तुमच्या Google खाते मध्ये <ph name="BEGIN_LINK_SEARCH" />शोध इतिहास<ph name="END_LINK_SEARCH" /> आणि <ph name="BEGIN_LINK_GOOGLE" />इतर प्रकारची ॲक्टिव्हिटी<ph name="END_LINK_GOOGLE" /> सेव्ह केली जाऊ शकते. तुम्ही ती कधीही हटवू शकता.</translation> <translation id="5500709606820808700">सुरक्षा तपासणी आज रन केली गेली</translation> @@ -6327,6 +6331,7 @@ <translation id="7152478047064750137">या एक्स्टेंशनला कोणत्याही विशिष्ट परवानग्यांची आवश्यकता नाही</translation> <translation id="7154130902455071009">तुमचे सुरू पृष्ठ यावर बदला: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">कॅमेरा किंवा फाईल मधील विद्यमान फोटो</translation> +<translation id="7160182524506337403">तुम्ही आता तुमच्या फोनमधील सूचना पाहू शकता</translation> <translation id="7163202347044721291">अॅक्टिव्हेशन कोडची पडताळणी करत आहे…</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" इमेज, व्हिडिओ आणि चेक केलेल्या स्थानांमधील ध्वनी फाइल वाचू शकते.</translation> <translation id="7167486101654761064">&नेहमी या प्रकारच्या फाइल्स उघडा</translation> @@ -7340,6 +7345,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> स्टेटस</translation> <translation id="8139447493436036221">Google Drive फाइल</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">तुम्ही फोन हब सेटिंग्जमध्ये आणखी वैशिष्ट्ये सेट करू शकता</translation> <translation id="8141584439523427891">आता पर्यायी ब्राउझरमध्ये उघडत आहे</translation> <translation id="8141725884565838206">तुमचे पासवर्ड व्यवस्थापित करा</translation> <translation id="814204052173971714">{COUNT,plural, =1{व्हिडिओ}other{# व्हिडिओ}}</translation> @@ -7547,6 +7553,7 @@ <translation id="833986336429795709">ही लिंक उघडण्यासाठी, अॅप निवडा</translation> <translation id="8342221978608739536">वापरून पहिले नाही</translation> <translation id="8342861492835240085">संकलन निवडा</translation> +<translation id="8345848587667658367">तुम्ही आता तुमच्या फोनमधील अलीकडील फोटो, मीडिया, सूचना आणि ॲप्स पाहू शकता</translation> <translation id="8347227221149377169">प्रिंट कार्ये</translation> <translation id="834785183489258869">गुप्त मोडमध्ये असताना, वेगवेगळ्या साइटवरील तुमची ब्राउझिंग अॅक्टिव्हिटी पाहण्यासाठी साइट तुमच्या कुकी वापरू शकत नाहीत. उदाहरणार्थ, जाहिराती पर्सनलाइझ करण्याकरिता. काही साइटवर वैशिष्ट्ये कदाचित काम करणार नाहीत.</translation> <translation id="8350789879725387295">डॉकमध्ये स्टायलस टूल</translation> @@ -8153,6 +8160,7 @@ <translation id="8957757410289731985">प्रोफाइल कस्टमाइझ करा</translation> <translation id="895944840846194039">JavaScript मेमरी</translation> <translation id="8960208913905765425">क्विक आन्सर्स युनिट कन्व्हर्जन</translation> +<translation id="8960638196855923532">तुम्ही आता तुमच्या फोनमधील सूचना आणि ॲप्स पाहू शकता</translation> <translation id="8962051932294470566">तुम्ही एकावेळी फक्त एक फाइल शेअर करू शकता. सध्याची ट्रान्सफर पूर्ण झाल्यावर पुन्हा प्रयत्न करा.</translation> <translation id="8962083179518285172">तपशील लपवा</translation> <translation id="8962918469425892674">ही साइट गती किंवा प्रकाश सेन्सर वापरत आहे.</translation> @@ -8304,6 +8312,7 @@ <translation id="9103868373786083162">परत जाण्यासाठी दाबा, इतिहास पाहण्यासाठी संदर्भ मेनूवर जा</translation> <translation id="9108035152087032312">नाव आणि विंडो...</translation> <translation id="9108072915170399168">सध्याचे डेटा वापर सेटिंग हे इंटरनेटशिवाय असे आहे</translation> +<translation id="9108294543511800041">तुम्ही आता तुमच्या फोनमधील अलीकडील फोटो, मीडिया आणि सूचना पाहू शकता</translation> <translation id="9108674852930645435">तुमच्या <ph name="DEVICE_TYPE" /> वर काय नवीन आहे ते पहा</translation> <translation id="9108808586816295166">सुरक्षित DNS कदाचित प्रत्येक वेळी उपलब्ध नसेल</translation> <translation id="9109122242323516435">स्थान मोकळे करण्यासाठी, डिव्हाइस स्टोरेजमधून फाइल हटवा.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index f2bddc98..4868532 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -1558,6 +1558,7 @@ <translation id="2433836460518180625">Buka kunci peranti sahaja</translation> <translation id="2434449159125086437">Tidak dapat menyediakan pencetak. Sila semak konfigurasi dan cuba lagi.</translation> <translation id="2434758125294431199">Pilih orang yang boleh berkongsi dengan anda</translation> +<translation id="2434915728183570229">Kini anda dapat melihat apl telefon anda</translation> <translation id="2435137177546457207">Syarat Tambahan Google Chrome dan Chrome OS Flex</translation> <translation id="2435248616906486374">Rangkaian diputuskan</translation> <translation id="2435457462613246316">Paparkan kata laluan</translation> @@ -1923,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Alih keluar 1 apl yang tidak disokong}other{Alih keluar # apl yang tidak disokong}}</translation> <translation id="2776560192867872731">Tukar nama peranti untuk <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Padamkan bekas ini</translation> +<translation id="2778471504622896352">Tambahkan apl kawalan jauh pada pelancar Chrome OS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Ralat semasa memasang aplikasi Linux</translation> <translation id="2783298271312924866">Sudah dimuat turun</translation> @@ -3558,6 +3560,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> dan <ph name="NUMBER_OF_OTHER_SWITCHES" /> lagi suis</translation> <translation id="439266289085815679">Konfigurasi Blueooth dikawal oleh <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Edit fail konfigurasi</translation> +<translation id="4393713825278446281">Peranti Ganding Pantas disimpan pada <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Lumpuhkan</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Buka semua}=1{&Buka penanda halaman}other{&Buka semua ({COUNT})}}</translation> <translation id="4397372003838952832">Anda tidak perlu mengingati kata laluan ini. Kata laluan ini akan disimpan pada <ph name="GOOGLE_PASSWORD_MANAGER" /> untuk <ph name="EMAIL" /></translation> @@ -3788,6 +3791,7 @@ <translation id="4615586811063744755">tiada kuki dipilih</translation> <translation id="461661862154729886">Sumber tenaga</translation> <translation id="4617001782309103936">Terlalu pendek</translation> +<translation id="4617019240346358451">Muat semula halaman untuk menggunakan "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Pilihan sambungan</translation> <translation id="4617880081511131945">Tidak dapat mewujudkan sambungan</translation> <translation id="4619564267100705184">Sahkan orang itu ialah anda</translation> @@ -4003,6 +4007,7 @@ <translation id="4833683849865011483">Menjumpai 1 pencetak daripada pelayan cetak</translation> <translation id="4836504898754963407">Urus cap jari</translation> <translation id="4837128290434901661">Tukar kembali kepada Google Search?</translation> +<translation id="4837165100461973682">Muat semula halaman untuk menggunakan perubahan anda</translation> <translation id="4837926214103741331">Anda tiada kebenaran untuk menggunakan peranti ini. Sila hubungi pemilik peranti untuk mendapatkan kebenaran log masuk.</translation> <translation id="4837952862063191349">Untuk membuka kunci dan memulihkan data tempatan anda, sila masukkan kata laluan <ph name="DEVICE_TYPE" /> lama anda.</translation> <translation id="4838170306476614339">Lihat foto, media dan pemberitahuan telefon anda.</translation> @@ -4238,6 +4243,7 @@ <translation id="5072900412896857127">Syarat Perkhidmatan Google Play tidak dapat dimuatkan. Sila periksa sambungan rangkaian dan cuba semula.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> dan # lagi}}</translation> <translation id="5074318175948309511">Halaman ini mungkin perlu dimuat semula sebelum tetapan baru berkesan.</translation> +<translation id="5074761966806028321">Kebenaran masih diperlukan untuk menyelesaikan persediaan</translation> <translation id="5075910247684008552">Kandungan tidak selamat disekat secara lalai pada tapak selamat</translation> <translation id="5078638979202084724">Tanda halaman semua tab</translation> <translation id="5078796286268621944">PIN salah</translation> @@ -4312,6 +4318,7 @@ <translation id="5150254825601720210">Nama Pelayan SSL Sijil Netscape</translation> <translation id="5151354047782775295">Kosongkan ruang cakera, jika tidak data terpilih akan dipadamkan secara automatik.</translation> <translation id="5153234146675181447">Lupakan telefon</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Tetapan lanjutan untuk <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Subjek</translation> <translation id="5155327081870541046">Dalam bar alamat, masukkan pintasan bagi laman tempat anda ingin melakukan carian, seperti "@bookmarks". Kemudian, tekan pintasan papan kekunci pilihan anda dan masukkan istilah carian anda.</translation> @@ -4600,6 +4607,7 @@ <translation id="5449551289610225147">Kata laluan tidak sah</translation> <translation id="5449588825071916739">Tanda Halaman Semua Tab</translation> <translation id="5449716055534515760">Tutup Te&tingkap</translation> +<translation id="5452446625764825792">Kini anda dapat melihat foto, media dan apl terbaharu telefon anda</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (berfungsi di luar talian)</translation> <translation id="5454166040603940656">dengan <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Lihat lebih banyak hasil carian</translation> @@ -4660,6 +4668,7 @@ <translation id="5499211612787418966">Dialog ini tidak difokuskan pada masa ini. Tekan Alt-Shift A untuk fokus pada dialog ini.</translation> <translation id="5499313591153584299">Fail ini mungkin berbahaya bagi komputer anda.</translation> <translation id="5499453227627332024">Peningkatan tersedia untuk Linux Container anda. Anda juga boleh membuat peningkatan kemudian daripada apl Tetapan.</translation> +<translation id="5499476581866658341">Kini anda dapat melihat foto dan media terbaharu telefon anda</translation> <translation id="549957179819296104">Ikon baharu</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Sejarah carian<ph name="END_LINK_SEARCH" /> dan <ph name="BEGIN_LINK_GOOGLE" />bentuk aktiviti lain<ph name="END_LINK_GOOGLE" /> mungkin disimpan dalam Akaun Google anda semasa anda dilog masuk. Anda boleh memadamkan data tersebut pada bila-bila masa.</translation> <translation id="5500709606820808700">Semakan keselamatan dijalankan hari ini</translation> @@ -5947,6 +5956,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> telah ditambahkan dari jauh</translation> <translation id="6790820461102226165">Tambah Orang...</translation> <translation id="6793604637258913070">Serlahkan karet teks apabila dipaparkan atau bergerak</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Autoimbas membolehkan anda bergerak melalui item pada skrin secara automatik. Apabila item diserlahkan, tekan “Pilih” untuk mengaktifkan item tersebut.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Op, sesuatu telah berlaku.</translation> @@ -6323,6 +6333,7 @@ <translation id="7152478047064750137">Sambungan ini tidak memerlukan kebenaran khas</translation> <translation id="7154130902455071009">Tukar halaman permulaan anda kepada: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Foto sedia ada daripada kamera atau fail</translation> +<translation id="7160182524506337403">Kini anda dapat melihat pemberitahuan telefon anda</translation> <translation id="7163202347044721291">Mengesahkan kod pengaktifan...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" boleh membaca fail imej, video dan bunyi di lokasi yang ditandai.</translation> <translation id="7167486101654761064">&Sentiasa buka fail jenis ini</translation> @@ -7338,6 +7349,7 @@ <translation id="8138997515734480534">Status <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Fail Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Anda boleh menyediakan lebih banyak ciri dalam tetapan Hab Telefon</translation> <translation id="8141584439523427891">Membuka dalam penyemak imbas alternatif sekarang</translation> <translation id="8141725884565838206">Urus kata laluan anda</translation> <translation id="814204052173971714">{COUNT,plural, =1{satu video}other{# video}}</translation> @@ -7545,6 +7557,7 @@ <translation id="833986336429795709">Untuk membuka pautan ini, pilih apl</translation> <translation id="8342221978608739536">Tidak mencuba</translation> <translation id="8342861492835240085">Pilih koleksi</translation> +<translation id="8345848587667658367">Kini anda dapat melihat foto, media, pemberitahuan dan apl terbaharu telefon anda</translation> <translation id="8347227221149377169">Tugas cetak</translation> <translation id="834785183489258869">Semasa dalam mod Inkognito, laman tidak boleh menggunakan kuki anda untuk melihat aktiviti penyemakan imbas anda merentas beberapa laman yang berlainan, contohnya, untuk memeribadikan iklan. Ciri pada sesetengah laman mungkin tidak berfungsi.</translation> <translation id="8350789879725387295">Alatan stilus dalam dok</translation> @@ -7821,6 +7834,7 @@ <translation id="8642947597466641025">Jadikan Teks Lebih Besar</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> mungkin berbahaya. Hantar kepada Perlindungan Lanjutan Google untuk pengimbasan?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Tiada kuki}=1{1 kuki disekat}other{# kuki disekat}}</translation> +<translation id="864423554496711319">Peranti yang disimpan pada akaun anda</translation> <translation id="8644655801811752511">Tidak dapat menetapkan semula kunci keselamatan ini. Cuba tetapkan semula kunci sejurus selepas memasukkannya.</translation> <translation id="8645354835496065562">Teruskan membenarkan akses penderia</translation> <translation id="8645920082661222035">Meramalkan dan memberi anda amaran tentang peristiwa berbahaya sebelum peristiwa itu berlaku</translation> @@ -8150,6 +8164,7 @@ <translation id="8957757410289731985">Sesuaikan profil</translation> <translation id="895944840846194039">Memori JavaScript</translation> <translation id="8960208913905765425">Jawapan Segera penukaran unit</translation> +<translation id="8960638196855923532">Kini anda dapat melihat pemberitahuan dan apl telefon anda</translation> <translation id="8962051932294470566">Anda hanya boleh berkongsi satu fail pada satu-satu masa. Cuba lagi apabila pemindahan semasa sudah selesai nanti.</translation> <translation id="8962083179518285172">Sembunyikan Butiran</translation> <translation id="8962918469425892674">Tapak ini menggunakan penderia gerakan atau cahaya.</translation> @@ -8301,6 +8316,7 @@ <translation id="9103868373786083162">Tekan untuk kembali, menu konteks untuk melihat sejarah</translation> <translation id="9108035152087032312">Namakan &tetingkap...</translation> <translation id="9108072915170399168">Tetapan penggunaan data semasa ialah Tanpa internet</translation> +<translation id="9108294543511800041">Kini anda dapat melihat foto, media dan pemberitahuan terbaharu telefon anda</translation> <translation id="9108674852930645435">Teroka perkara baharu pada <ph name="DEVICE_TYPE" /> anda</translation> <translation id="9108808586816295166">DNS selamat mungkin tidak tersedia sepanjang masa</translation> <translation id="9109122242323516435">Untuk mengosongkan ruang, padamkan fail daripada storan peranti.</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 891d84e..96c4c69 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1905,6 +1905,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{चलाउन नमिल्ने एउटा एप हटाउनुहोस्}other{चलाउन नमिल्ने # वटा एप हटाउनुहोस्}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> नामक डिभाइसको नाम बदल्नुहोस्</translation> <translation id="2777251078198759550">यो कन्टेनर मेटाउनुहोस्</translation> +<translation id="2778471504622896352">ChromeOS लन्चरमा रिमोट एपहरू हाल्नुहोस्</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux एप स्थापना गर्ने क्रममा त्रुटि भयो</translation> <translation id="2783298271312924866">डाउनलोड गरिएको</translation> @@ -2221,6 +2222,7 @@ <translation id="3067198360141518313">यो प्लगइन चलाउनुहोस्</translation> <translation id="3071624960923923138">एउटा नयाँ ट्याब खोल्न यहाँ क्लिक गर्न सक्नुहुन्छ</translation> <translation id="3072775339180057696">साइटलाई <ph name="FILE_NAME" /> हेर्न दिने हो?</translation> +<translation id="3074499504015191586">पूरै पेज अनुवाद गर्नुहोस्</translation> <translation id="3075874217500066906">पावरवास प्रक्रिया सुरु गर्नको लागि एक फेरि सुरु गर्न आवश्यक छ। सुरु गरेपछि तपाइँलाई के तपाइँ अघि बढ्न चाहनुहुन्छ भनेर निश्चय गर्न सोधिनेछ।</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">यो डिभाइसमा मात्र सुरक्षित गरियोस्</translation> @@ -3540,6 +3542,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> र अन्य <ph name="NUMBER_OF_OTHER_SWITCHES" /> वटा स्विच थपिए</translation> <translation id="439266289085815679">ब्लुटुथ कन्फिगुरेसन <ph name="USER_EMAIL" /> द्वारा नियन्त्रित छ।</translation> <translation id="4392896746540753732">कन्फिगुरेसन फाइल सम्पादन गर्नुहोस्</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" /> मा सेभ गरिएका डिभाइसहरू फास्ट पेयर गर्नुहोस्</translation> <translation id="4394049700291259645">असक्षम गर्नुहोस्</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&सबै खोल्नुहोस्}=1{&पुस्तक चिन्ह लगाइएको साइट खोल्नुहोस्}other{&सबै खोल्नुहोस् ({COUNT})}}</translation> <translation id="4397372003838952832">तपाईंले यो पासवर्ड याद गरिराख्नु पर्दैन। यो पासवर्ड <ph name="EMAIL" /> को <ph name="GOOGLE_PASSWORD_MANAGER" /> मा सेभ गरिने छ।</translation> @@ -3769,6 +3772,7 @@ <translation id="4615586811063744755">कुनै पनि कुकी चयन गरिएको छैन</translation> <translation id="461661862154729886">चार्जिङको स्रोत</translation> <translation id="4617001782309103936">अत्यन्त छोटो</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" प्रयोग गर्न यो पेज रिलोड गर्नुहोस्</translation> <translation id="4617270414136722281">विस्तार सम्बन्धी विकल्पहरू</translation> <translation id="4617880081511131945">कनेक्ट गर्न सकिएन</translation> <translation id="4619564267100705184">यो व्यक्ति तपाईं नै हो भन्ने कुरा पुष्टि गर्नुहोस्</translation> @@ -3984,6 +3988,7 @@ <translation id="4833683849865011483">प्रिन्ट सर्भरमा १ प्रिन्टर फेला पर्यो</translation> <translation id="4836504898754963407">फिंगरप्रिन्टहरूको व्यवस्थापन गर्नुहोस्</translation> <translation id="4837128290434901661">फेरि Google खोज प्रयोग गर्ने हो?</translation> +<translation id="4837165100461973682">आफूले गरेका परिवर्तनहरू लागू गर्न यो पेज रिलोड गर्नुहोस्</translation> <translation id="4837926214103741331">तपाईंलाई यो डिभाइस प्रयोग गर्ने अधिकार दिइएको छैन। साइन-इन अनुमतिको लागि यन्त्र मालिकसँग सम्पर्क गर्नुहोस्।</translation> <translation id="4837952862063191349">तपाईँको स्थानीय डेटा रिस्टोर गर्न, कृपया तपाईँको पुरानो <ph name="DEVICE_TYPE" /> पासवर्ड प्रविष्टि गर्नुहोस्।</translation> <translation id="4838170306476614339">आफ्नो फोनका फोटो, मिडिया तथा सूचनाहरू हेर्नुहोस्</translation> @@ -4293,6 +4298,7 @@ <translation id="5150254825601720210">नेटस्केप प्रमाणपत्र SSL सर्भर नाम</translation> <translation id="5151354047782775295">डिस्कको ठाउँ खाली गर्नुहोस् नत्र छनौट गरिएको डेटा स्वतः मेटिन सक्छ</translation> <translation id="5153234146675181447">फोन बिर्सनुहोस्</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> को लागि उन्नत सेटिङहरू</translation> <translation id="5154702632169343078">विषय</translation> <translation id="5155327081870541046">एड्रेस बारमा आफूले जुन साइटमा खोज्न चाहेको हो सो साइटको सर्टकट (जस्तै "@bookmarks") टाइप गर्नुहोस्। अनि किबोर्डमा आफ्नो रोजाइको सर्टकट थिचेर खोज पद हाल्नुहोस्।</translation> @@ -5067,6 +5073,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> ले तपाईंको क्यामेरा र माइक्रोफोन प्रयोग गर्दै छ</translation> <translation id="5935158534896975820">प्रमाणपत्रमा हस्ताक्षर गर्ने अनुरोध तयार पार्दै (सर्भरमा प्रतीक्षा गर्दै)</translation> <translation id="5935656526031444304">सुरक्षित ब्राउजिङसम्बन्धी सेटिङको व्यवस्थापन गर्नुहोस्</translation> +<translation id="5936065461722368675">पूरै पेज अनुवाद गर्नुहोस्</translation> <translation id="5938002010494270685">सुरक्षासम्बन्धी अपडेट उपलब्ध छ</translation> <translation id="5939518447894949180">रिसेट गर्नुहोस्</translation> <translation id="5939719276406088041">सर्टकट सिर्जना गर्न सकिँदैन</translation> @@ -5927,6 +5934,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> लाई टाढैबाट थपिएको थियो</translation> <translation id="6790820461102226165">व्यक्ति थप्नुहोस्...</translation> <translation id="6793604637258913070">पाठको क्योरट देखा पर्दा वा गतिशील हुँदा त्यसलाई हाइलाइट गर्नुहोस्</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">तपाईं अटो-स्क्यान गर्ने सुविधाका सहायताले स्क्रिनमा भएको एउटा वस्तुबाट अर्को वस्तुमा स्वतः जान सक्नुहुन्छ। कुनै वस्तु हाइलाइट गरिएपछि उक्त वस्तु एक्टिभेट गर्न “चयन गर्नुहोस्” थिच्नुहोस्।</translation> <translation id="6795884519221689054">पान्डा</translation> <translation id="6797493596609571643">ओहो, केही गलत भयो।</translation> @@ -7799,6 +7807,7 @@ <translation id="8642947597466641025">पाठ ठुलो बानउनुहोस्</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> हानिकारक हुन सक्छ। यो फाइल सुरक्षित छ कि छैन भनी स्क्यान गर्न यसलाई Google को सुरक्षासम्बन्धी उन्नत सुविधामा पठाउने हो?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{कुनै पनि कुकी ब्लक गरिएको छैन}=1{एउटा कुकी ब्लक गरिएको छ}other{# वटा कुकी ब्लक गरिएका छन्}}</translation> +<translation id="864423554496711319">तपाईंको खातामा सेभ गरिएका डिभाइसहरू</translation> <translation id="8644655801811752511">यो सुरक्षा साँचो रिसेट गर्न सकिएन। साँचो प्रविष्टि गर्नेबित्तिकै यसलाई रिसेट गरी हेर्नुहोस्।</translation> <translation id="8645354835496065562">सेन्सरलाई पहुँच राख्ने अनुमति दिन जारी राख्नुहोस्</translation> <translation id="8645920082661222035">जोखिमपूर्ण घटनाहरू घट्नुअघि नै तिनको पूर्वानुमान गर्छ र तपाईंलाई त्यसबारे चेतावनी दिन्छ</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 243306e..b39025a 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -2224,6 +2224,7 @@ <translation id="3067198360141518313">Deze plugin uitvoeren</translation> <translation id="3071624960923923138">Je kunt hier klikken om een nieuw tabblad te openen</translation> <translation id="3072775339180057696">Toestaan dat site <ph name="FILE_NAME" /> bekijkt?</translation> +<translation id="3074499504015191586">Hele pagina vertalen</translation> <translation id="3075874217500066906">Apparaat moet opnieuw worden opgestart om met het Powerwash-proces te beginnen. Na het opnieuw opstarten wordt je gevraagd om te bevestigen dat je wilt doorgaan.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Alleen opslaan op dit apparaat</translation> @@ -5075,6 +5076,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> gebruikt je camera en microfoon</translation> <translation id="5935158534896975820">Verzoek voor certificaatondertekening voorbereiden (wachten op server)</translation> <translation id="5935656526031444304">Safe Browsing beheren</translation> +<translation id="5936065461722368675">Hele pagina vertalen</translation> <translation id="5938002010494270685">Beveiligingsupgrade beschikbaar</translation> <translation id="5939518447894949180">Resetten</translation> <translation id="5939719276406088041">Kan snelkoppeling niet maken</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 8698858e..ee56965 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -1918,6 +1918,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Fjern 1 app som ikke støttes}other{Fjern # apper som ikke støttes}}</translation> <translation id="2776560192867872731">Endre enhetsnavn for <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Slett denne beholderen</translation> +<translation id="2778471504622896352">Legg til eksterne apper i ChromeOS-appoversikten</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Feil ved installasjon av Linux-programmet</translation> <translation id="2783298271312924866">Lastet ned</translation> @@ -3551,6 +3552,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, og <ph name="NUMBER_OF_OTHER_SWITCHES" /> brytere til</translation> <translation id="439266289085815679">Bluetooth-konfigurasjonen kontrolleres av <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Rediger konfigurasjonsfilen</translation> +<translation id="4393713825278446281">Rask sammenkobling-enheter lagres i <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Deaktiver</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Åpne alle}=1{&Åpne bokmerket}other{&Åpne alle ({COUNT})}}</translation> <translation id="4397372003838952832">Du trenger ikke å huske dette passordet. Det blir lagret i <ph name="GOOGLE_PASSWORD_MANAGER" /> for <ph name="EMAIL" />.</translation> @@ -3780,6 +3782,7 @@ <translation id="4615586811063744755">ingen informasjonskapsel er valgt</translation> <translation id="461661862154729886">Energikilde</translation> <translation id="4617001782309103936">For kort</translation> +<translation id="4617019240346358451">Oppdater siden for å bruke «<ph name="EXTENSION_NAME" />»</translation> <translation id="4617270414136722281">Alternativer for utvidelser</translation> <translation id="4617880081511131945">Kan ikke opprette forbindelse</translation> <translation id="4619564267100705184">Bekreft at det er deg</translation> @@ -3995,6 +3998,7 @@ <translation id="4833683849865011483">Fant én skriver på utskriftstjeneren</translation> <translation id="4836504898754963407">Administrer fingeravtrykk</translation> <translation id="4837128290434901661">Vil du bytte tilbake til Google Søk?</translation> +<translation id="4837165100461973682">Last inn siden på nytt for å ta i bruk endringene</translation> <translation id="4837926214103741331">Du er ikke autorisert til å bruke denne enheten. Ta kontakt med eieren av enheten for å få tillatelse til å logge på.</translation> <translation id="4837952862063191349">For å låse opp og gjenopprette lokale data må du oppgi det gamle <ph name="DEVICE_TYPE" />-passordet ditt.</translation> <translation id="4838170306476614339">Se bildene, mediene og varslene på telefonen din</translation> @@ -4305,6 +4309,7 @@ <translation id="5150254825601720210">Navn på Netscape SSL-tjenersertifikat</translation> <translation id="5151354047782775295">Frigjør lagringsplass eller velg data som kan slettes automatisk</translation> <translation id="5153234146675181447">Glem telefon</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Avanserte innstillinger for <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Emne</translation> <translation id="5155327081870541046">I adressefeltet skriver du inn snarveien til nettstedet du vil søke på, for eksempel «@bookmarks». Deretter trykker du på hurtigtasten du foretrekker, og skriver inn søketermen.</translation> @@ -5941,6 +5946,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> er lagt til eksternt</translation> <translation id="6790820461102226165">Legg til person …</translation> <translation id="6793604637258913070">Fremhev tekstinnsettingspunktet når det vises eller flyttes</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Med automatisk skanning kan du gå gjennom elementer på skjermen automatisk. Når et element er fremhevet, trykker du på «Velg» for å aktivere det.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Beklager. Noe gikk galt.</translation> @@ -7816,6 +7822,7 @@ <translation id="8642947597466641025">Forstørr teksten</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> kan være farlig. Vil du sende filen til Google Avansert beskyttelse for gjennomsøking?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Ingen informasjonskapsler}=1{1 informasjonskapsel er blokkert}other{# informasjonskapsler er blokkert}}</translation> +<translation id="864423554496711319">Enheter som er lagret i kontoen din</translation> <translation id="8644655801811752511">Kan ikke tilbakestille denne sikkerhetsnøkkelen. Prøv å tilbakestille nøkkelen like etter at du setter den inn.</translation> <translation id="8645354835496065562">Fortsett å tillate sensortilgang</translation> <translation id="8645920082661222035">Forutsier og advarer deg om farlige hendelser før de inntreffer</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index 888318a27..baa40fe 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -1906,6 +1906,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1ଟି ଅସମର୍ଥିତ ଆପକୁ କାଢ଼ି ଦିଅନ୍ତୁ}other{#ଟି ଅସମର୍ଥିତ ଆପକୁ କାଢ଼ି ଦିଅନ୍ତୁ}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> ପାଇଁ ଡିଭାଇସ୍ ନାମ ବଦଳାନ୍ତୁ</translation> <translation id="2777251078198759550">ଏହି କଣ୍ଟେନରକୁ ଡିଲିଟ କରନ୍ତୁ</translation> +<translation id="2778471504622896352">ChromeOS ଲଞ୍ଚରରେ ଅଧିକ ରିମୋଟ ଆପ୍ସ ଯୋଗ କରନ୍ତୁ</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux ଆପ୍ଲିକେସନ୍ ଇନ୍ଷ୍ଟଲ୍ କରିବାରେ ତ୍ରୁଟି</translation> <translation id="2783298271312924866">ଡାଉନ୍ଲୋଡ୍ କରାଯାଇଛି</translation> @@ -3540,6 +3541,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, ଏବଂ <ph name="NUMBER_OF_OTHER_SWITCHES" />ଟି ଅଧିକ ସ୍ୱିଚ୍</translation> <translation id="439266289085815679"><ph name="USER_EMAIL" /> ଦ୍ବାରା ବ୍ଲୁ-ଟୁଥ୍ କନଫିଗ୍ରେସନ୍ ନିୟନ୍ତ୍ରଣ କରାଯାଉଛି।</translation> <translation id="4392896746540753732">କନ୍ଫିଗ୍ରେସନ୍ ଫାଇଲ୍ ସମ୍ପାଦନ କରନ୍ତୁ</translation> +<translation id="4393713825278446281">ଫାଷ୍ଟ ପେୟାର ଡିଭାଇସଗୁଡ଼ିକ <ph name="PRIMARY_EMAIL" />ରେ ଯୋଗ କରାଯାଇଛି</translation> <translation id="4394049700291259645">ଅକ୍ଷମ କରନ୍ତୁ</translation> <translation id="4396956294839002702">{COUNT,plural, =0{ସମସ୍ତ URLକୁ &ଖୋଲନ୍ତୁ}=1{ବୁକମାର୍କ &ଖୋଲନ୍ତୁ}other{ସମସ୍ତ ({COUNT})ଟି &ଖୋଲନ୍ତୁ}}</translation> <translation id="4397372003838952832">ଆପଣଙ୍କୁ ଏହି ପାସୱାର୍ଡ ମନେ ରଖିବା ଆବଶ୍ୟକ ହେବ ନାହିଁ। <ph name="EMAIL" /> ପାଇଁ ଏହା <ph name="GOOGLE_PASSWORD_MANAGER" />ରେ ସେଭ ହୋଇଯିବ।</translation> @@ -3770,6 +3772,7 @@ <translation id="4615586811063744755"><କୌଣସି କୁକୀ ଚୟନ କରାଗଲା ନାହିଁ></translation> <translation id="461661862154729886">ଏନର୍ଜି ସୋର୍ସ୍</translation> <translation id="4617001782309103936">ବହୁତ ଛୋଟ</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" ବ୍ୟବହାର କରିବା ପାଇଁ ପୃଷ୍ଠାକୁ ପୁଣି ଲୋଡ କରନ୍ତୁ</translation> <translation id="4617270414136722281">ଏକ୍ସଟେନ୍ସନ୍ର ବିକଳ୍ପ</translation> <translation id="4617880081511131945">କନେକ୍ସନ କରାଯାଇପାରିବ ନାହିଁ</translation> <translation id="4619564267100705184">ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ</translation> @@ -3985,6 +3988,7 @@ <translation id="4833683849865011483">ପ୍ରିଣ୍ଟ ସର୍ଭରରୁ 1ଟି ପ୍ରିଣ୍ଟର୍ ମିଳିଲା</translation> <translation id="4836504898754963407">ଟିପଚିହ୍ନଗୁଡ଼ିକର ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="4837128290434901661">ପୁଣି Google Searchକୁ ବଦଳାଇବାକୁ ଚାହାଁନ୍ତି?</translation> +<translation id="4837165100461973682">ଆପଣଙ୍କ ପରିବର୍ତ୍ତନ ଗୁଡ଼ିକ ଲାଗୁ କରିବା ପାଇଁ ପୃଷ୍ଠାକୁ ପୁଣି ଲୋଡ କରନ୍ତୁ</translation> <translation id="4837926214103741331">ଏହି ଡିଭାଇସ୍ ବ୍ୟବହାର କରିବାକୁ ଆପଣ ପ୍ରାଧିକୃତ ନୁହନ୍ତି। ଦୟାକରି, ସାଇନ୍-ଇନ୍ ଅନୁରୋଧ ପାଇଁ ଡିଭାଇସ୍ ମାଲିକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation> <translation id="4837952862063191349">ଆପଣଙ୍କର ସ୍ଥାନୀୟ ଡାଟା ଅନ୍ଲକ୍ ଏବଂ ପୁନଃସ୍ଥାପନ କରିବା ପାଇଁ, ଦୟାକରି ଆପଣଙ୍କର ପୁରୁଣା <ph name="DEVICE_TYPE" /> ପାସ୍ୱର୍ଡ ଲେଖନ୍ତୁ।</translation> <translation id="4838170306476614339">ଆପଣଙ୍କ ଫୋନର ଫଟୋ, ମିଡିଆ ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ</translation> @@ -4294,6 +4298,7 @@ <translation id="5150254825601720210">Netscape ସାର୍ଟିଫିକେଟ୍ SSL ସର୍ଭର୍ ନାମ</translation> <translation id="5151354047782775295">ଡିସ୍କର ସ୍ଥାନ ଖାଲି କରନ୍ତୁ, ନହେଲେ ଚୟନିତ ଡାଟା ସ୍ୱଚଳିତ ଭାବେ ଡିଲିଟ୍ ହୋଇଯିବ</translation> <translation id="5153234146675181447">ଫୋନକୁ ଭୁଲିଯାଆନ୍ତୁ</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> ପାଇଁ ଉନ୍ନତ ସେଟିଂସ୍</translation> <translation id="5154702632169343078">ବିଷୟ</translation> <translation id="5155327081870541046">ଆପଣ ସନ୍ଧାନ କରିବାକୁ ଚାହୁଁଥିବା ସାଇଟ ପାଇଁ ଠିକଣା ବାରରେ ସର୍ଟକଟ ଲେଖନ୍ତୁ ଯେପରି "@bookmarks"। ତା'ପରେ, ଆପଣଙ୍କ ପସନ୍ଦର କୀବୋର୍ଡ ସର୍ଟକଟକୁ ଦବାଇ ଆପଣଙ୍କ ସନ୍ଧାନ ଶବ୍ଦ ଲେଖନ୍ତୁ।</translation> @@ -5928,6 +5933,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" />କୁ ରିମୋଟ୍ ଭାବେ ଯୋଗ କରାଯାଇଛି</translation> <translation id="6790820461102226165">ଲୋକଙ୍କୁ ଯୋଗ କରନ୍ତୁ...</translation> <translation id="6793604637258913070">ଯେତେବେଳେ ଟେକ୍ସଟ୍ କ୍ୟାରେଟ୍ ଦୃଶ୍ୟମାନ ହେବ କିମ୍ବା ଘୁଞ୍ଚିବ ସେତେବେଳେ ଏହାକୁ ହାଇଲାଇଟ୍ କରନ୍ତୁ</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">ସ୍ୱଚାଳିତ-ସ୍କାନ ଆପଣଙ୍କୁ ସ୍ୱଚାଳିତ ଭାବେ ସ୍କ୍ରିନରେ ଥିବା ଆଇଟମଗୁଡ଼ିକ ମଧ୍ୟରେ ମୁଭ କରିବାକୁ ଦିଏ। ଯେତେବେଳେ କୌଣସି ଆଇଟମକୁ ହାଇଲାଇଟ କରାଯାଏ, ଏହାକୁ ସକ୍ରିୟ କରିବା ପାଇଁ "ଚୟନ କରନ୍ତୁ"କୁ ଦବାନ୍ତୁ।</translation> <translation id="6795884519221689054">ପାଣ୍ଡା</translation> <translation id="6797493596609571643">ଓହୋଃ, କିଛି ଭୁଲ୍ ହୋଇଗଲା!</translation> @@ -7798,6 +7804,7 @@ <translation id="8642947597466641025">ଟେକ୍ସଟ୍ ବଡ଼ କରନ୍ତୁ</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> ବିପଦଜନକ ହୋଇଥାଇପାରେ। ସ୍କାନ୍ କରିବାକୁ Google ଆଡଭାନ୍ସଡ ପ୍ରୋଟେକସନକୁ ପଠାଇବେ କି?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{କୌଣସି କୁକୀ ନାହିଁ}=1{1ଟି କୁକୀକୁ ବ୍ଲକ୍ କରାଯାଇଛି}other{#ଟି କୁକୀକୁ ବ୍ଲକ୍ କରାଯାଇଛି}}</translation> +<translation id="864423554496711319">ଆପଣଙ୍କ ଆକାଉଣ୍ଟରେ ଡିଭାଇସଗୁଡ଼ିକ ସେଭ କରାଯାଇଛି</translation> <translation id="8644655801811752511">ଏହି ସୁରକ୍ଷା କୀ ରିସେଟ୍ କରିପାରିବ ନାହିଁ। କୀ ଭର୍ତ୍ତି କରିସାରିବା ପରେ ତୁରନ୍ତ ରିସେଟ୍ କରି ଦେଖନ୍ତୁ।</translation> <translation id="8645354835496065562">ସେନ୍ସର୍ ଆକ୍ସେସ୍ କରିବାର ଅନୁମତି ଦେବା ଜାରି ରଖନ୍ତୁ</translation> <translation id="8645920082661222035">ବିପଦଜନକ ଘଟଣାଗୁଡ଼ିକ ଘଟିବା ପୂର୍ବରୁ ସେଗୁଡ଼ିକର ପୂର୍ବାନୁମାନ କରି ଆପଣଙ୍କୁ ଚେତାବନୀ ଦିଏ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 11debc9..03e6738 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -1924,6 +1924,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{1 ਅਸਮਰਥਿਤ ਐਪ ਨੂੰ ਹਟਾਓ}one{# ਅਸਮਰਥਿਤ ਐਪ ਨੂੰ ਹਟਾਓ}other{# ਅਸਮਰਥਿਤ ਐਪਾਂ ਨੂੰ ਹਟਾਓ}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> ਦਾ ਡੀਵਾਈਸ ਨਾਮ ਬਦਲੋ</translation> <translation id="2777251078198759550">ਇਸ ਕੰਟੇਨਰ ਨੂੰ ਮਿਟਾਓ</translation> +<translation id="2778471504622896352">ChromeOS ਲਾਂਚਰ ਵਿੱਚ ਰਿਮੋਟ ਐਪਾਂ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਗੜਬੜ ਹੋ ਗਈ</translation> <translation id="2783298271312924866">ਡਾਊਨਲੋਡ ਕੀਤਾ</translation> @@ -2238,6 +2239,7 @@ <translation id="3067198360141518313">ਇਹ ਪਲੱਗਇਨ ਚਲਾਓ</translation> <translation id="3071624960923923138">ਤੁਸੀਂ ਕੋਈ ਨਵੀਂ ਟੈਬ ਖੋਲ੍ਹਣ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰ ਸਕਦੇ ਹੋ</translation> <translation id="3072775339180057696">ਕੀ ਸਾਈਟ ਨੂੰ <ph name="FILE_NAME" /> ਦੇਖਣ ਦੇਈਏ?</translation> +<translation id="3074499504015191586">ਪੂਰੇ ਪੰਨੇ ਦਾ ਅਨੁਵਾਦ ਕਰੋ</translation> <translation id="3075874217500066906">ਪਾਵਰਵਾਸ਼ ਪ੍ਰਕਿਰਿਆ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਰੀਸਟਾਰਟ ਲੁੜੀਂਦਾ ਹੈ। ਰੀਸਟਾਰਟ ਕਰਨ ਤੋਂ ਬਾਅਦ ਤੁਹਾਨੂੰ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾਏਗਾ ਕਿ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਰੱਖਿਅਤ ਕਰੋ</translation> @@ -3558,6 +3560,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> ਅਤੇ <ph name="NUMBER_OF_OTHER_SWITCHES" /> ਹੋਰ ਸਵਿੱਚਾਂ</translation> <translation id="439266289085815679">ਬਲੂਟੁੱਥ ਸੰਰੂਪਣ <ph name="USER_EMAIL" /> ਵੱਲੋਂ ਕੰਟਰੋਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।</translation> <translation id="4392896746540753732">ਸੰਰੂਪਣ ਫ਼ਾਈਲ ਦਾ ਸੰਪਾਦਨ ਕਰੋ</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" /> 'ਤੇ ਰੱਖਿਅਤ ਕੀਤੇ ਤੇਜ਼ ਜੋੜਾਬੰਦੀ ਵਾਲੇ ਡੀਵਾਈਸ</translation> <translation id="4394049700291259645">ਬੰਦ ਕਰੋ</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&ਸਾਰੇ ਖੋਲ੍ਹੋ}=1{&ਬੁੱਕਮਾਰਕ ਖੋਲ੍ਹੋ}other{&ਸਾਰੇ ({COUNT}) ਖੋਲ੍ਹੋ}}</translation> <translation id="4397372003838952832">ਤੁਹਾਨੂੰ ਇਸ ਪਾਸਵਰਡ ਨੂੰ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੋਵੇਗੀ। ਇਸ ਨੂੰ <ph name="EMAIL" /> ਲਈ <ph name="GOOGLE_PASSWORD_MANAGER" /> 'ਤੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਵੇਗਾ।</translation> @@ -3788,6 +3791,7 @@ <translation id="4615586811063744755">ਕੋਈ ਕੁਕੀ ਨਹੀਂ ਚੁਣੀ ਗਈ</translation> <translation id="461661862154729886">ਊਰਜਾ ਦਾ ਸਰੋਤ</translation> <translation id="4617001782309103936">ਬਹੁਤ ਛੋਟਾ</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਪੰਨੇ ਨੂੰ ਰੀਲੋਡ ਕਰੋ</translation> <translation id="4617270414136722281">ਐਕਸਟੈਂਸ਼ਨ ਵਿਕਲਪ</translation> <translation id="4617880081511131945">ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ</translation> <translation id="4619564267100705184">ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> @@ -4003,6 +4007,7 @@ <translation id="4833683849865011483">ਪ੍ਰਿੰਟ ਸਰਵਰ ਤੋਂ 1 ਪ੍ਰਿੰਟਰ ਮਿਲਿਆ</translation> <translation id="4836504898754963407">ਫਿੰਗਰਪ੍ਰਿੰਟਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="4837128290434901661">ਕੀ Google Search 'ਤੇ ਵਾਪਸ ਜਾਣਾ ਹੈ?</translation> +<translation id="4837165100461973682">ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰਨ ਲਈ ਪੰਨੇ ਨੂੰ ਰੀਲੋਡ ਕਰੋ</translation> <translation id="4837926214103741331">ਤੁਸੀਂ ਇਹ ਸੇਵਾ ਵਰਤਣ ਲਈ ਅਧਿਕਾਰਿਤ ਨਹੀਂ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਈਨ-ਇਨ ਇਜਾਜ਼ਤ ਲਈ ਡੀਵਾਈਸ ਮਾਲਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।</translation> <translation id="4837952862063191349">ਆਪਣੇ ਸਥਾਨਕ ਡਾਟਾ ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਅਤੇ ਮੁੜ-ਬਹਾਲ ਸਥਾਪਿਤ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਪੁਰਾਣਾ <ph name="DEVICE_TYPE" /> ਪਾਸਵਰਡ ਦਾਖਲ ਕਰੋ।</translation> <translation id="4838170306476614339">ਆਪਣੇ ਫ਼ੋਨ ਦੀਆਂ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ ਅਤੇ ਸੂਚਨਾਵਾਂ ਦੇਖੋ</translation> @@ -4312,6 +4317,7 @@ <translation id="5150254825601720210">Netscape ਪ੍ਰਮਾਣ-ਪੱਤਰ SSL ਸਰਵਰ ਨਾਮ</translation> <translation id="5151354047782775295">ਡਿਸਕ ਜਗ੍ਹਾ ਨੂੰ ਖਾਲੀ ਕਰੋ ਨਹੀਂ ਤਾਂ ਚੋਣਵਾਂ ਡਾਟਾ ਆਪਣੇ ਆਪ ਮਿਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ</translation> <translation id="5153234146675181447">ਫ਼ੋਨ ਭੁੱਲ ਜਾਓ</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> ਲਈ ਉੱਨਤ ਸੈਟਿੰਗਾਂ</translation> <translation id="5154702632169343078">ਵਿਸ਼ਾ</translation> <translation id="5155327081870541046">ਪਤਾ ਬਾਰ ਵਿੱਚ, ਉਸ ਸਾਈਟ ਦਾ ਸ਼ਾਰਟਕੱਟ ਦਾਖਲ ਕਰੋ ਜਿਸਨੂੰ ਤੁਸੀਂ ਖੋਜਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ "@bookmarks"। ਫਿਰ, ਆਪਣਾ ਤਰਜੀਹੀ ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਦਬਾਓ ਅਤੇ ਆਪਣਾ ਖੋਜ ਸ਼ਬਦ ਦਾਖਲ ਕਰੋ।</translation> @@ -5087,6 +5093,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> ਵੱਲੋਂ ਤੁਹਾਡਾ ਕੈਮਰਾ ਅਤੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="5935158534896975820">ਪ੍ਰਮਾਣੀਕਰਨ ਬੇਨਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ (ਸਰਵਰ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ)</translation> <translation id="5935656526031444304">ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> +<translation id="5936065461722368675">ਪੂਰੇ ਪੰਨੇ ਦਾ ਅਨੁਵਾਦ ਕਰੋ</translation> <translation id="5938002010494270685">ਸੁਰੱਖਿਆ ਅੱਪਗ੍ਰੇਡ ਉਪਲਬਧ ਹੈ</translation> <translation id="5939518447894949180">ਰੀਸੈਟ ਕਰੋ</translation> <translation id="5939719276406088041">ਸ਼ਾਰਟਕੱਟ ਬਣਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ</translation> @@ -5950,6 +5957,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> ਦੂਰ-ਦਰਾਡੇ ਤੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਸੀ</translation> <translation id="6790820461102226165">ਵਿਅਕਤੀ ਜੋੜੋ...</translation> <translation id="6793604637258913070">ਲਿਖਤ ਕੈਰੇਟ ਦੇ ਵਿਖਾਈ ਦੇਣ ਜਾਂ ਹਲਚਲ ਹੋਣ 'ਤੇ ਉਸਨੂੰ ਉਜਾਗਰ ਕਰੋ।</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">'ਸਵੈ-ਸਕੈਨ' ਵਿਸ਼ੇਸ਼ਤਾ ਤੁਹਾਨੂੰ ਸਕ੍ਰੀਨ 'ਤੇ ਆਈਟਮਾਂ ਵਿਚਾਲੇ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਜਾਣ ਦਿੰਦੀ ਹੈ। ਕੋਈ ਆਈਟਮ ਉਜਾਗਰ ਕੀਤੇ ਜਾਣ 'ਤੇ, ਉਸਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ “ਚੁਣੋ” ਦਬਾਓ।</translation> <translation id="6795884519221689054">ਪਾਂਡਾ</translation> <translation id="6797493596609571643">ਓਹੋ, ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ।</translation> @@ -7821,6 +7829,7 @@ <translation id="8642947597466641025">ਟੈਕਸਟ ਨੂੰ ਵੱਡਾ ਕਰੋ</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> ਖਤਰਨਾਕ ਹੋ ਸਕਦੀ ਹੈ। ਕੀ Google ਉੱਨਤ ਸੁਰੱਖਿਆ ਨੂੰ ਸਕੈਨ ਕਰਨ ਲਈ ਭੇਜਣਾ ਹੈ?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{ਕੋਈ ਕੁਕੀ ਨਹੀਂ}=1{1 ਕੁਕੀ ਬਲਾਕ ਕੀਤੀ ਗਈ ਹੈ}other{# ਕੁਕੀਜ਼ ਬਲਾਕ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ}}</translation> +<translation id="864423554496711319">ਤੁਹਾਡੇ ਖਾਤੇ 'ਤੇ ਰੱਖਿਅਤ ਕੀਤੇ ਡੀਵਾਈਸ</translation> <translation id="8644655801811752511">ਇਸ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਨੂੰ ਰੀਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਕੁੰਜੀ ਨੂੰ ਪਾ ਕੇ ਝੱਟ ਉਸਨੂੰ ਰੀਸੈੱਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="8645354835496065562">ਸੈਂਸਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿੰਦੇ ਰਹੋ</translation> <translation id="8645920082661222035">ਖਤਰਨਾਕ ਘਟਨਾਵਾਂ ਦਾ ਪਤਾ ਕਰਕੇ ਉਹਨਾਂ ਦੇ ਵਾਪਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਚਿਤਾਵਨੀ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 65a8392..b16d731 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -2210,6 +2210,7 @@ <translation id="3067198360141518313">Uruchom wtyczkę</translation> <translation id="3071624960923923138">Kliknij tutaj, by otworzyć nową kartę</translation> <translation id="3072775339180057696">Zezwolić witrynie na wyświetlanie pliku <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Przetłumacz całą stronę</translation> <translation id="3075874217500066906">Aby rozpocząć procedurę Powerwash, musisz ponownie uruchomić urządzenie. Po ponownym uruchomieniu poprosimy Cię o potwierdzenie, że chcesz kontynuować.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Zapisz tylko na tym urządzeniu</translation> @@ -5061,6 +5062,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> używa Twojej kamery i mikrofonu</translation> <translation id="5935158534896975820">Przygotowuję żądanie podpisania certyfikatu (czekam na serwer)</translation> <translation id="5935656526031444304">Zarządzaj Bezpiecznym przeglądaniem</translation> +<translation id="5936065461722368675">Przetłumacz całą stronę</translation> <translation id="5938002010494270685">Dostępna aktualizacja zabezpieczeń</translation> <translation id="5939518447894949180">Resetuj</translation> <translation id="5939719276406088041">Nie można utworzyć skrótu</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index ed660de..bcddd160 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1559,6 +1559,7 @@ <translation id="2433836460518180625">Desbloquear somente dispositivo</translation> <translation id="2434449159125086437">Não é possível configurar a impressora. Verifique a configuração e tente novamente.</translation> <translation id="2434758125294431199">Selecione quem pode compartilhar itens com você</translation> +<translation id="2434915728183570229">Agora, você pode ver os apps do seu smartphone</translation> <translation id="2435137177546457207">Termos adicionais do Google Chrome e do ChromeOS Flex</translation> <translation id="2435248616906486374">Rede desconectada</translation> <translation id="2435457462613246316">Mostrar senha</translation> @@ -4240,6 +4241,7 @@ <translation id="5072900412896857127">Não é possível carregar os Termos de Serviço do Google Play. Verifique sua conexão de rede e tente novamente.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> e mais #}other{<ph name="FILE1" />, <ph name="FILE2" /> e mais #}}</translation> <translation id="5074318175948309511">Esta página pode precisar ser recarregada para que as novas configurações tenham efeito.</translation> +<translation id="5074761966806028321">A permissão ainda é necessária para concluir a configuração</translation> <translation id="5075910247684008552">O conteúdo inseguro é bloqueado por padrão em sites seguros</translation> <translation id="5078638979202084724">Adicionar todas as guias aos favoritos</translation> <translation id="5078796286268621944">PIN incorreto</translation> @@ -4602,6 +4604,7 @@ <translation id="5449551289610225147">Senha inválida</translation> <translation id="5449588825071916739">Adicionar todas as guias aos favoritos</translation> <translation id="5449716055534515760">Fechar jan&ela</translation> +<translation id="5452446625764825792">Agora, você pode ver apps, mídias e fotos recentes do seu smartphone</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (funciona off-line)</translation> <translation id="5454166040603940656">com <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Ver mais resultados da pesquisa</translation> @@ -4662,6 +4665,7 @@ <translation id="5499211612787418966">A caixa de diálogo não está em foco. Pressione Alt + Shift + A para focar na caixa de diálogo.</translation> <translation id="5499313591153584299">Este arquivo pode ser prejudicial para seu computador.</translation> <translation id="5499453227627332024">Um upgrade está disponível para o contêiner Linux. É possível fazê-lo mais tarde no app Configurações.</translation> +<translation id="5499476581866658341">Agora, você pode ver fotos e mídias recentes do seu smartphone</translation> <translation id="549957179819296104">Novo ícone</translation> <translation id="5500168250243071806">O <ph name="BEGIN_LINK_SEARCH" />histórico de pesquisa<ph name="END_LINK_SEARCH" /> e <ph name="BEGIN_LINK_GOOGLE" />outras formas de atividade<ph name="END_LINK_GOOGLE" /> podem ser salvos na sua Conta do Google quando ela está conectada. É possível excluí-los a qualquer momento.</translation> <translation id="5500709606820808700">A "confirmação de segurança" foi executada hoje</translation> @@ -6328,6 +6332,7 @@ <translation id="7152478047064750137">Esta extensão não requer permissões especiais</translation> <translation id="7154130902455071009">Alterar sua página inicial para: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Foto existente na câmera ou em arquivo</translation> +<translation id="7160182524506337403">Agora, você pode ver as notificações do seu smartphone</translation> <translation id="7163202347044721291">Verificando código de ativação…</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" pode ler imagens, vídeos e arquivos de som nos locais marcados.</translation> <translation id="7167486101654761064">&Sempre abrir arquivos deste tipo</translation> @@ -7343,6 +7348,7 @@ <translation id="8138997515734480534">Status do <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Arquivos do Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Você pode definir mais recursos nas configurações da ferramenta Seu smartphone</translation> <translation id="8141584439523427891">Abrindo em navegador alternativo agora</translation> <translation id="8141725884565838206">Gerenciar suas senhas</translation> <translation id="814204052173971714">{COUNT,plural, =1{um vídeo}one{# vídeo}other{# vídeos}}</translation> @@ -7550,6 +7556,7 @@ <translation id="833986336429795709">Para abrir este link, escolha um app</translation> <translation id="8342221978608739536">Não tentei</translation> <translation id="8342861492835240085">Selecione uma coleção</translation> +<translation id="8345848587667658367">Agora, você pode ver apps, mídias, notificações e fotos recentes do seu smartphone</translation> <translation id="8347227221149377169">Trabalhos de impressão</translation> <translation id="834785183489258869">Na navegação anônima, os sites não podem usar seus cookies para ver suas atividades de navegação em outras páginas, por exemplo, para personalizar anúncios. Os recursos de alguns sites podem não funcionar.</translation> <translation id="8350789879725387295">Ferramentas da stylus na base</translation> @@ -8155,6 +8162,7 @@ <translation id="8957757410289731985">Personalizar perfil</translation> <translation id="895944840846194039">Memória JavaScript</translation> <translation id="8960208913905765425">Conversão de unidades das Respostas rápidas</translation> +<translation id="8960638196855923532">Agora, você pode ver notificações e apps do seu smartphone</translation> <translation id="8962051932294470566">Só é possível compartilhar um arquivo por vez. Tente novamente quando a transferência atual for concluída.</translation> <translation id="8962083179518285172">Ocultar detalhes</translation> <translation id="8962918469425892674">Este site está usando sensores de luz ou movimento.</translation> @@ -8306,6 +8314,7 @@ <translation id="9103868373786083162">Pressione para voltar ao menu de contexto e ver o histórico</translation> <translation id="9108035152087032312">Nomear a janela…</translation> <translation id="9108072915170399168">A configuração atual de uso de dados é "Sem Internet"</translation> +<translation id="9108294543511800041">Agora, você pode ver mídias, notificações e fotos recentes do seu smartphone</translation> <translation id="9108674852930645435">Veja as novidades do seu <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">DNS seguro pode não estar disponível o tempo todo</translation> <translation id="9109122242323516435">Para liberar espaço, exclua arquivos do armazenamento do dispositivo.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index 21cc4135..8d019c4 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1543,6 +1543,7 @@ <translation id="2433836460518180625">Desbloquear apenas no dispositivo</translation> <translation id="2434449159125086437">Não é possível configurar a impressora. Verifique a configuração e tente novamente.</translation> <translation id="2434758125294431199">Selecione quem pode partilhar consigo.</translation> +<translation id="2434915728183570229">Agora, pode ver as apps do seu telemóvel</translation> <translation id="2435137177546457207">Termos Adicionais do Google Chrome e ChromeOS Flex</translation> <translation id="2435248616906486374">Rede desligada</translation> <translation id="2435457462613246316">Mostrar palavra-passe</translation> @@ -4227,6 +4228,7 @@ <translation id="5072900412896857127">Não é possível carregar os Termos de Utilização do Google Play. Verifique a ligação de rede e tente novamente.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}other{<ph name="FILE1" />, <ph name="FILE2" /> e mais #}}</translation> <translation id="5074318175948309511">Poderá ser necessário voltar a atualizar esta página antes de aplicar as novas definições.</translation> +<translation id="5074761966806028321">Ainda é necessária autorização para concluir a configuração</translation> <translation id="5075910247684008552">O conteúdo inseguro é bloqueado por predefinição em sites seguros.</translation> <translation id="5078638979202084724">Adicionar todos os separadores aos marcadores</translation> <translation id="5078796286268621944">PIN incorreto</translation> @@ -4590,6 +4592,7 @@ <translation id="5449551289610225147">Palavra-passe inválida</translation> <translation id="5449588825071916739">Adicionar Todos os Separadores aos Marcadores</translation> <translation id="5449716055534515760">Fechar &Janela</translation> +<translation id="5452446625764825792">Agora, pode ver as fotos, o conteúdo multimédia e as apps recentes do seu telemóvel</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (funciona offline)</translation> <translation id="5454166040603940656">com <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Ver mais resultados da pesquisa</translation> @@ -4650,6 +4653,7 @@ <translation id="5499211612787418966">Atualmente, esta caixa de diálogo não está focada. Prima Alt + Shift + A para focar esta caixa de diálogo.</translation> <translation id="5499313591153584299">Este ficheiro pode ser prejudicial para o seu computador.</translation> <translation id="5499453227627332024">Está disponível uma atualização para o seu contentor do Linux. Também pode atualizar mais tarde na app Definições.</translation> +<translation id="5499476581866658341">Agora, pode ver as fotos e o conteúdo multimédia recentes do seu telemóvel</translation> <translation id="549957179819296104">Novo ícone</translation> <translation id="5500168250243071806">O <ph name="BEGIN_LINK_SEARCH" />histórico de pesquisas<ph name="END_LINK_SEARCH" /> e <ph name="BEGIN_LINK_GOOGLE" />outras formas de atividade<ph name="END_LINK_GOOGLE" /> podem ser guardados na sua Conta Google quando tiver sessão iniciada. Pode eliminá-los em qualquer altura.</translation> <translation id="5500709606820808700">A verificação de segurança foi efetuada hoje.</translation> @@ -6315,6 +6319,7 @@ <translation id="7152478047064750137">Esta extensão não requer autorizações especiais.</translation> <translation id="7154130902455071009">Alterar a página de início para: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Foto existente da câmara ou do ficheiro</translation> +<translation id="7160182524506337403">Agora, pode ver as notificações do seu telemóvel</translation> <translation id="7163202347044721291">A validar o código de ativação…</translation> <translation id="716640248772308851">A extensão "<ph name="EXTENSION" />" consegue ler imagens, ficheiros de vídeo e de som nas localizações confirmadas.</translation> <translation id="7167486101654761064">&Abrir sempre ficheiros deste tipo</translation> @@ -7330,6 +7335,7 @@ <translation id="8138997515734480534">Estado: <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Ficheiros do Google Drive</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Pode configurar mais funcionalidades nas definições do Phone Hub</translation> <translation id="8141584439523427891">A abrir num navegador alternativo agora…</translation> <translation id="8141725884565838206">Gerir as palavras-passe</translation> <translation id="814204052173971714">{COUNT,plural, =1{um vídeo}other{# vídeos}}</translation> @@ -7537,6 +7543,7 @@ <translation id="833986336429795709">Para abrir este link, escolher uma aplicação</translation> <translation id="8342221978608739536">Não tentei</translation> <translation id="8342861492835240085">Selecionar uma coleção</translation> +<translation id="8345848587667658367">Agora, pode ver as fotos, o conteúdo multimédia, as notificações e as apps recentes do seu telemóvel</translation> <translation id="8347227221149377169">Tarefas de impressão</translation> <translation id="834785183489258869">Quando estiver na Navegação anónima, os sites não podem utilizar cookies para ver a sua atividade de navegação em diferentes sites, por exemplo, para personalizar anúncios. As funcionalidades em alguns sites podem não funcionar.</translation> <translation id="8350789879725387295">Ferramentas da caneta stylus na estação de ancoragem</translation> @@ -8142,6 +8149,7 @@ <translation id="8957757410289731985">Personalizar perfil</translation> <translation id="895944840846194039">Memória JavaScript</translation> <translation id="8960208913905765425">Conversão de unidades das Respostas rápidas</translation> +<translation id="8960638196855923532">Agora, pode ver as notificações e as apps do seu telemóvel</translation> <translation id="8962051932294470566">Só pode partilhar um ficheiro de cada vez. Tente novamente quando a transferência atual estiver concluída.</translation> <translation id="8962083179518285172">Ocultar Detalhes</translation> <translation id="8962918469425892674">Este site está a utilizar sensores de movimento ou de luz.</translation> @@ -8293,6 +8301,7 @@ <translation id="9103868373786083162">Premir para voltar, menu de contexto para ver o histórico</translation> <translation id="9108035152087032312">Nome da &janela…</translation> <translation id="9108072915170399168">A definição de utilização de dados atual é Sem Internet.</translation> +<translation id="9108294543511800041">Agora, pode ver as fotos, o conteúdo multimédia e as notificações do seu telemóvel</translation> <translation id="9108674852930645435">Explore as novidades no seu <ph name="DEVICE_TYPE" /></translation> <translation id="9108808586816295166">O DNS seguro pode não estar sempre disponível.</translation> <translation id="9109122242323516435">Para libertar espaço, elimine ficheiros do armazenamento do dispositivo.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 888a04b..000e43b 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -2226,6 +2226,7 @@ <translation id="3067198360141518313">Rulează acest plugin</translation> <translation id="3071624960923923138">Poți să dai clic aici pentru a deschide o filă nouă</translation> <translation id="3072775339180057696">Permiți ca site-ul să vadă <ph name="FILE_NAME" />?</translation> +<translation id="3074499504015191586">Tradu pagina completă</translation> <translation id="3075874217500066906">Este necesară o repornire pentru a începe procesul de Powerwash. După repornire, ți se va solicita să confirmi dacă dorești să continui.</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">Salvează numai pe acest dispozitiv</translation> @@ -5081,6 +5082,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> folosește camera și microfonul</translation> <translation id="5935158534896975820">Se pregătește solicitarea de semnare a certificatului (se așteaptă serverul)</translation> <translation id="5935656526031444304">Gestionează Navigarea sigură</translation> +<translation id="5936065461722368675">Tradu pagina completă</translation> <translation id="5938002010494270685">Este disponibilă o actualizare de securitate</translation> <translation id="5939518447894949180">Resetează</translation> <translation id="5939719276406088041">Nu se poate crea comanda rapidă</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index aac64641..b1b9ebb9 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -1909,6 +1909,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Удалить 1 неподдерживаемое приложение}one{Удалить # неподдерживаемое приложение}few{Удалить # неподдерживаемых приложения}many{Удалить # неподдерживаемых приложений}other{Удалить # неподдерживаемого приложения}}</translation> <translation id="2776560192867872731">Изменить название устройства "<ph name="DEVICE_NAME" />"</translation> <translation id="2777251078198759550">Удалить этот контейнер</translation> +<translation id="2778471504622896352">Добавление приложений с удаленным доступом на панель запуска Chrome OS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Не удалось установить приложение для Linux</translation> <translation id="2783298271312924866">Сохранено</translation> @@ -3544,6 +3545,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> и ещё несколько переключателей (<ph name="NUMBER_OF_OTHER_SWITCHES" />)</translation> <translation id="439266289085815679">Конфигурацию Bluetooth контролирует пользователь <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Изменение файла конфигурации.</translation> +<translation id="4393713825278446281">Устройства с Быстрым подключением сохранены в аккаунте <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Отключить</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Открыть все}=1{&Открыть закладку}one{&Открыть все ({COUNT})}few{&Открыть все ({COUNT})}many{&Открыть все ({COUNT})}other{&Открыть все ({COUNT})}}</translation> <translation id="4397372003838952832">Вам не нужно запоминать этот пароль. Он будет сохранен для аккаунта <ph name="EMAIL" /> здесь: <ph name="GOOGLE_PASSWORD_MANAGER" />.</translation> @@ -3773,6 +3775,7 @@ <translation id="4615586811063744755">файлы cookie не выбраны</translation> <translation id="461661862154729886">Источник электропитания</translation> <translation id="4617001782309103936">Слишком короткий</translation> +<translation id="4617019240346358451">Чтобы использовать расширение "<ph name="EXTENSION_NAME" />", обновите страницу</translation> <translation id="4617270414136722281">Параметры расширений</translation> <translation id="4617880081511131945">Не удается подключиться</translation> <translation id="4619564267100705184">Подтвердить личность</translation> @@ -3922,6 +3925,7 @@ <translation id="4768332406694066911">У вас есть идентифицирующие вас сертификаты этих организаций</translation> <translation id="4770119228883592393">Требуется разрешение. Нажмите ⌘ + Option + Стрелка вниз, чтобы ответить.</translation> <translation id="4773112038801431077">Обновление Linux</translation> +<translation id="4774337692467964393">Если функция Smart Lock включена, вводить PIN-код или пароль не требуется.</translation> <translation id="4775142426314270551">Помогите нам повышать производительность и совершенствовать функции Chrome и Chrome OS, разрешив автоматическую отправку в Google отчетов о сбоях и информации об использовании и диагностике. Некоторые агрегированные данные также позволят улучшить приложения для Android и пригодятся партнерам Google. Если в аккаунте Google вашего ребенка включена история приложений и веб-поиска, данные ребенка из Android могут сохраняться в его аккаунте.</translation> <translation id="477647109558161443">Создать ярлык на рабочем столе</translation> <translation id="4776594120007763294">Чтобы добавить страницу в список для чтения, нажмите эту кнопку.</translation> @@ -3971,6 +3975,7 @@ <translation id="4820236583224459650">Выбрать в качестве активного билета</translation> <translation id="4821935166599369261">&Сбор данных включен</translation> <translation id="4823484602432206655">Просмотр и изменение настроек для пользователей и устройств</translation> +<translation id="4823894915586516138">Этот PIN-код или пароль будет защищать ваши данные на текущем устройстве <ph name="DEVICE_TYPE" />, в том числе сведения, к которым вы получаете доступ с телефона.</translation> <translation id="4824037980212326045">Резервное копирование и восстановление Linux</translation> <translation id="4824958205181053313">Отключить синхронизацию?</translation> <translation id="4827675678516992122">Ошибка подключения</translation> @@ -3986,6 +3991,7 @@ <translation id="4833683849865011483">На сервере печати найден 1 принтер.</translation> <translation id="4836504898754963407">Управление отпечатками</translation> <translation id="4837128290434901661">Вернуться к Google Поиску?</translation> +<translation id="4837165100461973682">Чтобы изменения вступили в силу, обновите страницу</translation> <translation id="4837926214103741331">У вас нет доступа к этому устройству. Свяжитесь с его владельцем.</translation> <translation id="4837952862063191349">Чтобы разблокировать и восстановить данные, введите старый пароль устройства <ph name="DEVICE_TYPE" /></translation> <translation id="4838170306476614339">Просмотр фотографий, медиафайлов и уведомлений с телефона</translation> @@ -4295,6 +4301,7 @@ <translation id="5150254825601720210">Имя сервера SSL-сертификатов Netscape</translation> <translation id="5151354047782775295">Освободите пространство или выберите данные для автоматического удаления.</translation> <translation id="5153234146675181447">Удаление телефона</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> – дополнительные настройки</translation> <translation id="5154702632169343078">Тема</translation> <translation id="5155327081870541046">В адресной строке введите быструю команду для сайта, на котором нужно выполнить поиск, например @bookmarks. Затем нажмите нужное сочетание клавиш и добавьте поисковый запрос.</translation> @@ -5628,6 +5635,7 @@ <translation id="648927581764831596">Отсутствуют</translation> <translation id="6490471652906364588">Устройство USB-C (порт справа)</translation> <translation id="6491376743066338510">Не удалось выполнить авторизацию</translation> +<translation id="6492396476180293140">Встроенная камера отключена с помощью аппаратного переключателя.</translation> <translation id="6494327278868541139">Открыть описание улучшенной защиты</translation> <translation id="6494445798847293442">Не является центром сертификации</translation> <translation id="6494974875566443634">Персонализация</translation> @@ -5935,6 +5943,7 @@ <translation id="6790497603648687708">Расширение "<ph name="EXTENSION_NAME" />" было добавлено удаленно</translation> <translation id="6790820461102226165">Добавить пользователя</translation> <translation id="6793604637258913070">Выделять курсор при его появлении или перемещении</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Функция автосканирования позволяет автоматически перемещаться между объектами на экране. Чтобы активировать объект, нажмите "Выбрать", когда он будет выделен.</translation> <translation id="6795884519221689054">Панда</translation> <translation id="6797493596609571643">Произошла ошибка</translation> @@ -7807,6 +7816,7 @@ <translation id="8642947597466641025">Увеличить размер шрифта</translation> <translation id="8643443571868262066">Файл "<ph name="FILE_NAME" />" может представлять опасность. Отправить его в Google для проверки с помощью Дополнительной защиты?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Нет файлов cookie}=1{Заблокирован 1 файл cookie}one{Заблокирован # файл cookie}few{Заблокировано # файла cookie}many{Заблокировано # файлов cookie}other{Заблокировано # файла cookie}}</translation> +<translation id="864423554496711319">Сохраненные в аккаунте устройства</translation> <translation id="8644655801811752511">Не удалось сбросить настройки электронного ключа. Попробуйте сделать это сразу после того, как вставите ключ.</translation> <translation id="8645354835496065562">Всегда разрешать использовать датчики</translation> <translation id="8645920082661222035">Предсказывает опасные события и предупреждает вас о них.</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 4cc4a8a..257fbe0 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1547,6 +1547,7 @@ <translation id="2433836460518180625">උපාංගය පමණක් අගුලු හරින්න</translation> <translation id="2434449159125086437">මුද්රකය සැකසීමට නොහැක. වින්යාසය පරීක්ෂා කර නැවත උත්සාහ කරන්න.</translation> <translation id="2434758125294431199">ඔබ සමඟ බෙදා ගත හැක්කේ කාටද යන්න තෝරන්න</translation> +<translation id="2434915728183570229">ඔබට දැන් ඔබගේ දුරකථනයේ යෙදුම් බැලිය හැකිය</translation> <translation id="2435137177546457207">Google Chrome සහ ChromeOS Flex අතිරේක නියම</translation> <translation id="2435248616906486374">ජාලය විසන්ධි කෙරිණි</translation> <translation id="2435457462613246316">මුරපදය පෙන්වන්න</translation> @@ -1911,6 +1912,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{සහාය නොදක්වන යෙදුම් 1ක් ඉවත් කරන්න}one{සහාය නොදක්වන යෙදුම් #ක් ඉවත් කරන්න}other{සහාය නොදක්වන යෙදුම් #ක් ඉවත් කරන්න}}</translation> <translation id="2776560192867872731">උපාංග නම <ph name="DEVICE_NAME" /> ලෙස වෙනස් කරන්න</translation> <translation id="2777251078198759550">මෙම බහාලුම මකන්න</translation> +<translation id="2778471504622896352">ChromeOS දියත්කරණය වෙත දුරස්ථ යෙදුම් එක් කරන්න</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux යෙදුම් ස්ථාපනය කිරීමේ දෝෂයකි</translation> <translation id="2783298271312924866">බාගන්නා ලද</translation> @@ -3547,6 +3549,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" />, සහ තවත් ස්විච <ph name="NUMBER_OF_OTHER_SWITCHES" /></translation> <translation id="439266289085815679">බ්ලූටූත් වින්යාසය <ph name="USER_EMAIL" /> විසින් පාලනය කරනු ලබයි.</translation> <translation id="4392896746540753732">වින්යාස ගොනුව සංස්කරණ කරන්න</translation> +<translation id="4393713825278446281"><ph name="PRIMARY_EMAIL" /> වෙත සුරකින ලද Fast Pair උපාංග</translation> <translation id="4394049700291259645">අක්රිය කරන්න</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&සියල්ල විවෘත කරන්න}=1{&පිටුසන විවෘත කරන්න}one{&සියල්ල විවෘත කරන්න ({COUNT})}other{&සියල්ල විවෘත කරන්න ({COUNT})}}</translation> <translation id="4397372003838952832">ඔබට මෙම මුරපදය මතක තබා ගැනීමට අවශ්ය නොවනු ඇත. එය <ph name="GOOGLE_PASSWORD_MANAGER" /> වෙත <ph name="EMAIL" /> සඳහා සුරකිනු ඇත</translation> @@ -3776,6 +3779,7 @@ <translation id="4615586811063744755">කුකියක් තෝරා නැත</translation> <translation id="461661862154729886">බලශක්ති මූලාශ්රය</translation> <translation id="4617001782309103936">ඉතා කෙටියි</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" භාවිත කිරීමට පිටුව නැවත පූරණය කරන්න</translation> <translation id="4617270414136722281">දිගු විකල්ප</translation> <translation id="4617880081511131945">සම්බන්ධතාව ස්ථාපිත කළ නොහැකිය</translation> <translation id="4619564267100705184">ඒ ඔබ බව සත්යාපනය කරන්න</translation> @@ -3991,6 +3995,7 @@ <translation id="4833683849865011483">මුද්රණ සේවාදායකයෙන් 1 මුද්රකයක් හමු විය</translation> <translation id="4836504898754963407">ඇඟිලි සලකුණු කළමනා කරන්න</translation> <translation id="4837128290434901661">ආපසු Google සෙවීමට හරවන්නේද?</translation> +<translation id="4837165100461973682">ඔබගේ වෙනස් කිරීම් යෙදීමට පිටුව නැවත පූරණය කරන්න</translation> <translation id="4837926214103741331">ඔබට මෙම උපාංගය භාවිතා කිරීමට අවසර නැත. කරුණාකර පුරනය වීමේ අවසර සඳහා උපාංගයේ හිමිකරු අමතන්න.</translation> <translation id="4837952862063191349">ඔබේ පෙදෙසි දත්ත අඟුල අරිමට හෝ ප්රතිස්ථාපනය කිරීමට, ඔබගේ පැරිණි <ph name="DEVICE_TYPE" /> මුරපදය ඇතුළු කරන්න.</translation> <translation id="4838170306476614339">ඔබගේ දුරකථනයේ ඡායාරූප, මාධ්ය සහ ඔබගේ දැනුම්දීම් බලන්න</translation> @@ -4226,6 +4231,7 @@ <translation id="5072900412896857127">Google Play සේවා නියම පූරණය කළ නොහැකිය. කරුණාකර ඔබගේ ජාල සබැඳුම පරීක්ෂා කර යළි උත්සාහ කරන්න.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" />, සහ තව # ක්}other{<ph name="FILE1" />, <ph name="FILE2" />, සහ තව # ක්}}</translation> <translation id="5074318175948309511">නව සැකසුම් බලපෑමට පෙර මෙම පිටුව නැවුම් කළ යුතු විය හැක.</translation> +<translation id="5074761966806028321">පිහිටුවීම සම්පූර්ණ කිරීමට තවමත් අවසරය අවශ්යයි</translation> <translation id="5075910247684008552">ආරක්ෂිත වෙබ් අඩවි මත අනාරක්ෂිත අන්තර්ගතය පෙරනිමි ලෙස අවහිර කෙරේ</translation> <translation id="5078638979202084724">සියලු ටැබ පිටුසලකුණු කරන්න</translation> <translation id="5078796286268621944">වැරදි PIN</translation> @@ -4300,6 +4306,7 @@ <translation id="5150254825601720210">නෙට්ස්කේප් සහතික SSL සේවාදායක නම</translation> <translation id="5151354047782775295">තැටි ඉඩ හිස් කරන්න නැතහොත් තෝරන දත්ත ස්වයංක්රියව මැකීමට හැකිය</translation> <translation id="5153234146675181447">දුරකථනය අමතක කරන්න</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> සඳහා උසස් සැකසුම්</translation> <translation id="5154702632169343078">විෂය</translation> <translation id="5155327081870541046">ලිපින තීරුවේ, ඔබට සෙවීමට අවශ්ය අඩවිය සඳහා වන, "@bookmarks" වැනි, කෙටි මග ඇතුළත් කරන්න. අනතුරුව, ඔබ කැමති යතුරු පුවරුව කෙටි මඟ ඔබාගෙන, ඔබගේ සෙවීම් පදය ඇතුළත් කරන්න.</translation> @@ -4588,6 +4595,7 @@ <translation id="5449551289610225147">වලංගු නොවන මුරපදය</translation> <translation id="5449588825071916739">සියලු ටැබ පිටු සලකුණු කරන්න</translation> <translation id="5449716055534515760">කවුළුව වසන්න</translation> +<translation id="5452446625764825792">ඔබට දැන් ඔබගේ දුරකථනයේ මෑත ඡායාරූප, මාධ්ය සහ යෙදුම් බැලිය හැකිය</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (නොබැඳිව ක්රියාකරයි)</translation> <translation id="5454166040603940656"><ph name="PROVIDER" /> සමඟ</translation> <translation id="545484289444831485">තවත් සෙවීම් ප්රතිඵල බලන්න</translation> @@ -4648,6 +4656,7 @@ <translation id="5499211612787418966">මෙම සංවාදයට දැනට අවධානය යොමු කර නැත. මෙම සංවාදයට අවධානය යොමු කිරීමට Alt-Shift A ඔබන්න.</translation> <translation id="5499313591153584299">මෙම ගොනුව ඔබගේ පරිගණකයට හානිකර විය හැකියි.</translation> <translation id="5499453227627332024">ඔබගේ Linux බහාලුම සඳහා නවීකරණයක් ලබා ගත හැකිය. ඔබට පසුව සැකසීම් යෙදුමෙන්ද යාවත්කාලීන කළ හැකිය.</translation> +<translation id="5499476581866658341">ඔබට දැන් ඔබගේ දුරකථනයේ මෑත ඡායාරූප සහ මාධ්ය බැලිය හැකිය</translation> <translation id="549957179819296104">නව නිරූපකය</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />සෙවීම් ඉතිහාසය<ph name="END_LINK_SEARCH" /> සහ <ph name="BEGIN_LINK_GOOGLE" />ක්රියාකාරකම්වල වෙනත් ආකාර<ph name="END_LINK_GOOGLE" /> ඔබ පුරන විට ඔබගේ Google ගිණුමේ සුරැකිය හැකිය. ඔබට ඕනෑම වේලාවක ඒවා මැකිය හැකිය.</translation> <translation id="5500709606820808700">ආරක්ෂක පරීක්ෂාව අද ධාවන විය</translation> @@ -5936,6 +5945,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> දුරස්ථව එක් කරන ලදී</translation> <translation id="6790820461102226165">පුද්ගලයා එක් කරන්න...</translation> <translation id="6793604637258913070">දිස් වන විට හෝ චලනය වන විට පෙළ ලෝප විහ්නය උද්දීපනය කරන්න</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">ස්වයංක්රිය ස්කෑන් කිරීම තිරය මත ඇති අයිතම හරහා ස්වයංක්රියව යාමට ඔබට ඉඩ සලසයි. අයිතමයක් උද්දීපනය කළ විට, එය සක්රිය කිරීමට “තෝරන්න” ඔබන්න.</translation> <translation id="6795884519221689054">පැන්ඩා</translation> <translation id="6797493596609571643">අපොයි, කිසියම් වැරැද්දක් සිදුව ඇත.</translation> @@ -6312,6 +6322,7 @@ <translation id="7152478047064750137">මෙම දිගුවට විශේෂ අවසරයක් අවශ්ය නොවේ.</translation> <translation id="7154130902455071009">ඔබේ ආරම්භක පිටුව මේ ආකාරයට වෙනස් කරන්න: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">කැමරාව හෝ ගොනුව වෙතින් පවතින ඡායාරූප</translation> +<translation id="7160182524506337403">ඔබට දැන් ඔබගේ දුරකථනයේ දැනුම්දීම් බැලිය හැකිය</translation> <translation id="7163202347044721291">සක්රියන කේතය සත්යාපනය කරමින්...</translation> <translation id="716640248772308851">"<ph name="EXTENSION" />" ට ලකුණු කළ ස්ථාන තුළ ඇති රූප, වීඩියෝ සහ ශබ්ද ගොනු කියවීමට හැකිය</translation> <translation id="7167486101654761064">මෙම වර්ගය සඳහා සැමවිටම ගොනු විවෘත කරන්න (&A)</translation> @@ -7324,6 +7335,7 @@ <translation id="8138997515734480534"><ph name="VM_NAME" /> තත්ත්වය</translation> <translation id="8139447493436036221">Google Drive ගොනු</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">ඔබට Phone Hub සැකසීම් තුළ තවත් විශේෂාංග පිහිටුවිය හැකිය</translation> <translation id="8141584439523427891">දැන් වෛකල්පික බ්රවුසරයේ විවෘත කෙරේ</translation> <translation id="8141725884565838206">ඔබේ මුරපද කළමණාකරණය</translation> <translation id="814204052173971714">{COUNT,plural, =1{වීඩියෝවක්}one{වීඩියෝ #}other{වීඩියෝ #}}</translation> @@ -7531,6 +7543,7 @@ <translation id="833986336429795709">මෙම සබැඳිය විවෘත කිරීම සඳහා යෙදුම තෝරන්න</translation> <translation id="8342221978608739536">උත්සාහ නොකරන ලදී</translation> <translation id="8342861492835240085">එකතුවක් තෝරන්න</translation> +<translation id="8345848587667658367">ඔබට දැන් ඔබගේ දුරකථනයේ මෑත ඡායාරූප, මාධ්ය, දැනුම්දීම් සහ යෙදුම් බැලිය හැකිය</translation> <translation id="8347227221149377169">මුද්රණ වැඩ</translation> <translation id="834785183489258869">අප්රසිද්ධව සිටින අතරතුර, විවිධ අඩවි හරහා ඔබගේ බ්රවුස් කිරීමේ ක්රියාකාරකම් බැලීමට, උදාහරණයක් වශයෙන්, වෙළඳ දැන්වීම් පෞද්ගලිකකරණය කිරීමට අඩවිවලට ඔබගේ කුකි භාවිත කළ නොහැකිය. සමහර අඩවිවල විශේෂාංග ක්රියා නොකළ හැකිය.</translation> <translation id="8350789879725387295">ඩොකය තුළ පන්හිඳ මෙවලම්</translation> @@ -7806,6 +7819,7 @@ <translation id="8642947597466641025">පෙළ විශාල කරන්න</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> අනතුරුදායක විය හැක. ස්කෑන් කිරීම සඳහා Google ඉහළ ආරක්ෂාව වෙත යවන්නේද?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{කුකී නැත}=1{කුකී 1ක් අවහිර කර ඇත}one{කුකී #ක් අවහිර කර ඇත}other{කුකී #ක් අවහිර කර ඇත}}</translation> +<translation id="864423554496711319">ඔබගේ ගිණුමට සුරකින ලද උපාංග</translation> <translation id="8644655801811752511">මෙම ආරක්ෂක යතුර යළි සැකසිය නොහැක. ඔබ එය ඇතුළත් කළ පසු වහාම එය යළි සැකසීමට උත්සාහ කරන්න.</translation> <translation id="8645354835496065562">සංවේදක ප්රවේශයට දිගටම ඉඩ දෙන්න</translation> <translation id="8645920082661222035">අනතුරුදායක සිදුවීම් සිදු වීමට පෙර ඒවා පුරෝකථන කර ඔබට අවවාද කරයි</translation> @@ -8136,6 +8150,7 @@ <translation id="8957757410289731985">පැතිකඩ අභිරුචිකරණය කරන්න</translation> <translation id="895944840846194039">JavaScript මතකය</translation> <translation id="8960208913905765425">ඉක්මන් පිළිතුරු ඒකක පරිවර්තනය</translation> +<translation id="8960638196855923532">ඔබට දැන් ඔබගේ දුරකථනයේ දැනුම්දීම් සහ යෙදුම් බැලිය හැකිය</translation> <translation id="8962051932294470566">ඔබට වරකට එක් ගොනුවක් පමණක් බෙදා ගත හැකිය. වත්මන් මාරුව අවසන් වූ විට නැවත උත්සාහ කරන්න.</translation> <translation id="8962083179518285172">විස්තර සඟවන්න</translation> <translation id="8962918469425892674">මෙම අඩවිය චලන හෝ ආලෝක සංවේදක භාවිතා කරයි.</translation> @@ -8287,6 +8302,7 @@ <translation id="9103868373786083162">ආපසු යාමට ඔබන්න, ඉතිහාසය බැලීමට සන්දර්භ මෙනුව</translation> <translation id="9108035152087032312">&කවුළුව නම් කරන්න...</translation> <translation id="9108072915170399168">වත්මන් දත්ත භාවිත සැකසීම අන්තර්ජාලය රහිතවය</translation> +<translation id="9108294543511800041">ඔබට දැන් ඔබගේ දුරකථනයේ මෑත ඡායාරූප, මාධ්ය සහ දැනුම්දීම් බැලිය හැකිය</translation> <translation id="9108674852930645435">ඔබගේ <ph name="DEVICE_TYPE" /> හි අලුත් මොනවාදැයි ගවේෂණය කරන්න</translation> <translation id="9108808586816295166">සුරක්ෂිත DNS සැම විටම ලද නොහැකි වීමට ඉඩ ඇත</translation> <translation id="9109122242323516435">ඉඩ හිස් කිරීමට, උපාංග ගබඩාවෙන් ගොනු මකන්න.</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 1ef57881..b3e0a57 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -1926,6 +1926,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Odstranitev 1 nepodprte aplikacije}one{Odstranitev # nepodprte aplikacije}two{Odstranitev # nepodprtih aplikacij}few{Odstranitev # nepodprtih aplikacij}other{Odstranitev # nepodprtih aplikacij}}</translation> <translation id="2776560192867872731">Spremeni ime naprave za napravo <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Izbriši ta vsebnik</translation> +<translation id="2778471504622896352">Dodajanje oddaljenih aplikacij v zaganjalnik sistema ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Napaka pri nameščanju aplikacije za Linux</translation> <translation id="2783298271312924866">Preneseno</translation> @@ -3561,6 +3562,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> in še toliko stikal: <ph name="NUMBER_OF_OTHER_SWITCHES" /></translation> <translation id="439266289085815679">Konfiguracijo Bluetootha nadzira <ph name="USER_EMAIL" />.</translation> <translation id="4392896746540753732">Urejanje konfiguracijske datoteke</translation> +<translation id="4393713825278446281">Naprave za hitro seznanitev, shranjene v računu <ph name="PRIMARY_EMAIL" />.</translation> <translation id="4394049700291259645">Onemogoči</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Odpri vse}=1{&Odpri zaznamek}one{&Odpri vse ({COUNT})}two{&Odpri vse ({COUNT})}few{&Odpri vse ({COUNT})}other{&Odpri vse ({COUNT})}}</translation> <translation id="4397372003838952832">Tega gesla si ne bo treba zapomniti. Shranjeno bo v storitvi <ph name="GOOGLE_PASSWORD_MANAGER" /> za <ph name="EMAIL" />.</translation> @@ -3791,6 +3793,7 @@ <translation id="4615586811063744755">ni izbranih piškotkov</translation> <translation id="461661862154729886">Vir energije</translation> <translation id="4617001782309103936">Prekratko</translation> +<translation id="4617019240346358451">Znova naložite stran, če želite uporabljati razširitev »<ph name="EXTENSION_NAME" />«</translation> <translation id="4617270414136722281">Možnosti razširitev</translation> <translation id="4617880081511131945">Povezave ni mogoče vzpostaviti</translation> <translation id="4619564267100705184">Potrditev identitete</translation> @@ -4006,6 +4009,7 @@ <translation id="4833683849865011483">V tiskalnem strežniku je bil najden 1 tiskalnik.</translation> <translation id="4836504898754963407">Upravljanje prstnih odtisov</translation> <translation id="4837128290434901661">Želite preklopiti nazaj na Iskanje Google?</translation> +<translation id="4837165100461973682">Znova naložite stran, če želite uporabiti spremembe</translation> <translation id="4837926214103741331">Nimate dovoljenja za uporabo te naprave. Za dovoljenje za prijavo se obrnite na lastnika naprave.</translation> <translation id="4837952862063191349">Če želite napravo odkleniti in obnoviti lokalne podatke vnesite staro geslo za <ph name="DEVICE_TYPE" />.</translation> <translation id="4838170306476614339">Ogled fotografij, predstavnosti in obvestil telefona</translation> @@ -4315,6 +4319,7 @@ <translation id="5150254825601720210">Ime strežnika SLL Netscapeovega potrdila</translation> <translation id="5151354047782775295">Sprostite prostor na disku, sicer bodo nekateri podatki morda samodejno izbrisani</translation> <translation id="5153234146675181447">Pozabi telefon</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Dodatne nastavitve za: <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Zadeva</translation> <translation id="5155327081870541046">V naslovni vrstici vnesite bližnjico za spletno mesto, po katerem želite iskati, na primer »@bookmarks«. Nato pritisnite želene bližnjične tipke in vnesite iskalno poizvedbo.</translation> @@ -5958,6 +5963,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" />: dodano na daljavo</translation> <translation id="6790820461102226165">Dodajanje osebe ...</translation> <translation id="6793604637258913070">Označitev kazalke v besedilu, ko se pojavi ali premika</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Samodejno iskanje vam omogoča samodejno premikanje med elementi na zaslonu. Ko je element označen, pritisnite »Izberi«, če ga želite aktivirati.</translation> <translation id="6795884519221689054">Panda</translation> <translation id="6797493596609571643">Ojoj, prišlo je do napake.</translation> @@ -7831,6 +7837,7 @@ <translation id="8642947597466641025">Povečaj besedilo</translation> <translation id="8643443571868262066">Datoteka <ph name="FILE_NAME" /> je morda nevarna. Jo želite poslati Googlovi dodatni zaščiti v pregled?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Ni piškotkov}=1{1 piškotek je blokiran}one{# piškotek je blokiran}two{# piškotka sta blokirana}few{# piškotki so blokirani}other{# piškotkov je blokiranih}}</translation> +<translation id="864423554496711319">Naprave, shranjene v računu</translation> <translation id="8644655801811752511">Tega varnostnega ključa ni mogoče ponastaviti. Poskusite ga ponastaviti takoj, ko ga vstavite.</translation> <translation id="8645354835496065562">Še naprej dovoli dostop do tipal</translation> <translation id="8645920082661222035">Predvideva nevarne dogodke, preden se zgodijo, in vas opozarja nanje</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index 22e86ed3..c772e67 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -3918,6 +3918,7 @@ <translation id="4768332406694066911">Ke certifikata nga këto organizata që të identifikojnë</translation> <translation id="4770119228883592393">Kërkohet leje, shtyp ⌘ + Option + Shigjetën poshtë për t'u përgjigjur</translation> <translation id="4773112038801431077">Përmirëso Linux</translation> +<translation id="4774337692467964393">Nëse Smart Lock është aktivizuar, nuk do të jetë e nevojshme të futësh një kod PIN ose një fjalëkalim</translation> <translation id="4775142426314270551">Ndihmo në përmirësimin e veçorive dhe performancës së Chrome dhe ChromeOS duke dërguar automatikisht te Google raporte të ndërprerjeve aksidentale, si dhe të dhëna përdorimi dhe diagnostikuese. Disa të dhëna të përmbledhura do të ndihmojnë gjithashtu aplikacionet për Android dhe partnerët e Google. Nëse cilësimi "Aktiviteti i uebit dhe i aplikacioneve" është aktiv për "Llogarinë e Google" të fëmijës tënd, të dhënat e Android të fëmijës mund të ruhen në atë llogari.</translation> <translation id="477647109558161443">Krijo një shkurtore për desktop</translation> <translation id="4776594120007763294">Për të shtuar një faqe për ta lexuar më vonë, kliko te butoni</translation> @@ -3967,6 +3968,7 @@ <translation id="4820236583224459650">Vendose si biletë aktive</translation> <translation id="4821935166599369261">&Profilizimi u aktivizua</translation> <translation id="4823484602432206655">Lexo dhe ndrysho cilësimet e përdoruesit dhe të pajisjes</translation> +<translation id="4823894915586516138">Ky kod PIN ose fjalëkalim i mbron të dhënat e tua në këtë <ph name="DEVICE_TYPE" />, duke përfshirë çdo informacion ku ke qasje nga telefoni yt.</translation> <translation id="4824037980212326045">Rezervimi dhe restaurimi i Linux</translation> <translation id="4824958205181053313">Të anulohet sinkronizimi?</translation> <translation id="4827675678516992122">Nuk mund të lidhej</translation> @@ -5624,6 +5626,7 @@ <translation id="648927581764831596">Nuk ofrohet asnjë</translation> <translation id="6490471652906364588">Pajisja USB-C (porta djathtas)</translation> <translation id="6491376743066338510">Autorizimi dështoi</translation> +<translation id="6492396476180293140">Kamera e brendshme u çaktivizua nga çelësi i harduerit</translation> <translation id="6494327278868541139">Shfaq detajet e mbrojtjes së përforcuar</translation> <translation id="6494445798847293442">Nuk është një autoritet certifikimi</translation> <translation id="6494974875566443634">Personalizimi</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 566a45c6..af7a6a2 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1542,6 +1542,7 @@ <translation id="2433836460518180625">Otključaj samo uređaj</translation> <translation id="2434449159125086437">Podešavanje štampača nije uspelo. Proverite konfiguraciju, pa probajte ponovo.</translation> <translation id="2434758125294431199">Izaberite ko može da deli sa vama</translation> +<translation id="2434915728183570229">Sada možete da pregledate aplikacije na telefonu</translation> <translation id="2435137177546457207">Dodatni uslovi za Google Chrome i Chrome OS Flex</translation> <translation id="2435248616906486374">Veza sa mrežom je prekinuta</translation> <translation id="2435457462613246316">Prikaži lozinku</translation> @@ -4225,6 +4226,7 @@ <translation id="5072900412896857127">Nije uspelo učitavanje Uslova korišćenja usluge Google Play. Proverite mrežnu vezu i probajte ponovo.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> i još #}few{<ph name="FILE1" />, <ph name="FILE2" /> i još #}other{<ph name="FILE1" />, <ph name="FILE2" /> i još #}}</translation> <translation id="5074318175948309511">Možda treba ponovo da učitate ovu stranicu da bi nova podešavanja stupila na snagu.</translation> +<translation id="5074761966806028321">Još uvek je potrebna dozvola da bi se dovršilo podešavanje</translation> <translation id="5075910247684008552">Nebezbedan sadržaj se podrazumevano blokira na bezbednim sajtovima</translation> <translation id="5078638979202084724">Obeležavanje svih kartica</translation> <translation id="5078796286268621944">Netačan PIN</translation> @@ -4587,6 +4589,7 @@ <translation id="5449551289610225147">Nevažeća lozinka</translation> <translation id="5449588825071916739">Obeleži sve kartice</translation> <translation id="5449716055534515760">Close Win&dow (Zatvori prozor)</translation> +<translation id="5452446625764825792">Sada možete da pregledate nedavne slike, medije i aplikacije na telefonu</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (radi oflajn)</translation> <translation id="5454166040603940656">sa dobavljačem <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Prikaži još rezultata pretrage</translation> @@ -4647,6 +4650,7 @@ <translation id="5499211612787418966">Ovaj dijalog trenutno nije fokusiran. Pritisnite Alt-Shift A da biste fokusirali ovaj dijalog.</translation> <translation id="5499313591153584299">Ova datoteka može biti štetna po računar.</translation> <translation id="5499453227627332024">Dostupna je nadogradnja za Linux kontejner. Možete i da nadogradite kasnije u aplikaciji Podešavanja.</translation> +<translation id="5499476581866658341">Sada možete da pregledate nedavne slike i medije na telefonu</translation> <translation id="549957179819296104">Nova ikona</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Istorija pretrage<ph name="END_LINK_SEARCH" /> i <ph name="BEGIN_LINK_GOOGLE" />drugi oblici aktivnosti<ph name="END_LINK_GOOGLE" /> mogu da budu sačuvani na Google nalogu kada ste prijavljeni. Možete da ih izbrišete u bilo kom trenutku.</translation> <translation id="5500709606820808700">Bezbednosna provera je pokrenuta danas</translation> @@ -6316,6 +6320,7 @@ <translation id="7152478047064750137">Ovaj dodatak ne zahteva nikakve specijalne dozvole</translation> <translation id="7154130902455071009">Promenite početnu stranicu u: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Postojeća fotografija iz kamere ili datoteke</translation> +<translation id="7160182524506337403">Sada možete da pregledate obaveštenja na telefonu</translation> <translation id="7163202347044721291">Verifikuje se aktivacioni kôd…</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />“ može da čita slike, video i audio datoteke na navedenim lokacijama.</translation> <translation id="7167486101654761064">&Uvek otvori datoteke ovog tipa</translation> @@ -7330,6 +7335,7 @@ <translation id="8138997515734480534">Status virtuelne mašine <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Fajlovi na Google disku</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Možete da podesite još funkcija u podešavanjima Phone Hub-a</translation> <translation id="8141584439523427891">Sada se otvara u alternativnom pregledaču</translation> <translation id="8141725884565838206">Upravljajte lozinkama</translation> <translation id="814204052173971714">{COUNT,plural, =1{video}one{# video}few{# video snimka}other{# video snimaka}}</translation> @@ -7537,6 +7543,7 @@ <translation id="833986336429795709">Izaberite aplikaciju da biste otvorili ovaj link</translation> <translation id="8342221978608739536">Nisam pokušao/la</translation> <translation id="8342861492835240085">Izaberite kolekciju</translation> +<translation id="8345848587667658367">Sada možete da pregledate nedavne slike, medije, obaveštenja i aplikacije na telefonu</translation> <translation id="8347227221149377169">Zadaci štampanja</translation> <translation id="834785183489258869">Kada ste u režimu bez arhiviranja, sajtovi ne mogu da koriste kolačiće da bi videli vaše aktivnosti pregledanja na različitim sajtovima, na primer, za personalizaciju oglasa. Funkcije na nekim sajtovima mogu da ne rade.</translation> <translation id="8350789879725387295">Alatke za pisaljku na polici</translation> @@ -8144,6 +8151,7 @@ <translation id="8957757410289731985">Prilagodi profil</translation> <translation id="895944840846194039">JavaScript memorija</translation> <translation id="8960208913905765425">Konverzija jedinica za brze odgovore</translation> +<translation id="8960638196855923532">Sada možete da pregledate obaveštenja i aplikacije na telefonu</translation> <translation id="8962051932294470566">Možete da delite fajlove samo jedan po jedan. Probajte ponovo kada se završi aktuelni prenos.</translation> <translation id="8962083179518285172">Sakrij detalje</translation> <translation id="8962918469425892674">Ovaj sajt koristi senzore pokreta ili svetla.</translation> @@ -8295,6 +8303,7 @@ <translation id="9103868373786083162">Pritisnite da biste se vratili ili otvorite kontekstualni meni da biste videli istoriju</translation> <translation id="9108035152087032312">Daj naziv prozoru...</translation> <translation id="9108072915170399168">Aktuelno podešavanje potrošnje podataka je „Bez interneta“</translation> +<translation id="9108294543511800041">Sada možete da pregledate nedavne slike, medije i obaveštenja na telefonu</translation> <translation id="9108674852930645435">Istražite šta je novo na <ph name="DEVICE_TYPE" /> uređaju</translation> <translation id="9108808586816295166">Bezbedni DNS možda neće uvek biti dostupan</translation> <translation id="9109122242323516435">Da biste oslobodili prostor, izbrišite datoteke iz memorijskog prostora uređaja.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 36a90f2..09cdcbc 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1542,6 +1542,7 @@ <translation id="2433836460518180625">Откључај само уређај</translation> <translation id="2434449159125086437">Подешавање штампача није успело. Проверите конфигурацију, па пробајте поново.</translation> <translation id="2434758125294431199">Изаберите ко може да дели са вама</translation> +<translation id="2434915728183570229">Сада можете да прегледате апликације на телефону</translation> <translation id="2435137177546457207">Додатни услови за Google Chrome и Chrome OS Flex</translation> <translation id="2435248616906486374">Веза са мрежом је прекинута</translation> <translation id="2435457462613246316">Прикажи лозинку</translation> @@ -4225,6 +4226,7 @@ <translation id="5072900412896857127">Није успело учитавање Услова коришћења услуге Google Play. Проверите мрежну везу и пробајте поново.</translation> <translation id="5073956501367595100">{0,plural,offset:2 =1{<ph name="FILE1" />}=2{<ph name="FILE1" />, <ph name="FILE2" />}one{<ph name="FILE1" />, <ph name="FILE2" /> и још #}few{<ph name="FILE1" />, <ph name="FILE2" /> и још #}other{<ph name="FILE1" />, <ph name="FILE2" /> и још #}}</translation> <translation id="5074318175948309511">Можда треба поново да учитате ову страницу да би нова подешавања ступила на снагу.</translation> +<translation id="5074761966806028321">Још увек је потребна дозвола да би се довршило подешавање</translation> <translation id="5075910247684008552">Небезбедан садржај се подразумевано блокира на безбедним сајтовима</translation> <translation id="5078638979202084724">Обележавање свих картица</translation> <translation id="5078796286268621944">Нетачан PIN</translation> @@ -4587,6 +4589,7 @@ <translation id="5449551289610225147">Неважећа лозинка</translation> <translation id="5449588825071916739">Обележи све картице</translation> <translation id="5449716055534515760">Close Win&dow (Затвори прозор)</translation> +<translation id="5452446625764825792">Сада можете да прегледате недавне слике, медије и апликације на телефону</translation> <translation id="5452976525201205853"><ph name="LANGUAGE" /> (ради офлајн)</translation> <translation id="5454166040603940656">са добављачем <ph name="PROVIDER" /></translation> <translation id="545484289444831485">Прикажи још резултата претраге</translation> @@ -4647,6 +4650,7 @@ <translation id="5499211612787418966">Овај дијалог тренутно није фокусиран. Притисните Alt-Shift A да бисте фокусирали овај дијалог.</translation> <translation id="5499313591153584299">Ова датотека може бити штетна по рачунар.</translation> <translation id="5499453227627332024">Доступна је надоградња за Linux контејнер. Можете и да надоградите касније у апликацији Подешавања.</translation> +<translation id="5499476581866658341">Сада можете да прегледате недавне слике и медије на телефону</translation> <translation id="549957179819296104">Нова икона</translation> <translation id="5500168250243071806"><ph name="BEGIN_LINK_SEARCH" />Историја претраге<ph name="END_LINK_SEARCH" /> и <ph name="BEGIN_LINK_GOOGLE" />други облици активности<ph name="END_LINK_GOOGLE" /> могу да буду сачувани на Google налогу када сте пријављени. Можете да их избришете у било ком тренутку.</translation> <translation id="5500709606820808700">Безбедносна провера је покренута данас</translation> @@ -6316,6 +6320,7 @@ <translation id="7152478047064750137">Овај додатак не захтева никакве специјалне дозволе</translation> <translation id="7154130902455071009">Промените почетну страницу у: <ph name="START_PAGE" /></translation> <translation id="7155171745945906037">Постојећа фотографија из камере или датотеке</translation> +<translation id="7160182524506337403">Сада можете да прегледате обавештења на телефону</translation> <translation id="7163202347044721291">Верификује се активациони кôд…</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />“ може да чита слике, видео и аудио датотеке на наведеним локацијама.</translation> <translation id="7167486101654761064">&Увек отвори датотеке овог типа</translation> @@ -7330,6 +7335,7 @@ <translation id="8138997515734480534">Статус виртуелне машине <ph name="VM_NAME" /></translation> <translation id="8139447493436036221">Фајлови на Google диску</translation> <translation id="8140070492745508800"><ph name="FIRST_DEVICE" />, <ph name="SECOND_DEVICE" /></translation> +<translation id="8141418916163800697">Можете да подесите још функција у подешавањима Phone Hub-а</translation> <translation id="8141584439523427891">Сада се отвара у алтернативном прегледачу</translation> <translation id="8141725884565838206">Управљајте лозинкама</translation> <translation id="814204052173971714">{COUNT,plural, =1{видео}one{# видео}few{# видео снимка}other{# видео снимака}}</translation> @@ -7537,6 +7543,7 @@ <translation id="833986336429795709">Изаберите апликацију да бисте отворили овај линк</translation> <translation id="8342221978608739536">Нисам покушао/ла</translation> <translation id="8342861492835240085">Изаберите колекцију</translation> +<translation id="8345848587667658367">Сада можете да прегледате недавне слике, медије, обавештења и апликације на телефону</translation> <translation id="8347227221149377169">Задаци штампања</translation> <translation id="834785183489258869">Када сте у режиму без архивирања, сајтови не могу да користе колачиће да би видели ваше активности прегледања на различитим сајтовима, на пример, за персонализацију огласа. Функције на неким сајтовима могу да не раде.</translation> <translation id="8350789879725387295">Алатке за писаљку на полици</translation> @@ -8144,6 +8151,7 @@ <translation id="8957757410289731985">Прилагоди профил</translation> <translation id="895944840846194039">JavaScript меморија</translation> <translation id="8960208913905765425">Конверзија јединица за брзе одговоре</translation> +<translation id="8960638196855923532">Сада можете да прегледате обавештења и апликације на телефону</translation> <translation id="8962051932294470566">Можете да делите фајлове само један по један. Пробајте поново када се заврши актуелни пренос.</translation> <translation id="8962083179518285172">Сакриј детаље</translation> <translation id="8962918469425892674">Овај сајт користи сензоре покрета или светла.</translation> @@ -8295,6 +8303,7 @@ <translation id="9103868373786083162">Притисните да бисте се вратили или отворите контекстуални мени да бисте видели историју</translation> <translation id="9108035152087032312">Дај назив прозору...</translation> <translation id="9108072915170399168">Актуелно подешавање потрошње података је „Без интернета“</translation> +<translation id="9108294543511800041">Сада можете да прегледате недавне слике, медије и обавештења на телефону</translation> <translation id="9108674852930645435">Истражите шта је ново на <ph name="DEVICE_TYPE" /> уређају</translation> <translation id="9108808586816295166">Безбедни DNS можда неће увек бити доступан</translation> <translation id="9109122242323516435">Да бисте ослободили простор, избришите датотеке из меморијског простора уређаја.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index df8166b..1a0b1bf 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -3937,6 +3937,7 @@ <translation id="4768332406694066911">Du har certifikat från dessa organisationer som identifierar dig</translation> <translation id="4770119228883592393">Behörighet har begärts, tryck på ⌘ + Alt + nedåtpil för att svara</translation> <translation id="4773112038801431077">Uppgradera Linux</translation> +<translation id="4774337692467964393">Om du aktiverar Smart Lock behöver du inte ange en pinkod eller ett lösenord</translation> <translation id="4775142426314270551">Skicka felrapporter samt diagnostik- och användningsdata automatiskt till Google och hjälp oss att förbättra funktioner och prestanda i Chrome och Chrome OS. Viss samlad data används även till att förbättra Android-appar och produkter från Googles partner. Om inställningen Webb- och appaktivitet har aktiverats för ditt barns Google-konto kan barnets Android-data sparas i Google-kontot.</translation> <translation id="477647109558161443">Skapa en skrivbordsgenväg</translation> <translation id="4776594120007763294">Klicka på knappen nedan om du vill lägga till en sida att läsa senare</translation> @@ -3986,6 +3987,7 @@ <translation id="4820236583224459650">Ställ in som aktiv biljett</translation> <translation id="4821935166599369261">&Profilering aktiverad</translation> <translation id="4823484602432206655">Läsa och ändra användarinställningar och enhetsinställningar</translation> +<translation id="4823894915586516138">Med pinkoden eller lösenordet skyddas din data på denna <ph name="DEVICE_TYPE" />, inklusive information du kommer åt från telefonen.</translation> <translation id="4824037980212326045">Säkerhetskopiering och återställning i Linux</translation> <translation id="4824958205181053313">Vill du avbryta synkroniseringen?</translation> <translation id="4827675678516992122">Det gick inte att ansluta</translation> @@ -5643,6 +5645,7 @@ <translation id="648927581764831596">Inte tillgängligt</translation> <translation id="6490471652906364588">USB-C-enhet (höger port)</translation> <translation id="6491376743066338510">Auktoriseringen misslyckades</translation> +<translation id="6492396476180293140">Intern kamera har inaktiverats med maskinvarureglage</translation> <translation id="6494327278868541139">Visa detaljer om förbättrat skydd</translation> <translation id="6494445798847293442">Inte från certifikatutfärdare</translation> <translation id="6494974875566443634">Anpassning</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index c8108f8a..0278f6b1 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -3932,6 +3932,7 @@ <translation id="4768332406694066911">Una vyeti kutoka kwenye mashirika haya vinavyokutambua</translation> <translation id="4770119228883592393">Umeombwa ruhusa, bonyeza ⌘ pamoja na vitufe vya Option na kishale cha Chini ili ujibu</translation> <translation id="4773112038801431077">Sasisha Linux</translation> +<translation id="4774337692467964393">Iwapo kipengele cha Smart Lock kimewashwa, hutahitaji kuweka PIN au nenosiri</translation> <translation id="4775142426314270551">Tusaidie kuboresha vipengele na utendaji wa Chrome na mfumo wa uendeshaji wa Chrome kwa kutuma kiotomatiki ripoti za kuacha kufanya kazi pamoja na data ya matumizi na uchunguzi kwa Google. Baadhi ya data iliyojumlishwa pia itasaidia programu za Android na washirika wa Google. Ikiwa mipangilio ya Historia ya Shughuli kwenye Wavuti na Programu imewashwa katika Akaunti ya Google ya mtoto wako, huenda data ya Android ya mtoto wako ikahifadhiwa kwenye Akaunti yake ya Google.</translation> <translation id="477647109558161443">Weka mkato wa eneo-kazi</translation> <translation id="4776594120007763294">Ili uweke ukurasa utakaousoma baadaye, bofya kitufe</translation> @@ -3981,6 +3982,7 @@ <translation id="4820236583224459650">Weka kuwa tiketi inayotumiwa</translation> <translation id="4821935166599369261">&Uwekaji Wasifu Umewezeshwa</translation> <translation id="4823484602432206655">Soma na ubadilishe mipangilio ya mtumiaji na kifaa</translation> +<translation id="4823894915586516138">PIN au nenosiri hili linalinda data yako kwenye <ph name="DEVICE_TYPE" /> hii, ikijumuisha taarifa yoyote unayoifikia kutoka kwenye simu yako</translation> <translation id="4824037980212326045">Kuhifadhi na kurejesha nakala kwenye Linux</translation> <translation id="4824958205181053313">Ungependa kughairi usawazishaji?</translation> <translation id="4827675678516992122">Imeshindwa kuunganisha</translation> @@ -5638,6 +5640,7 @@ <translation id="648927581764831596">Hakuna inayopatikana</translation> <translation id="6490471652906364588">Kifaa cha USB-C (mlango wa kulia)</translation> <translation id="6491376743066338510">Imeshindwa Kuidhinisha</translation> +<translation id="6492396476180293140">Kamera ya ndani imezimwa kwa kutumia swichi ya maunzi</translation> <translation id="6494327278868541139">Onyesha maelezo ya ulinzi ulioboreshwa</translation> <translation id="6494445798847293442">Si Mamlaka ya Kutoa Vyeti</translation> <translation id="6494974875566443634">Kuweka mapendeleo</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 45aa12b..3112cf3 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -1908,6 +1908,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{นำแอปที่ไม่รองรับออก 1 แอป}other{นำแอปที่ไม่รองรับออก # แอป}}</translation> <translation id="2776560192867872731">เปลี่ยนชื่ออุปกรณ์สำหรับ <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">ลบคอนเทนเนอร์นี้</translation> +<translation id="2778471504622896352">เพิ่มแอประยะไกลลงใน Launcher ของ Chrome OS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">เกิดข้อผิดพลาดในการติดตั้งแอปพลิเคชัน Linux</translation> <translation id="2783298271312924866">ดาวน์โหลดแล้ว</translation> @@ -2223,6 +2224,7 @@ <translation id="3067198360141518313">เรียกใช้ปลั๊กอินนี้</translation> <translation id="3071624960923923138">คุณสามารถคลิกที่นี่เพื่อเปิดแท็บใหม่</translation> <translation id="3072775339180057696">อนุญาตให้เว็บไซต์ดู <ph name="FILE_NAME" /> ไหม</translation> +<translation id="3074499504015191586">แปลทั้งหน้า</translation> <translation id="3075874217500066906">จำเป็นต้องรีสตาร์ทเพื่อเริ่มดำเนินการ Powerwash เมื่อรีสตาร์ทแล้ว ระบบจะขอให้คุณยืนยันว่าคุณต้องการดำเนินการ</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">บันทึกในอุปกรณ์นี้เท่านั้น</translation> @@ -3543,6 +3545,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> และสวิตช์อื่นๆ อีก <ph name="NUMBER_OF_OTHER_SWITCHES" /> รายการ</translation> <translation id="439266289085815679">การกำหนดค่าบลูทูธควบคุมโดย <ph name="USER_EMAIL" /></translation> <translation id="4392896746540753732">แก้ไขไฟล์การกำหนดค่า</translation> +<translation id="4393713825278446281">บันทึกอุปกรณ์การจับคู่ด่วนไปยัง <ph name="PRIMARY_EMAIL" /> แล้ว</translation> <translation id="4394049700291259645">ปิดการใช้งาน</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&เปิดทั้งหมด}=1{&เปิดบุ๊กมาร์ก}other{&เปิดทั้งหมด ({COUNT})}}</translation> <translation id="4397372003838952832">คุณไม่ต้องจำรหัสผ่านนี้ เพราะระบบจะบันทึกไว้ใน <ph name="GOOGLE_PASSWORD_MANAGER" />สำหรับ <ph name="EMAIL" /></translation> @@ -3772,6 +3775,7 @@ <translation id="4615586811063744755">ไม่ได้เลือกคุกกี้</translation> <translation id="461661862154729886">แหล่งพลังงาน</translation> <translation id="4617001782309103936">สั้นเกินไป</translation> +<translation id="4617019240346358451">โหลดหน้าเว็บซ้ำเพื่อใช้ "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">ตัวเลือกส่วนขยาย</translation> <translation id="4617880081511131945">เริ่มการเชื่อมต่อไม่ได้</translation> <translation id="4619564267100705184">ยืนยันว่าเป็นคุณ</translation> @@ -3987,6 +3991,7 @@ <translation id="4833683849865011483">พบเครื่องพิมพ์ 1 เครื่องจากเซิร์ฟเวอร์การพิมพ์</translation> <translation id="4836504898754963407">จัดการลายนิ้วมือ</translation> <translation id="4837128290434901661">ต้องการเปลี่ยนกลับไปใช้ Google Search ไหม</translation> +<translation id="4837165100461973682">โหลดหน้านี้ซ้ำเพื่อใช้การเปลี่ยนแปลง</translation> <translation id="4837926214103741331">คุณไม่ได้รับอนุญาตให้ใช้อุปกรณ์นี้ โปรดติดต่อเจ้าของอุปกรณ์เพื่อขออนุญาตลงชื่อเข้าใช้</translation> <translation id="4837952862063191349">หากต้องการปลดล็อกและกู้คืนข้อมูลในเครื่อง โปรดป้อนรหัสผ่านเก่าของ <ph name="DEVICE_TYPE" /></translation> <translation id="4838170306476614339">ดูรูปภาพ สื่อ และการแจ้งเตือนในโทรศัพท์</translation> @@ -4296,6 +4301,7 @@ <translation id="5150254825601720210">ใบรับรองชื่อเซิร์ฟเวอร์ SSL ของ Netscape</translation> <translation id="5151354047782775295">เพิ่มพื้นที่ว่างของดิสก์หรือเลือกข้อมูลที่อาจลบออกเองโดยอัตโนมัติ</translation> <translation id="5153234146675181447">เลิกจำโทรศัพท์</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">การตั้งค่าขั้นสูงสำหรับ <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">เรื่อง</translation> <translation id="5155327081870541046">ป้อนทางลัดของเว็บไซต์ที่ต้องการค้นหาในแถบที่อยู่ เช่น @bookmarks จากนั้นกดแป้นพิมพ์ลัดที่ต้องการ แล้วป้อนข้อความค้นหา</translation> @@ -5069,6 +5075,7 @@ <translation id="5933522550144185133"><ph name="APP_NAME" /> กำลังใช้กล้องถ่ายรูปและไมโครโฟนของคุณ</translation> <translation id="5935158534896975820">กำลังเตรียมคำขอลงนามใบรับรอง (กำลังรอเซิร์ฟเวอร์)</translation> <translation id="5935656526031444304">จัดการ Google Safe Browsing</translation> +<translation id="5936065461722368675">แปลทั้งหน้า</translation> <translation id="5938002010494270685">การอัปเกรดความปลอดภัยพร้อมใช้งานแล้ว</translation> <translation id="5939518447894949180">รีเซ็ต</translation> <translation id="5939719276406088041">สร้างทางลัดไม่ได้</translation> @@ -5928,6 +5935,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> ได้รับการเพิ่มจากระยะไกล</translation> <translation id="6790820461102226165">เพิ่มบุคคล...</translation> <translation id="6793604637258913070">ไฮไลต์เครื่องหมาย caret ของข้อความเมื่อปรากฏขึ้นหรือเคลื่อนที่</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">การสแกนอัตโนมัติช่วยให้คุณเลื่อนผ่านรายการต่างๆ ในหน้าจอได้โดยอัตโนมัติ เมื่อมีการไฮไลต์รายการ ให้กด "เลือก" เพื่อเปิดใช้งาน</translation> <translation id="6795884519221689054">แพนด้า</translation> <translation id="6797493596609571643">อ๊ะ เกิดข้อผิดพลาดบางอย่าง</translation> @@ -7800,6 +7808,7 @@ <translation id="8642947597466641025">ทำให้ข้อความใหญ่ขึ้น</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> อาจเป็นอันตราย ส่งไปให้การปกป้องขั้นสูงของ Google สแกนไหม</translation> <translation id="8644047503904673749">{COUNT,plural, =0{ไม่มีคุกกี้}=1{บล็อกคุกกี้แล้ว 1 รายการ}other{บล็อกคุกกี้แล้ว # รายการ}}</translation> +<translation id="864423554496711319">อุปกรณ์ที่บันทึกไว้ในบัญชี</translation> <translation id="8644655801811752511">รีเซ็ตคีย์ความปลอดภัยนี้ไม่ได้ ลองรีเซ็ตคีย์ทันทีหลังจากเสียบคีย์แล้ว</translation> <translation id="8645354835496065562">อนุญาตการเข้าถึงเซ็นเซอร์ต่อไป</translation> <translation id="8645920082661222035">คาดการณ์และเตือนคุณก่อนเกิดเหตุการณ์อันตราย</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 95e5f0d3..6c29cdb 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1910,6 +1910,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{غیر تعاون یافتہ 1 ایپ ہٹائیں}other{غیر تعاون یافتہ # ایپس ہٹائیں}}</translation> <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> کیلئے آلہ کا نام تبدیل کریں</translation> <translation id="2777251078198759550">اس کنٹینر کو حذف کریں</translation> +<translation id="2778471504622896352">ChromeOS لانچر میں ریموٹ ایپس شامل کریں</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Linux ایپلیکیشن انسٹال کرنے میں خرابی</translation> <translation id="2783298271312924866">ڈاؤن لوڈ کردہ</translation> @@ -3545,6 +3546,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />، <ph name="SECOND_SWITCH" />، <ph name="THIRD_SWITCH" /> اور <ph name="NUMBER_OF_OTHER_SWITCHES" /> مزید سوئچز</translation> <translation id="439266289085815679"><ph name="USER_EMAIL" /> بلوٹوتھ کنفیگریشن کو کنٹرول کرتا ہے۔</translation> <translation id="4392896746540753732">کنفیگریشن فائل میں ترمیم کریں</translation> +<translation id="4393713825278446281">فاسٹ پئیر آلات کو <ph name="PRIMARY_EMAIL" /> میں محفوظ کیا گیا</translation> <translation id="4394049700291259645">غیر فعال کریں</translation> <translation id="4396956294839002702">{COUNT,plural, =0{سبھی کو &کھولیں}=1{بُک مارک &کھولیں}other{سبھی ({COUNT}) کو &کھولیں}}</translation> <translation id="4397372003838952832">آپ کو یہ پاس ورڈ یاد رکھنے کی ضرورت نہیں ہوگی۔ اسے <ph name="EMAIL" /> کے لیے <ph name="GOOGLE_PASSWORD_MANAGER" /> میں محفوظ کیا جائے گا۔</translation> @@ -3774,6 +3776,7 @@ <translation id="4615586811063744755">کوئی کوکی منتخب نہیں ہے</translation> <translation id="461661862154729886">توانائی کا ماخذ</translation> <translation id="4617001782309103936">بہت چھوٹا</translation> +<translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" کا استعمال کرنے کیلئے صفحہ کو دوبارہ لوڈ کریں</translation> <translation id="4617270414136722281">ایکسٹینشنز کے اختیارات</translation> <translation id="4617880081511131945">کنکشن قائم نہیں کیا جا سکتا</translation> <translation id="4619564267100705184">توثیق کریں کہ یہ آپ ہیں</translation> @@ -3989,6 +3992,7 @@ <translation id="4833683849865011483">پرنٹ سرور سے 1 پرنٹر ملا</translation> <translation id="4836504898754963407">فنگر پرنٹس کا نظم کریں</translation> <translation id="4837128290434901661">Google تلاش پر واپس جائیں؟</translation> +<translation id="4837165100461973682">اپنی تبدیلیاں لاگو کرنے کے لیے صفحہ کو دوبارہ لوڈ کریں</translation> <translation id="4837926214103741331">آپ کے پاس یہ آلہ استعمال کرنے کی اجازت نہیں ہے۔ سائن ان کی اجازت کیلئے براہ کرم آلہ کے مالک سے رابطہ کریں۔</translation> <translation id="4837952862063191349">اپنا مقامی ڈیٹا غیر مقفل اور بحال کرنے کیلئے، براہ کرم اپنا پرانا <ph name="DEVICE_TYPE" /> پاس ورڈ درج کریں۔</translation> <translation id="4838170306476614339">اپنے فون کی تصاویر، میڈیا اور اطلاعات دیکھیں</translation> @@ -4299,6 +4303,7 @@ <translation id="5150254825601720210">Netscape سرٹیفکیٹ SSL سرور کا نام</translation> <translation id="5151354047782775295">ڈسک کی جگہ خالی کریں یا منتخب کردہ ڈیٹا خودکار طور پر حذف ہوسکتا ہے</translation> <translation id="5153234146675181447">فون کو بھول جائیں</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722"><ph name="PRINTING_DESTINATION" /> کیلئے جدید ترین ترتیبات</translation> <translation id="5154702632169343078">موضوع</translation> <translation id="5155327081870541046">ایڈریس بار میں، اس سائٹ کا شارٹ کٹ درج کریں جسے آپ تلاش کرنا چاہتے ہیں، جیسے "bookmarks@"۔ پھر، اپنا پسندیدہ کی بورڈ شارٹ کٹ دبائیں، اور اپنی تلاش کی اصطلاح درج کریں۔</translation> @@ -5935,6 +5940,7 @@ <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> کو دور سے شامل کر دیا گیا</translation> <translation id="6790820461102226165">شخص کو شامل کریں…</translation> <translation id="6793604637258913070">متن کیرٹ کے ظاہر ہونے یا منتقل ہونے پر اسے ہائی لائٹ کریں</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">خودکار اسکین سے آپ اسکرین پر موجود ایک آئٹم سے دوسرے آئٹم پر جا سکتے ہیں۔ جب کسی آئٹمز کو نمایاں کیا جاتا ہے تو اسے فعال کرنے کیلئے "منتخب کریں" دبائیں۔</translation> <translation id="6795884519221689054">پانڈا</translation> <translation id="6797493596609571643">افوہ، کچھ غلط ہو گیا۔</translation> @@ -7809,6 +7815,7 @@ <translation id="8642947597466641025">متن کو اور بڑا بنائیں</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> خطرناک ہو سکتا ہے۔ اسکیننگ کے لیے Google کے اعلی تحفظ کو بھیجیں؟</translation> <translation id="8644047503904673749">{COUNT,plural, =0{کوئی کوکی نہیں}=1{1 کوکی مسدود ہے}other{# کوکیز مسدود ہیں}}</translation> +<translation id="864423554496711319">آپ کے اکاؤنٹ میں محفوظ کردہ آلات</translation> <translation id="8644655801811752511">اس سیکیورٹی کلید کو دوبارہ ترتیب نہیں دیا جا سکتا۔ کلید داخل کرنے کے بعد اسے فوری طور پر دوبارہ ترتیب دینے کی کوشش کریں۔</translation> <translation id="8645354835496065562">سینسر تک رسائی کی اجازت جاری رکھیں</translation> <translation id="8645920082661222035">خطرناک ایونٹس ہونے سے پہلے ان کی پیشین گوئی کرتی ہے اور آپ کو ان کے بارے میں متنبہ کرتی ہے</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 6daea4c..e388156 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1923,6 +1923,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{Xóa 1 ứng dụng không được hỗ trợ}other{Xóa # ứng dụng không được hỗ trợ}}</translation> <translation id="2776560192867872731">Thay đổi tên thiết bị của <ph name="DEVICE_NAME" /></translation> <translation id="2777251078198759550">Xoá vùng chứa này</translation> +<translation id="2778471504622896352">Thêm ứng dụng từ xa vào trình chạy ChromeOS</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">Lỗi khi cài đặt ứng dụng Linux</translation> <translation id="2783298271312924866">Đã tải xuống</translation> @@ -3558,6 +3559,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /> và <ph name="NUMBER_OF_OTHER_SWITCHES" /> công tắc khác</translation> <translation id="439266289085815679">Cấu hình Bluetooth do <ph name="USER_EMAIL" /> kiểm soát.</translation> <translation id="4392896746540753732">Chỉnh sửa tệp cấu hình này</translation> +<translation id="4393713825278446281">Thiết bị Ghép nối nhanh đã được lưu vào <ph name="PRIMARY_EMAIL" /></translation> <translation id="4394049700291259645">Vô hiệu hóa</translation> <translation id="4396956294839002702">{COUNT,plural, =0{&Mở tất cả}=1{&Mở dấu trang}other{&Mở tất cả ({COUNT})}}</translation> <translation id="4397372003838952832">Bạn không cần nhớ mật khẩu này. Mật khẩu này sẽ được lưu vào <ph name="GOOGLE_PASSWORD_MANAGER" /> của <ph name="EMAIL" /></translation> @@ -3788,6 +3790,7 @@ <translation id="4615586811063744755">chưa chọn cookie nào</translation> <translation id="461661862154729886">Nguồn điện</translation> <translation id="4617001782309103936">Quá ngắn</translation> +<translation id="4617019240346358451">Tải lại trang để sử dụng "<ph name="EXTENSION_NAME" />"</translation> <translation id="4617270414136722281">Tùy chọn tiện ích</translation> <translation id="4617880081511131945">Không thiết lập được kết nối</translation> <translation id="4619564267100705184">Xác minh danh tính của bạn</translation> @@ -4003,6 +4006,7 @@ <translation id="4833683849865011483">Tìm thấy 1 máy in trên máy chủ máy in</translation> <translation id="4836504898754963407">Quản lý vân tay số</translation> <translation id="4837128290434901661">Chuyển lại về Google Tìm kiếm?</translation> +<translation id="4837165100461973682">Tải lại trang để áp dụng các thay đổi</translation> <translation id="4837926214103741331">Bạn không được phép sử dụng thiết bị này. Vui lòng liên hệ với chủ sở hữu thiết bị để có quyền đăng nhập.</translation> <translation id="4837952862063191349">Để mở khóa và khôi phục dữ liệu cục bộ của bạn, vui lòng nhập mật khẩu <ph name="DEVICE_TYPE" /> cũ của bạn.</translation> <translation id="4838170306476614339">Xem thông báo, nội dung nghe nhìn và ảnh trên điện thoại</translation> @@ -4312,6 +4316,7 @@ <translation id="5150254825601720210">Tên Máy chủ SSL của Chứng chỉ Netscape</translation> <translation id="5151354047782775295">Giải phóng dung lượng đĩa, nếu không một số dữ liệu có thể tự động bị xóa</translation> <translation id="5153234146675181447">Quên điện thoại</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">Cài đặt nâng cao cho <ph name="PRINTING_DESTINATION" /></translation> <translation id="5154702632169343078">Chủ đề</translation> <translation id="5155327081870541046">Trong thanh địa chỉ, hãy nhập lối tắt cho trang web bạn muốn tìm kiếm, chẳng hạn như "@bookmarks". Sau đó, nhấn phím tắt ưu tiên của bạn rồi nhập cụm từ tìm kiếm.</translation> @@ -5947,6 +5952,7 @@ <translation id="6790497603648687708">Đã thêm <ph name="EXTENSION_NAME" /> từ xa</translation> <translation id="6790820461102226165">Thêm người...</translation> <translation id="6793604637258913070">Đánh dấu điểm chèn văn bản khi điểm này xuất hiện hoặc di chuyển</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">Tính năng tự động quét cho phép bạn tự động di chuyển qua các mục trên màn hình. Khi một mục được làm nổi bật, hãy nhấn nút “Chọn” để kích hoạt mục đó.</translation> <translation id="6795884519221689054">Gấu trúc</translation> <translation id="6797493596609571643">Rất tiếc, đã xảy ra lỗi.</translation> @@ -7669,7 +7675,7 @@ <translation id="8471525937465764768">Các trang web thường kết nối với thiết bị USB để áp dụng những tính năng như in tài liệu hoặc lưu vào thiết bị lưu trữ</translation> <translation id="8471959340398751476">Tính năng nhận chiết khấu đang tắt. Bạn có thể bật tính năng này trong trình đơn tùy chỉnh</translation> <translation id="8472623782143987204">được hỗ trợ bằng phần cứng</translation> -<translation id="8473863474539038330">Địa chỉ và các tùy chọn khác</translation> +<translation id="8473863474539038330">Địa chỉ và các lựa chọn khác</translation> <translation id="8475313423285172237">Một chương trình khác trên máy tính của bạn đã thêm một tiện ích có thể thay đổi cách Chrome hoạt động.</translation> <translation id="8477241577829954800">Đã thay thế</translation> <translation id="8477384620836102176">&Chung</translation> @@ -7820,6 +7826,7 @@ <translation id="8642947597466641025">Phóng to Văn bản</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> có thể nguy hiểm. Bạn có muốn gửi tệp tới Chương trình Bảo vệ nâng cao của Google để quét không?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{Không có cookie}=1{Đã chặn 1 cookie}other{Đã chặn # cookie}}</translation> +<translation id="864423554496711319">Các thiết bị đã được lưu vào tài khoản của bạn</translation> <translation id="8644655801811752511">Không thể đặt lại khóa bảo mật này. Thử đặt lại khóa này ngay sau khi cắm.</translation> <translation id="8645354835496065562">Tiếp tục cho phép sử dụng cảm biến</translation> <translation id="8645920082661222035">Dự đoán và cảnh báo cho bạn các sự kiện nguy hiểm trước khi các sự kiện đó xảy ra</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 749a256..a08fe91 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1923,6 +1923,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{移除 1 個不支援的應用程式}other{移除 # 個不支援的應用程式}}</translation> <translation id="2776560192867872731">改 <ph name="DEVICE_NAME" /> 嘅裝置名</translation> <translation id="2777251078198759550">刪除此容器</translation> +<translation id="2778471504622896352">將遠端應用程式新增至 Chrome OS 啟動器</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">安裝 Linux 應用程式時發生錯誤</translation> <translation id="2783298271312924866">已下載</translation> @@ -2238,6 +2239,7 @@ <translation id="3067198360141518313">執行這個外掛程式</translation> <translation id="3071624960923923138">按一下這裡即可開啟新分頁</translation> <translation id="3072775339180057696">要允許網站查看「<ph name="FILE_NAME" />」嗎?</translation> +<translation id="3074499504015191586">翻譯完整網頁</translation> <translation id="3075874217500066906">Powerwash 程序必須重新啟動才能開始執行。重新啟動後,系統將向您確認是否繼續操作。</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">只儲存在此裝置上</translation> @@ -3558,6 +3560,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />、<ph name="SECOND_SWITCH" />、<ph name="THIRD_SWITCH" /> 以及另外 <ph name="NUMBER_OF_OTHER_SWITCHES" /> 個按鈕裝置</translation> <translation id="439266289085815679">藍牙設定由 <ph name="USER_EMAIL" /> 控制。</translation> <translation id="4392896746540753732">編輯設定檔案</translation> +<translation id="4393713825278446281">已儲存至 <ph name="PRIMARY_EMAIL" /> 的快速配對裝置</translation> <translation id="4394049700291259645">停用</translation> <translation id="4396956294839002702">{COUNT,plural, =0{開啟所有書籤(&O)}=1{開啟書籤(&O)}other{開啟全部 {COUNT} 個書籤(&O)}}</translation> <translation id="4397372003838952832">您不需記住此密碼。密碼將會儲存至 <ph name="EMAIL" /> 的 <ph name="GOOGLE_PASSWORD_MANAGER" />。</translation> @@ -3788,6 +3791,7 @@ <translation id="4615586811063744755">未選取 Cookie</translation> <translation id="461661862154729886">電源</translation> <translation id="4617001782309103936">太短</translation> +<translation id="4617019240346358451">重新載入網頁以使用「<ph name="EXTENSION_NAME" />」</translation> <translation id="4617270414136722281">擴充程式選項</translation> <translation id="4617880081511131945">無法建立連線</translation> <translation id="4619564267100705184">驗證身分</translation> @@ -4003,6 +4007,7 @@ <translation id="4833683849865011483">在列印伺服器中找到 1 部打印機</translation> <translation id="4836504898754963407">管理指紋</translation> <translation id="4837128290434901661">要改回使用「Google 搜尋」嗎?</translation> +<translation id="4837165100461973682">重新載入頁面即可套用變更</translation> <translation id="4837926214103741331">您無權使用這部裝置。如需登入權限,請與裝置擁有者聯絡。</translation> <translation id="4837952862063191349">如果要解鎖並還原您的本機資料,請輸入您的舊 <ph name="DEVICE_TYPE" /> 密碼。</translation> <translation id="4838170306476614339">查看手機上的相片、媒體和通知</translation> @@ -4312,6 +4317,7 @@ <translation id="5150254825601720210">Netscape 憑證 SSL 伺服器名稱</translation> <translation id="5151354047782775295">請釋出磁碟儲存空間,否則系統可能會自動刪除部分資料</translation> <translation id="5153234146675181447">刪除手機</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">「<ph name="PRINTING_DESTINATION" />」進階設定</translation> <translation id="5154702632169343078">主旨</translation> <translation id="5155327081870541046">在網址列輸入您想搜尋網站的捷徑,例如「例如「@bookmarks」),然後按下您偏好的鍵盤快速鍵,並輸入搜尋字詞。</translation> @@ -5085,6 +5091,7 @@ <translation id="5933522550144185133">「<ph name="APP_NAME" />」正在使用您的相機和麥克風</translation> <translation id="5935158534896975820">正在準備憑證簽署要求 (在伺服器上等待)</translation> <translation id="5935656526031444304">管理「安全瀏覽」功能</translation> +<translation id="5936065461722368675">翻譯完整網頁</translation> <translation id="5938002010494270685">有可用的安全性升級</translation> <translation id="5939518447894949180">重設</translation> <translation id="5939719276406088041">無法建立捷徑</translation> @@ -5945,6 +5952,7 @@ <translation id="6790497603648687708">已從遠端新增 <ph name="EXTENSION_NAME" /></translation> <translation id="6790820461102226165">新增使用者…</translation> <translation id="6793604637258913070">當文字插入符號出現或移動時,突顯文字插入符號</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">自動掃瞄功能會自動在畫面上的項目間移動。選取項目,然後按下「選取」即可啟動該項目。</translation> <translation id="6795884519221689054">熊貓</translation> <translation id="6797493596609571643">糟糕,發生錯誤。</translation> @@ -7818,6 +7826,7 @@ <translation id="8642947597466641025">放大文字</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> 可能不安全。要傳送到「Google 進階保護功能」進行掃瞄嗎?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{沒有 Cookie}=1{已封鎖 1 個 Cookie}other{已封鎖 # 個 Cookie}}</translation> +<translation id="864423554496711319">已儲存到你的帳戶的裝置</translation> <translation id="8644655801811752511">無法重設此安全密鑰。請在插入密鑰後立即重設。</translation> <translation id="8645354835496065562">繼續允許存取感應器</translation> <translation id="8645920082661222035">在危險事件發生前進行預測並發出警告</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index c470785..468449a 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -1908,6 +1908,7 @@ <translation id="2775858145769350417">{NUM_APPS,plural, =1{移除 1 個不支援的應用程式}other{移除 # 個不支援的應用程式}}</translation> <translation id="2776560192867872731">為「<ph name="DEVICE_NAME" />」變更裝置名稱</translation> <translation id="2777251078198759550">刪除這個容器</translation> +<translation id="2778471504622896352">將遠端應用程式新增至 Chrome OS 啟動器</translation> <translation id="2781692009645368755">Google Pay</translation> <translation id="2782104745158847185">安裝 Linux 應用程式時發生錯誤</translation> <translation id="2783298271312924866">已下載</translation> @@ -3542,6 +3543,7 @@ <translation id="4390396490617716185"><ph name="FIRST_SWITCH" />、<ph name="SECOND_SWITCH" />、<ph name="THIRD_SWITCH" />,以及另外 <ph name="NUMBER_OF_OTHER_SWITCHES" /> 個按鍵</translation> <translation id="439266289085815679">藍牙設定由 <ph name="USER_EMAIL" /> 控制。</translation> <translation id="4392896746540753732">編輯設定檔</translation> +<translation id="4393713825278446281">已儲存至 <ph name="PRIMARY_EMAIL" /> 的快速配對裝置</translation> <translation id="4394049700291259645">停用</translation> <translation id="4396956294839002702">{COUNT,plural, =0{開啟所有網址(&O)}=1{開啟書籤(&O)}other{開啟所有 ({COUNT} 個) 網址(&O)}}</translation> <translation id="4397372003838952832">你不需要記住這組密碼,系統會將這組密碼儲存至 <ph name="EMAIL" /> 的 <ph name="GOOGLE_PASSWORD_MANAGER" />中。</translation> @@ -3771,6 +3773,7 @@ <translation id="4615586811063744755">未選取任何 Cookie</translation> <translation id="461661862154729886">電源</translation> <translation id="4617001782309103936">太短</translation> +<translation id="4617019240346358451">重新載入網頁以使用「<ph name="EXTENSION_NAME" />」</translation> <translation id="4617270414136722281">擴充功能選項</translation> <translation id="4617880081511131945">無法建立連線</translation> <translation id="4619564267100705184">驗證身分</translation> @@ -3986,6 +3989,7 @@ <translation id="4833683849865011483">在列印伺服器上找到 1 台印表機</translation> <translation id="4836504898754963407">管理指紋</translation> <translation id="4837128290434901661">要改回 Google 搜尋嗎?</translation> +<translation id="4837165100461973682">重新載入頁面即可套用變更</translation> <translation id="4837926214103741331">您未獲得授權,無法使用這個裝置。如需登入權限,請與裝置擁有者聯絡。</translation> <translation id="4837952862063191349">如要解鎖並還原您的本機資料,請輸入舊的 <ph name="DEVICE_TYPE" /> 密碼。</translation> <translation id="4838170306476614339">查看手機上的相片、媒體和通知</translation> @@ -4295,6 +4299,7 @@ <translation id="5150254825601720210">Netscape 憑證 SSL 伺服器名稱</translation> <translation id="5151354047782775295">請釋出磁碟空間,或選取系統可自動刪除的資料</translation> <translation id="5153234146675181447">移除手機</translation> +<translation id="5153907427821264830"><ph name="STATUS" /> • <ph name="MESSAGE" /></translation> <translation id="5154108062446123722">「<ph name="PRINTING_DESTINATION" />」進階設定</translation> <translation id="5154702632169343078">主旨</translation> <translation id="5155327081870541046">在網址列中針對想搜尋的網站輸入快捷字詞 (例如「@bookmarks」),然後按下你慣用的鍵盤快速鍵並輸入搜尋字詞。</translation> @@ -5927,6 +5932,7 @@ <translation id="6790497603648687708">「<ph name="EXTENSION_NAME" />」是從遠端新增的項目</translation> <translation id="6790820461102226165">新增使用者...</translation> <translation id="6793604637258913070">文字插入點出現或移動時醒目顯示</translation> +<translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">自動掃描功能會自動在畫面上的項目之間移動。當某個項目處於醒目顯示狀態,按下「選取」即可啟動該項目。</translation> <translation id="6795884519221689054">熊貓</translation> <translation id="6797493596609571643">糟糕,發生錯誤。</translation> @@ -7800,6 +7806,7 @@ <translation id="8642947597466641025">放大文字</translation> <translation id="8643443571868262066"><ph name="FILE_NAME" /> 可能含有危險內容。要傳送到 Google 進階保護進行掃描嗎?</translation> <translation id="8644047503904673749">{COUNT,plural, =0{沒有 Cookie}=1{已封鎖 1 個 Cookie}other{已封鎖 # 個 Cookie}}</translation> +<translation id="864423554496711319">已儲存到你的帳戶的裝置</translation> <translation id="8644655801811752511">無法重設這個安全金鑰。請在插入金鑰後立即重設。</translation> <translation id="8645354835496065562">繼續允許存取感應器</translation> <translation id="8645920082661222035">可預測不安全事件,並在這類事件發生前顯示警告訊息</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index 98ddcfa..56ec099 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -9,7 +9,7 @@ <translation id="110877069173485804">هذا Chrome الخاص بك</translation> <translation id="1125124144982679672">مَن يستخدم متصفِّح Chrome؟</translation> <translation id="1142745911746664600">تعذّرت إعادة التحميل Chrome</translation> -<translation id="1152920704813762236">لمحة عن نظام التشغيل Chrome</translation> +<translation id="1152920704813762236">لمحة عن ChromeOS</translation> <translation id="1154147086299354128">&فتح في Chrome</translation> <translation id="1178374936842835197">في حال عدم عرض أحد الإعدادات على هذه الصفحة، انتقِل إلى <ph name="LINK_BEGIN" /> إعدادات نظام التشغيل ChromeOS Flex<ph name="LINK_END" /></translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index da84d920..58428c7 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -3137,11 +3137,17 @@ Clear all data? </message> <message name="IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION" desc="Label describing how much total disk space chrome is using, next to the clear all button"> - Total storage used by sites: + Total storage used by sites: <ph name="TOTAL_USAGE">$1<ex>8 GB</ex></ph> + </message> + <message name="IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION" desc="Label describing how much total disk space chrome is using from displayed sites, next to the clear displayed button"> + Total storage used by displayed sites: <ph name="TOTAL_USAGE">$1<ex>8 GB</ex></ph> </message> <message name="IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL" desc="Label for button to clear all site data"> Clear all data </message> + <message name="IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_LABEL" desc="Label for button to clear displayed site data"> + Clear displayed data + </message> <message name="IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_CONFIRMATION" desc="Text for the dialog that warns about clearing storage used by all sites."> This will clear <ph name="TOTAL_USAGE">$1<ex>8 GB</ex></ph> of data stored by sites </message>
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..2063df1 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +05b386f202bad2e13430598124c299fae0e823ab \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL.png.sha1 new file mode 100644 index 0000000..ceacf71 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL.png.sha1
@@ -0,0 +1 @@ +380894bf55294ae7cd9503dd588288b5f014a0cd \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION.png.sha1 new file mode 100644 index 0000000..ef00b2c4 --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION.png.sha1
@@ -0,0 +1 @@ +642e3d2eddab428fbc562fcc4ef84bafc9065b3d \ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_LABEL.png.sha1 new file mode 100644 index 0000000..e4be18b --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_LABEL.png.sha1
@@ -0,0 +1 @@ +2284140b5cc7cea324f8bf6385ccd37c978b234c \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 9d06d5c..463f414 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -5273,6 +5273,8 @@ "chromeos/extensions/info_private_api.h", "chromeos/extensions/public_session_permission_helper.cc", "chromeos/extensions/public_session_permission_helper.h", + "chromeos/extensions/wallpaper_api.cc", + "chromeos/extensions/wallpaper_api.h", "chromeos/policy/dlp/clipboard_bubble.cc", "chromeos/policy/dlp/clipboard_bubble.h", "chromeos/policy/dlp/data_transfer_dlp_controller.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 766f0b1f..17112a6 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -5306,6 +5306,13 @@ kJourneysOmniboxActionVariations, "HistoryJourneysOmniboxAction")}, + {"history-journeys-omnibox-history-cluster-provider", + flag_descriptions::kJourneysOmniboxHistoryClusterProviderName, + flag_descriptions::kJourneysOmniboxHistoryClusterProviderDescription, + kOsDesktop | kOsAndroid, + FEATURE_VALUE_TYPE( + history_clusters::internal::kOmniboxHistoryClusterProvider)}, + {"history-journeys-on-device-clustering", flag_descriptions::kJourneysOnDeviceClusteringBackendName, flag_descriptions::kJourneysOnDeviceClusteringBackendDescription,
diff --git a/chrome/browser/apps/app_service/app_service_proxy_base.cc b/chrome/browser/apps/app_service/app_service_proxy_base.cc index e38bc26..6b626987 100644 --- a/chrome/browser/apps/app_service/app_service_proxy_base.cc +++ b/chrome/browser/apps/app_service/app_service_proxy_base.cc
@@ -612,12 +612,9 @@ void AppServiceProxyBase::AddPreferredApp(const std::string& app_id, const IntentPtr& intent) { - // TODO(https://crbug.com/853604): Remove this and convert to a DCHECK - // after finding out the root cause. - if (app_id.empty() || !preferred_apps_impl_) { - base::debug::DumpWithoutCrashing(); - return; - } + DCHECK(!app_id.empty()); + DCHECK(preferred_apps_impl_); + auto intent_filter = FindBestMatchingFilter(intent); if (!intent_filter) { return; @@ -648,12 +645,8 @@ void AppServiceProxyBase::AddPreferredApp( const std::string& app_id, const apps::mojom::IntentPtr& intent) { - // TODO(https://crbug.com/853604): Remove this and convert to a DCHECK - // after finding out the root cause. - if (app_id.empty()) { - base::debug::DumpWithoutCrashing(); - return; - } + DCHECK(!app_id.empty()); + auto mojom_intent_filter = FindBestMatchingMojomFilter(intent); if (!mojom_intent_filter || !app_service_.is_connected()) { return;
diff --git a/chrome/browser/apps/app_service/app_service_proxy_lacros.cc b/chrome/browser/apps/app_service/app_service_proxy_lacros.cc index 24477f6..fb40052 100644 --- a/chrome/browser/apps/app_service/app_service_proxy_lacros.cc +++ b/chrome/browser/apps/app_service/app_service_proxy_lacros.cc
@@ -371,12 +371,7 @@ return; } - // TODO(https://crbug.com/853604): Remove this and convert to a DCHECK - // after finding out the root cause. - if (app_id.empty()) { - base::debug::DumpWithoutCrashing(); - return; - } + DCHECK(!app_id.empty()); remote_crosapi_app_service_proxy_->AddPreferredApp( app_id, apps_util::ConvertAppServiceToCrosapiIntent(intent, profile_));
diff --git a/chrome/browser/apps/intent_helper/common_apps_navigation_throttle.h b/chrome/browser/apps/intent_helper/common_apps_navigation_throttle.h index 3604d9c..c5815c5 100644 --- a/chrome/browser/apps/intent_helper/common_apps_navigation_throttle.h +++ b/chrome/browser/apps/intent_helper/common_apps_navigation_throttle.h
@@ -26,7 +26,6 @@ // throttle that work with the App Service. This only works with Chrome OS at // the moment and will work with all platforms after the App Service supports // apps for all platforms. -// TODO(crbug.com/853604): Add metrics, add ARC auto pop up, add persistency. class CommonAppsNavigationThrottle : public apps::AppsNavigationThrottle { public: // Possibly creates a navigation throttle that checks if any installed apps
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn index 3fbb01b..7d5151c 100644 --- a/chrome/browser/ash/BUILD.gn +++ b/chrome/browser/ash/BUILD.gn
@@ -2442,8 +2442,8 @@ if (is_cfm) { deps += [ + "//chromeos/ash/components/chromebox_for_meetings", "//chromeos/ash/components/dbus/chromebox_for_meetings", - "//chromeos/components/chromebox_for_meetings/features", ] }
diff --git a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.cc b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.cc index bcae6a2..0a9731fd 100644 --- a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.cc +++ b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.cc
@@ -174,7 +174,7 @@ base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, - base::BindOnce(&CertProvisioningSchedulerImpl::DailyUpdateCerts, + base::BindOnce(&CertProvisioningSchedulerImpl::DailyUpdateWorkers, weak_factory_.GetWeakPtr()), base::Days(1)); } @@ -185,7 +185,7 @@ base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, - base::BindOnce(&CertProvisioningSchedulerImpl::UpdateOneCertImpl, + base::BindOnce(&CertProvisioningSchedulerImpl::UpdateOneWorkerImpl, weak_factory_.GetWeakPtr(), profile_id), kInconsistentDataErrorRetryDelay); } @@ -263,7 +263,7 @@ } RegisterForPrefsChanges(); - UpdateAllCerts(); + UpdateAllWorkers(); } void CertProvisioningSchedulerImpl::RegisterForPrefsChanges() { @@ -276,11 +276,11 @@ weak_factory_.GetWeakPtr())); } -void CertProvisioningSchedulerImpl::DailyUpdateCerts() { +void CertProvisioningSchedulerImpl::DailyUpdateWorkers() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); failed_cert_profiles_.clear(); - UpdateAllCerts(); + UpdateAllWorkers(); ScheduleDailyUpdate(); } @@ -316,17 +316,16 @@ void CertProvisioningSchedulerImpl::OnPrefsChange() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - - UpdateAllCerts(); + UpdateAllWorkers(); } void CertProvisioningSchedulerImpl::InitiateRenewal( const CertProfileId& cert_profile_id) { scheduled_renewals_.erase(cert_profile_id); - UpdateOneCertImpl(cert_profile_id); + UpdateOneWorkerImpl(cert_profile_id); } -bool CertProvisioningSchedulerImpl::UpdateOneCert( +bool CertProvisioningSchedulerImpl::UpdateOneWorker( const CertProfileId& cert_profile_id) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -335,11 +334,11 @@ } RecordEvent(cert_scope_, CertProvisioningEvent::kWorkerRetryManual); - UpdateOneCertImpl(cert_profile_id); + UpdateOneWorkerImpl(cert_profile_id); return true; } -void CertProvisioningSchedulerImpl::UpdateOneCertImpl( +void CertProvisioningSchedulerImpl::UpdateOneWorkerImpl( const CertProfileId& cert_profile_id) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -350,10 +349,10 @@ return; } - UpdateCertList({std::move(cert_profile).value()}); + UpdateWorkerList({std::move(cert_profile).value()}); } -void CertProvisioningSchedulerImpl::UpdateAllCerts() { +void CertProvisioningSchedulerImpl::UpdateAllWorkers() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); std::vector<CertProfile> profiles = GetCertProfiles(); @@ -363,10 +362,10 @@ return; } - UpdateCertList(std::move(profiles)); + UpdateWorkerList(std::move(profiles)); } -void CertProvisioningSchedulerImpl::UpdateCertList( +void CertProvisioningSchedulerImpl::UpdateWorkerList( std::vector<CertProfile> profiles) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -386,11 +385,11 @@ } certs_with_ids_getter_.GetCertsWithIds(base::BindOnce( - &CertProvisioningSchedulerImpl::UpdateCertListWithExistingCerts, + &CertProvisioningSchedulerImpl::UpdateWorkerListWithExistingCerts, weak_factory_.GetWeakPtr(), std::move(profiles))); } -void CertProvisioningSchedulerImpl::UpdateCertListWithExistingCerts( +void CertProvisioningSchedulerImpl::UpdateWorkerListWithExistingCerts( std::vector<CertProfile> profiles, base::flat_map<CertProfileId, scoped_refptr<net::X509Certificate>> existing_certs_with_ids, @@ -435,7 +434,7 @@ if (!queued_profiles_to_update_.empty()) { // base::flat_set::extract() guaranties that the set is `empty()` // afterwards. - UpdateCertList(std::move(queued_profiles_to_update_).extract()); + UpdateWorkerList(std::move(queued_profiles_to_update_).extract()); } } @@ -645,7 +644,7 @@ // If waiting for connection and some network becomes online, try to continue. if (is_waiting_for_online_ && network && network->IsOnline()) { is_waiting_for_online_ = false; - UpdateAllCerts(); + UpdateAllWorkers(); return; }
diff --git a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.h b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.h index c8d1c94..30fb15f 100644 --- a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.h +++ b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler.h
@@ -66,10 +66,10 @@ virtual ~CertProvisioningScheduler() = default; // Intended to be called when a user presses a button in certificate manager - // UI. Retries provisioning of a specific certificate. Returns "false" if - // `cert_profile_id` is not found and "true" otherwise. - virtual bool UpdateOneCert(const CertProfileId& cert_profile_id) = 0; - virtual void UpdateAllCerts() = 0; + // UI. Retries the process of provisioning a specific certificate. + // Returns "false" if `cert_profile_id` is not found and "true" otherwise. + virtual bool UpdateOneWorker(const CertProfileId& cert_profile_id) = 0; + virtual void UpdateAllWorkers() = 0; // Returns all certificate provisioning workers that are currently active. virtual const WorkerMap& GetWorkers() const = 0; @@ -123,8 +123,8 @@ const CertProvisioningSchedulerImpl&) = delete; // CertProvisioningScheduler: - bool UpdateOneCert(const CertProfileId& cert_profile_id) override; - void UpdateAllCerts() override; + bool UpdateOneWorker(const CertProfileId& cert_profile_id) override; + void UpdateAllWorkers() override; const WorkerMap& GetWorkers() const override; const base::flat_map<CertProfileId, FailedWorkerInfo>& GetFailedCertProfileIds() const override; @@ -144,7 +144,7 @@ private: void ScheduleInitialUpdate(); void ScheduleDailyUpdate(); - // Posts delayed task to call UpdateOneCertImpl. + // Posts delayed task to call UpdateOneWorkerImpl. void ScheduleRetry(const CertProfileId& profile_id); void ScheduleRenewal(const CertProfileId& profile_id, base::TimeDelta delay); @@ -157,16 +157,16 @@ void RegisterForPrefsChanges(); void InitiateRenewal(const CertProfileId& cert_profile_id); - void UpdateOneCertImpl(const CertProfileId& cert_profile_id); - void UpdateCertList(std::vector<CertProfile> profiles); - void UpdateCertListWithExistingCerts( + void UpdateOneWorkerImpl(const CertProfileId& cert_profile_id); + void UpdateWorkerList(std::vector<CertProfile> profiles); + void UpdateWorkerListWithExistingCerts( std::vector<CertProfile> profiles, base::flat_map<CertProfileId, scoped_refptr<net::X509Certificate>> existing_certs_with_ids, chromeos::platform_keys::Status status); void OnPrefsChange(); - void DailyUpdateCerts(); + void DailyUpdateWorkers(); void DeserializeWorkers(); // Creates a new worker for |profile| if there is no at the moment. @@ -230,8 +230,8 @@ // the renewal starts for a profile id, it is removed from the set. base::flat_set<CertProfileId> scheduled_renewals_; // Collection of cert profile ids that failed recently. They will not be - // retried until next |DailyUpdateCerts|. FailedWorkerInfo contains some extra - // information about the failure. Profiles that failed with + // retried until next |DailyUpdateWorkers|. FailedWorkerInfo contains some + // extra information about the failure. Profiles that failed with // kInconsistentDataError will not be stored into this collection. base::flat_map<CertProfileId, FailedWorkerInfo> failed_cert_profiles_; // Equals true if the last attempt to update certificates failed because there
diff --git a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler_unittest.cc b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler_unittest.cc index eaffa90..6b4090d 100644 --- a/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler_unittest.cc +++ b/chrome/browser/ash/cert_provisioning/cert_provisioning_scheduler_unittest.cc
@@ -257,7 +257,7 @@ // Check one more time that scheduler doesn't create new workers for // finished certificate profiles (the factory will fail on an attempt to // do so). - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); FastForwardBy(base::Seconds(100)); } @@ -313,7 +313,7 @@ // Check one more time that scheduler doesn't create new workers for failed // certificate profiles (the factory will fail on an attempt to do so). - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); } TEST_F(CertProvisioningSchedulerTest, InitialAndDailyUpdates) { @@ -471,7 +471,7 @@ certificate_helper_->AddCert(kCertScope, kCertProfileId0); // Make scheduler check workers state. - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); EXPECT_EQ(scheduler.GetWorkers().size(), 1U); EXPECT_TRUE( @@ -479,7 +479,7 @@ // Check one more time that scheduler doesn't create new workers for failed // certificate profiles (the factory will fail on an attempt to do so). - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); EXPECT_EQ(scheduler.GetWorkers().size(), 1U); } @@ -640,7 +640,7 @@ // If another update happens, workers with matching policy versions should not // be deleted. - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); EXPECT_EQ(scheduler.GetWorkers().size(), 1U); // On policy update if existing profile has changed its policy_version, @@ -817,7 +817,7 @@ } } -TEST_F(CertProvisioningSchedulerTest, UpdateOneCert) { +TEST_F(CertProvisioningSchedulerTest, UpdateOneWorker) { const CertScope kCertScope = CertScope::kUser; CertProvisioningSchedulerImpl scheduler( @@ -836,7 +836,7 @@ VerifyDeleteKeysByPrefixCalledOnce(kCertScope); // There is no policies yet, |kCertProfileId| will not be found. - scheduler.UpdateOneCert(kCertProfileId); + scheduler.UpdateOneWorker(kCertProfileId); FastForwardBy(base::Seconds(1)); ASSERT_TRUE(scheduler.GetWorkers().empty()); @@ -860,7 +860,7 @@ worker->SetExpectations(/*do_step_times=*/Exactly(1), /*is_waiting=*/true, cert_profile); - scheduler.UpdateOneCert(kCertProfileId); + scheduler.UpdateOneWorker(kCertProfileId); FastForwardBy(base::Seconds(1)); ASSERT_EQ(scheduler.GetWorkers().size(), 1U); } @@ -870,7 +870,7 @@ worker->SetExpectations(/*do_step_times=*/Exactly(0), /*is_waiting=*/false, cert_profile); - scheduler.UpdateOneCert(kCertProfileId); + scheduler.UpdateOneWorker(kCertProfileId); FastForwardBy(base::Seconds(1)); ASSERT_EQ(scheduler.GetWorkers().size(), 1U); } @@ -883,7 +883,7 @@ worker->SetExpectations(/*do_step_times=*/Exactly(0), /*is_waiting=*/true, cert_profile); - scheduler.UpdateOneCert(kCertProfileId); + scheduler.UpdateOneWorker(kCertProfileId); FastForwardBy(base::Seconds(1)); ASSERT_EQ(scheduler.GetWorkers().size(), 1U); @@ -903,7 +903,7 @@ { // If a certificate already exists, a new worker should not be created. - scheduler.UpdateOneCert(kCertProfileId); + scheduler.UpdateOneWorker(kCertProfileId); FastForwardBy(base::Seconds(1)); ASSERT_TRUE(scheduler.GetWorkers().empty()); } @@ -996,7 +996,7 @@ mock_factory_.ExpectCreateReturnMock(kCertScope, cert_profile); worker->SetExpectations(/*do_step_times=*/AtLeast(1), /*is_waiting=*/false, cert_profile); - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); // Now 1 worker should be created. EXPECT_EQ(scheduler.GetWorkers().size(), 1U); @@ -1011,7 +1011,7 @@ // Check one more time that scheduler doesn't create new workers after // PlatformKeysService has been shut down (the factory will fail on an attempt // to do so). - scheduler.UpdateAllCerts(); + scheduler.UpdateAllWorkers(); } TEST_F(CertProvisioningSchedulerTest, StateChangeNotifications) {
diff --git a/chrome/browser/ash/cert_provisioning/mock_cert_provisioning_scheduler.h b/chrome/browser/ash/cert_provisioning/mock_cert_provisioning_scheduler.h index c514fa3..30de702 100644 --- a/chrome/browser/ash/cert_provisioning/mock_cert_provisioning_scheduler.h +++ b/chrome/browser/ash/cert_provisioning/mock_cert_provisioning_scheduler.h
@@ -20,10 +20,10 @@ ~MockCertProvisioningScheduler() override; MOCK_METHOD(bool, - UpdateOneCert, + UpdateOneWorker, (const CertProfileId& cert_profile_id), (override)); - MOCK_METHOD(void, UpdateAllCerts, (), (override)); + MOCK_METHOD(void, UpdateAllWorkers, (), (override)); MOCK_METHOD(const WorkerMap&, GetWorkers, (), (const override)); MOCK_METHOD((const base::flat_map<CertProfileId, FailedWorkerInfo>&), GetFailedCertProfileIds,
diff --git a/chrome/browser/ash/chromebox_for_meetings/OWNERS b/chrome/browser/ash/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/chrome/browser/ash/chromebox_for_meetings/OWNERS +++ b/chrome/browser/ash/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chrome/browser/ash/chromebox_for_meetings/cfm_chrome_services.cc b/chrome/browser/ash/chromebox_for_meetings/cfm_chrome_services.cc index 4cae493..59b5b577 100644 --- a/chrome/browser/ash/chromebox_for_meetings/cfm_chrome_services.cc +++ b/chrome/browser/ash/chromebox_for_meetings/cfm_chrome_services.cc
@@ -10,8 +10,8 @@ #include "chrome/browser/ash/chromebox_for_meetings/external_display_brightness/external_display_brightness_service.h" #include "chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service.h" #include "chrome/browser/ash/chromebox_for_meetings/network_settings/network_settings_service.h" +#include "chromeos/ash/components/chromebox_for_meetings/features.h" #include "chromeos/ash/components/dbus/chromebox_for_meetings/cfm_hotline_client.h" -#include "chromeos/components/chromebox_for_meetings/features/features.h" namespace ash::cfm {
diff --git a/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service.cc b/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service.cc index 0386a5dd..79982bb 100644 --- a/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service.cc +++ b/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service.cc
@@ -7,8 +7,8 @@ #include "ash/services/chromebox_for_meetings/public/mojom/meet_devices_logger.mojom-shared.h" #include "base/bind.h" #include "chrome/browser/ash/chromebox_for_meetings/logger/reporting_pipeline.h" +#include "chromeos/ash/components/chromebox_for_meetings/features.h" #include "chromeos/ash/components/dbus/chromebox_for_meetings/cfm_hotline_client.h" -#include "chromeos/components/chromebox_for_meetings/features/features.h" #include "mojo/public/cpp/bindings/receiver_set.h" namespace ash::cfm {
diff --git a/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service_unittest.cc b/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service_unittest.cc index ff247f84..cd90d7b 100644 --- a/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service_unittest.cc +++ b/chrome/browser/ash/chromebox_for_meetings/logger/cfm_logger_service_unittest.cc
@@ -20,8 +20,8 @@ #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" +#include "chromeos/ash/components/chromebox_for_meetings/features.h" #include "chromeos/ash/components/dbus/chromebox_for_meetings/fake_cfm_hotline_client.h" -#include "chromeos/components/chromebox_for_meetings/features/features.h" #include "components/reporting/util/status.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -79,9 +79,7 @@ public: CfmLoggerServiceTest() { scoped_feature_list_.InitWithFeatures( - {chromeos::cfm::features::kMojoServices, - chromeos::cfm::features::kCloudLogger}, - {}); + {features::kMojoServices, features::kCloudLogger}, {}); } CfmLoggerServiceTest(const CfmLoggerServiceTest&) = delete; CfmLoggerServiceTest& operator=(const CfmLoggerServiceTest&) = delete; @@ -147,9 +145,8 @@ void DisableLoggerFeature() { scoped_feature_list_.Reset(); - scoped_feature_list_.InitWithFeatures( - {chromeos::cfm::features::kMojoServices}, - {chromeos::cfm::features::kCloudLogger}); + scoped_feature_list_.InitWithFeatures({features::kMojoServices}, + {features::kCloudLogger}); } protected:
diff --git a/chrome/browser/ash/crosapi/BUILD.gn b/chrome/browser/ash/crosapi/BUILD.gn index ca3386c..f41cc053 100644 --- a/chrome/browser/ash/crosapi/BUILD.gn +++ b/chrome/browser/ash/crosapi/BUILD.gn
@@ -199,6 +199,8 @@ "vpn_extension_observer_ash.h", "vpn_service_ash.cc", "vpn_service_ash.h", + "wallpaper_ash.cc", + "wallpaper_ash.h", "web_app_service_ash.cc", "web_app_service_ash.h", "web_page_info_ash.cc",
diff --git a/chrome/browser/ash/crosapi/cert_provisioning_ash.cc b/chrome/browser/ash/crosapi/cert_provisioning_ash.cc index 9eaf58cb..dda169f 100644 --- a/chrome/browser/ash/crosapi/cert_provisioning_ash.cc +++ b/chrome/browser/ash/crosapi/cert_provisioning_ash.cc
@@ -184,13 +184,13 @@ DCHECK_CURRENTLY_ON(content::BrowserThread::UI); CertProvisioningScheduler* user_scheduler = GetUserScheduler(); - if (user_scheduler && user_scheduler->UpdateOneCert(cert_profile_id)) { + if (user_scheduler && user_scheduler->UpdateOneWorker(cert_profile_id)) { return; } CertProvisioningScheduler* device_scheduler = GetDeviceScheduler(); if (device_scheduler) { - device_scheduler->UpdateOneCert(cert_profile_id); + device_scheduler->UpdateOneWorker(cert_profile_id); } }
diff --git a/chrome/browser/ash/crosapi/cert_provisioning_ash_unittest.cc b/chrome/browser/ash/crosapi/cert_provisioning_ash_unittest.cc index 34e0ee4..41a3122 100644 --- a/chrome/browser/ash/crosapi/cert_provisioning_ash_unittest.cc +++ b/chrome/browser/ash/crosapi/cert_provisioning_ash_unittest.cc
@@ -390,8 +390,8 @@ { // The service will try different schedulers until it finds the one that // contains the profile id. - EXPECT_CALL(user_scheduler_, UpdateOneCert("111")).WillOnce(Return(true)); - EXPECT_CALL(device_scheduler_, UpdateOneCert).Times(0); + EXPECT_CALL(user_scheduler_, UpdateOneWorker("111")).WillOnce(Return(true)); + EXPECT_CALL(device_scheduler_, UpdateOneWorker).Times(0); service_.UpdateOneProcess("111"); @@ -403,8 +403,9 @@ { // If the first one reports that it doesn't own the id, the service will try // another one. - EXPECT_CALL(user_scheduler_, UpdateOneCert("222")).WillOnce(Return(false)); - EXPECT_CALL(device_scheduler_, UpdateOneCert("222")) + EXPECT_CALL(user_scheduler_, UpdateOneWorker("222")) + .WillOnce(Return(false)); + EXPECT_CALL(device_scheduler_, UpdateOneWorker("222")) .WillOnce(Return(false)); service_.UpdateOneProcess("222");
diff --git a/chrome/browser/ash/crosapi/crosapi_ash.cc b/chrome/browser/ash/crosapi/crosapi_ash.cc index 601b8f7c..6e7d88d9 100644 --- a/chrome/browser/ash/crosapi/crosapi_ash.cc +++ b/chrome/browser/ash/crosapi/crosapi_ash.cc
@@ -83,6 +83,7 @@ #include "chrome/browser/ash/crosapi/video_capture_device_factory_ash.h" #include "chrome/browser/ash/crosapi/vpn_extension_observer_ash.h" #include "chrome/browser/ash/crosapi/vpn_service_ash.h" +#include "chrome/browser/ash/crosapi/wallpaper_ash.h" #include "chrome/browser/ash/crosapi/web_app_service_ash.h" #include "chrome/browser/ash/crosapi/web_page_info_ash.h" #include "chrome/browser/ash/profiles/profile_helper.h" @@ -227,6 +228,7 @@ std::make_unique<VideoCaptureDeviceFactoryAsh>()), vpn_extension_observer_ash_(std::make_unique<VpnExtensionObserverAsh>()), vpn_service_ash_(std::make_unique<VpnServiceAsh>()), + wallpaper_ash_(std::make_unique<WallpaperAsh>()), web_app_service_ash_(std::make_unique<WebAppServiceAsh>()), web_page_info_factory_ash_(std::make_unique<WebPageInfoFactoryAsh>()) { receiver_set_.set_disconnect_handler(base::BindRepeating( @@ -668,6 +670,11 @@ url_handler_ash_->BindReceiver(std::move(receiver)); } +void CrosapiAsh::BindWallpaper( + mojo::PendingReceiver<mojom::Wallpaper> receiver) { + wallpaper_ash_->BindReceiver(std::move(receiver)); +} + void CrosapiAsh::BindMachineLearningService( mojo::PendingReceiver< chromeos::machine_learning::mojom::MachineLearningService> receiver) {
diff --git a/chrome/browser/ash/crosapi/crosapi_ash.h b/chrome/browser/ash/crosapi/crosapi_ash.h index c61a4a1..c13b7f7d 100644 --- a/chrome/browser/ash/crosapi/crosapi_ash.h +++ b/chrome/browser/ash/crosapi/crosapi_ash.h
@@ -89,6 +89,7 @@ class TimeZoneServiceAsh; class TtsAsh; class VpnServiceAsh; +class WallpaperAsh; class WebAppServiceAsh; class WebPageInfoFactoryAsh; class UrlHandlerAsh; @@ -282,6 +283,8 @@ void BindVpnExtensionObserver( mojo::PendingReceiver<crosapi::mojom::VpnExtensionObserver> receiver) override; + void BindWallpaper( + mojo::PendingReceiver<crosapi::mojom::Wallpaper> receiver) override; void BindWebAppPublisher( mojo::PendingReceiver<mojom::AppPublisher> receiver) override; void BindNetworkSettingsService( @@ -327,6 +330,8 @@ return search_provider_ash_.get(); } + WallpaperAsh* wallpaper_ash() { return wallpaper_ash_.get(); } + WebAppServiceAsh* web_app_service_ash() { return web_app_service_ash_.get(); } WebPageInfoFactoryAsh* web_page_info_factory_ash() { @@ -460,6 +465,7 @@ video_capture_device_factory_ash_; std::unique_ptr<VpnExtensionObserverAsh> vpn_extension_observer_ash_; std::unique_ptr<VpnServiceAsh> vpn_service_ash_; + std::unique_ptr<WallpaperAsh> wallpaper_ash_; std::unique_ptr<WebAppServiceAsh> web_app_service_ash_; std::unique_ptr<WebPageInfoFactoryAsh> web_page_info_factory_ash_;
diff --git a/chrome/browser/ash/crosapi/crosapi_util.cc b/chrome/browser/ash/crosapi/crosapi_util.cc index 9216d55..506130a 100644 --- a/chrome/browser/ash/crosapi/crosapi_util.cc +++ b/chrome/browser/ash/crosapi/crosapi_util.cc
@@ -98,6 +98,7 @@ #include "chromeos/crosapi/mojom/video_capture.mojom.h" #include "chromeos/crosapi/mojom/vpn_extension_observer.mojom.h" #include "chromeos/crosapi/mojom/vpn_service.mojom.h" +#include "chromeos/crosapi/mojom/wallpaper.mojom.h" #include "chromeos/crosapi/mojom/web_app_service.mojom.h" #include "chromeos/crosapi/mojom/web_page_info.mojom.h" #include "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom.h" @@ -212,7 +213,7 @@ return {T::Uuid_, T::Version_}; } -static_assert(crosapi::mojom::Crosapi::Version_ == 83, +static_assert(crosapi::mojom::Crosapi::Version_ == 84, "If you add a new crosapi, please add it to " "kInterfaceVersionEntries below."); @@ -294,6 +295,7 @@ MakeInterfaceVersionEntry<crosapi::mojom::VideoCaptureDeviceFactory>(), MakeInterfaceVersionEntry<crosapi::mojom::VpnExtensionObserver>(), MakeInterfaceVersionEntry<crosapi::mojom::VpnService>(), + MakeInterfaceVersionEntry<crosapi::mojom::Wallpaper>(), MakeInterfaceVersionEntry<crosapi::mojom::WebAppService>(), MakeInterfaceVersionEntry<crosapi::mojom::WebPageInfoFactory>(), MakeInterfaceVersionEntry<device::mojom::HidConnection>(),
diff --git a/chrome/browser/ash/crosapi/wallpaper_ash.cc b/chrome/browser/ash/crosapi/wallpaper_ash.cc new file mode 100644 index 0000000..51fd842 --- /dev/null +++ b/chrome/browser/ash/crosapi/wallpaper_ash.cc
@@ -0,0 +1,134 @@ +// 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. + +#include "chrome/browser/ash/crosapi/wallpaper_ash.h" + +#include "chrome/browser/ash/profiles/profile_helper.h" +#include "chrome/browser/chromeos/extensions/wallpaper_function_base.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/ash/wallpaper_controller_client_impl.h" +#include "chrome/common/extensions/extension_constants.h" +#include "components/account_id/account_id.h" +#include "extensions/browser/event_router.h" +#include "ui/gfx/codec/jpeg_codec.h" + +using content::BrowserThread; +using wallpaper_api_util::GenerateThumbnail; +using wallpaper_api_util::WallpaperDecoder; + +namespace { +ash::WallpaperLayout GetLayoutEnum(crosapi::mojom::WallpaperLayout layout) { + switch (layout) { + case crosapi::mojom::WallpaperLayout::kStretch: + return ash::WALLPAPER_LAYOUT_STRETCH; + case crosapi::mojom::WallpaperLayout::kCenter: + return ash::WALLPAPER_LAYOUT_CENTER; + case crosapi::mojom::WallpaperLayout::kCenterCropped: + return ash::WALLPAPER_LAYOUT_CENTER_CROPPED; + default: + return ash::WALLPAPER_LAYOUT_CENTER; + } +} + +} // namespace + +namespace crosapi { + +WallpaperAsh::WallpaperAsh() = default; + +WallpaperAsh::~WallpaperAsh() = default; + +void WallpaperAsh::BindReceiver( + mojo::PendingReceiver<mojom::Wallpaper> pending_receiver) { + receivers_.Add(this, std::move(pending_receiver)); +} + +void WallpaperAsh::SetWallpaper(mojom::WallpaperSettingsPtr wallpaper, + const std::string& extension_id, + const std::string& extension_name, + SetWallpaperCallback callback) { + // Cancel any ongoing SetWallpaper call as it will be replaced by this new + // one. + CancelAndReset(); + + pending_callback_ = std::move(callback); + wallpaper_settings_ = std::move(wallpaper); + extension_id_ = extension_id; + extension_name_ = extension_name; + + StartDecode(wallpaper_settings_->data); +} + +void WallpaperAsh::CancelAndReset() { + if (wallpaper_decoder_) { + wallpaper_decoder_->Cancel(); + wallpaper_decoder_ = nullptr; + } + if (pending_callback_) { + std::move(pending_callback_).Run(std::vector<uint8_t>()); + } + wallpaper_settings_ = nullptr; + extension_id_.clear(); + extension_name_.clear(); +} + +void WallpaperAsh::StartDecode(const std::vector<uint8_t>& data) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + if (wallpaper_decoder_) + wallpaper_decoder_->Cancel(); + wallpaper_decoder_ = + new WallpaperDecoder(base::BindOnce(&WallpaperAsh::OnWallpaperDecoded, + weak_ptr_factory_.GetWeakPtr()), + base::BindOnce(&WallpaperAsh::OnDecodingCanceled, + weak_ptr_factory_.GetWeakPtr()), + base::BindOnce(&WallpaperAsh::OnDecodingFailed, + weak_ptr_factory_.GetWeakPtr())); + wallpaper_decoder_->Start(data); +} + +void WallpaperAsh::OnDecodingCanceled() { + wallpaper_decoder_ = nullptr; + CancelAndReset(); +} + +void WallpaperAsh::OnDecodingFailed(const std::string& error) { + wallpaper_decoder_ = nullptr; + CancelAndReset(); +} + +void WallpaperAsh::OnWallpaperDecoded(const gfx::ImageSkia& image) { + ash::WallpaperLayout layout = GetLayoutEnum(wallpaper_settings_->layout); + wallpaper_api_util::RecordCustomWallpaperLayout(layout); + + Profile* profile = ProfileManager::GetPrimaryUserProfile(); + const user_manager::User* user = + ash::ProfileHelper::Get()->GetUserByProfile(profile); + auto account_id = user->GetAccountId(); + + const std::string file_name = + base::FilePath(wallpaper_settings_->filename).BaseName().value(); + WallpaperControllerClientImpl::Get()->SetCustomWallpaper( + account_id, file_name, layout, image, + /*preview_mode=*/false); + wallpaper_decoder_ = nullptr; + + // We need to generate thumbnail image anyway to make the current third party + // wallpaper syncable through different devices. + image.EnsureRepsForSupportedScales(); + std::vector<uint8_t> thumbnail_data = GenerateThumbnail( + image, gfx::Size(WallpaperFunctionBase::kWallpaperThumbnailWidth, + WallpaperFunctionBase::kWallpaperThumbnailHeight)); + + WallpaperControllerClientImpl::Get()->RecordWallpaperSourceUMA( + ash::WallpaperType::kThirdParty); + + std::move(pending_callback_).Run(thumbnail_data); + + // reset remaining state + wallpaper_settings_ = nullptr; + extension_id_.clear(); + extension_name_.clear(); +} + +} // namespace crosapi
diff --git a/chrome/browser/ash/crosapi/wallpaper_ash.h b/chrome/browser/ash/crosapi/wallpaper_ash.h new file mode 100644 index 0000000..047ab13e --- /dev/null +++ b/chrome/browser/ash/crosapi/wallpaper_ash.h
@@ -0,0 +1,63 @@ +// 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 CHROME_BROWSER_ASH_CROSAPI_WALLPAPER_ASH_H_ +#define CHROME_BROWSER_ASH_CROSAPI_WALLPAPER_ASH_H_ + +#include "base/memory/weak_ptr.h" +#include "chromeos/crosapi/mojom/wallpaper.mojom.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "ui/gfx/image/image_skia.h" + +namespace wallpaper_api_util { +class WallpaperDecoder; +} // namespace wallpaper_api_util +namespace crosapi { + +class WallpaperAsh : public mojom::Wallpaper { + public: + WallpaperAsh(); + WallpaperAsh(const WallpaperAsh&) = delete; + WallpaperAsh& operator=(const WallpaperAsh&) = delete; + ~WallpaperAsh() override; + + void BindReceiver(mojo::PendingReceiver<mojom::Wallpaper> receiver); + + // mojom::Wallpaper: + void SetWallpaper(mojom::WallpaperSettingsPtr wallpaper, + const std::string& extension_id, + const std::string& extension_name, + SetWallpaperCallback callback) override; + + private: + // Starts to decode |data|. Must run on UI thread. + void StartDecode(const std::vector<uint8_t>& data); + + // Handles cancel case. No error message should be set. + void OnDecodingCanceled(); + + // Handles failure case. Sets error message. + void OnDecodingFailed(const std::string& error); + + void OnWallpaperDecoded(const gfx::ImageSkia& wallpaper); + + void CancelAndReset(); + + mojo::ReceiverSet<mojom::Wallpaper> receivers_; + + // Holds an instance of WallpaperDecoder. + wallpaper_api_util::WallpaperDecoder* wallpaper_decoder_ = nullptr; + + SetWallpaperCallback pending_callback_; + mojom::WallpaperSettingsPtr wallpaper_settings_; + std::string extension_id_; + std::string extension_name_; + + base::WeakPtrFactory<WallpaperAsh> weak_ptr_factory_{this}; +}; + +} // namespace crosapi + +#endif
diff --git a/chrome/browser/ash/crostini/crostini_manager.cc b/chrome/browser/ash/crostini/crostini_manager.cc index 34ac5f59..4ecb5dd 100644 --- a/chrome/browser/ash/crostini/crostini_manager.cc +++ b/chrome/browser/ash/crostini/crostini_manager.cc
@@ -1622,7 +1622,7 @@ LOG(ERROR) << "Async call to CreateLxdContainer can't complete when signals " "are not connected."; - std::move(callback).Run(CrostiniResult::CLIENT_ERROR); + std::move(callback).Run(CrostiniResult::SIGNAL_NOT_CONNECTED); return; } vm_tools::cicerone::CreateLxdContainerRequest request; @@ -1717,7 +1717,7 @@ !GetCiceroneClient()->IsLxdContainerStartingSignalConnected()) { LOG(ERROR) << "Async call to StartLxdContainer can't complete when signals " "are not connected."; - std::move(callback).Run(CrostiniResult::CLIENT_ERROR); + std::move(callback).Run(CrostiniResult::SIGNAL_NOT_CONNECTED); return; } vm_tools::cicerone::StartLxdContainerRequest request; @@ -2657,7 +2657,7 @@ // Still in-progress, keep waiting. return; case vm_tools::cicerone::StartLxdProgressSignal::FAILED: - result = CrostiniResult::START_LXD_FAILED; + result = CrostiniResult::START_LXD_FAILED_SIGNAL; break; default: break; @@ -2678,7 +2678,7 @@ absl::optional<vm_tools::concierge::StopVmResponse> response) { if (!response) { LOG(ERROR) << "Failed to stop termina vm. Empty response."; - std::move(callback).Run(CrostiniResult::VM_STOP_FAILED); + std::move(callback).Run(CrostiniResult::STOP_VM_NO_RESPONSE); return; } @@ -3222,7 +3222,7 @@ result = CrostiniResult::CONTAINER_CREATE_CANCELLED; break; case vm_tools::cicerone::LxdContainerCreatedSignal::FAILED: - result = CrostiniResult::CONTAINER_CREATE_FAILED; + result = CrostiniResult::CONTAINER_CREATE_FAILED_SIGNAL; break; default: result = CrostiniResult::UNKNOWN_ERROR; @@ -3541,6 +3541,7 @@ } void CrostiniManager::OnRemoveCrostini(CrostiniResult result) { + base::UmaHistogramEnumeration("Crostini.UninstallResult.Reason", result); for (auto& callback : remove_crostini_callbacks_) { std::move(callback).Run(result); }
diff --git a/chrome/browser/ash/crostini/crostini_remover.cc b/chrome/browser/ash/crostini/crostini_remover.cc index 4251f1d..5362398 100644 --- a/chrome/browser/ash/crostini/crostini_remover.cc +++ b/chrome/browser/ash/crostini/crostini_remover.cc
@@ -70,7 +70,7 @@ void CrostiniRemover::UninstallTerminaFinished(bool success) { if (!success) { LOG(ERROR) << "Failed to uninstall Termina"; - std::move(callback_).Run(CrostiniResult::UNKNOWN_ERROR); + std::move(callback_).Run(CrostiniResult::UNINSTALL_TERMINA_FAILED); return; }
diff --git a/chrome/browser/ash/crostini/crostini_simple_types.cc b/chrome/browser/ash/crostini/crostini_simple_types.cc index 137d19acf7..fce4ea5 100644 --- a/chrome/browser/ash/crostini/crostini_simple_types.cc +++ b/chrome/browser/ash/crostini/crostini_simple_types.cc
@@ -74,6 +74,11 @@ ENTRY(RESTART_REQUEST_CANCELLED); ENTRY(CREATE_DISK_IMAGE_NO_RESPONSE); ENTRY(CREATE_DISK_IMAGE_ALREADY_EXISTS); + ENTRY(UNINSTALL_TERMINA_FAILED); + ENTRY(START_LXD_FAILED_SIGNAL); + ENTRY(CONTAINER_CREATE_FAILED_SIGNAL); + ENTRY(STOP_VM_NO_RESPONSE); + ENTRY(SIGNAL_NOT_CONNECTED); } #undef ENTRY return "unknown code";
diff --git a/chrome/browser/ash/crostini/crostini_simple_types.h b/chrome/browser/ash/crostini/crostini_simple_types.h index e79243d..a2357c5 100644 --- a/chrome/browser/ash/crostini/crostini_simple_types.h +++ b/chrome/browser/ash/crostini/crostini_simple_types.h
@@ -105,7 +105,12 @@ RESTART_REQUEST_CANCELLED = 70, CREATE_DISK_IMAGE_NO_RESPONSE = 71, CREATE_DISK_IMAGE_ALREADY_EXISTS = 72, - kMaxValue = CREATE_DISK_IMAGE_ALREADY_EXISTS, + UNINSTALL_TERMINA_FAILED = 73, + START_LXD_FAILED_SIGNAL = 74, + CONTAINER_CREATE_FAILED_SIGNAL = 75, + STOP_VM_NO_RESPONSE = 76, + SIGNAL_NOT_CONNECTED = 77, + kMaxValue = SIGNAL_NOT_CONNECTED, // When adding a new value, check you've followed the steps in the comment at // the top of this enum. };
diff --git a/chrome/browser/ash/dbus/ash_dbus_helper.cc b/chrome/browser/ash/dbus/ash_dbus_helper.cc index b3d2d29f7..8b37f0d 100644 --- a/chrome/browser/ash/dbus/ash_dbus_helper.cc +++ b/chrome/browser/ash/dbus/ash_dbus_helper.cc
@@ -74,8 +74,8 @@ #include "device/bluetooth/floss/floss_features.h" #if BUILDFLAG(PLATFORM_CFM) +#include "chromeos/ash/components/chromebox_for_meetings/features.h" #include "chromeos/ash/components/dbus/chromebox_for_meetings/cfm_hotline_client.h" -#include "chromeos/components/chromebox_for_meetings/features/features.h" #endif #if BUILDFLAG(ENABLE_HIBERNATE) @@ -182,7 +182,7 @@ InitializeDBusClient<bluez::BluezDBusManager>(bus); } #if BUILDFLAG(PLATFORM_CFM) - if (base::FeatureList::IsEnabled(chromeos::cfm::features::kMojoServices)) { + if (base::FeatureList::IsEnabled(cfm::features::kMojoServices)) { InitializeDBusClient<CfmHotlineClient>(bus); } #endif @@ -209,7 +209,7 @@ } chromeos::WilcoDtcSupportdClient::Shutdown(); #if BUILDFLAG(PLATFORM_CFM) - if (base::FeatureList::IsEnabled(chromeos::cfm::features::kMojoServices)) { + if (base::FeatureList::IsEnabled(cfm::features::kMojoServices)) { CfmHotlineClient::Shutdown(); } #endif
diff --git a/chrome/browser/ash/login/screens/gaia_screen.cc b/chrome/browser/ash/login/screens/gaia_screen.cc index 2380f252..6c4db14 100644 --- a/chrome/browser/ash/login/screens/gaia_screen.cc +++ b/chrome/browser/ash/login/screens/gaia_screen.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ash/login/screens/gaia_screen.h" #include "ash/constants/ash_features.h" +#include "ash/shell.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "chrome/browser/ash/login/ui/login_display_host.h" @@ -21,7 +22,6 @@ constexpr char kUserActionCancel[] = "cancel"; constexpr char kUserActionStartEnrollment[] = "startEnrollment"; constexpr char kUserActionReloadDefault[] = "reloadDefault"; -constexpr char kUserActionSAMLVideoTimeout[] = "samlVideoTimeout"; constexpr char kUserActionRetry[] = "retry"; } // namespace @@ -37,8 +37,6 @@ return "EnterpriseEnroll"; case Result::START_CONSUMER_KIOSK: return "StartConsumerKiosk"; - case Result::SAML_VIDEO_TIMEOUT: - return "SAMLVideoTimeout"; } } @@ -48,7 +46,9 @@ view_(std::move(view)), exit_callback_(exit_callback) {} -GaiaScreen::~GaiaScreen() = default; +GaiaScreen::~GaiaScreen() { + backlights_forced_off_observation_.Reset(); +} void GaiaScreen::LoadOnline(const AccountId& account) { if (!view_) @@ -84,9 +84,20 @@ view_->ShowAllowlistCheckFailedError(); } +void GaiaScreen::Reset() { + if (!view_) + return; + view_->SetGaiaPath(GaiaView::GaiaPath::kDefault); + view_->Reset(); +} + void GaiaScreen::ShowImpl() { if (!view_) return; + if (!backlights_forced_off_observation_.IsObserving()) { + backlights_forced_off_observation_.Observe( + Shell::Get()->backlights_forced_off_setter()); + } // Landed on the login screen. No longer skipping enrollment for tests. context()->skip_to_login_for_tests = false; view_->Show(); @@ -97,6 +108,7 @@ return; view_->SetGaiaPath(GaiaView::GaiaPath::kDefault); view_->Hide(); + backlights_forced_off_observation_.Reset(); } void GaiaScreen::OnUserAction(const base::Value::List& args) { @@ -112,9 +124,6 @@ LoadOnline(EmptyAccountId()); } else if (action_id == kUserActionRetry) { LoadOnline(EmptyAccountId()); - } else if (action_id == kUserActionSAMLVideoTimeout) { - DCHECK(features::IsRedirectToDefaultIdPEnabled()); - exit_callback_.Run(Result::SAML_VIDEO_TIMEOUT); } else { BaseScreen::OnUserAction(args); } @@ -132,4 +141,11 @@ return false; } +void GaiaScreen::OnScreenBacklightStateChanged( + ScreenBacklightState screen_backlight_state) { + if (screen_backlight_state == ScreenBacklightState::ON) + return; + exit_callback_.Run(Result::CANCEL); +} + } // namespace ash
diff --git a/chrome/browser/ash/login/screens/gaia_screen.h b/chrome/browser/ash/login/screens/gaia_screen.h index b17694f..f2355c4 100644 --- a/chrome/browser/ash/login/screens/gaia_screen.h +++ b/chrome/browser/ash/login/screens/gaia_screen.h
@@ -7,9 +7,12 @@ #include <string> +#include "ash/public/cpp/screen_backlight_observer.h" +#include "ash/system/power/backlights_forced_off_setter.h" #include "base/bind.h" #include "base/callback.h" #include "base/memory/weak_ptr.h" +#include "base/scoped_observation.h" #include "base/values.h" #include "chrome/browser/ash/login/screens/base_screen.h" // TODO(https://crbug.com/1164001): move to forward declaration. @@ -18,8 +21,9 @@ namespace ash { // This class represents GAIA screen: login screen that is responsible for -// GAIA-based sign-in. -class GaiaScreen : public BaseScreen { +// GAIA-based sign-in. Screen observs backlight to turn the camera off if the +// device screen is not ON. +class GaiaScreen : public BaseScreen, public ScreenBacklightObserver { public: using TView = GaiaView; @@ -28,7 +32,6 @@ CANCEL, ENTERPRISE_ENROLL, START_CONSUMER_KIOSK, - SAML_VIDEO_TIMEOUT, }; static std::string GetResultString(Result result); @@ -50,6 +53,12 @@ // Loads online Gaia (for child signin) into the webview. void LoadOnlineForChildSignin(); void ShowAllowlistCheckFailedError(); + // Reset authenticator. + void Reset(); + + // ScreenBacklightObserver: + void OnScreenBacklightStateChanged( + ScreenBacklightState screen_backlight_state) override; private: void ShowImpl() override; @@ -60,6 +69,9 @@ base::WeakPtr<TView> view_; ScreenExitCallback exit_callback_; + + base::ScopedObservation<BacklightsForcedOffSetter, ScreenBacklightObserver> + backlights_forced_off_observation_{this}; }; } // namespace ash
diff --git a/chrome/browser/ash/login/screens/offline_login_screen.cc b/chrome/browser/ash/login/screens/offline_login_screen.cc index 5956290e..2ac7159d 100644 --- a/chrome/browser/ash/login/screens/offline_login_screen.cc +++ b/chrome/browser/ash/login/screens/offline_login_screen.cc
@@ -30,6 +30,8 @@ namespace { constexpr char kUserActionCancel[] = "cancel"; +constexpr char kUserActionEmailSubmitted[] = "email-submitted"; +constexpr char kUserActionCompleteAuthentication[] = "complete-authentication"; // Amount of time the user has to be idle for before showing the online login // page. @@ -67,26 +69,16 @@ } } -OfflineLoginScreen::OfflineLoginScreen(OfflineLoginView* view, +OfflineLoginScreen::OfflineLoginScreen(base::WeakPtr<OfflineLoginView> view, const ScreenExitCallback& exit_callback) : BaseScreen(OfflineLoginView::kScreenId, OobeScreenPriority::DEFAULT), - view_(view), + view_(std::move(view)), exit_callback_(exit_callback) { network_state_informer_ = base::MakeRefCounted<NetworkStateInformer>(); network_state_informer_->Init(); - if (view_) - view_->Bind(this); } -OfflineLoginScreen::~OfflineLoginScreen() { - if (view_) - view_->Unbind(); -} - -void OfflineLoginScreen::OnViewDestroyed(OfflineLoginView* view) { - if (view_ == view) - view_ = nullptr; -} +OfflineLoginScreen::~OfflineLoginScreen() = default; void OfflineLoginScreen::ShowImpl() { if (!view_) @@ -117,11 +109,18 @@ view_->Hide(); } -void OfflineLoginScreen::OnUserActionDeprecated(const std::string& action_id) { +void OfflineLoginScreen::OnUserAction(const base::Value::List& args) { + const std::string& action_id = args[0].GetString(); if (action_id == kUserActionCancel) { exit_callback_.Run(Result::BACK); + } else if (action_id == kUserActionEmailSubmitted) { + CHECK_EQ(args.size(), 2); + HandleEmailSubmitted(args[1].GetString()); + } else if (action_id == kUserActionCompleteAuthentication) { + CHECK_EQ(args.size(), 3); + HandleCompleteAuth(args[1].GetString(), args[2].GetString()); } else { - BaseScreen::OnUserActionDeprecated(action_id); + BaseScreen::OnUserAction(args); } } @@ -140,6 +139,8 @@ LOG(ERROR) << "OfflineLoginScreen::HandleCompleteAuth: User not found! " "account type=" << AccountId::AccountTypeToString(account_id.GetAccountType()); + if (!view_) + return; view_->ShowPasswordMismatchMessage(); return; } @@ -168,6 +169,9 @@ } void OfflineLoginScreen::HandleEmailSubmitted(const std::string& email) { + if (!view_) + return; + bool offline_limit_expired = false; const std::string sanitized_email = gaia::SanitizeEmail(email); user_manager::KnownUser known_user(g_browser_process->local_state());
diff --git a/chrome/browser/ash/login/screens/offline_login_screen.h b/chrome/browser/ash/login/screens/offline_login_screen.h index 3962fd3..3bc05ff 100644 --- a/chrome/browser/ash/login/screens/offline_login_screen.h +++ b/chrome/browser/ash/login/screens/offline_login_screen.h
@@ -33,14 +33,10 @@ static std::string GetResultString(Result result); using ScreenExitCallback = base::RepeatingCallback<void(Result result)>; - OfflineLoginScreen(OfflineLoginView* view, + OfflineLoginScreen(base::WeakPtr<OfflineLoginView> view, const ScreenExitCallback& exit_callback); ~OfflineLoginScreen() override; - // Called when the associated View is being destroyed. This screen should call - // Unbind() on the associated View if this class is destroyed before that. - void OnViewDestroyed(OfflineLoginView* view); - void HandleCompleteAuth(const std::string& username, const std::string& password); @@ -53,14 +49,14 @@ private: void ShowImpl() override; void HideImpl() override; - void OnUserActionDeprecated(const std::string& action_id) override; + void OnUserAction(const base::Value::List& args) override; void StartIdleDetection(); void OnIdle(); void HandleTryLoadOnlineLogin(); - OfflineLoginView* view_ = nullptr; + base::WeakPtr<OfflineLoginView> view_; // True when network is available. bool is_network_available_ = false;
diff --git a/chrome/browser/ash/login/screens/tpm_error_screen.cc b/chrome/browser/ash/login/screens/tpm_error_screen.cc index 3f80f7d0..56e477b 100644 --- a/chrome/browser/ash/login/screens/tpm_error_screen.cc +++ b/chrome/browser/ash/login/screens/tpm_error_screen.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ash/login/screens/tpm_error_screen.h" +#include "base/memory/weak_ptr.h" #include "chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h" #include "chromeos/dbus/power/power_manager_client.h" @@ -14,23 +15,12 @@ } // namespace -TpmErrorScreen::TpmErrorScreen(TpmErrorView* view) +TpmErrorScreen::TpmErrorScreen(base::WeakPtr<TpmErrorView> view) : BaseScreen(TpmErrorView::kScreenId, OobeScreenPriority::SCREEN_HARDWARE_ERROR), - view_(view) { - if (view_) - view_->Bind(this); -} + view_(std::move(view)) {} -TpmErrorScreen::~TpmErrorScreen() { - if (view_) - view_->Unbind(); -} - -void TpmErrorScreen::OnViewDestroyed(TpmErrorView* view) { - if (view_ == view) - view_ = nullptr; -} +TpmErrorScreen::~TpmErrorScreen() = default; void TpmErrorScreen::ShowImpl() { if (!view_) @@ -46,12 +36,13 @@ void TpmErrorScreen::HideImpl() {} -void TpmErrorScreen::OnUserActionDeprecated(const std::string& action_id) { +void TpmErrorScreen::OnUserAction(const base::Value::List& args) { + const std::string& action_id = args[0].GetString(); if (action_id == kUserActionReboot) { chromeos::PowerManagerClient::Get()->RequestRestart( power_manager::REQUEST_RESTART_FOR_USER, "Signin screen"); } else { - BaseScreen::OnUserActionDeprecated(action_id); + BaseScreen::OnUserAction(args); } }
diff --git a/chrome/browser/ash/login/screens/tpm_error_screen.h b/chrome/browser/ash/login/screens/tpm_error_screen.h index 2988724..37f40f8 100644 --- a/chrome/browser/ash/login/screens/tpm_error_screen.h +++ b/chrome/browser/ash/login/screens/tpm_error_screen.h
@@ -5,8 +5,7 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_SCREENS_TPM_ERROR_SCREEN_H_ #define CHROME_BROWSER_ASH_LOGIN_SCREENS_TPM_ERROR_SCREEN_H_ -#include <string> - +#include "base/memory/weak_ptr.h" #include "chrome/browser/ash/login/screens/base_screen.h" // TODO(https://crbug.com/1164001): move to forward declaration #include "chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h" @@ -16,22 +15,18 @@ // Controller for the tpm error screen. class TpmErrorScreen : public BaseScreen { public: - explicit TpmErrorScreen(TpmErrorView* view); + explicit TpmErrorScreen(base::WeakPtr<TpmErrorView> view); TpmErrorScreen(const TpmErrorScreen&) = delete; TpmErrorScreen& operator=(const TpmErrorScreen&) = delete; ~TpmErrorScreen() override; - // Called when the screen is being destroyed. This should call Unbind() on the - // associated View if this class is destroyed before that. - void OnViewDestroyed(TpmErrorView* view); - private: // BaseScreen: void ShowImpl() override; void HideImpl() override; - void OnUserActionDeprecated(const std::string& action_id) override; + void OnUserAction(const base::Value::List& args) override; - TpmErrorView* view_ = nullptr; + base::WeakPtr<TpmErrorView> view_; }; } // namespace ash
diff --git a/chrome/browser/ash/login/ui/fake_login_display_host.cc b/chrome/browser/ash/login/ui/fake_login_display_host.cc index d93df7e..a4a0f3e8 100644 --- a/chrome/browser/ash/login/ui/fake_login_display_host.cc +++ b/chrome/browser/ash/login/ui/fake_login_display_host.cc
@@ -136,7 +136,7 @@ void FakeLoginDisplayHost::ShowGuestTosScreen() {} -void FakeLoginDisplayHost::HideOobeDialog(bool saml_video_timeout) {} +void FakeLoginDisplayHost::HideOobeDialog(bool saml_page_closed) {} void FakeLoginDisplayHost::SetShelfButtonsEnabled(bool enabled) {}
diff --git a/chrome/browser/ash/login/ui/fake_login_display_host.h b/chrome/browser/ash/login/ui/fake_login_display_host.h index 6679e56..fb608f3 100644 --- a/chrome/browser/ash/login/ui/fake_login_display_host.h +++ b/chrome/browser/ash/login/ui/fake_login_display_host.h
@@ -62,7 +62,7 @@ void ShowAllowlistCheckFailedError() override; void ShowOsInstallScreen() override; void ShowGuestTosScreen() override; - void HideOobeDialog(bool saml_video_timeout = false) override; + void HideOobeDialog(bool saml_page_closed = false) override; void SetShelfButtonsEnabled(bool enabled) override; void UpdateOobeDialogState(OobeDialogState state) override; void CancelPasswordChangedFlow() override;
diff --git a/chrome/browser/ash/login/ui/login_display_host.h b/chrome/browser/ash/login/ui/login_display_host.h index f387ed1..7e256b0 100644 --- a/chrome/browser/ash/login/ui/login_display_host.h +++ b/chrome/browser/ash/login/ui/login_display_host.h
@@ -167,7 +167,7 @@ virtual void ShowGuestTosScreen() = 0; // Hide any visible oobe dialog. - virtual void HideOobeDialog(bool saml_video_timeout = false) = 0; + virtual void HideOobeDialog(bool saml_page_closed = false) = 0; // Sets whether shelf buttons are enabled. virtual void SetShelfButtonsEnabled(bool enabled) = 0;
diff --git a/chrome/browser/ash/login/ui/login_display_host_mojo.cc b/chrome/browser/ash/login/ui/login_display_host_mojo.cc index 7d727cc4..7b8a38f8 100644 --- a/chrome/browser/ash/login/ui/login_display_host_mojo.cc +++ b/chrome/browser/ash/login/ui/login_display_host_mojo.cc
@@ -403,7 +403,7 @@ ShowDialog(); } -void LoginDisplayHostMojo::HideOobeDialog(bool saml_video_timeout) { +void LoginDisplayHostMojo::HideOobeDialog(bool saml_page_closed) { DCHECK(dialog_); // The dialog can be hidden if there are no users on the login screen only @@ -412,7 +412,7 @@ const bool no_users = !login_display_->IsSigninInProgress() && !has_user_pods_; - if (no_users && !saml_video_timeout) { + if (no_users && !saml_page_closed) { return; } @@ -420,10 +420,11 @@ LoadWallpaper(focused_pod_account_id_); HideDialog(); - // If the OOBE dialog was hidden due to camera timeout and user isn't using - // ChromeVox let user go back to login flow with any action. Otherwise user - // can go back to login pressing arrow button. - if (saml_video_timeout && !scoped_activity_observation_.IsObserving() && + // If the OOBE dialog was hidden due to closing of the SAML page (camera + // timeout or ESC button) and user isn't using ChromeVox - let user go back to + // login flow with any action. Otherwise user can go back to login pressing + // arrow button. + if (saml_page_closed && !scoped_activity_observation_.IsObserving() && !AccessibilityManager::Get()->IsSpokenFeedbackEnabled()) { scoped_activity_observation_.Observe(ui::UserActivityDetector::Get()); } @@ -824,6 +825,10 @@ } void LoginDisplayHostMojo::OnUserActivity(const ui::Event* event) { + // ESC button can be used to hide login dialog when SAML is configured. + // Prevent reopening it with ESC. + if (event->IsKeyEvent() && event->AsKeyEvent()->key_code() == ui::VKEY_ESCAPE) + return; scoped_activity_observation_.Reset(); ShowGaiaDialog(EmptyAccountId()); }
diff --git a/chrome/browser/ash/login/ui/login_display_host_mojo.h b/chrome/browser/ash/login/ui/login_display_host_mojo.h index 5f69aec..a6c276e2 100644 --- a/chrome/browser/ash/login/ui/login_display_host_mojo.h +++ b/chrome/browser/ash/login/ui/login_display_host_mojo.h
@@ -85,7 +85,7 @@ void ShowGaiaDialog(const AccountId& prefilled_account) override; void ShowOsInstallScreen() override; void ShowGuestTosScreen() override; - void HideOobeDialog(bool saml_video_timeout = false) override; + void HideOobeDialog(bool saml_page_closed = false) override; void SetShelfButtonsEnabled(bool enabled) override; void UpdateOobeDialogState(OobeDialogState state) override; void OnCancelPasswordChangedFlow() override;
diff --git a/chrome/browser/ash/login/ui/login_display_host_webui.cc b/chrome/browser/ash/login/ui/login_display_host_webui.cc index adc6de90..c185623 100644 --- a/chrome/browser/ash/login/ui/login_display_host_webui.cc +++ b/chrome/browser/ash/login/ui/login_display_host_webui.cc
@@ -1018,7 +1018,7 @@ StartWizard(GuestTosScreenView::kScreenId); } -void LoginDisplayHostWebUI::HideOobeDialog(bool video_timeout) { +void LoginDisplayHostWebUI::HideOobeDialog(bool saml_page_closed) { NOTREACHED(); }
diff --git a/chrome/browser/ash/login/ui/login_display_host_webui.h b/chrome/browser/ash/login/ui/login_display_host_webui.h index eaa8733..dedb25e4 100644 --- a/chrome/browser/ash/login/ui/login_display_host_webui.h +++ b/chrome/browser/ash/login/ui/login_display_host_webui.h
@@ -88,7 +88,7 @@ void ShowGaiaDialog(const AccountId& prefilled_account) override; void ShowOsInstallScreen() override; void ShowGuestTosScreen() override; - void HideOobeDialog(bool saml_video_timeout = false) override; + void HideOobeDialog(bool saml_page_closed = false) override; void SetShelfButtonsEnabled(bool enabled) override; void UpdateOobeDialogState(OobeDialogState state) override; void HandleDisplayCaptivePortal() override;
diff --git a/chrome/browser/ash/login/wizard_controller.cc b/chrome/browser/ash/login/wizard_controller.cc index 6893591..c4996107 100644 --- a/chrome/browser/ash/login/wizard_controller.cc +++ b/chrome/browser/ash/login/wizard_controller.cc
@@ -356,6 +356,15 @@ return OobeScreenId(pref_value); } +bool IsGaiaPageDefaultsToSAML() { + if (!features::IsRedirectToDefaultIdPEnabled()) + return false; + int authentication_behavior = 0; + bool authentication_behavior_set = CrosSettings::Get()->GetInteger( + kLoginAuthenticationBehavior, &authentication_behavior); + return authentication_behavior_set && authentication_behavior; +} + } // namespace // static @@ -705,12 +714,12 @@ base::BindRepeating(&WizardController::OnSamlConfirmPasswordScreenExit, weak_factory_.GetWeakPtr()))); append(std::make_unique<OfflineLoginScreen>( - oobe_ui->GetView<OfflineLoginScreenHandler>(), + oobe_ui->GetView<OfflineLoginScreenHandler>()->AsWeakPtr(), base::BindRepeating(&WizardController::OnOfflineLoginScreenExit, weak_factory_.GetWeakPtr()))); append(std::make_unique<TpmErrorScreen>( - oobe_ui->GetView<TpmErrorScreenHandler>())); + oobe_ui->GetView<TpmErrorScreenHandler>()->AsWeakPtr())); auto gaia_password_change_screen = std::make_unique<GaiaPasswordChangedScreen>( @@ -1079,7 +1088,7 @@ OnScreenExit(GaiaView::kScreenId, GaiaScreen::GetResultString(result)); switch (result) { case GaiaScreen::Result::BACK: - case GaiaScreen::Result::CANCEL: + case GaiaScreen::Result::CANCEL: { if (result == GaiaScreen::Result::BACK && wizard_context_->is_user_creation_enabled) { // `Result::BACK` is only triggered when pressing back button. It goes @@ -1089,23 +1098,27 @@ AdvanceToScreen(UserCreationView::kScreenId); break; } - if (LoginDisplayHost::default_host()->HasUserPods() && - !wizard_context_->is_user_creation_enabled) { - LoginDisplayHost::default_host()->HideOobeDialog(); + // If a default redirection to third party IdP is set we can hide the + // dialog. + const bool gaia_page_defaults_to_saml = IsGaiaPageDefaultsToSAML(); + if ((LoginDisplayHost::default_host()->HasUserPods() && + !wizard_context_->is_user_creation_enabled) || + (!LoginDisplayHost::default_host()->HasUserPods() && + gaia_page_defaults_to_saml)) { + GetScreen<GaiaScreen>()->Reset(); + LoginDisplayHost::default_host()->HideOobeDialog( + gaia_page_defaults_to_saml); } else { GetScreen<GaiaScreen>()->LoadOnline(EmptyAccountId()); } break; + } case GaiaScreen::Result::ENTERPRISE_ENROLL: ShowEnrollmentScreenIfEligible(); break; case GaiaScreen::Result::START_CONSUMER_KIOSK: LoginDisplayHost::default_host()->AttemptShowEnableConsumerKioskScreen(); break; - case GaiaScreen::Result::SAML_VIDEO_TIMEOUT: - LoginDisplayHost::default_host()->HideOobeDialog( - /*saml_video_timeout=*/true); - break; } }
diff --git a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc index c2fb0da..8dee14b2 100644 --- a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc +++ b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.cc
@@ -811,6 +811,12 @@ observed_profile_manager_.Reset(); + // Activate user remote commands only for unicorn accounts. + // The server side only supports user-scoped remote commands for unicorn + // accounts at the moment. See b/193450869 for more detail. + if (!IsChildUser(account_id_)) + return; + invalidation::ProfileInvalidationProvider* const invalidation_provider = invalidation::ProfileInvalidationProviderFactory::GetForProfile(profile_); @@ -831,12 +837,12 @@ shutdown_subscription_ = UserCloudPolicyManagerAshNotifierFactory::GetInstance() ->Get(profile_) - ->Subscribe( - base::BindRepeating(&UserCloudPolicyManagerAsh::ProfileShutdown, - base::Unretained(this))); + ->Subscribe(base::BindRepeating( + &UserCloudPolicyManagerAsh::ShutdownRemoteCommands, + base::Unretained(this))); } -void UserCloudPolicyManagerAsh::ProfileShutdown() { +void UserCloudPolicyManagerAsh::ShutdownRemoteCommands() { // Unregister the RemoteCommandsInvalidatorImpl from the InvalidatorRegistrar. invalidator_->Shutdown(); invalidator_.reset();
diff --git a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.h b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.h index 99e100e1..2b61e1fe 100644 --- a/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.h +++ b/chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.h
@@ -256,7 +256,7 @@ void OnProfileAdded(Profile* profile) override; // Called on profile shutdown. - void ProfileShutdown(); + void ShutdownRemoteCommands(); // Profile associated with the current user. Profile* const profile_;
diff --git a/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc b/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc index c810761..000bfc0 100644 --- a/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc +++ b/chrome/browser/ash/policy/dlp/data_transfer_dlp_controller_ash_browsertest.cc
@@ -5,7 +5,6 @@ #include <memory> #include <string> -#include "ash/shell.h" #include "base/json/json_writer.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/sequenced_task_runner_handle.h" @@ -42,12 +41,9 @@ #include "ui/base/clipboard/scoped_clipboard_writer.h" #include "ui/base/data_transfer_policy/data_transfer_endpoint.h" #include "ui/events/keycodes/keyboard_codes_posix.h" -#include "ui/events/test/event_generator.h" -#include "ui/views/controls/textfield/textfield.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_observer.h" -// TODO(crbug.com/1262948): Enable and modify for lacros. namespace policy { namespace { @@ -225,40 +221,11 @@ "PLACEHOLDER_IP")); } - void SetupTextfield() { - // Create a widget containing a single, focusable textfield. - widget_ = std::make_unique<views::Widget>(); - - views::Widget::InitParams params; - params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; - params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS; - widget_->Init(std::move(params)); - textfield_ = widget_->SetContentsView(std::make_unique<views::Textfield>()); - textfield_->SetAccessibleName(u"Textfield"); - textfield_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS); - - // Show the widget. - widget_->SetBounds(gfx::Rect(0, 0, 100, 100)); - widget_->Show(); - ASSERT_TRUE(widget_->IsActive()); - - // Focus the textfield and confirm initial state. - textfield_->RequestFocus(); - ASSERT_TRUE(textfield_->HasFocus()); - ASSERT_TRUE(textfield_->GetText().empty()); - - event_generator_ = std::make_unique<ui::test::EventGenerator>( - ash::Shell::GetPrimaryRootWindow()); - } - MockDlpRulesManager* rules_manager_; std::unique_ptr<DlpReportingManager> reporting_manager_; std::vector<DlpPolicyEvent> events; FakeClipboardNotifier helper_; std::unique_ptr<FakeDlpController> dlp_controller_; - std::unique_ptr<ui::test::EventGenerator> event_generator_; - std::unique_ptr<views::Widget> widget_; - views::Textfield* textfield_ = nullptr; }; // Flaky on MSan bots: http://crbug.com/1178328
diff --git a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc index 21ccd28..ee45935 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc +++ b/chrome/browser/ash/policy/remote_commands/crd_host_delegate.cc
@@ -175,12 +175,10 @@ CrdHostDelegate::~CrdHostDelegate() = default; bool CrdHostDelegate::HasActiveSession() const { - LOG(ERROR) << __FUNCTION__; return active_session_ != nullptr; } void CrdHostDelegate::TerminateSession(base::OnceClosure callback) { - LOG(ERROR) << __FUNCTION__; CRD_DVLOG(3) << "Terminating CRD session"; active_session_ = nullptr; std::move(callback).Run();
diff --git a/chrome/browser/ash/profiles/profile_helper.cc b/chrome/browser/ash/profiles/profile_helper.cc index 4f8e0b3..38df1b0 100644 --- a/chrome/browser/ash/profiles/profile_helper.cc +++ b/chrome/browser/ash/profiles/profile_helper.cc
@@ -19,11 +19,10 @@ #include "base/strings/string_util.h" #include "base/threading/thread_restrictions.h" #include "chrome/browser/ash/base/file_flusher.h" +#include "chrome/browser/ash/profiles/profile_helper_delegate_impl.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/profiles/profiles_state.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_switches.h" #include "components/account_id/account_id.h" @@ -59,13 +58,6 @@ const std::string& username_hash; }; -// Internal helper to get an already-loaded user profile by user id hash. Return -// nullptr if the user profile is not yet loaded. -Profile* GetProfileByUserIdHash(const std::string& user_id_hash) { - return g_browser_process->profile_manager()->GetProfileByPath( - ProfileHelper::GetProfilePathByUserIdHash(user_id_hash)); -} - bool IsSigninProfilePath(const base::FilePath& profile_path) { return profile_path.value() == chrome::kInitialProfile; } @@ -78,28 +70,6 @@ return profile_path.value() == chrome::kLockScreenProfile; } -// Returns the path that corresponds to the passed profile. -base::FilePath GetProfileDir(base::StringPiece profile) { - ProfileManager* profile_manager = g_browser_process->profile_manager(); - // profile_manager can be null in unit tests. - if (!profile_manager) - return base::FilePath(); - base::FilePath user_data_dir = profile_manager->user_data_dir(); - return user_data_dir.AppendASCII(profile); -} - -// Returns an incognito profile that corresponds to the passed path. -Profile* GetIncognitoProfile(base::FilePath profile_dir) { - ProfileManager* profile_manager = g_browser_process->profile_manager(); - // |profile_manager| could be null in tests. - if (!profile_manager) { - return nullptr; - } - - return profile_manager->GetProfile(profile_dir) - ->GetPrimaryOTRProfile(/*create_if_needed=*/true); -} - } // anonymous namespace // static @@ -108,9 +78,22 @@ class ProfileHelperImpl : public ProfileHelper { public: - ProfileHelperImpl(); + explicit ProfileHelperImpl(std::unique_ptr<Delegate> delegate); ~ProfileHelperImpl() override; + // Returns profile path that corresponds to a given |user_id_hash|. + base::FilePath GetProfilePathByUserIdHash(const std::string& user_id_hash); + + // Returns the path that corresponds to the passed profile. + base::FilePath GetProfileDir(base::StringPiece profile); + + // Returns true if the signin profile has been initialized. + bool IsSigninProfileInitialized(); + + // Returns OffTheRecord profile for use during signing phase. + Profile* GetSigninProfile(); + + // ProfileHelper overrides base::FilePath GetActiveUserProfileDir() override; void Initialize() override; @@ -134,6 +117,8 @@ // user_manager::UserManager::UserSessionStateObserver implementation: void ActiveUserHashChanged(const std::string& hash) override; + std::unique_ptr<Delegate> delegate_; + // Identifies path to active user profile on Chrome OS. std::string active_user_id_hash_; @@ -147,6 +132,17 @@ std::unique_ptr<FileFlusher> profile_flusher_; }; +namespace { +// Convenient utility to obtain ProfileHelperImpl. +// Currently ProfileHelper interface is implemented by only ProfileHelperImpl, +// so safe to cast. +// TODO(crbug.com/1325210): Remove this after ProfileHelper is moved out from +// chrome/browser. +ProfileHelperImpl* GetImpl() { + return static_cast<ProfileHelperImpl*>(ProfileHelper::Get()); +} +} // namespace + //////////////////////////////////////////////////////////////////////////////// // ProfileHelper, public @@ -161,7 +157,8 @@ // static std::unique_ptr<ProfileHelper> ProfileHelper::CreateInstance() { - return std::make_unique<ProfileHelperImpl>(); + return std::make_unique<ProfileHelperImpl>( + std::make_unique<ProfileHelperDelegateImpl>()); } // static @@ -172,28 +169,17 @@ // static base::FilePath ProfileHelper::GetProfilePathByUserIdHash( const std::string& user_id_hash) { - // Fails if Chrome runs with "--login-manager", but not "--login-profile", and - // needs to restart. This might happen if you test Chrome OS on Linux and - // you start a guest session or Chrome crashes. Be sure to add - // "--login-profile=user@example.com-hash" - // to the command line flags. - DCHECK(!user_id_hash.empty()) - << "user_id_hash is empty, probably need to add " - "--login-profile=user@example.com-hash to command line parameters"; - ProfileManager* profile_manager = g_browser_process->profile_manager(); - base::FilePath profile_path = profile_manager->user_data_dir(); - - return profile_path.Append(GetUserProfileDir(user_id_hash)); + return GetImpl()->GetProfilePathByUserIdHash(user_id_hash); } // static base::FilePath ProfileHelper::GetSigninProfileDir() { - return GetProfileDir(chrome::kInitialProfile); + return GetImpl()->GetProfileDir(chrome::kInitialProfile); } // static Profile* ProfileHelper::GetSigninProfile() { - return GetIncognitoProfile(GetSigninProfileDir()); + return GetImpl()->GetSigninProfile(); } // static @@ -233,9 +219,7 @@ // static bool ProfileHelper::IsSigninProfileInitialized() { - ProfileManager* profile_manager = g_browser_process->profile_manager(); - return profile_manager && - profile_manager->GetProfileByPath(GetSigninProfileDir()); + return GetImpl()->IsSigninProfileInitialized(); } // static @@ -245,7 +229,7 @@ // static base::FilePath ProfileHelper::GetLockScreenAppProfilePath() { - return GetProfileDir(chrome::kLockScreenAppProfile); + return GetImpl()->GetProfileDir(chrome::kLockScreenAppProfile); } // static @@ -255,7 +239,7 @@ // static base::FilePath ProfileHelper::GetLockScreenProfileDir() { - return GetProfileDir(chrome::kLockScreenProfile); + return GetImpl()->GetProfileDir(chrome::kLockScreenProfile); } // static @@ -342,10 +326,42 @@ return user_id + kUserIdHashSuffix; } -ProfileHelperImpl::ProfileHelperImpl() = default; +ProfileHelperImpl::ProfileHelperImpl(std::unique_ptr<Delegate> delegate) + : delegate_(std::move(delegate)) {} ProfileHelperImpl::~ProfileHelperImpl() = default; +base::FilePath ProfileHelperImpl::GetProfilePathByUserIdHash( + const std::string& user_id_hash) { + // Fails if Chrome runs with "--login-manager", but not "--login-profile", and + // needs to restart. This might happen if you test Chrome OS on Linux and + // you start a guest session or Chrome crashes. Be sure to add + // "--login-profile=user@example.com-hash" + // to the command line flags. + DCHECK(!user_id_hash.empty()) + << "user_id_hash is empty, probably need to add " + "--login-profile=user@example.com-hash to command line parameters"; + return delegate_->GetUserDataDir()->Append(GetUserProfileDir(user_id_hash)); +} + +base::FilePath ProfileHelperImpl::GetProfileDir(base::StringPiece profile) { + const base::FilePath* user_data_dir = delegate_->GetUserDataDir(); + if (!user_data_dir) + return base::FilePath(); + return user_data_dir->AppendASCII(profile); +} + +bool ProfileHelperImpl::IsSigninProfileInitialized() { + return delegate_->GetProfileByPath(GetSigninProfileDir()); +} + +Profile* ProfileHelperImpl::GetSigninProfile() { + Profile* profile = delegate_->DeprecatedGetProfile(GetSigninProfileDir()); + if (!profile) + return nullptr; + return profile->GetPrimaryOTRProfile(/*create_if_needed=*/true); +} + base::FilePath ProfileHelperImpl::GetActiveUserProfileDir() { return ProfileHelper::GetUserProfileDir(active_user_id_hash_); } @@ -377,7 +393,9 @@ if (!user->is_profile_created()) return NULL; - Profile* profile = GetProfileByUserIdHash(user->username_hash()); + + Profile* profile = delegate_->GetProfileByPath( + GetProfilePathByUserIdHash(user->username_hash())); // GetActiveUserProfile() or GetProfileByUserIdHash() returns a new instance // of ProfileImpl(), but actually its off-the-record profile should be used.
diff --git a/chrome/browser/ash/profiles/profile_helper.h b/chrome/browser/ash/profiles/profile_helper.h index 17b7636..1df79a85 100644 --- a/chrome/browser/ash/profiles/profile_helper.h +++ b/chrome/browser/ash/profiles/profile_helper.h
@@ -37,6 +37,28 @@ class ProfileHelper : public user_manager::UserManager::UserSessionStateObserver { public: + class Delegate { + public: + virtual ~Delegate() = default; + + // Returns a profile object corresponding to the given path if fully + // initialized. Otherwise returns nullptr. If the system is not + // initialized, also returns nullptr (for unittests). + virtual Profile* GetProfileByPath(const base::FilePath& path) = 0; + + // DEPRECATED. Please do not use this in the new code, and instead use + // GetProfileByPath(). + // Similar to GetProfileByPath, but synchronously create a Profile instance + // if it is not initialized. + // If the system is not initialized, still returns nullptr (for unittests). + // TODO(crbug.com/1325210): Remove this later. + virtual Profile* DeprecatedGetProfile(const base::FilePath& path) = 0; + + // Returns the path to the user data directory. + // If the system is not initialized, returns nullptr (for unittests). + virtual const base::FilePath* GetUserDataDir() = 0; + }; + ProfileHelper(); ProfileHelper(const ProfileHelper&) = delete;
diff --git a/chrome/browser/ash/profiles/profile_helper_delegate_impl.cc b/chrome/browser/ash/profiles/profile_helper_delegate_impl.cc new file mode 100644 index 0000000..4b5d0713 --- /dev/null +++ b/chrome/browser/ash/profiles/profile_helper_delegate_impl.cc
@@ -0,0 +1,42 @@ +// 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. + +#include "chrome/browser/ash/profiles/profile_helper_delegate_impl.h" + +#include "chrome/browser/browser_process.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" + +namespace ash { + +ProfileHelperDelegateImpl::ProfileHelperDelegateImpl() = default; +ProfileHelperDelegateImpl::~ProfileHelperDelegateImpl() = default; + +Profile* ProfileHelperDelegateImpl::GetProfileByPath( + const base::FilePath& path) { + // profile_manager can be null in unit tests. + auto* profile_manager = g_browser_process->profile_manager(); + if (!profile_manager) + return nullptr; + return profile_manager->GetProfileByPath(path); +} + +Profile* ProfileHelperDelegateImpl::DeprecatedGetProfile( + const base::FilePath& path) { + // profile_manager can be null in unit tests. + auto* profile_manager = g_browser_process->profile_manager(); + if (!profile_manager) + return nullptr; + return profile_manager->GetProfile(path); +} + +const base::FilePath* ProfileHelperDelegateImpl::GetUserDataDir() { + // profile_manager can be null in unit tests. + auto* profile_manager = g_browser_process->profile_manager(); + if (!profile_manager) + return nullptr; + return &profile_manager->user_data_dir(); +} + +} // namespace ash
diff --git a/chrome/browser/ash/profiles/profile_helper_delegate_impl.h b/chrome/browser/ash/profiles/profile_helper_delegate_impl.h new file mode 100644 index 0000000..2e93c5e --- /dev/null +++ b/chrome/browser/ash/profiles/profile_helper_delegate_impl.h
@@ -0,0 +1,28 @@ +// 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 CHROME_BROWSER_ASH_PROFILES_PROFILE_HELPER_DELEGATE_IMPL_H_ +#define CHROME_BROWSER_ASH_PROFILES_PROFILE_HELPER_DELEGATE_IMPL_H_ + +#include "chrome/browser/ash/profiles/profile_helper.h" + +namespace ash { + +// Injects chrome/browser dependency to ProfileHelper. +// TODO(crbug.com/1325210): Remove g_browser_process dependency from this +// implementation, which requires to change the lifetime of the instance. +class ProfileHelperDelegateImpl : public ProfileHelper::Delegate { + public: + ProfileHelperDelegateImpl(); + ~ProfileHelperDelegateImpl() override; + + // ProfileHelper::Delegate overrides + Profile* GetProfileByPath(const base::FilePath& path) override; + Profile* DeprecatedGetProfile(const base::FilePath& path) override; + const base::FilePath* GetUserDataDir() override; +}; + +} // namespace ash + +#endif // CHROME_BROWSER_ASH_PROFILES_PROFILE_HELPER_DELEGATE_IMPL_H_
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc index 0f6a987..dda5039c 100644 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -134,6 +134,10 @@ return g_browser_process->local_state(); } +std::string ChromeAutocompleteProviderClient::GetApplicationLocale() const { + return g_browser_process->GetApplicationLocale(); +} + const AutocompleteSchemeClassifier& ChromeAutocompleteProviderClient::GetSchemeClassifier() const { return scheme_classifier_;
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h index d5888a4..85dd0c31a 100644 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
@@ -46,6 +46,7 @@ scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; PrefService* GetPrefs() const override; PrefService* GetLocalState() override; + std::string GetApplicationLocale() const override; const AutocompleteSchemeClassifier& GetSchemeClassifier() const override; AutocompleteClassifier* GetAutocompleteClassifier() override; history::HistoryService* GetHistoryService() override;
diff --git a/chrome/browser/autofill_assistant/password_change/apc_client_impl_unittest.cc b/chrome/browser/autofill_assistant/password_change/apc_client_impl_unittest.cc index 15a0f19..ef13bf3 100644 --- a/chrome/browser/autofill_assistant/password_change/apc_client_impl_unittest.cc +++ b/chrome/browser/autofill_assistant/password_change/apc_client_impl_unittest.cc
@@ -93,7 +93,7 @@ std::unique_ptr<AssistantSidePanelCoordinator> side_panel_; std::unique_ptr<autofill_assistant::HeadlessScriptController> external_script_controller_; - autofill_assistant::RuntimeManager* runtime_manager_; + raw_ptr<autofill_assistant::RuntimeManager> runtime_manager_; }; // static
diff --git a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc index 8af98089f..6fba258 100644 --- a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc +++ b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.cc
@@ -8,6 +8,7 @@ #include <vector> #include "base/bind.h" +#include "base/logging.h" #include "base/memory/weak_ptr.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/autofill_assistant/password_change/proto/extensions.pb.h" @@ -18,6 +19,8 @@ #include "ui/base/l10n/l10n_util.h" #include "url/gurl.h" +using autofill_assistant::password_change::GenericPasswordChangeSpecification; + // TODO(crbug.com/1324089): Implement once the side panel and // UpdateDesktopSideAction are available. ApcExternalActionDelegate::ApcExternalActionDelegate( @@ -29,13 +32,38 @@ ApcExternalActionDelegate::~ApcExternalActionDelegate() = default; void ApcExternalActionDelegate::OnActionRequested( - const autofill_assistant::external::Action& action_info, + const autofill_assistant::external::Action& action, base::OnceCallback<void(DomUpdateCallback)> start_dom_checks_callback, base::OnceCallback<void(const autofill_assistant::external::Result& result)> end_action_callback) { - autofill_assistant::external::Result result; - result.set_success(true); - std::move(end_action_callback).Run(result); + end_action_callback_ = std::move(end_action_callback); + start_dom_checks_callback_ = std::move(start_dom_checks_callback); + + GenericPasswordChangeSpecification spec; + if (!spec.ParseFromString(action.info().action_payload())) { + DLOG(ERROR) << "unable to parse GenericPasswordChangeSpecification"; + EndAction(false); + return; + } + + switch (spec.specification_case()) { + case GenericPasswordChangeSpecification::SpecificationCase::kBasePrompt: + HandleBasePrompt(spec.base_prompt()); + break; + case GenericPasswordChangeSpecification::SpecificationCase:: + kGeneratedPasswordPrompt: + HandleGeneratedPasswordPrompt(spec.generated_password_prompt()); + break; + case GenericPasswordChangeSpecification::SpecificationCase:: + kUpdateSidePanel: + HandleUpdateSidePanel(spec.update_side_panel()); + break; + case GenericPasswordChangeSpecification::SpecificationCase:: + SPECIFICATION_NOT_SET: + DLOG(ERROR) << "unknown password change action"; + EndAction(false); + break; + } } void ApcExternalActionDelegate::SetupDisplay() { @@ -67,11 +95,6 @@ } // PasswordChangeRunController -void ApcExternalActionDelegate::Show( - base::WeakPtr<PasswordChangeRunDisplay> password_change_run_display) { - password_change_run_display_ = password_change_run_display; - password_change_run_display_->Show(); -} void ApcExternalActionDelegate::SetTopIcon( autofill_assistant::password_change::TopIcon top_icon) { @@ -123,10 +146,28 @@ password_change_run_display_->ShowBasePrompt(choices); } -void ApcExternalActionDelegate::OnBasePromptChoiceSelected(int choice_index) { +void ApcExternalActionDelegate::OnBasePromptChoiceSelected( + size_t choice_index) { password_change_run_display_->ClearPrompt(); - // TODO(crbug.com/1331202): Terminate action and send return value. + // If no `output_key` is specified, only signal that the prompt action was + // successfully executed. + if (!base_prompt_should_send_payload_) { + EndAction(true); + return; + } + + DCHECK(choice_index < base_prompt_return_values_.size()); + autofill_assistant::password_change::BasePromptSpecification::Result result; + result.set_selected_tag(base_prompt_return_values_[choice_index]); + + std::string serialized_result; + if (!result.SerializeToString(&serialized_result)) { + DLOG(ERROR) << "unable to base prompt result"; + EndAction(false); + return; + } + EndAction(true, std::move(serialized_result)); } void ApcExternalActionDelegate::ShowGeneratedPasswordPrompt( @@ -171,6 +212,48 @@ SetDescription(std::u16string()); } +void ApcExternalActionDelegate::Show( + base::WeakPtr<PasswordChangeRunDisplay> password_change_run_display) { + password_change_run_display_ = password_change_run_display; + password_change_run_display_->Show(); +} + +void ApcExternalActionDelegate::EndAction(bool success, + std::string serialized_result) { + autofill_assistant::external::Result result; + result.set_success(success); + // Only set a payload for a non-empty serialized result to avoid triggering + // payload processing. + if (!serialized_result.empty()) { + result.mutable_result_info()->set_result_payload(serialized_result); + } + + std::move(end_action_callback_).Run(std::move(result)); +} + +void ApcExternalActionDelegate::HandleBasePrompt( + const autofill_assistant::password_change::BasePromptSpecification& + specification) { + base_prompt_should_send_payload_ = specification.has_output_key(); + + // TODO(crbug.com/1331202): Set up DOM checking and matching of DOM conditions + // to return values. + + ShowBasePrompt(specification); +} + +void ApcExternalActionDelegate::HandleGeneratedPasswordPrompt( + const autofill_assistant::password_change:: + GeneratedPasswordPromptSpecification& specification) { + EndAction(false); +} + +void ApcExternalActionDelegate::HandleUpdateSidePanel( + const autofill_assistant::password_change::UpdateSidePanelSpecification& + specification) { + EndAction(false); +} + base::WeakPtr<PasswordChangeRunController> ApcExternalActionDelegate::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr();
diff --git a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h index 62fbcde3..fdb48b7 100644 --- a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h +++ b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate.h
@@ -38,7 +38,7 @@ // ExternalActionDelegate: void OnActionRequested( - const autofill_assistant::external::Action& action_info, + const autofill_assistant::external::Action& action, base::OnceCallback<void(DomUpdateCallback)> start_dom_checks_callback, base::OnceCallback<void(const autofill_assistant::external::Result& result)> end_action_callback) override; @@ -56,7 +56,7 @@ void ShowBasePrompt( const autofill_assistant::password_change::BasePromptSpecification& base_prompt) override; - void OnBasePromptChoiceSelected(int choice_index) override; + void OnBasePromptChoiceSelected(size_t choice_index) override; void ShowGeneratedPasswordPrompt( const autofill_assistant::password_change:: GeneratedPasswordPromptSpecification& password_prompt, @@ -71,6 +71,33 @@ void Show(base::WeakPtr<PasswordChangeRunDisplay> password_change_run_display) override; + // Ends the current action by notifying the `ExternalActionController` about + // the `success` of the action. If non-empty, `serialized_result` is passed + // as the result payload. Otherwise, no payload is set. + void EndAction(bool success, std::string serialized_result = std::string()); + + // Handler methods for the different actions that `ApcExternalActionDelegate` + // supports. + void HandleBasePrompt( + const autofill_assistant::password_change::BasePromptSpecification& + specification); + void HandleGeneratedPasswordPrompt( + const autofill_assistant::password_change:: + GeneratedPasswordPromptSpecification& specification); + void HandleUpdateSidePanel( + const autofill_assistant::password_change::UpdateSidePanelSpecification& + specification); + + // The callback that terminates the current action. + base::OnceCallback<void(const autofill_assistant::external::Result& result)> + end_action_callback_; + + // The callback that starts regular DOM checks. + base::OnceCallback<void(DomUpdateCallback)> start_dom_checks_callback_; + + // Indicates whether a base prompt should send back a result payload. + bool base_prompt_should_send_payload_ = false; + // Stores the UI state of a password change run. PasswordChangeRunController::Model model_;
diff --git a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate_unittest.cc b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate_unittest.cc index 4bd82c1..50b6758 100644 --- a/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate_unittest.cc +++ b/chrome/browser/autofill_assistant/password_change/apc_external_action_delegate_unittest.cc
@@ -8,6 +8,7 @@ #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/mock_callback.h" #include "chrome/browser/autofill_assistant/password_change/proto/extensions.pb.h" #include "chrome/browser/ui/autofill_assistant/password_change/mock_assistant_display_delegate.h" #include "chrome/browser/ui/autofill_assistant/password_change/mock_password_change_run_display.h" @@ -21,6 +22,8 @@ using ::testing::_; using ::testing::DoAll; using ::testing::SaveArg; +using DomUpdateCallback = + autofill_assistant::ExternalActionDelegate::DomUpdateCallback; using ProgressStep = autofill_assistant::password_change::ProgressStep; using TopIcon = autofill_assistant::password_change::TopIcon; @@ -28,10 +31,13 @@ constexpr char kTitle[] = "Sample title"; constexpr char kDescription[] = "Sample description"; +constexpr char kPromptOutputKey[] = "external_output_key"; constexpr char kPromptText1[] = "Choice 1"; constexpr char kPromptText2[] = "Choice 2"; constexpr bool kIsHighlighted1 = true; constexpr bool kIsHighlighted2 = false; +constexpr char kPromptTag1[] = "first_tag"; +constexpr char kPromptTag2[] = "second_tag"; constexpr char16_t kPassword[] = u"verySecretPassword123"; constexpr TopIcon kTopIcon = TopIcon::TOP_ICON_ENTER_OLD_PASSWORD; constexpr ProgressStep kStep = ProgressStep::PROGRESS_STEP_START; @@ -41,23 +47,28 @@ constexpr char kUrl[] = "https://wwww.example.com"; +// Helper function to create a sample proto for a base prompt. autofill_assistant::password_change::BasePromptSpecification CreateBasePrompt() { autofill_assistant::password_change::BasePromptSpecification proto; + proto.set_output_key(kPromptOutputKey); proto.set_title(kTitle); auto* choice = proto.add_choices(); choice->set_text(kPromptText1); choice->set_highlighted(kIsHighlighted1); + choice->set_tag(kPromptTag1); choice = proto.add_choices(); choice->set_text(kPromptText2); choice->set_highlighted(kIsHighlighted2); + choice->set_tag(kPromptTag2); return proto; } +// Helper function to create a sample proto for a generated password prompt. autofill_assistant::password_change::GeneratedPasswordPromptSpecification CreateGeneratedPasswordPrompt() { autofill_assistant::password_change::GeneratedPasswordPromptSpecification @@ -77,6 +88,19 @@ return proto; } +// Helper function that creates an `Action` from a `BasePromptSpecification`. +// This function can be overloaded to handle all `password_change` +// specifications. +autofill_assistant::external::Action CreateAction( + const autofill_assistant::password_change::BasePromptSpecification& proto) { + autofill_assistant::external::Action action; + autofill_assistant::password_change::GenericPasswordChangeSpecification spec; + spec.mutable_base_prompt()->CopyFrom(proto); + spec.SerializeToString(action.mutable_info()->mutable_action_payload()); + + return action; +} + } // namespace class ApcExternalActionDelegateTest : public ::testing::Test { @@ -141,24 +165,6 @@ action_delegate()->OnInterruptFinished(); } -TEST_F(ApcExternalActionDelegateTest, ShowBasePromptAndAccept) { - // Save arguments for inspection. - std::vector<PasswordChangeRunDisplay::PromptChoice> choices; - EXPECT_CALL(*display(), ShowBasePrompt).WillOnce(SaveArg<0>(&choices)); - autofill_assistant::password_change::BasePromptSpecification proto = - CreateBasePrompt(); - action_delegate()->ShowBasePrompt(proto); - - ASSERT_EQ(static_cast<size_t>(proto.choices_size()), choices.size()); - for (size_t i = 0; i < choices.size(); ++i) { - EXPECT_EQ(choices[i].highlighted, proto.choices()[i].highlighted()); - EXPECT_EQ(choices[i].text, base::UTF8ToUTF16(proto.choices()[i].text())); - } - - EXPECT_CALL(*display(), ClearPrompt); - action_delegate()->OnBasePromptChoiceSelected(0); -} - TEST_F(ApcExternalActionDelegateTest, ShowGeneratedPasswordPromptAndAccept) { PasswordChangeRunDisplay::PromptChoice manual_choice, generated_choice; EXPECT_CALL(*display(), @@ -196,3 +202,121 @@ action_delegate()->ShowStartingScreen(url); } + +TEST_F(ApcExternalActionDelegateTest, ReceiveInvalidAction) { + autofill_assistant::external::Action empty_action; + + base::MockOnceCallback<void( + const autofill_assistant::external::Result& result)> + result_callback; + base::MockOnceCallback<void(DomUpdateCallback)> start_dom_checks_callback; + + autofill_assistant::external::Result result; + EXPECT_CALL(result_callback, Run).WillOnce(SaveArg<0>(&result)); + EXPECT_FALSE(result.has_success()); + + // DOM checks are never started. + EXPECT_CALL(start_dom_checks_callback, Run).Times(0); + + action_delegate()->OnActionRequested( + empty_action, start_dom_checks_callback.Get(), result_callback.Get()); + EXPECT_TRUE(result.has_success()); + EXPECT_FALSE(result.success()); + EXPECT_FALSE(result.has_result_info()); +} + +TEST_F(ApcExternalActionDelegateTest, + ReceiveBasePromptAction_WithoutDomConditions) { + base::MockOnceCallback<void( + const autofill_assistant::external::Result& result)> + result_callback; + base::MockOnceCallback<void(DomUpdateCallback)> start_dom_checks_callback; + + // Save prompt arguments for inspection. + std::vector<PasswordChangeRunDisplay::PromptChoice> choices; + EXPECT_CALL(*display(), ShowBasePrompt).WillOnce(SaveArg<0>(&choices)); + + // Similarly, save the prompt result. + autofill_assistant::external::Result result; + EXPECT_CALL(result_callback, Run).WillOnce(SaveArg<0>(&result)); + + // DOM checks will never be started. + EXPECT_CALL(start_dom_checks_callback, Run).Times(0); + + autofill_assistant::password_change::BasePromptSpecification proto = + CreateBasePrompt(); + action_delegate()->OnActionRequested(CreateAction(proto), + start_dom_checks_callback.Get(), + result_callback.Get()); + + // The view should now be set up. + ASSERT_EQ(static_cast<size_t>(proto.choices_size()), choices.size()); + for (size_t i = 0; i < choices.size(); ++i) { + EXPECT_EQ(choices[i].highlighted, proto.choices()[i].highlighted()); + EXPECT_EQ(choices[i].text, base::UTF8ToUTF16(proto.choices()[i].text())); + } + + // But no result is sent yet. + EXPECT_FALSE(result.has_success()); + + // After simulating a click ... + EXPECT_CALL(*display(), ClearPrompt); + action_delegate()->OnBasePromptChoiceSelected(0); + + // ... there is now a result. + EXPECT_TRUE(result.has_success()); + EXPECT_TRUE(result.success()); + EXPECT_TRUE(result.has_result_info() && + result.result_info().has_result_payload()); + autofill_assistant::password_change::BasePromptSpecification::Result + prompt_result; + ASSERT_TRUE( + prompt_result.ParseFromString(result.result_info().result_payload())); + + EXPECT_TRUE(prompt_result.has_selected_tag()); + EXPECT_EQ(prompt_result.selected_tag(), kPromptTag1); +} + +TEST_F(ApcExternalActionDelegateTest, + ReceiveBasePromptAction_WithoutDomConditionsAndWithoutResultKey) { + // TODO: Check that we do not send a result if the result key field is not + // set. + base::MockOnceCallback<void( + const autofill_assistant::external::Result& result)> + result_callback; + base::MockOnceCallback<void(DomUpdateCallback)> start_dom_checks_callback; + + // Save prompt arguments for inspection. + std::vector<PasswordChangeRunDisplay::PromptChoice> choices; + EXPECT_CALL(*display(), ShowBasePrompt).WillOnce(SaveArg<0>(&choices)); + + // Similarly, save the prompt result. + autofill_assistant::external::Result result; + EXPECT_CALL(result_callback, Run).WillOnce(SaveArg<0>(&result)); + + // DOM checks will never be started. + EXPECT_CALL(start_dom_checks_callback, Run).Times(0); + + autofill_assistant::password_change::BasePromptSpecification proto = + CreateBasePrompt(); + // Remove the output key. + proto.clear_output_key(); + action_delegate()->OnActionRequested(CreateAction(proto), + start_dom_checks_callback.Get(), + result_callback.Get()); + + // The view should now be set up. + EXPECT_EQ(static_cast<size_t>(proto.choices_size()), choices.size()); + + // But no result is sent yet. + EXPECT_FALSE(result.has_success()); + + // After simulating a click ... + EXPECT_CALL(*display(), ClearPrompt); + action_delegate()->OnBasePromptChoiceSelected(0); + + // ... there is a result, but no payload. + EXPECT_TRUE(result.has_success()); + EXPECT_TRUE(result.success()); + EXPECT_FALSE(result.has_result_info()); +}
diff --git a/chrome/browser/autofill_assistant/password_change/proto/extensions.proto b/chrome/browser/autofill_assistant/password_change/proto/extensions.proto index 0d39ebf..53d63ea 100644 --- a/chrome/browser/autofill_assistant/password_change/proto/extensions.proto +++ b/chrome/browser/autofill_assistant/password_change/proto/extensions.proto
@@ -50,8 +50,11 @@ // Prompts the user with a title and multiple choices. message BasePromptSpecification { - // Reserved value for the return key. - reserved 1; + // The result key. If it is not set, no result payload needs to be sent to + // the server. This can happen if there is either only one prompt choice + // or if none of the prompt choices have any steps associated with them. In + // that case, one return trip is saved. + optional string output_key = 1; // The title of the prompt. optional string title = 2; @@ -105,3 +108,13 @@ // The current password change flow step. optional ProgressStep progress_step = 4; } + +// A wrapper around all available `password_change` specifications that allows +// deserializing the appropriate specification. +message GenericPasswordChangeSpecification { + oneof specification { + BasePromptSpecification base_prompt = 1; + GeneratedPasswordPromptSpecification generated_password_prompt = 2; + UpdateSidePanelSpecification update_side_panel = 3; + } +}
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h index e2b4d0a..a3eabe6 100644 --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h
@@ -248,11 +248,9 @@ const raw_ptr<StartupData> startup_data_; // Must be destroyed after |local_state_|. - // Must be destroyed after |profile_manager_|. std::unique_ptr<policy::ChromeBrowserPolicyConnector> browser_policy_connector_; - // Must be destroyed before |browser_policy_connector_|. bool created_profile_manager_ = false; std::unique_ptr<ProfileManager> profile_manager_;
diff --git a/chrome/browser/browsing_data/access_context_audit_browsertest.cc b/chrome/browser/browsing_data/access_context_audit_browsertest.cc index 8d274a4..765611a 100644 --- a/chrome/browser/browsing_data/access_context_audit_browsertest.cc +++ b/chrome/browser/browsing_data/access_context_audit_browsertest.cc
@@ -476,9 +476,12 @@ auto tree_model = CookiesTreeModel::CreateForProfile(chrome_test_utils::GetProfile(this)); - CookiesTreeObserver observer; - tree_model->AddCookiesTreeObserver(&observer); - observer.AwaitTreeModelEndBatch(); + { + CookiesTreeObserver observer; + tree_model->AddCookiesTreeObserver(&observer); + observer.AwaitTreeModelEndBatch(); + tree_model->RemoveCookiesTreeObserver(&observer); + } tree_model->DeleteAllStoredObjects();
diff --git a/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc b/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc index 118776f..db7d252 100644 --- a/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc +++ b/chrome/browser/browsing_data/browsing_data_remover_browsertest_base.cc
@@ -446,6 +446,7 @@ std::move(container), profile->GetExtensionSpecialStoragePolicy()); model->AddCookiesTreeObserver(&observer); run_loop.Run(); + model->RemoveCookiesTreeObserver(&observer); return model; }
diff --git a/chrome/browser/certificate_manager_model.cc b/chrome/browser/certificate_manager_model.cc index 492e170..a17315a 100644 --- a/chrome/browser/certificate_manager_model.cc +++ b/chrome/browser/certificate_manager_model.cc
@@ -10,6 +10,7 @@ #include "base/callback_helpers.h" #include "base/i18n/time_formatting.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/scoped_observation.h" #include "base/sequence_checker.h" @@ -279,7 +280,7 @@ } // The source NSSCertDatabase used for listing certificates. - net::NSSCertDatabase* cert_db_; + raw_ptr<net::NSSCertDatabase> cert_db_; // ScopedObservation to keep track of the observer for net::CertDatabase. base::ScopedObservation<net::CertDatabase, net::CertDatabase::Observer>
diff --git a/chrome/browser/certificate_manager_model.h b/chrome/browser/certificate_manager_model.h index 0a321b26..935ff17 100644 --- a/chrome/browser/certificate_manager_model.h +++ b/chrome/browser/certificate_manager_model.h
@@ -11,6 +11,7 @@ #include "base/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/net/nss_service.h" @@ -269,7 +270,7 @@ CertificateManagerModel::Observer* observer, CreationCallback callback); - net::NSSCertDatabase* cert_db_; + raw_ptr<net::NSSCertDatabase> cert_db_; // CertsSource instances providing certificates. The order matters - if a // certificate is provided by more than one CertsSource, only the first one is @@ -279,7 +280,7 @@ bool hold_back_updates_ = false; // The observer to notify when certificate list is refreshed. - Observer* observer_; + raw_ptr<Observer> observer_; }; #endif // CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index ea3a8c6..70cf391f 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1231,6 +1231,8 @@ "../ash/process_snapshot_server.h", "../ash/profiles/profile_helper.cc", "../ash/profiles/profile_helper.h", + "../ash/profiles/profile_helper_delegate_impl.cc", + "../ash/profiles/profile_helper_delegate_impl.h", "../ash/profiles/signin_profile_handler.cc", "../ash/profiles/signin_profile_handler.h", "../ash/psi_memory_metrics.cc", @@ -1937,8 +1939,8 @@ deps += [ "//ash/services/chromebox_for_meetings/public/cpp", "//ash/services/chromebox_for_meetings/public/mojom", + "//chromeos/ash/components/chromebox_for_meetings", "//chromeos/ash/components/dbus/chromebox_for_meetings", - "//chromeos/components/chromebox_for_meetings/features", "//components/reporting/client:report_queue", "//components/reporting/client:report_queue_configuration", "//components/reporting/client:report_queue_provider",
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc index 5eb85b44..f2e51aee 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -14,8 +14,6 @@ #include "ash/components/arc/arc_prefs.h" #include "ash/components/arc/metrics/arc_metrics_constants.h" -#include "ash/components/arc/session/arc_bridge_service.h" -#include "ash/components/arc/session/arc_service_manager.h" #include "ash/components/login/auth/user_context.h" #include "ash/components/settings/cros_settings_names.h" #include "ash/constants/app_types.h" @@ -1933,7 +1931,7 @@ } /////////////////////////////////////////////////////////////////////////////// -// AutotestPrivateGetArcAppFunction +// AutotestPrivateGetArcPackageFunction /////////////////////////////////////////////////////////////////////////////// AutotestPrivateGetArcAppFunction::~AutotestPrivateGetArcAppFunction() = default; @@ -1986,51 +1984,6 @@ } /////////////////////////////////////////////////////////////////////////////// -// AutotestPrivateGetArcAppKillsFunction -/////////////////////////////////////////////////////////////////////////////// - -AutotestPrivateGetArcAppKillsFunction:: - ~AutotestPrivateGetArcAppKillsFunction() = default; - -ExtensionFunction::ResponseAction AutotestPrivateGetArcAppKillsFunction::Run() { - DVLOG(1) << "AutotestPrivateGetArcAppKillsFunction"; - - arc::ArcServiceManager* arc_service_manager = arc::ArcServiceManager::Get(); - if (!arc_service_manager) - return RespondNow(Error("ARC service manager is not available")); - - arc::ArcBridgeService* arc_bridge_service = - arc_service_manager->arc_bridge_service(); - - if (!arc_bridge_service) - return RespondNow(Error("ARC bridge service is not available")); - - arc::mojom::ProcessInstance* process_instance = ARC_GET_INSTANCE_FOR_METHOD( - arc_bridge_service->process(), RequestLowMemoryKillCounts); - - if (!process_instance) - return RespondNow(Error("ARC process service is not available")); - - process_instance->RequestLowMemoryKillCounts(base::BindOnce( - &AutotestPrivateGetArcAppKillsFunction::OnKillCounts, this)); - - return RespondLater(); -} - -void AutotestPrivateGetArcAppKillsFunction::OnKillCounts( - arc::mojom::LowMemoryKillCountsPtr counts) { - api::autotest_private::ArcAppKillsDict result; - result.oom = counts->guest_oom; - result.lmkd_foreground = counts->lmkd_foreground; - result.lmkd_perceptible = counts->lmkd_perceptible; - result.lmkd_cached = counts->lmkd_cached; - result.pressure_foreground = counts->pressure_foreground; - result.pressure_perceptible = counts->pressure_perceptible; - result.pressure_cached = counts->pressure_cached; - Respond(OneArgument(base::Value::FromUniquePtrValue(result.ToValue()))); -} - -/////////////////////////////////////////////////////////////////////////////// // AutotestPrivateGetArcPackageFunction ///////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h index 4743127..a48338c 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
@@ -9,7 +9,6 @@ #include <string> #include <vector> -#include "ash/components/arc/mojom/process.mojom.h" #include "ash/display/screen_orientation_controller.h" #include "ash/public/cpp/assistant/assistant_state.h" #include "ash/rotator/screen_rotation_animator_observer.h" @@ -336,17 +335,6 @@ ResponseAction Run() override; }; -class AutotestPrivateGetArcAppKillsFunction : public ExtensionFunction { - public: - DECLARE_EXTENSION_FUNCTION("autotestPrivate.getArcAppKills", - AUTOTESTPRIVATE_GETARCAPPKILLS) - - private: - ~AutotestPrivateGetArcAppKillsFunction() override; - ResponseAction Run() override; - void OnKillCounts(arc::mojom::LowMemoryKillCountsPtr counts); -}; - class AutotestPrivateGetArcPackageFunction : public ExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("autotestPrivate.getArcPackage",
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc index d72c73b..c46ff0d8 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc
@@ -7,14 +7,11 @@ #include <memory> #include "ash/components/arc/arc_prefs.h" -#include "ash/components/arc/session/arc_bridge_service.h" -#include "ash/components/arc/session/arc_service_manager.h" #include "ash/components/arc/session/connection_holder.h" #include "ash/components/arc/test/arc_util_test_support.h" #include "ash/components/arc/test/connection_holder_util.h" #include "ash/components/arc/test/fake_app_instance.h" #include "ash/components/arc/test/fake_arc_session.h" -#include "ash/components/arc/test/fake_process_instance.h" #include "ash/public/cpp/holding_space/holding_space_prefs.h" #include "ash/public/cpp/overview_test_api.h" #include "ash/public/cpp/test/shell_test_api.h" @@ -156,18 +153,6 @@ true /* sync */)); app_instance->SendRefreshPackageList(std::move(packages)); - arc::FakeProcessInstance fake_process_instance; - arc::ArcServiceManager::Get()->arc_bridge_service()->process()->SetInstance( - &fake_process_instance); - fake_process_instance.set_request_low_memory_kill_counts_response( - arc::mojom::LowMemoryKillCounts::New(1, // oom. - 2, // lmkd_foreground. - 3, // lmkd_perceptible. - 4, // lmkd_cached. - 5, // pressure_foreground. - 6, // pressure_perceptible. - 7)); // pressure_cached. - ASSERT_TRUE(RunAutotestPrivateExtensionTest("arcEnabled")) << message_; arc::SetArcPlayStoreEnabledForProfile(profile(), false);
diff --git a/chrome/browser/chromeos/extensions/wallpaper_api.cc b/chrome/browser/chromeos/extensions/wallpaper_api.cc index ceaecab7..bc9dcc7 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_api.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_api.cc
@@ -20,10 +20,8 @@ #include "chrome/browser/ash/file_manager/fileapi_util.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/extensions/wallpaper_private_api.h" #include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/ash/wallpaper_controller_client_impl.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension_constants.h" #include "components/user_manager/user.h" @@ -40,6 +38,15 @@ #include "services/network/public/mojom/url_response_head.mojom.h" #include "url/gurl.h" +#if BUILDFLAG(IS_CHROMEOS_LACROS) +#include "chromeos/crosapi/mojom/wallpaper.mojom.h" +#include "chromeos/lacros/lacros_service.h" +#else +#include "chrome/browser/ash/crosapi/crosapi_ash.h" +#include "chrome/browser/ash/crosapi/crosapi_manager.h" +#include "chrome/browser/ash/crosapi/wallpaper_ash.h" +#endif + using base::Value; using content::BrowserThread; @@ -50,10 +57,36 @@ namespace { +crosapi::mojom::WallpaperLayout GetMojoLayoutEnum( + extensions::api::wallpaper::WallpaperLayout layout) { + switch (layout) { + case extensions::api::wallpaper::WALLPAPER_LAYOUT_STRETCH: + return crosapi::mojom::WallpaperLayout::kStretch; + case extensions::api::wallpaper::WALLPAPER_LAYOUT_CENTER: + return crosapi::mojom::WallpaperLayout::kCenter; + case extensions::api::wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED: + return crosapi::mojom::WallpaperLayout::kCenterCropped; + default: + return crosapi::mojom::WallpaperLayout::kCenter; + } +} + +crosapi::mojom::Wallpaper* GetWallpaperApi() { +#if BUILDFLAG(IS_CHROMEOS_LACROS) + return chromeos::LacrosService::Get() + ->GetRemote<crosapi::mojom::Wallpaper>() + .get(); +#else + return crosapi::CrosapiManager::Get()->crosapi_ash()->wallpaper_ash(); +#endif +} + class WallpaperFetcher { public: WallpaperFetcher() {} + static const char kCancelWallpaperMessage[]; + void FetchWallpaper(const GURL& url, FetchCallback callback) { CancelPreviousFetch(); original_url_ = url; @@ -116,8 +149,7 @@ void CancelPreviousFetch() { if (simple_loader_.get()) { - std::move(callback_).Run(false, - wallpaper_api_util::kCancelWallpaperMessage); + std::move(callback_).Run(false, kCancelWallpaperMessage); simple_loader_.reset(); } } @@ -127,21 +159,12 @@ FetchCallback callback_; }; +const char WallpaperFetcher::kCancelWallpaperMessage[] = + "Set wallpaper was canceled."; + base::LazyInstance<WallpaperFetcher>::DestructorAtExit g_wallpaper_fetcher = LAZY_INSTANCE_INITIALIZER; -// Gets the |User| for a given |BrowserContext|. The function will only return -// valid objects. -const user_manager::User* GetUserFromBrowserContext( - content::BrowserContext* context) { - Profile* profile = Profile::FromBrowserContext(context); - DCHECK(profile); - const user_manager::User* user = - ash::ProfileHelper::Get()->GetUserByProfile(profile); - DCHECK(user); - return user; -} - } // namespace WallpaperSetWallpaperFunction::WallpaperSetWallpaperFunction() { @@ -155,13 +178,8 @@ params_ = set_wallpaper::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params_); - // Gets account id from the caller, ensuring multiprofile compatibility. - const user_manager::User* user = GetUserFromBrowserContext(browser_context()); - account_id_ = user->GetAccountId(); - if (params_->details.data) { - StartDecode(*params_->details.data); - // StartDecode() responds asynchronously. + SetWallpaperOnAsh(); return RespondLater(); } @@ -175,89 +193,46 @@ g_wallpaper_fetcher.Get().FetchWallpaper( wallpaper_url, base::BindOnce(&WallpaperSetWallpaperFunction::OnWallpaperFetched, this)); - // FetchWallpaper() repsonds asynchronously. + // FetchWallpaper() responds asynchronously. return RespondLater(); } -void WallpaperSetWallpaperFunction::OnWallpaperDecoded( - const gfx::ImageSkia& image) { - ash::WallpaperLayout layout = wallpaper_api_util::GetLayoutEnum( - extensions::api::wallpaper::ToString(params_->details.layout)); - wallpaper_api_util::RecordCustomWallpaperLayout(layout); - - const std::string file_name = - base::FilePath(params_->details.filename).BaseName().value(); - WallpaperControllerClientImpl::Get()->SetCustomWallpaper( - account_id_, file_name, layout, image, - /*preview_mode=*/false); - unsafe_wallpaper_decoder_ = nullptr; - - // We need to generate thumbnail image anyway to make the current third party - // wallpaper syncable through different devices. - image.EnsureRepsForSupportedScales(); - std::vector<uint8_t> thumbnail_data = GenerateThumbnail( - image, gfx::Size(kWallpaperThumbnailWidth, kWallpaperThumbnailHeight)); - - // Inform the native Wallpaper Picker Application that the current wallpaper - // has been modified by a third party application. - const extensions::Extension* ext = extension(); - if (!ext || ext->id() != extension_misc::kWallpaperManagerId) { - Profile* profile = Profile::FromBrowserContext(browser_context()); - extensions::EventRouter* event_router = - extensions::EventRouter::Get(profile); - - std::vector<base::Value> event_args; - event_args.push_back(base::Value(GenerateThumbnail(image, image.size()))); - event_args.push_back(base::Value(thumbnail_data)); - event_args.push_back(base::Value( - extensions::api::wallpaper::ToString(params_->details.layout))); - // Setting wallpaper from right click menu in 'Files' app is a feature that - // was implemented in crbug.com/578935. Since 'Files' app is a built-in v1 - // app in ChromeOS, we should treat it slightly differently with other third - // party apps: the wallpaper set by the 'Files' app should still be syncable - // and it should not appear in the wallpaper grid in the Wallpaper Picker. - // But we should not display the 'wallpaper-set-by-mesage' since it might - // introduce confusion as shown in crbug.com/599407. - base::StringPiece ext_name; - bool is_file_manager = false; - if (source_context_type() == - extensions::Feature::BLESSED_EXTENSION_CONTEXT || - source_context_type() == extensions::Feature::WEBUI_CONTEXT) { - content::WebContents* web_contents = GetSenderWebContents(); - is_file_manager = - web_contents && file_manager::util::IsFileManagerURL( - web_contents->GetLastCommittedURL()); - } - if (!is_file_manager) { - ext_name = ext->name(); - } - event_args.push_back(base::Value(ext_name)); - std::unique_ptr<extensions::Event> event(new extensions::Event( - extensions::events::WALLPAPER_PRIVATE_ON_WALLPAPER_CHANGED_BY_3RD_PARTY, - extensions::api::wallpaper_private::OnWallpaperChangedBy3rdParty:: - kEventName, - std::move(event_args))); - event_router->DispatchEventToExtension(extension_misc::kWallpaperManagerId, - std::move(event)); - } - - WallpaperControllerClientImpl::Get()->RecordWallpaperSourceUMA( - ash::WallpaperType::kThirdParty); - - Respond(params_->details.thumbnail - ? OneArgument(Value(std::move(thumbnail_data))) - : NoArguments()); -} - void WallpaperSetWallpaperFunction::OnWallpaperFetched( bool success, const std::string& response) { if (success) { params_->details.data = std::make_unique<std::vector<uint8_t>>( response.begin(), response.end()); - StartDecode(*params_->details.data); - // StartDecode() will Respond later through OnWallpaperDecoded() + SetWallpaperOnAsh(); } else { Respond(Error(response)); } } + +void WallpaperSetWallpaperFunction::OnWallpaperSetOnAsh( + const std::vector<uint8_t>& thumbnail_data) { + Respond(params_->details.thumbnail + ? OneArgument(Value(std::move(thumbnail_data))) + : NoArguments()); +} + +void WallpaperSetWallpaperFunction::SetWallpaperOnAsh() { + const extensions::Extension* ext = extension(); + std::string extension_id; + std::string extension_name; + if (ext) { + extension_id = ext->id(); + extension_name = ext->name(); + } + + crosapi::mojom::WallpaperSettingsPtr settings = + crosapi::mojom::WallpaperSettings::New(); + settings->data = *params_->details.data; + settings->layout = GetMojoLayoutEnum(params_->details.layout); + settings->filename = params_->details.filename; + + GetWallpaperApi()->SetWallpaper( + std::move(settings), extension_id, extension_name, + base::BindOnce(&WallpaperSetWallpaperFunction::OnWallpaperSetOnAsh, + this)); +}
diff --git a/chrome/browser/chromeos/extensions/wallpaper_api.h b/chrome/browser/chromeos/extensions/wallpaper_api.h index 9448877..659fbee 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_api.h +++ b/chrome/browser/chromeos/extensions/wallpaper_api.h
@@ -7,9 +7,9 @@ #include <memory> -#include "chrome/browser/chromeos/extensions/wallpaper_function_base.h" #include "chrome/common/extensions/api/wallpaper.h" #include "components/account_id/account_id.h" +#include "extensions/browser/extension_function.h" // Implementation of chrome.wallpaper.setWallpaper API. // After this API being called, a jpeg encoded wallpaper will be saved to @@ -19,7 +19,7 @@ // Note: For security reason, the original encoded wallpaper image is not saved // directly. It is decoded and re-encoded to jpeg format before saved to file // system. -class WallpaperSetWallpaperFunction : public WallpaperFunctionBase { +class WallpaperSetWallpaperFunction : public ExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("wallpaper.setWallpaper", WALLPAPER_SETWALLPAPER) @@ -33,11 +33,13 @@ ResponseAction Run() override; private: - void OnWallpaperDecoded(const gfx::ImageSkia& image) override; - // Called by OnURLFetchComplete(). void OnWallpaperFetched(bool success, const std::string& response); + void OnWallpaperSetOnAsh(const std::vector<uint8_t>& thumbnail); + + void SetWallpaperOnAsh(); + std::unique_ptr<extensions::api::wallpaper::SetWallpaper::Params> params_; // Unique file name of the custom wallpaper.
diff --git a/chrome/browser/chromeos/extensions/wallpaper_function_base.cc b/chrome/browser/chromeos/extensions/wallpaper_function_base.cc index f79d41b8..21f25db63 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_function_base.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_function_base.cc
@@ -60,6 +60,8 @@ scaled_and_cropped_image, skia::ImageOperations::RESIZE_LANCZOS3, size); } +const int kThumbnailEncodeQuality = 90; + } // namespace const char kCancelWallpaperMessage[] = "Set wallpaper was canceled."; @@ -83,65 +85,66 @@ ash::NUM_WALLPAPER_LAYOUT); } +std::vector<uint8_t> GenerateThumbnail(const gfx::ImageSkia& image, + const gfx::Size& size) { + std::vector<uint8_t> data_out; + gfx::JPEGCodec::Encode( + *wallpaper_api_util::ScaleAspectRatioAndCropCenter(size, image).bitmap(), + kThumbnailEncodeQuality, &data_out); + return data_out; +} + +WallpaperDecoder::WallpaperDecoder(DecodedCallback decoded_cb, + CanceledCallback canceled_cb, + FailedCallback failed_cb) + : decoded_cb_(std::move(decoded_cb)), + canceled_cb_(std::move(canceled_cb)), + failed_cb_(std::move(failed_cb)) {} + +WallpaperDecoder::~WallpaperDecoder() = default; + +void WallpaperDecoder::Start(const std::vector<uint8_t>& image_data) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + CHECK(chromeos::LoginState::Get()->IsUserLoggedIn()); + ImageDecoder::StartWithOptions(this, image_data, ImageDecoder::DEFAULT_CODEC, + true); +} + +void WallpaperDecoder::Cancel() { + cancel_flag_.Set(); +} + +void WallpaperDecoder::OnImageDecoded(const SkBitmap& decoded_image) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + // Make the SkBitmap immutable as we won't modify it. This is important + // because otherwise it gets duplicated during painting, wasting memory. + SkBitmap immutable(decoded_image); + immutable.setImmutable(); + gfx::ImageSkia final_image = gfx::ImageSkia::CreateFrom1xBitmap(immutable); + final_image.MakeThreadSafe(); + if (cancel_flag_.IsSet()) { + std::move(canceled_cb_).Run(); + delete this; + return; + } + std::move(decoded_cb_).Run(final_image); + delete this; +} + +void WallpaperDecoder::OnDecodeImageFailed() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + std::move(failed_cb_) + .Run(l10n_util::GetStringUTF8(IDS_WALLPAPER_MANAGER_INVALID_WALLPAPER)); + delete this; +} + } // namespace wallpaper_api_util -class WallpaperFunctionBase::UnsafeWallpaperDecoder - : public ImageDecoder::ImageRequest { - public: - explicit UnsafeWallpaperDecoder(scoped_refptr<WallpaperFunctionBase> function) - : function_(function) {} - - UnsafeWallpaperDecoder(const UnsafeWallpaperDecoder&) = delete; - UnsafeWallpaperDecoder& operator=(const UnsafeWallpaperDecoder&) = delete; - - void Start(const std::vector<uint8_t>& image_data) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - // This function can only be called after user login. It is fine to use - // unsafe image decoder here. Before user login, a robust jpeg decoder will - // be used. - CHECK(chromeos::LoginState::Get()->IsUserLoggedIn()); - ImageDecoder::StartWithOptions(this, image_data, - ImageDecoder::DEFAULT_CODEC, true); - } - - void Cancel() { - cancel_flag_.Set(); - } - - void OnImageDecoded(const SkBitmap& decoded_image) override { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - // Make the SkBitmap immutable as we won't modify it. This is important - // because otherwise it gets duplicated during painting, wasting memory. - SkBitmap immutable(decoded_image); - immutable.setImmutable(); - gfx::ImageSkia final_image = gfx::ImageSkia::CreateFrom1xBitmap(immutable); - final_image.MakeThreadSafe(); - if (cancel_flag_.IsSet()) { - function_->OnCancel(); - delete this; - return; - } - function_->OnWallpaperDecoded(final_image); - delete this; - } - - void OnDecodeImageFailed() override { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - - function_->OnFailure( - l10n_util::GetStringUTF8(IDS_WALLPAPER_MANAGER_INVALID_WALLPAPER)); - delete this; - } - - private: - scoped_refptr<WallpaperFunctionBase> function_; - base::AtomicFlag cancel_flag_; -}; - -WallpaperFunctionBase::UnsafeWallpaperDecoder* - WallpaperFunctionBase::unsafe_wallpaper_decoder_; +wallpaper_api_util::WallpaperDecoder* + WallpaperFunctionBase::wallpaper_decoder_ = nullptr; const int WallpaperFunctionBase::kWallpaperThumbnailWidth = 108; const int WallpaperFunctionBase::kWallpaperThumbnailHeight = 68; @@ -167,28 +170,21 @@ void WallpaperFunctionBase::StartDecode(const std::vector<uint8_t>& data) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - if (unsafe_wallpaper_decoder_) - unsafe_wallpaper_decoder_->Cancel(); - unsafe_wallpaper_decoder_ = new UnsafeWallpaperDecoder(this); - unsafe_wallpaper_decoder_->Start(data); + if (wallpaper_decoder_) + wallpaper_decoder_->Cancel(); + wallpaper_decoder_ = new wallpaper_api_util::WallpaperDecoder( + base::BindOnce(&WallpaperFunctionBase::OnWallpaperDecoded, this), + base::BindOnce(&WallpaperFunctionBase::OnCancel, this), + base::BindOnce(&WallpaperFunctionBase::OnFailure, this)); + wallpaper_decoder_->Start(data); } void WallpaperFunctionBase::OnCancel() { - unsafe_wallpaper_decoder_ = nullptr; + wallpaper_decoder_ = nullptr; Respond(Error(wallpaper_api_util::kCancelWallpaperMessage)); } void WallpaperFunctionBase::OnFailure(const std::string& error) { - unsafe_wallpaper_decoder_ = nullptr; + wallpaper_decoder_ = nullptr; Respond(Error(error)); } - -std::vector<uint8_t> WallpaperFunctionBase::GenerateThumbnail( - const gfx::ImageSkia& image, - const gfx::Size& size) { - std::vector<uint8_t> data_out; - gfx::JPEGCodec::Encode( - *wallpaper_api_util::ScaleAspectRatioAndCropCenter(size, image).bitmap(), - 90 /*quality=*/, &data_out); - return data_out; -}
diff --git a/chrome/browser/chromeos/extensions/wallpaper_function_base.h b/chrome/browser/chromeos/extensions/wallpaper_function_base.h index 6304603e..5fbf2d89 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_function_base.h +++ b/chrome/browser/chromeos/extensions/wallpaper_function_base.h
@@ -9,6 +9,7 @@ #include <vector> #include "ash/public/cpp/wallpaper/wallpaper_types.h" +#include "chrome/browser/image_decoder/image_decoder.h" #include "extensions/browser/extension_function.h" #include "ui/gfx/image/image_skia.h" @@ -28,6 +29,39 @@ // wallpaper or changes the existing custom wallpaper's layout. void RecordCustomWallpaperLayout(const ash::WallpaperLayout& layout); +// Resize the image to |size|, encode it and save to |thumbnail_data_out|. +std::vector<uint8_t> GenerateThumbnail(const gfx::ImageSkia& image, + const gfx::Size& size); + +// A class to decode JPEG file. +class WallpaperDecoder : public ImageDecoder::ImageRequest { + public: + using DecodedCallback = base::OnceCallback<void(const gfx::ImageSkia&)>; + using CanceledCallback = base::OnceCallback<void()>; + using FailedCallback = base::OnceCallback<void(const std::string&)>; + + explicit WallpaperDecoder(DecodedCallback decoded_cb, + CanceledCallback canceled_cb, + FailedCallback failed_cb); + ~WallpaperDecoder() override; + + WallpaperDecoder(const WallpaperDecoder&) = delete; + WallpaperDecoder& operator=(const WallpaperDecoder&) = delete; + + void Start(const std::vector<uint8_t>& image_data); + void Cancel(); + + void OnImageDecoded(const SkBitmap& decoded_image) override; + void OnDecodeImageFailed() override; + + private: + DecodedCallback decoded_cb_; + CanceledCallback canceled_cb_; + FailedCallback failed_cb_; + + base::AtomicFlag cancel_flag_; +}; + } // namespace wallpaper_api_util // Wallpaper manager function base. It contains a image decoder to decode @@ -52,11 +86,8 @@ protected: ~WallpaperFunctionBase() override; - // A class to decode JPEG file. - class UnsafeWallpaperDecoder; - // Holds an instance of WallpaperDecoder. - static UnsafeWallpaperDecoder* unsafe_wallpaper_decoder_; + static wallpaper_api_util::WallpaperDecoder* wallpaper_decoder_; // Starts to decode |data|. Must run on UI thread. void StartDecode(const std::vector<uint8_t>& data); @@ -67,10 +98,6 @@ // Handles failure case. Sets error message. void OnFailure(const std::string& error); - // Resize the image to |size|, encode it and save to |thumbnail_data_out|. - std::vector<uint8_t> GenerateThumbnail(const gfx::ImageSkia& image, - const gfx::Size& size); - private: virtual void OnWallpaperDecoded(const gfx::ImageSkia& wallpaper) = 0; };
diff --git a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc index cd38f7e..866b9a0 100644 --- a/chrome/browser/chromeos/extensions/wallpaper_private_api.cc +++ b/chrome/browser/chromeos/extensions/wallpaper_private_api.cc
@@ -53,6 +53,7 @@ #include "url/gurl.h" using base::Value; +using wallpaper_api_util::GenerateThumbnail; namespace wallpaper_base = extensions::api::wallpaper; namespace wallpaper_private = extensions::api::wallpaper_private; namespace set_wallpaper_if_exists = wallpaper_private::SetWallpaperIfExists; @@ -428,7 +429,7 @@ base::FilePath(params->file_name).BaseName().value(); WallpaperControllerClientImpl::Get()->SetCustomWallpaper( account_id_, file_name, layout, image, params->preview_mode); - unsafe_wallpaper_decoder_ = nullptr; + wallpaper_decoder_ = nullptr; if (params->generate_thumbnail) { image.EnsureRepsForSupportedScales();
diff --git a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc index 3e7b9a9..09ce141 100644 --- a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc +++ b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
@@ -269,7 +269,6 @@ { ListPrefUpdate update(g_browser_process->local_state(), policy_prefs::kDlpRulesList); - base::Value rules(base::Value::Type::LIST); base::Value src_urls1(base::Value::Type::LIST); src_urls1.Append(kMailUrl);
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc index fa10627..3cc5f259 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set_browsertest.cc
@@ -2,26 +2,33 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h" - -#include "base/json/json_writer.h" #include "base/values.h" -#include "build/chromeos_buildflags.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/policy/dlp/dlp_content_restriction_set.h" #include "chrome/browser/chromeos/policy/dlp/dlp_policy_constants.h" +#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h" +#include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_test_utils.h" -#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "components/policy/core/common/policy_pref_names.h" #include "components/policy/policy_constants.h" +#include "components/prefs/scoped_user_pref_update.h" #include "content/public/test/browser_test.h" -#if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/ash/policy/core/user_policy_test_helper.h" -#include "chrome/browser/ash/policy/login/login_policy_test_base.h" -#endif - namespace policy { -// TODO(crbug.com/1262948): Enable and modify for lacros. -#if BUILDFLAG(IS_CHROMEOS_ASH) +namespace { + +class FakeDlpRulesManager : public DlpRulesManagerImpl { + public: + explicit FakeDlpRulesManager(PrefService* local_state) + : DlpRulesManagerImpl(local_state) {} + ~FakeDlpRulesManager() override = default; +}; + +} // namespace const DlpContentRestrictionSet kScreenshotRestricted( DlpContentRestriction::kScreenshot, @@ -41,73 +48,78 @@ constexpr char kUrl3[] = "https://example3.com"; constexpr char kUrl4[] = "https://example4.com"; -class DlpContentRestrictionSetBrowserTest : public LoginPolicyTestBase { +class DlpContentRestrictionSetBrowserTest : public InProcessBrowserTest { public: DlpContentRestrictionSetBrowserTest() = default; - void SetDlpRulesPolicy(const base::Value& rules) { - std::string json; - base::JSONWriter::Write(rules, &json); + void SetUpOnMainThread() override { + InProcessBrowserTest::SetUpOnMainThread(); - enterprise_management::CloudPolicySettings policy; - policy.mutable_dataleakpreventionruleslist()->set_value(json); - user_policy_helper()->SetPolicyAndWait( - policy, ProfileManager::GetActiveUserProfile()); + policy::DlpRulesManagerFactory::GetInstance()->SetTestingFactory( + browser()->profile(), + base::BindRepeating( + &DlpContentRestrictionSetBrowserTest::SetDlpRulesManager, + base::Unretained(this))); + ASSERT_TRUE(DlpRulesManagerFactory::GetForPrimaryProfile()); + } + + std::unique_ptr<KeyedService> SetDlpRulesManager( + content::BrowserContext* context) { + return std::make_unique<FakeDlpRulesManager>( + g_browser_process->local_state()); } }; IN_PROC_BROWSER_TEST_F(DlpContentRestrictionSetBrowserTest, GetRestrictionSetForURL) { - SkipToLoginScreen(); - LogIn(); + { + ListPrefUpdate update(g_browser_process->local_state(), + policy_prefs::kDlpRulesList); - base::Value rules(base::Value::Type::LIST); + base::Value src_urls1(base::Value::Type::LIST); + src_urls1.Append(kUrl1); + base::Value restrictions1(base::Value::Type::LIST); + restrictions1.Append(dlp_test_util::CreateRestrictionWithLevel( + dlp::kScreenshotRestriction, dlp::kBlockLevel)); + update->Append(dlp_test_util::CreateRule( + "rule #1", "Block", std::move(src_urls1), + /*dst_urls=*/base::Value(base::Value::Type::LIST), + /*dst_components=*/base::Value(base::Value::Type::LIST), + std::move(restrictions1))); - base::Value src_urls1(base::Value::Type::LIST); - src_urls1.Append(kUrl1); - base::Value restrictions1(base::Value::Type::LIST); - restrictions1.Append(dlp_test_util::CreateRestrictionWithLevel( - dlp::kScreenshotRestriction, dlp::kBlockLevel)); - rules.Append(dlp_test_util::CreateRule( - "rule #1", "Block", std::move(src_urls1), - /*dst_urls=*/base::Value(base::Value::Type::LIST), - /*dst_components=*/base::Value(base::Value::Type::LIST), - std::move(restrictions1))); + base::Value src_urls2(base::Value::Type::LIST); + src_urls2.Append(kUrl2); + base::Value restrictions2(base::Value::Type::LIST); + restrictions2.Append(dlp_test_util::CreateRestrictionWithLevel( + dlp::kPrivacyScreenRestriction, dlp::kBlockLevel)); + update->Append(dlp_test_util::CreateRule( + "rule #2", "Block", std::move(src_urls2), + /*dst_urls=*/base::Value(base::Value::Type::LIST), + /*dst_components=*/base::Value(base::Value::Type::LIST), + std::move(restrictions2))); - base::Value src_urls2(base::Value::Type::LIST); - src_urls2.Append(kUrl2); - base::Value restrictions2(base::Value::Type::LIST); - restrictions2.Append(dlp_test_util::CreateRestrictionWithLevel( - dlp::kPrivacyScreenRestriction, dlp::kBlockLevel)); - rules.Append(dlp_test_util::CreateRule( - "rule #2", "Block", std::move(src_urls2), - /*dst_urls=*/base::Value(base::Value::Type::LIST), - /*dst_components=*/base::Value(base::Value::Type::LIST), - std::move(restrictions2))); + base::Value src_urls3(base::Value::Type::LIST); + src_urls3.Append(kUrl3); + base::Value restrictions3(base::Value::Type::LIST); + restrictions3.Append(dlp_test_util::CreateRestrictionWithLevel( + dlp::kPrintingRestriction, dlp::kBlockLevel)); + update->Append(dlp_test_util::CreateRule( + "rule #3", "Block", std::move(src_urls3), + /*dst_urls=*/base::Value(base::Value::Type::LIST), + /*dst_components=*/base::Value(base::Value::Type::LIST), + std::move(restrictions3))); - base::Value src_urls3(base::Value::Type::LIST); - src_urls3.Append(kUrl3); - base::Value restrictions3(base::Value::Type::LIST); - restrictions3.Append(dlp_test_util::CreateRestrictionWithLevel( - dlp::kPrintingRestriction, dlp::kBlockLevel)); - rules.Append(dlp_test_util::CreateRule( - "rule #3", "Block", std::move(src_urls3), - /*dst_urls=*/base::Value(base::Value::Type::LIST), - /*dst_components=*/base::Value(base::Value::Type::LIST), - std::move(restrictions3))); - - base::Value src_urls4(base::Value::Type::LIST); - src_urls4.Append(kUrl4); - base::Value restrictions4(base::Value::Type::LIST); - restrictions4.Append(dlp_test_util::CreateRestrictionWithLevel( - dlp::kScreenShareRestriction, dlp::kBlockLevel)); - rules.Append(dlp_test_util::CreateRule( - "rule #4", "Block", std::move(src_urls4), - /*dst_urls=*/base::Value(base::Value::Type::LIST), - /*dst_components=*/base::Value(base::Value::Type::LIST), - std::move(restrictions4))); - - SetDlpRulesPolicy(rules); + base::Value src_urls4(base::Value::Type::LIST); + src_urls4.Append(kUrl4); + base::Value restrictions4(base::Value::Type::LIST); + restrictions4.Append(dlp_test_util::CreateRestrictionWithLevel( + dlp::kScreenShareRestriction, dlp::kBlockLevel)); + update->Append(dlp_test_util::CreateRule( + "rule #4", "Block", std::move(src_urls4), + /*dst_urls=*/base::Value(base::Value::Type::LIST), + /*dst_components=*/base::Value(base::Value::Type::LIST), + std::move(restrictions4))); + } EXPECT_EQ(kScreenshotRestricted, DlpContentRestrictionSet::GetForURL(GURL(kUrl1))); @@ -119,6 +131,5 @@ EXPECT_EQ(DlpContentRestrictionSet(), DlpContentRestrictionSet::GetForURL(GURL(kExampleUrl))); } -#endif // BUILDFLAG(IS_CHROMEOS_ASH) } // namespace policy
diff --git a/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc b/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc index eb46022b..121dfa5 100644 --- a/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc +++ b/chrome/browser/content_settings/content_settings_supervised_provider_unittest.cc
@@ -84,16 +84,7 @@ TEST_F(SupervisedUserProviderTest, CookiesTest) { std::unique_ptr<RuleIterator> rule_iterator = provider_->GetRuleIterator(ContentSettingsType::COOKIES, false); - EXPECT_FALSE(rule_iterator); - // Allow cookies everywhere. - EXPECT_CALL(mock_observer_, - OnContentSettingChanged(_, _, ContentSettingsType::COOKIES)); - service_.SetLocalSetting(supervised_users::kCookiesAlwaysAllowed, - std::make_unique<base::Value>(true)); - - rule_iterator = - provider_->GetRuleIterator(ContentSettingsType::COOKIES, false); ASSERT_TRUE(rule_iterator->HasNext()); Rule rule = rule_iterator->Next(); EXPECT_FALSE(rule_iterator->HasNext());
diff --git a/chrome/browser/dbus_memory_pressure_evaluator_linux.h b/chrome/browser/dbus_memory_pressure_evaluator_linux.h index ca14762..a878b20 100644 --- a/chrome/browser/dbus_memory_pressure_evaluator_linux.h +++ b/chrome/browser/dbus_memory_pressure_evaluator_linux.h
@@ -10,6 +10,7 @@ #include "base/callback_forward.h" #include "base/memory/memory_pressure_listener.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -119,7 +120,7 @@ scoped_refptr<dbus::Bus> system_bus_; scoped_refptr<dbus::Bus> session_bus_; - dbus::ObjectProxy* object_proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> object_proxy_ = nullptr; // The values used to determine how to translate LMM memory pressure levels to // Chrome's are stored here, gathered from feature params.
diff --git a/chrome/browser/dbus_memory_pressure_evaluator_linux_unittest.cc b/chrome/browser/dbus_memory_pressure_evaluator_linux_unittest.cc index 1782157a..4adc288 100644 --- a/chrome/browser/dbus_memory_pressure_evaluator_linux_unittest.cc +++ b/chrome/browser/dbus_memory_pressure_evaluator_linux_unittest.cc
@@ -11,6 +11,7 @@ #include "base/memory/memory_pressure_listener.h" #include "base/memory/memory_pressure_monitor.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/test/task_environment.h" #include "base/time/time.h" @@ -144,7 +145,7 @@ scoped_refptr<dbus::MockObjectProxy> portal_proxy_; std::unique_ptr<DbusMemoryPressureEvaluatorLinux> evaluator_; - MockMemoryPressureVoter* mock_voter_ = nullptr; + raw_ptr<MockMemoryPressureVoter> mock_voter_ = nullptr; std::vector<std::string> running_services_; };
diff --git a/chrome/browser/dips/dips_bounce_detector_browsertest.cc b/chrome/browser/dips/dips_bounce_detector_browsertest.cc index 5123d0f9..82aed79 100644 --- a/chrome/browser/dips/dips_bounce_detector_browsertest.cc +++ b/chrome/browser/dips/dips_bounce_detector_browsertest.cc
@@ -76,7 +76,7 @@ } private: - content::RenderFrameHost* const render_frame_host_; + const raw_ptr<content::RenderFrameHost> render_frame_host_; base::RunLoop run_loop_; };
diff --git a/chrome/browser/download/download_file_picker.h b/chrome/browser/download/download_file_picker.h index d55b8824..6aa56a6 100644 --- a/chrome/browser/download/download_file_picker.h +++ b/chrome/browser/download/download_file_picker.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_FILE_PICKER_H_ #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "chrome/browser/download/download_confirmation_result.h" #include "components/download/public/common/download_item.h" #include "ui/shell_dialogs/select_file_dialog.h" @@ -67,7 +68,7 @@ scoped_refptr<ui::SelectFileDialog> select_file_dialog_; // The item to be downloaded. - download::DownloadItem* download_item_; + raw_ptr<download::DownloadItem> download_item_; }; #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_FILE_PICKER_H_
diff --git a/chrome/browser/enterprise/connectors/common.h b/chrome/browser/enterprise/connectors/common.h index 256d111..9f36209 100644 --- a/chrome/browser/enterprise/connectors/common.h +++ b/chrome/browser/enterprise/connectors/common.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/supports_user_data.h" #include "chrome/browser/enterprise/connectors/service_provider_config.h" #include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h" @@ -89,7 +90,7 @@ struct TagSettings { CustomMessageData custom_message; bool requires_justification = false; - const SupportedFiles* supported_files = nullptr; + raw_ptr<const SupportedFiles> supported_files = nullptr; }; // Structs representing settings to be used for an analysis or a report. These
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util_unittest.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util_unittest.cc index 31c04eb..95d18ec 100644 --- a/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util_unittest.cc +++ b/chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service/rotate_util_unittest.cc
@@ -10,6 +10,7 @@ #include "base/base64.h" #include "base/command_line.h" +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/mock_key_network_delegate.h" #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h" @@ -78,8 +79,8 @@ return command_line; } - MockKeyNetworkDelegate* mock_network_delegate_; - MockKeyPersistenceDelegate* mock_persistence_delegate_; + raw_ptr<MockKeyNetworkDelegate> mock_network_delegate_; + raw_ptr<MockKeyPersistenceDelegate> mock_persistence_delegate_; std::unique_ptr<KeyRotationManager> key_rotation_manager_; test::ScopedKeyPersistenceDelegateFactory scoped_factory_; base::test::TaskEnvironment task_environment_;
diff --git a/chrome/browser/error_reporting/chrome_js_error_report_processor.h b/chrome/browser/error_reporting/chrome_js_error_report_processor.h index 21a5e3e..aa776f9 100644 --- a/chrome/browser/error_reporting/chrome_js_error_report_processor.h +++ b/chrome/browser/error_reporting/chrome_js_error_report_processor.h
@@ -15,6 +15,7 @@ #include "base/callback_forward.h" #include "base/callback_helpers.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/time/clock.h" #include "base/time/time.h" #include "components/crash/content/browser/error_reporting/js_error_report_processor.h" @@ -198,7 +199,7 @@ base::Time last_recent_error_reports_cleaning_; // Clock for dependency injection. Not owned. - base::Clock* clock_; + raw_ptr<base::Clock> clock_; }; #endif // CHROME_BROWSER_ERROR_REPORTING_CHROME_JS_ERROR_REPORT_PROCESSOR_H_
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn index f813884..c809b55 100644 --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn
@@ -1187,7 +1187,7 @@ allow_circular_includes_from += [ "//chrome/browser/ash/crosapi" ] if (is_cfm) { - deps += [ "//chromeos/components/chromebox_for_meetings/features" ] + deps += [ "//chromeos/ash/components/chromebox_for_meetings" ] } }
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc index fcbaab7a..110fd6f 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
@@ -25,6 +25,7 @@ #include "chrome/browser/password_manager/account_password_store_factory.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" #include "chrome/browser/password_manager/password_manager_test_util.h" +#include "chrome/browser/sync/sync_service_factory.h" #include "chrome/common/extensions/api/passwords_private.h" #include "chrome/test/base/testing_profile.h" #include "components/password_manager/content/browser/password_manager_log_router_factory.h" @@ -37,6 +38,7 @@ #include "components/password_manager/core/browser/reauth_purpose.h" #include "components/password_manager/core/browser/test_password_store.h" #include "components/signin/public/base/signin_metrics.h" +#include "components/sync/driver/test_sync_service.h" #include "content/public/browser/browser_context.h" #include "content/public/test/browser_task_environment.h" #include "content/public/test/test_renderer_host.h" @@ -48,8 +50,6 @@ using MockReauthCallback = base::MockCallback< password_manager::PasswordAccessAuthenticator::ReauthCallback>; -using PasswordFormList = - std::vector<std::unique_ptr<password_manager::PasswordForm>>; using password_manager::ReauthPurpose; using password_manager::TestPasswordStore; using ::testing::_; @@ -114,6 +114,25 @@ return mock_client; } +void SetUpSyncInTransportMode(Profile* profile) { + auto* sync_service = static_cast<syncer::TestSyncService*>( + SyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( + profile, + base::BindRepeating( + [](content::BrowserContext*) -> std::unique_ptr<KeyedService> { + return std::make_unique<syncer::TestSyncService>(); + }))); + CoreAccountInfo account; + account.email = "foo@gmail.com"; + account.gaia = "foo"; + account.account_id = CoreAccountId::FromGaiaId(account.gaia); + sync_service->SetAccountInfo(account); + sync_service->SetDisableReasons({}); + sync_service->SetTransportState(syncer::SyncService::TransportState::ACTIVE); + sync_service->SetHasSyncConsent(false); + ASSERT_FALSE(sync_service->IsSyncFeatureEnabled()); +} + class PasswordEventObserver : public extensions::TestEventRouter::EventObserver { public: @@ -161,12 +180,15 @@ PasswordsPrivateEventRouter::Create(context)); } -password_manager::PasswordForm CreateSampleForm() { +password_manager::PasswordForm CreateSampleForm( + password_manager::PasswordForm::Store store = + password_manager::PasswordForm::Store::kProfileStore) { password_manager::PasswordForm form; form.signon_realm = "http://abc1.com"; form.url = GURL("http://abc1.com"); form.username_value = u"test@gmail.com"; form.password_value = u"test"; + form.in_store = store; return form; } @@ -192,7 +214,7 @@ ~PasswordsPrivateDelegateImplTest() override; // Sets up a testing password store and fills it with |forms|. - void SetUpPasswordStore(std::vector<password_manager::PasswordForm> forms); + void SetUpPasswordStores(std::vector<password_manager::PasswordForm> forms); // Sets up a testing EventRouter with a production // PasswordsPrivateEventRouter. @@ -204,7 +226,7 @@ content::BrowserTaskEnvironment task_environment_; TestingProfile profile_; raw_ptr<extensions::TestEventRouter> event_router_ = nullptr; - scoped_refptr<TestPasswordStore> store_ = + scoped_refptr<TestPasswordStore> profile_store_ = CreateAndUseTestPasswordStore(&profile_); scoped_refptr<TestPasswordStore> account_store_ = CreateAndUseTestAccountPasswordStore(&profile_); @@ -217,16 +239,22 @@ PasswordsPrivateDelegateImplTest::PasswordsPrivateDelegateImplTest() { SetUpRouters(); + SetUpSyncInTransportMode(&profile_); } PasswordsPrivateDelegateImplTest::~PasswordsPrivateDelegateImplTest() { ui::Clipboard::DestroyClipboardForCurrentThread(); } -void PasswordsPrivateDelegateImplTest::SetUpPasswordStore( +void PasswordsPrivateDelegateImplTest::SetUpPasswordStores( std::vector<password_manager::PasswordForm> forms) { for (const password_manager::PasswordForm& form : forms) { - store_->AddLogin(form); + if (form.IsUsingAccountStore()) + account_store_->AddLogin(form); + else if (form.IsUsingProfileStore()) + profile_store_->AddLogin(form); + else + NOTREACHED() << "Store not set"; } // Spin the loop to allow PasswordStore tasks being processed. base::RunLoop().RunUntilIdle(); @@ -248,11 +276,8 @@ EXPECT_CALL(callback, Run).Times(0); delegate.GetSavedPasswordsList(callback.Get()); - PasswordFormList list; - list.push_back(std::make_unique<password_manager::PasswordForm>()); - EXPECT_CALL(callback, Run); - delegate.SetPasswordList(list); + SetUpPasswordStores({}); EXPECT_CALL(callback, Run); delegate.GetSavedPasswordsList(callback.Get()); @@ -262,18 +287,12 @@ PasswordsDuplicatedInStoresHaveSameFrontendId) { PasswordsPrivateDelegateImpl delegate(&profile_); - auto account_password = std::make_unique<password_manager::PasswordForm>(); - account_password->in_store = - password_manager::PasswordForm::Store::kAccountStore; - auto profile_password = std::make_unique<password_manager::PasswordForm>(); - profile_password->in_store = - password_manager::PasswordForm::Store::kProfileStore; + password_manager::PasswordForm account_password = + CreateSampleForm(password_manager::PasswordForm::Store::kAccountStore); + password_manager::PasswordForm profile_password = + CreateSampleForm(password_manager::PasswordForm::Store::kProfileStore); - PasswordFormList list; - list.push_back(std::move(account_password)); - list.push_back(std::move(profile_password)); - - delegate.SetPasswordList(list); + SetUpPasswordStores({account_password, profile_password}); base::MockCallback<PasswordsPrivateDelegate::UiEntriesCallback> callback; int first_frontend_id, second_frontend_id; @@ -296,11 +315,8 @@ EXPECT_CALL(callback, Run).Times(0); delegate.GetPasswordExceptionsList(callback.Get()); - PasswordFormList list; - list.push_back(std::make_unique<password_manager::PasswordForm>()); - EXPECT_CALL(callback, Run); - delegate.SetPasswordExceptionList(list); + SetUpPasswordStores({}); EXPECT_CALL(callback, Run); delegate.GetPasswordExceptionsList(callback.Get()); @@ -310,20 +326,18 @@ ExceptionsDuplicatedInStoresHaveSameFrontendId) { PasswordsPrivateDelegateImpl delegate(&profile_); - auto account_exception = std::make_unique<password_manager::PasswordForm>(); - account_exception->blocked_by_user = true; - account_exception->in_store = + password_manager::PasswordForm account_exception; + account_exception.blocked_by_user = true; + account_exception.url = GURL("https://test.com"); + account_exception.in_store = password_manager::PasswordForm::Store::kAccountStore; - auto profile_exception = std::make_unique<password_manager::PasswordForm>(); - profile_exception->blocked_by_user = true; - profile_exception->in_store = + password_manager::PasswordForm profile_exception; + profile_exception.url = GURL("https://test.com"); + profile_exception.blocked_by_user = true; + profile_exception.in_store = password_manager::PasswordForm::Store::kProfileStore; - PasswordFormList list; - list.push_back(std::move(account_exception)); - list.push_back(std::move(profile_exception)); - - delegate.SetPasswordExceptionList(list); + SetUpPasswordStores({account_exception, profile_exception}); base::MockCallback<PasswordsPrivateDelegate::ExceptionEntriesCallback> callback; @@ -428,7 +442,7 @@ TEST_F(PasswordsPrivateDelegateImplTest, ChangeSavedPassword) { password_manager::PasswordForm sample_form = CreateSampleForm(); - SetUpPasswordStore({sample_form}); + SetUpPasswordStores({sample_form}); PasswordsPrivateDelegateImpl delegate(&profile_); // Spin the loop to allow PasswordStore tasks posted on the creation of @@ -472,7 +486,7 @@ /*date_created=*/base::Time::Now(), /*hide_by_default=*/true); sample_form.notes.emplace_back(u"note with empty display name", /*date_created=*/base::Time::Now()); - SetUpPasswordStore({sample_form}); + SetUpPasswordStores({sample_form}); PasswordsPrivateDelegateImpl delegate(&profile_); // Spin the loop to allow PasswordStore tasks posted on the creation of @@ -516,7 +530,7 @@ // By implementation for Copy, callback will receive empty string. TEST_F(PasswordsPrivateDelegateImplTest, TestCopyPasswordCallbackResult) { password_manager::PasswordForm form = CreateSampleForm(); - SetUpPasswordStore({form}); + SetUpPasswordStores({form}); PasswordsPrivateDelegateImpl delegate(&profile_); base::RunLoop().RunUntilIdle(); @@ -589,7 +603,7 @@ } TEST_F(PasswordsPrivateDelegateImplTest, TestCopyPasswordCallbackResultFail) { - SetUpPasswordStore({CreateSampleForm()}); + SetUpPasswordStores({CreateSampleForm()}); PasswordsPrivateDelegateImpl delegate(&profile_); base::RunLoop().RunUntilIdle(); @@ -621,7 +635,7 @@ } TEST_F(PasswordsPrivateDelegateImplTest, TestPassedReauthOnView) { - SetUpPasswordStore({CreateSampleForm()}); + SetUpPasswordStores({CreateSampleForm()}); PasswordsPrivateDelegateImpl delegate(&profile_); // Spin the loop to allow PasswordStore tasks posted on the creation of @@ -648,7 +662,7 @@ } TEST_F(PasswordsPrivateDelegateImplTest, TestFailedReauthOnView) { - SetUpPasswordStore({CreateSampleForm()}); + SetUpPasswordStores({CreateSampleForm()}); PasswordsPrivateDelegateImpl delegate(&profile_); // Spin the loop to allow PasswordStore tasks posted on the creation of @@ -674,7 +688,7 @@ } TEST_F(PasswordsPrivateDelegateImplTest, TestReauthFailedOnExport) { - SetUpPasswordStore({CreateSampleForm()}); + SetUpPasswordStores({CreateSampleForm()}); StrictMock<base::MockCallback<base::OnceCallback<void(const std::string&)>>> mock_accepted; @@ -732,7 +746,7 @@ {password_manager::InsecureType::kLeaked, password_manager::InsecurityMetadata(base::Time::FromTimeT(1), password_manager::IsMuted(false))}}; - store_->AddLogin(form); + profile_store_->AddLogin(form); base::RunLoop().RunUntilIdle(); api::passwords_private::InsecureCredential credential = @@ -832,4 +846,38 @@ EXPECT_FALSE(delegate.IsAccountStoreDefault(web_contents.get())); } +TEST_F(PasswordsPrivateDelegateImplTest, TestMovePasswordsToAccountStore) { + // This enables uses of TestWebContents. + content::RenderViewHostTestEnabler test_render_host_factories; + std::unique_ptr<content::WebContents> web_contents = + content::WebContentsTester::CreateTestWebContents(&profile_, nullptr); + auto* client = + MockPasswordManagerClient::CreateForWebContentsAndGet(web_contents.get()); + ON_CALL(*(client->GetPasswordFeatureManager()), IsOptedInForAccountStorage) + .WillByDefault(Return(true)); + + PasswordsPrivateDelegateImpl delegate(&profile_); + + password_manager::PasswordForm form1 = + CreateSampleForm(password_manager::PasswordForm::Store::kProfileStore); + password_manager::PasswordForm form2 = form1; + form2.username_value = u"different_username"; + + SetUpPasswordStores({form1, form2}); + + int first_id = delegate.GetPasswordIdGeneratorForTesting().GenerateId( + password_manager::CreateSortKey(form1)); + int second_id = delegate.GetPasswordIdGeneratorForTesting().GenerateId( + password_manager::CreateSortKey(form2)); + + delegate.MovePasswordsToAccount({first_id, second_id}, web_contents.get()); + base::RunLoop().RunUntilIdle(); + + histogram_tester().ExpectUniqueSample( + "PasswordManager.AccountStorage.MoveToAccountStoreFlowAccepted", + password_manager::metrics_util::MoveToAccountStoreTrigger:: + kExplicitlyTriggeredInSettings, + 2); +} + } // namespace extensions
diff --git a/chrome/browser/extensions/api/terminal/terminal_private_api.cc b/chrome/browser/extensions/api/terminal/terminal_private_api.cc index 1580bc1..418069eb 100644 --- a/chrome/browser/extensions/api/terminal/terminal_private_api.cc +++ b/chrome/browser/extensions/api/terminal/terminal_private_api.cc
@@ -686,9 +686,6 @@ ExtensionFunction::ResponseAction TerminalPrivateGetOSInfoFunction::Run() { base::DictionaryValue info; - info.SetBoolKey("alternative_renderer", - base::FeatureList::IsEnabled( - chromeos::features::kTerminalAlternativeRenderer)); info.SetBoolKey( "multi_profile", base::FeatureList::IsEnabled(chromeos::features::kTerminalMultiProfile));
diff --git a/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc b/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc index cf50d51..40305fd5 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc +++ b/chrome/browser/extensions/chrome_extensions_browser_interface_binders.cc
@@ -51,7 +51,7 @@ #if BUILDFLAG(PLATFORM_CFM) #include "ash/services/chromebox_for_meetings/public/cpp/service_connection.h" -#include "chromeos/components/chromebox_for_meetings/features/features.h" +#include "chromeos/ash/components/chromebox_for_meetings/features.h" #endif #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -169,13 +169,12 @@ mojo::PendingReceiver<chromeos::cfm::mojom::CfmServiceContext> receiver) { #if BUILDFLAG(PLATFORM_CFM) - if (base::FeatureList::IsEnabled( - chromeos::cfm::features::kMojoServices)) { + if (base::FeatureList::IsEnabled(ash::cfm::features::kMojoServices)) { ash::cfm::ServiceConnection::GetInstance()->BindServiceContext( std::move(receiver)); } else { // The experimentation framework used to manage the - // chromeos::cfm::features::kMojoServices feature flag requires + // `ash::cfm::features::kMojoServices` feature flag requires // Chrome to restart before updates are applied. Meet Devices have // a variable uptime ranging from a week or more and set by the // admin. Additionally its kiosked process is not tied to a chromium
diff --git a/chrome/browser/extensions/global_shortcut_listener_ozone.h b/chrome/browser/extensions/global_shortcut_listener_ozone.h index eb3f343..a2cec20 100644 --- a/chrome/browser/extensions/global_shortcut_listener_ozone.h +++ b/chrome/browser/extensions/global_shortcut_listener_ozone.h
@@ -7,6 +7,7 @@ #include <set> +#include "base/memory/raw_ptr.h" #include "chrome/browser/extensions/global_shortcut_listener.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/ozone/public/platform_global_shortcut_listener.h" @@ -52,8 +53,8 @@ std::set<ui::Accelerator> registered_hot_keys_; // The platform implementation. - ui::PlatformGlobalShortcutListener* platform_global_shortcut_listener_ = - nullptr; + raw_ptr<ui::PlatformGlobalShortcutListener> + platform_global_shortcut_listener_ = nullptr; }; } // namespace extensions
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index f2197fe..c3a21b9 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -1382,7 +1382,7 @@ { "name": "drive-fs-bidirectional-native-messaging", "owners": [ "austinct@chromium.org", "simmonsjosh@google.com" ], - "expiry_milestone": 104 + "expiry_milestone": 108 }, { "name": "drive-fs-chrome-networking", @@ -3610,6 +3610,11 @@ "expiry_milestone": 110 }, { + "name": "history-journeys-omnibox-history-cluster-provider", + "owners": [ "tommycli", "chrome-journeys@google.com" ], + "expiry_milestone": 110 + }, + { "name": "history-journeys-on-device-clustering", "owners": [ "sophiechang", "chrome-journeys@google.com", "chrome-intelligence-core@google.com" ], "expiry_milestone": 110
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index c72c35d..89deadf 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1641,6 +1641,12 @@ const char kJourneysOmniboxActionDescription[] = "Enables the History Journeys Omnibox Action."; +const char kJourneysOmniboxHistoryClusterProviderName[] = + "History Journeys Omnibox History Cluster Provider"; +const char kJourneysOmniboxHistoryClusterProviderDescription[] = + "Enables the History Journeys Omnibox History Cluster Provider to surface " + "Journeys as a suggestion row instead of an action chip."; + const char kJourneysOnDeviceClusteringBackendName[] = "History Journeys On-Device Clustering Backend"; const char kJourneysOnDeviceClusteringBackendDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 4454266..d00c8167 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -926,6 +926,9 @@ extern const char kJourneysOmniboxActionName[]; extern const char kJourneysOmniboxActionDescription[]; +extern const char kJourneysOmniboxHistoryClusterProviderName[]; +extern const char kJourneysOmniboxHistoryClusterProviderDescription[]; + extern const char kJourneysOnDeviceClusteringBackendName[]; extern const char kJourneysOnDeviceClusteringBackendDescription[];
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java index c28ec4a..4f9254f 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthController.java
@@ -218,17 +218,19 @@ } /** - * Override from {@link IncognitoReauthDialogDelegate}. This relays the signal that the TabModal - * has changed. This is fired when all other observers of {@link onTabModelChanged} have been - * notified to bring determinism in the re-auth dialog. + * Override from {@link IncognitoReauthDialogDelegate}. */ @Override - public void onAfterTabModelSelected(TabModel newModel, TabModel oldModel) { - if ((newModel.isIncognito())) { - showDialogIfRequired(); - } else { - hideDialogIfShowing(DialogDismissalCause.DIALOG_INTERACTION_DEFERRED); - } + public void onAfterRegularTabModelChanged() { + hideDialogIfShowing(DialogDismissalCause.DIALOG_INTERACTION_DEFERRED); + } + + /** + * Override from {@link IncognitoReauthDialogDelegate}. + */ + @Override + public void onBeforeIncognitoTabModelSelected() { + showDialogIfRequired(); } /**
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerTest.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerTest.java index 390c9a3..f87b379d9 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerTest.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthControllerTest.java
@@ -78,14 +78,12 @@ private void switchToIncognitoTabModel() { doReturn(true).when(mTabModelSelectorMock).isIncognitoSelected(); - mIncognitoReauthController.onAfterTabModelSelected( - /*newModel=*/mIncognitoTabModelMock, /*oldModel=*/mRegularTabModelMock); + mIncognitoReauthController.onBeforeIncognitoTabModelSelected(); } private void switchToRegularTabModel() { doReturn(false).when(mTabModelSelectorMock).isIncognitoSelected(); - mIncognitoReauthController.onAfterTabModelSelected( - /*newModel=*/mRegularTabModelMock, /*oldModel=*/mIncognitoTabModelMock); + mIncognitoReauthController.onAfterRegularTabModelChanged(); } private Tab prepareTabForRestoreOrLauncherShortcut(boolean isRestore) {
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinator.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinator.java index 0f525d002..8b9fe57 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinator.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinator.java
@@ -71,6 +71,7 @@ * allows to communicate with tab switcher to show the re-auth screen. * @param incognitoReauthTopToolbarDelegate A {@link IncognitoReauthTopToolbarDelegate} * responsible for controlling the interactability of the top toolbar elements. + * @param showTabSwitcherRunnable A {link Runnable} to show the tab switcher UI. * @param showFullScreen Whether to show a fullscreen / tab based re-auth dialog. */ public IncognitoReauthCoordinator(@NonNull Context context, @@ -81,14 +82,14 @@ @NonNull SettingsLauncher settingsLauncher, @Nullable TabSwitcherCustomViewManager tabSwitcherCustomViewManager, @Nullable IncognitoReauthTopToolbarDelegate incognitoReauthTopToolbarDelegate, - boolean showFullScreen) { + @NonNull Runnable showTabSwitcherRunnable, boolean showFullScreen) { mContext = context; mModalDialogManager = modalDialogManager; mTabSwitcherCustomViewManager = tabSwitcherCustomViewManager; mIncognitoReauthTopToolbarDelegate = incognitoReauthTopToolbarDelegate; mShowFullScreen = showFullScreen; - mIncognitoReauthMediator = new IncognitoReauthMediator( - tabModelSelector, incognitoReauthCallback, incognitoReauthManager); + mIncognitoReauthMediator = new IncognitoReauthMediator(tabModelSelector, + incognitoReauthCallback, incognitoReauthManager, showTabSwitcherRunnable); mIncognitoReauthMenuDelegate = (mShowFullScreen) ? new IncognitoReauthMenuDelegate(mContext, tabModelSelector, settingsLauncher) : null;
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java index 62366fba..91075d0 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthCoordinatorFactory.java
@@ -25,6 +25,7 @@ private final @NonNull ModalDialogManager mModalDialogManager; private final @NonNull IncognitoReauthManager mIncognitoReauthManager; private final @NonNull SettingsLauncher mSettingsLauncher; + private final @NonNull Runnable mShowTabSwitcherRunnable; // This is non-null for Tabbed activity. private final @Nullable IncognitoReauthTopToolbarDelegate mIncognitoReauthTopToolbarDelegate; @@ -47,7 +48,7 @@ * <TabSwitcherCustomViewManager>} that allows to communicate with tab switcher to * show the re-auth screen. * @param topToolbarDelegate A {@link IncognitoReauthTopToolbarDelegate} responsible for - * controlling the interactability of the top toolbar elements. + * @param showTabSwitcherRunnable A {@link Runnable} to show the Tab switcher layout. */ public IncognitoReauthCoordinatorFactory(@NonNull Context context, @NonNull TabModelSelector tabModelSelector, @@ -55,13 +56,16 @@ @NonNull SettingsLauncher settingsLauncher, @NonNull OneshotSupplier<TabSwitcherCustomViewManager> tabSwitcherCustomViewManagerOneshotSupplier, - @Nullable IncognitoReauthTopToolbarDelegate topToolbarDelegate) { + @Nullable IncognitoReauthTopToolbarDelegate topToolbarDelegate, + @NonNull Runnable showTabSwitcherRunnable) { mContext = context; mTabModelSelector = tabModelSelector; mModalDialogManager = modalDialogManager; mIncognitoReauthTopToolbarDelegate = topToolbarDelegate; mIncognitoReauthManager = new IncognitoReauthManager(); mSettingsLauncher = settingsLauncher; + mShowTabSwitcherRunnable = showTabSwitcherRunnable; + tabSwitcherCustomViewManagerOneshotSupplier.onAvailable( mTabSwitcherCustomViewManagerController.makeCancelable(manager -> { assert manager != null; @@ -78,6 +82,7 @@ boolean showFullScreen) { return new IncognitoReauthCoordinator(mContext, mTabModelSelector, mModalDialogManager, incognitoReauthCallback, mIncognitoReauthManager, mSettingsLauncher, - mTabSwitcherCustomViewManager, mIncognitoReauthTopToolbarDelegate, showFullScreen); + mTabSwitcherCustomViewManager, mIncognitoReauthTopToolbarDelegate, + mShowTabSwitcherRunnable, showFullScreen); } }
diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthMediator.java b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthMediator.java index 5a272fd..4a51fa5 100644 --- a/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthMediator.java +++ b/chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/reauth/IncognitoReauthMediator.java
@@ -6,6 +6,7 @@ import androidx.annotation.NonNull; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager.IncognitoReauthCallback; +import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelSelector; /** @@ -13,25 +14,29 @@ */ class IncognitoReauthMediator { private final TabModelSelector mTabModelSelector; + private final Runnable mShowTabSwitcherRunnable; // The entity responsible for actually calling the underlying system re-authentication. private final IncognitoReauthManager mIncognitoReauthManager; // The callback that would be fired after an authentication attempt. private IncognitoReauthCallback mIncognitoReauthCallback; /** - * @param tabModelSelector The {@link TabModelSelector} which helps to switch to regular - * {@link TabModel}. + * @param tabModelSelector The {@link TabModelSelector} which helps to switch to regular {@link + * TabModel}. * @param incognitoReauthCallback incognitoReauthCallback The {@link IncognitoReauthCallback} * which would be executed after an authentication attempt. - * @param incognitoReauthManager The {@link IncognitoReauthManager} instance which would be - * used to initiate re-authentication. + * @param incognitoReauthManager The {@link IncognitoReauthManager} instance which would be used + * to initiate re-authentication. + * @param showTabSwitcherRunnable A {link Runnable} to show the tab switcher UI. */ IncognitoReauthMediator(@NonNull TabModelSelector tabModelSelector, @NonNull IncognitoReauthCallback incognitoReauthCallback, - @NonNull IncognitoReauthManager incognitoReauthManager) { + @NonNull IncognitoReauthManager incognitoReauthManager, + @NonNull Runnable showTabSwitcherRunnable) { mTabModelSelector = tabModelSelector; mIncognitoReauthCallback = incognitoReauthCallback; mIncognitoReauthManager = incognitoReauthManager; + mShowTabSwitcherRunnable = showTabSwitcherRunnable; } void onUnlockIncognitoButtonClicked() { @@ -43,5 +48,7 @@ // will change to regular {@link TabModel} the controller will detect that and hide // the dialog. mTabModelSelector.selectModel(/*incognito=*/false); + + mShowTabSwitcherRunnable.run(); } }
diff --git a/chrome/browser/lacros/launcher_search/search_util.cc b/chrome/browser/lacros/launcher_search/search_util.cc index fbf324d..a09416e 100644 --- a/chrome/browser/lacros/launcher_search/search_util.cc +++ b/chrome/browser/lacros/launcher_search/search_util.cc
@@ -58,6 +58,7 @@ case AutocompleteMatchType::TAB_SEARCH_DEPRECATED: case AutocompleteMatchType::DOCUMENT_SUGGESTION: case AutocompleteMatchType::PEDAL_DEPRECATED: + case AutocompleteMatchType::HISTORY_CLUSTER: return SearchResult::OmniboxType::kDomain; case AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED:
diff --git a/chrome/browser/lacros/wallpaper_lacros_browsertest.cc b/chrome/browser/lacros/wallpaper_lacros_browsertest.cc new file mode 100644 index 0000000..f4a2508 --- /dev/null +++ b/chrome/browser/lacros/wallpaper_lacros_browsertest.cc
@@ -0,0 +1,82 @@ +// 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. + +#include "base/base_paths.h" +#include "base/bind.h" +#include "base/files/file_path.h" +#include "base/path_service.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chromeos/crosapi/mojom/wallpaper.mojom-test-utils.h" +#include "chromeos/crosapi/mojom/wallpaper.mojom.h" +#include "chromeos/lacros/lacros_service.h" +#include "content/public/test/browser_test.h" +#include "ui/gfx/codec/jpeg_codec.h" + +namespace { +const char kFakeExtensionId[] = "abcdefghijklmnopqrstuvxwyzabcdef"; +const char kFakeExtensionName[] = "Fake Extension Name"; +const char kTestWallpaperFilename[] = "some-wallpaper-name"; +} // namespace + +class WallpaperLacrosBrowserTest : public InProcessBrowserTest { + protected: + WallpaperLacrosBrowserTest() = default; + + WallpaperLacrosBrowserTest(const WallpaperLacrosBrowserTest&) = delete; + WallpaperLacrosBrowserTest& operator=(const WallpaperLacrosBrowserTest&) = + delete; + + ~WallpaperLacrosBrowserTest() override = default; + + static std::vector<uint8_t> CreateJpeg(); +}; + +std::vector<uint8_t> WallpaperLacrosBrowserTest::CreateJpeg() { + const int kWidth = 100; + const int kHeight = 100; + const SkColor kRed = SkColorSetRGB(255, 0, 0); + const int kQuality = 80; + + SkBitmap bitmap; + bitmap.allocN32Pixels(kWidth, kHeight); + bitmap.eraseColor(kRed); + + std::vector<uint8_t> jpg_data; + + bool encoded = gfx::JPEGCodec::Encode(bitmap, kQuality, &jpg_data); + if (!encoded) { + LOG(ERROR) << "Failed to encode a sample JPEG wallpaper image"; + jpg_data.clear(); + } + + return jpg_data; +} + +// Tests that setting the wallpaper via crosapi works +IN_PROC_BROWSER_TEST_F(WallpaperLacrosBrowserTest, SetWallpaper) { + auto* lacros_service = chromeos::LacrosService::Get(); + + if (!lacros_service->IsAvailable<crosapi::mojom::Wallpaper>()) { + GTEST_SKIP() << "Unsupported ash version."; + } + + crosapi::mojom::WallpaperSettingsPtr settings = + crosapi::mojom::WallpaperSettings::New(); + + settings->data = CreateJpeg(); + ASSERT_FALSE(settings->data.empty()); + + settings->layout = crosapi::mojom::WallpaperLayout::kCenter; + settings->filename = kTestWallpaperFilename; + + crosapi::mojom::WallpaperAsyncWaiter async_waiter( + lacros_service->GetRemote<crosapi::mojom::Wallpaper>().get()); + + std::vector<uint8_t> out_thumbnail_data; + async_waiter.SetWallpaper(std::move(settings), kFakeExtensionId, + kFakeExtensionName, &out_thumbnail_data); + + // If an empty thumnail is returned it means Ash failed to set the wallpaper. + EXPECT_FALSE(out_thumbnail_data.empty()); +}
diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/android/BUILD.gn index 75460ef..37819f2 100644 --- a/chrome/browser/language/android/BUILD.gn +++ b/chrome/browser/language/android/BUILD.gn
@@ -118,14 +118,8 @@ testonly = true sources = [ - "java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java", - "java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java", - "java/src/org/chromium/chrome/browser/language/FakeLanguageBridgeJni.java", "java/src/org/chromium/chrome/browser/language/GlobalAppLocaleControllerTest.java", - "java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java", "java/src/org/chromium/chrome/browser/language/settings/LanguageSettingsTest.java", - "java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java", - "java/src/org/chromium/chrome/browser/translate/FakeTranslateBridgeJni.java", ] deps = [ ":base_module_java", @@ -167,3 +161,35 @@ "//ui/android:ui_no_recycler_view_java", ] } + +robolectric_library("junit") { + testonly = true + + sources = [ + "java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java", + "java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java", + "java/src/org/chromium/chrome/browser/language/FakeLanguageBridgeJni.java", + "java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java", + "java/src/org/chromium/chrome/browser/language/LanguageTestUtils.java", + "java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java", + "java/src/org/chromium/chrome/browser/translate/FakeTranslateBridgeJni.java", + ] + + deps = [ + ":base_module_java", + "//base:base_java", + "//base:base_java_test_support", + "//base:base_junit_test_support", + "//chrome/android:base_module_java", + "//chrome/browser/flags:java", + "//chrome/browser/language/android:java", + "//chrome/browser/preferences:java", + "//chrome/test/android:chrome_java_unit_test_support", + "//content/public/test/android:content_java_test_support", + "//third_party/android_deps:robolectric_all_java", + "//third_party/androidx:androidx_test_runner_java", + "//third_party/junit", + "//third_party/mockito:mockito_java", + "//ui/android:ui_no_recycler_view_java", + ] +}
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java index 01158196..fcb55072 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialogTest.java
@@ -6,15 +6,16 @@ import androidx.test.filters.SmallTest; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.chromium.base.LocaleUtils; -import org.chromium.base.test.util.Batch; +import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.browser.language.AppLanguagePromoDialog.LanguageItemAdapter; import org.chromium.chrome.browser.language.settings.LanguageItem; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import java.util.ArrayList; import java.util.Arrays; @@ -23,74 +24,89 @@ /** * Tests for the AppPromoDialog class. */ -@RunWith(ChromeJUnit4ClassRunner.class) -@Batch(Batch.UNIT_TESTS) +@RunWith(BaseRobolectricTestRunner.class) public class AppLanguagePromoDialogTest { - static final LanguageItem FOLLOW_SYSTEM = LanguageItem.makeFollowSystemLanguageItem(); - static final LanguageItem LANG_AF = new LanguageItem("af", "Afrikaans", "Afrikaans", true); - static final LanguageItem LANG_AZ = new LanguageItem("az", "Azerbaijani", "azərbaycan", true); - static final LanguageItem LANG_EN_GB = - new LanguageItem("en-GB", "English (UK)", "English (UK)", true); - static final LanguageItem LANG_EN_US = - new LanguageItem("en-US", "English (United States)", "English (United States", true); - static final LanguageItem LANG_ZU = new LanguageItem("zu", "Zulu", "isiZulu", true); + LanguageItem mFollowSystem; + LanguageItem mLangAf; + LanguageItem mLangAz; + LanguageItem mLangEnGb; + LanguageItem mLangEnUs; + LanguageItem mLangZu; // List of potential UI languages. - static final LinkedHashSet<LanguageItem> UI_LANGUAGES = - new LinkedHashSet<>(Arrays.asList(LANG_AF, LANG_AZ, LANG_EN_GB, LANG_EN_US, LANG_ZU)); + LinkedHashSet<LanguageItem> mUiLanguages; + + @Before + public void setUp() { + LanguageTestUtils.initializeResourceBundleForTesting(); + mFollowSystem = LanguageItem.makeFollowSystemLanguageItem(); + mLangAf = new LanguageItem("af", "Afrikaans", "Afrikaans", true); + mLangAz = new LanguageItem("az", "Azerbaijani", "azərbaycan", true); + mLangEnGb = new LanguageItem("en-GB", "English (UK)", "English (UK)", true); + mLangEnUs = new LanguageItem( + "en-US", "English (United States)", "English (United States", true); + mLangZu = new LanguageItem("zu", "Zulu", "isiZulu", true); + mUiLanguages = + new LinkedHashSet<>(Arrays.asList(mLangAf, mLangAz, mLangEnGb, mLangEnUs, mLangZu)); + } + + @After + public void tearDown() { + LanguageTestUtils.clearResourceBundleForTesting(); + } // Test getTopLanguagesHelper @Test @SmallTest public void testGetTopLanguagesHelper() { - // Current override language is FOLLOW_SYSTEM, System Language is en-US + // Current override language is mFollowSystem, System Language is en-US LinkedHashSet<LanguageItem> topLanguages = - AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, + AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, new LinkedHashSet<>(Arrays.asList("af", "an", "en-US", "en-AU", "zu")), - FOLLOW_SYSTEM, LocaleUtils.forLanguageTag("en-US")); + mFollowSystem, LocaleUtils.forLanguageTag("en-US")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(FOLLOW_SYSTEM, LANG_AF, LANG_ZU)); + new ArrayList<>(topLanguages), Arrays.asList(mFollowSystem, mLangAf, mLangZu)); - // Current override language is FOLLOW_SYSTEM, System Language is Zulu - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, + // Current override language is mFollowSystem, System Language is Zulu + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, new LinkedHashSet<>(Arrays.asList("en-US", "en-AU", "an", "af", "zu")), - FOLLOW_SYSTEM, LocaleUtils.forLanguageTag("zu")); + mFollowSystem, LocaleUtils.forLanguageTag("zu")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(FOLLOW_SYSTEM, LANG_EN_US, LANG_AF)); + new ArrayList<>(topLanguages), Arrays.asList(mFollowSystem, mLangEnUs, mLangAf)); // Current override language is en-US, System Language is en-US - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, - new LinkedHashSet<>(Arrays.asList("zu", "af", "an", "en-AU", "en-US")), LANG_EN_US, + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, + new LinkedHashSet<>(Arrays.asList("zu", "af", "an", "en-AU", "en-US")), mLangEnUs, LocaleUtils.forLanguageTag("en-US")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(LANG_EN_US, LANG_ZU, LANG_AF)); + new ArrayList<>(topLanguages), Arrays.asList(mLangEnUs, mLangZu, mLangAf)); // Current override language is Afrikaans, System Language is Zulu - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, - new LinkedHashSet<>(Arrays.asList("an", "en-US", "en-AU", "zu", "af")), LANG_AF, + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, + new LinkedHashSet<>(Arrays.asList("an", "en-US", "en-AU", "zu", "af")), mLangAf, LocaleUtils.forLanguageTag("zu")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(FOLLOW_SYSTEM, LANG_AF, LANG_EN_US)); + new ArrayList<>(topLanguages), Arrays.asList(mFollowSystem, mLangAf, mLangEnUs)); // Current override language is Afrikaans, System Language is Afrikaans (South Africa) - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, - new LinkedHashSet<>(Arrays.asList("af-ZA", "an", "zu", "en-US", "en-AU")), LANG_AF, + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, + new LinkedHashSet<>(Arrays.asList("af-ZA", "an", "zu", "en-US", "en-AU")), mLangAf, LocaleUtils.forLanguageTag("af-ZA")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(LANG_AF, LANG_ZU, LANG_EN_US)); + new ArrayList<>(topLanguages), Arrays.asList(mLangAf, mLangZu, mLangEnUs)); // Current override language is en-US, System Language is Afrikaans (South Africa) - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, new LinkedHashSet<>(Arrays.asList("af-ZA", "af", "an", "en-US", "en-AU", "zu")), - LANG_EN_US, LocaleUtils.forLanguageTag("af-ZA")); + mLangEnUs, LocaleUtils.forLanguageTag("af-ZA")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(FOLLOW_SYSTEM, LANG_EN_US, LANG_ZU)); + new ArrayList<>(topLanguages), Arrays.asList(mFollowSystem, mLangEnUs, mLangZu)); - // Current override language is FOLLOW_SYSTEM, System Language is Afrikaans (South Africa) - topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(UI_LANGUAGES, + // Current override language is mFollowSystem, System Language is Afrikaans (South Africa) + topLanguages = AppLanguagePromoDialog.getTopLanguagesHelper(mUiLanguages, new LinkedHashSet<>(Arrays.asList("af-ZA", "af", "an", "en-US", "en-AU", "zu")), - FOLLOW_SYSTEM, LocaleUtils.forLanguageTag("af-ZA")); + mFollowSystem, LocaleUtils.forLanguageTag("af-ZA")); Assert.assertEquals( - new ArrayList<>(topLanguages), Arrays.asList(FOLLOW_SYSTEM, LANG_EN_US, LANG_ZU)); + new ArrayList<>(topLanguages), Arrays.asList(mFollowSystem, mLangEnUs, mLangZu)); } // Test isOverrideLanguageOriginalSystemLanguage @@ -99,27 +115,27 @@ public void testIsOverrideLanguageOriginalSystemLanguage() { // Only one UI variant: Afrikaans Assert.assertTrue(AppLanguagePromoDialog.isOverrideLanguageOriginalSystemLanguage( - LANG_AF, LocaleUtils.forLanguageTag("af-ZA"))); + mLangAf, LocaleUtils.forLanguageTag("af-ZA"))); // Multiple UI variants: en-US Assert.assertFalse(AppLanguagePromoDialog.isOverrideLanguageOriginalSystemLanguage( - LANG_EN_GB, LocaleUtils.forLanguageTag("en-US"))); + mLangEnGb, LocaleUtils.forLanguageTag("en-US"))); Assert.assertTrue(AppLanguagePromoDialog.isOverrideLanguageOriginalSystemLanguage( - LANG_EN_US, LocaleUtils.forLanguageTag("en-US"))); + mLangEnUs, LocaleUtils.forLanguageTag("en-US"))); // Follow system language Assert.assertFalse(AppLanguagePromoDialog.isOverrideLanguageOriginalSystemLanguage( - FOLLOW_SYSTEM, LocaleUtils.forLanguageTag("zu"))); + mFollowSystem, LocaleUtils.forLanguageTag("zu"))); } // Test LanguageItemAdapter @Test @SmallTest public void testLanguageItemAdapter() { - ArrayList<LanguageItem> topLanguages = new ArrayList<>(Arrays.asList(LANG_AF, LANG_AZ)); + ArrayList<LanguageItem> topLanguages = new ArrayList<>(Arrays.asList(mLangAf, mLangAz)); ArrayList<LanguageItem> otherLanguages = - new ArrayList<>(Arrays.asList(LANG_EN_GB, LANG_EN_US, LANG_ZU)); - LanguageItem currentLanguage = LANG_AF; + new ArrayList<>(Arrays.asList(mLangEnGb, mLangEnUs, mLangZu)); + LanguageItem currentLanguage = mLangAf; LanguageItemAdapter adapter = new LanguageItemAdapter(topLanguages, otherLanguages, currentLanguage);
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java index 8edb269..89042ba 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtilsTest.java
@@ -8,13 +8,14 @@ import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import java.util.Arrays; import java.util.List; @@ -22,12 +23,18 @@ /** * Tests for the AppLocalUtils class. */ -@RunWith(ChromeJUnit4ClassRunner.class) +@RunWith(BaseRobolectricTestRunner.class) @Batch(Batch.UNIT_TESTS) public class AppLocaleUtilsTest { + @Before + public void setUp() { + LanguageTestUtils.initializeResourceBundleForTesting(); + } + // Reset the application override language after each test. @After public void tearDown() { + LanguageTestUtils.clearResourceBundleForTesting(); SharedPreferencesManager.getInstance().writeString( ChromePreferenceKeys.APPLICATION_OVERRIDE_LANGUAGE, null); }
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java index 349cfa9..8ededf7c 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageBridgeTest.java
@@ -13,18 +13,15 @@ import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; +import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.JniMocker; import org.chromium.chrome.browser.flags.ChromeSwitches; -// import org.chromium.browser.language.FakeLanguageBridgeJni; -// import org.chromium.browser.language.LanguageBridge; -// import org.chromium.browser.language.LanguageBridgeJni; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; /** * Tests for {@link LanguageBridge} which gets language lists from native */ -@RunWith(ChromeJUnit4ClassRunner.class) +@RunWith(BaseRobolectricTestRunner.class) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class LanguageBridgeTest { @Rule
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageTestUtils.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageTestUtils.java new file mode 100644 index 0000000..58816bd --- /dev/null +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/LanguageTestUtils.java
@@ -0,0 +1,31 @@ +// 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. + +package org.chromium.chrome.browser.language; + +import org.chromium.ui.base.ResourceBundle; + +/** + * Utils for initializing and cleaning up android ResourceBundle in robolectric tests + */ +public class LanguageTestUtils { + public static final String[] TEST_LOCALES = {"af", "am", "ar", "ar-XB", "as", "az", "be", "bg", + "bn", "bs", "ca", "cs", "da", "de", "el", "en-GB", "en-US", "en-XA", "es", "es-419", + "et", "eu", "fa", "fi", "fil", "fr", "fr-CA", "gl", "gu", "he", "hi", "hr", "hu", "hy", + "id", "is", "it", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", + "ml", "mn", "mr", "ms", "my", "nb", "ne", "nl", "or", "pa", "pl", "pt-BR", "pt-PT", + "ro", "ru", "si", "sk", "sl", "sq", "sr", "sr-Latn", "sv", "sw", "ta", "te", "th", "tr", + "uk", "ur", "uz", "vi", "zh-CN", "zh-HK", "zh-TW", "zu"}; + + private LanguageTestUtils() {} + + public static void initializeResourceBundleForTesting() { + clearResourceBundleForTesting(); + ResourceBundle.setAvailablePakLocales(TEST_LOCALES); + } + + public static void clearResourceBundleForTesting() { + ResourceBundle.clearAvailablePakLocalesForTesting(); + } +}
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java index 44ed84f..e09069b8a 100644 --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguagesManagerTest.java
@@ -8,6 +8,7 @@ import androidx.test.filters.SmallTest; +import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; @@ -15,14 +16,15 @@ import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; +import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.JniMocker; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.language.AppLocaleUtils; +import org.chromium.chrome.browser.language.LanguageTestUtils; import org.chromium.chrome.browser.translate.FakeTranslateBridgeJni; import org.chromium.chrome.browser.translate.TranslateBridge; import org.chromium.chrome.browser.translate.TranslateBridgeJni; -import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import java.util.ArrayList; import java.util.Arrays; @@ -32,7 +34,7 @@ /** * Tests for {@link LanguagesManager} which gets language lists from native. */ -@RunWith(ChromeJUnit4ClassRunner.class) +@RunWith(BaseRobolectricTestRunner.class) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class LanguagesManagerTest { @Rule @@ -43,6 +45,7 @@ @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + LanguageTestUtils.initializeResourceBundleForTesting(); // Setup fake translate and language preferences. List<LanguageItem> chromeLanguages = FakeTranslateBridgeJni.getSimpleLanguageItemList(); List<String> acceptLanguages = Arrays.asList("sw", "en", "en-US"); @@ -54,6 +57,11 @@ mJniMocker.mock(TranslateBridgeJni.TEST_HOOKS, mFakeTranslateBridge); } + @After + public void tearDown() { + LanguageTestUtils.clearResourceBundleForTesting(); + } + /** * Tests for getting the potential accept languages. */
diff --git a/chrome/browser/media/webrtc/region_capture_browsertest.cc b/chrome/browser/media/webrtc/region_capture_browsertest.cc index 70b12bfc..56cc406 100644 --- a/chrome/browser/media/webrtc/region_capture_browsertest.cc +++ b/chrome/browser/media/webrtc/region_capture_browsertest.cc
@@ -416,8 +416,6 @@ "top-level-crop-success"); } -// TODO(crbug.com/1333319): Align implementation and specification. -// This is discussed in: https://github.com/w3c/mediacapture-region/issues/60 IN_PROC_BROWSER_TEST_F(RegionCaptureBrowserTest, CropToForUncroppingAllowedOnUncroppedTracks) { SetUpTest(Frame::kTopLevelDocument, /*self_capture=*/true);
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc index d0b3897..6527d9d 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc
@@ -103,7 +103,7 @@ #if BUILDFLAG(IS_WIN) #include "chrome/browser/net/chrome_mojo_proxy_resolver_win.h" -#endif +#endif // BUILDFLAG(IS_WIN) namespace { // Enumeration of possible sandbox states. These values are persisted to logs, @@ -141,7 +141,8 @@ #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) auth_static_params->gssapi_library_name = local_state->GetString(prefs::kGSSAPILibraryName); -#endif +#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && + // !BUILDFLAG(IS_CHROMEOS_ASH) return auth_static_params; } @@ -196,7 +197,7 @@ auth_dynamic_params->allow_gssapi_library_load = connector->IsActiveDirectoryManaged() || local_state->GetBoolean(prefs::kKerberosEnabled); -#endif +#endif // BUILDFLAG(IS_CHROMEOS_ASH) return auth_dynamic_params; } @@ -214,7 +215,7 @@ local_state->FindPreference(prefs::kBuiltinCertificateVerifierEnabled); if (builtin_cert_verifier_enabled_pref->IsManaged()) return builtin_cert_verifier_enabled_pref->GetValue()->GetBool(); -#endif +#endif // BUILDFLAG(BUILTIN_CERT_VERIFIER_POLICY_SUPPORTED) // Note: intentionally checking the feature state here rather than falling // back to CertVerifierImpl::kDefault, as browser-side network context // initialization for TrialComparisonCertVerifier depends on knowing which @@ -222,7 +223,7 @@ return base::FeatureList::IsEnabled( net::features::kCertVerifierBuiltinFeature); } -#endif +#endif // BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) // TODO(https://crbug.com/1228958): update function with enterprise policy for @@ -234,7 +235,7 @@ // verifier will be used. return base::FeatureList::IsEnabled(net::features::kChromeRootStoreUsed); } -#endif +#endif // BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) NetworkSandboxState IsNetworkSandboxEnabledInternal() { // If previously an attempt to launch the sandboxed process failed, then @@ -293,7 +294,7 @@ "Chrome.SystemNetworkContextManager.NetworkSandboxLaunchFailed." "WinLastError", info.last_error); -#endif +#endif // BUILDFLAG(IS_WIN) g_previously_failed_to_launch_sandboxed_service = true; } } @@ -402,7 +403,7 @@ static bool inside_this_function = false; DCHECK(!inside_this_function); base::AutoReset now_inside_this_function(&inside_this_function, true); -#endif +#endif // DCHECK_IS_ON() DCHECK(!g_system_network_context_manager); g_system_network_context_manager = @@ -453,7 +454,7 @@ .GetValue(policy::key::kQuicAllowed, base::Value::Type::BOOLEAN); if (value) is_quic_allowed_ = value->GetBool(); -#endif +#endif // !BUILDFLAG(IS_ANDROID) shared_url_loader_factory_ = new URLLoaderFactoryForSystem(this); pref_change_registrar_.Init(local_state_); @@ -551,6 +552,7 @@ prefs::kNtlmV2Enabled, base::FeatureList::IsEnabled(features::kNtlmV2Enabled)); #endif // BUILDFLAG(IS_POSIX) + #if BUILDFLAG(IS_ANDROID) registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType, std::string()); @@ -570,7 +572,7 @@ // evaluated when it is managed. registry->RegisterBooleanPref(prefs::kBuiltinCertificateVerifierEnabled, false); -#endif +#endif // BUILDFLAG(BUILTIN_CERT_VERIFIER_POLICY_SUPPORTED) registry->RegisterListPref(prefs::kExplicitlyAllowedNetworkPorts); @@ -767,6 +769,7 @@ } else { network_context_params->proxy_resolver_factory = ChromeMojoProxyResolverFactory::CreateWithSelfOwnedReceiver(); + #if BUILDFLAG(IS_CHROMEOS_ASH) network_context_params->dhcp_wpad_url_client = ash::DhcpWpadUrlClient::CreateWithSelfOwnedReceiver(); @@ -779,7 +782,7 @@ network_context_params->windows_system_proxy_resolver = ChromeMojoProxyResolverWin::CreateWithSelfOwnedReceiver(); } -#endif +#endif // BUILDFLAG(IS_WIN) network_context_params->pac_quick_check_enabled = local_state_->GetBoolean(prefs::kQuickCheckEnabled); @@ -801,7 +804,7 @@ kBuiltin : cert_verifier::mojom::CertVerifierCreationParams::CertVerifierImpl:: kSystem; -#endif +#endif // BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) #if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) cert_verifier_creation_params->use_chrome_root_store = @@ -810,7 +813,7 @@ kRootChrome : cert_verifier::mojom::CertVerifierCreationParams::ChromeRootImpl:: kRootSystem; -#endif +#endif // BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) } network::mojom::NetworkContextParamsPtr @@ -902,10 +905,10 @@ features::kCertificateTransparencyAndroid); #else return true; -#endif +#endif // BUILDFLAG(IS_ANDROID) #else return false; -#endif +#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) && defined(OFFICIAL_BUILD) } network::mojom::NetworkContextParamsPtr
diff --git a/chrome/browser/net/system_network_context_manager_browsertest.cc b/chrome/browser/net/system_network_context_manager_browsertest.cc index 7597455..ea26af5 100644 --- a/chrome/browser/net/system_network_context_manager_browsertest.cc +++ b/chrome/browser/net/system_network_context_manager_browsertest.cc
@@ -56,7 +56,7 @@ #include "components/policy/core/common/policy_map.h" #include "components/policy/policy_constants.h" #include "net/base/features.h" -#endif +#endif // BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED) using SystemNetworkContextManagerBrowsertest = InProcessBrowserTest; @@ -78,7 +78,8 @@ static_params = SystemNetworkContextManager::GetHttpAuthStaticParamsForTesting(); EXPECT_EQ(dev_null, static_params->gssapi_library_name); -#endif +#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && + // !BUILDFLAG(IS_CHROMEOS_ASH) } IN_PROC_BROWSER_TEST_F(SystemNetworkContextManagerBrowsertest, AuthParams) {
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc index f088857..5f281b5 100644 --- a/chrome/browser/notifications/notification_platform_bridge_linux.cc +++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc
@@ -25,6 +25,7 @@ #include "base/i18n/number_formatting.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/metrics/histogram_macros.h" #include "base/strings/escape.h" @@ -1163,7 +1164,7 @@ scoped_refptr<dbus::Bus> bus_; - dbus::ObjectProxy* notification_proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> notification_proxy_ = nullptr; std::unordered_set<std::string> capabilities_;
diff --git a/chrome/browser/page_load_metrics/integration_tests/total_input_delay_browsertest.cc b/chrome/browser/page_load_metrics/integration_tests/total_input_delay_browsertest.cc index e54da21..01f6ef60 100644 --- a/chrome/browser/page_load_metrics/integration_tests/total_input_delay_browsertest.cc +++ b/chrome/browser/page_load_metrics/integration_tests/total_input_delay_browsertest.cc
@@ -6,6 +6,7 @@ #include "base/test/trace_event_analyzer.h" #include "chrome/test/base/ui_test_utils.h" +#include "components/page_load_metrics/browser/page_load_metrics_test_waiter.h" #include "components/ukm/test_ukm_recorder.h" #include "content/public/test/browser_test.h" #include "content/public/test/hit_test_region_observer.h" @@ -62,9 +63,14 @@ PageLoad::kInteractiveTiming_TotalAdjustedInputDelayName, int64_t(0), 0); } -// Flaky on multiple platforms. https://crbug.com/1163677 -IN_PROC_BROWSER_TEST_F(TotalInputDelayIntegrationTest, - DISABLED_MultipleInputEvents) { +IN_PROC_BROWSER_TEST_F(TotalInputDelayIntegrationTest, MultipleInputEvents) { + auto waiter = std::make_unique<page_load_metrics::PageLoadMetricsTestWaiter>( + web_contents()); + waiter->AddPageExpectation(page_load_metrics::PageLoadMetricsTestWaiter:: + TimingField::kTotalInputDelay); + // In the test, we simulate 3 clicks, which generate 9 input delays for 3 + // pointerup, mouseup and click events respectively. + waiter->AddNumInputEventsExpectation(9); LoadHTML(R"HTML( <script type="text/javascript"> let eventCounts = {mouseup: 0, pointerup: 0, click: 0}; @@ -120,6 +126,8 @@ ASSERT_TRUE(EvalJs(web_contents(), "runtest()").ExtractBool()); + waiter->Wait(); + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL("about:blank"))); // Get all input delay recorded by UKM.
diff --git a/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.cc index 0f8d549..5f6a8f4 100644 --- a/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.cc
@@ -62,6 +62,17 @@ } page_load_metrics::PageLoadMetricsObserver::ObservePolicy +PortalPageLoadMetricsObserver::OnPrerenderStart( + content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) { + // TODO(https://crbug.com/1271055): Prerender doesn't support combined use + // with Portals. So, there is no case to start with prerendering to monitor + // Portals related metrics. + DCHECK(!navigation_handle->GetWebContents()->IsPortal()); + return STOP_OBSERVING; +} + +page_load_metrics::PageLoadMetricsObserver::ObservePolicy PortalPageLoadMetricsObserver::OnFencedFramesStart( content::NavigationHandle* navigation_handle, const GURL& currently_committed_url) {
diff --git a/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.h index d2d99168..d1de934 100644 --- a/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/portal_page_load_metrics_observer.h
@@ -28,6 +28,8 @@ ObservePolicy OnStart(content::NavigationHandle* navigation_handle, const GURL& currently_committed_url, bool started_in_foreground) override; + ObservePolicy OnPrerenderStart(content::NavigationHandle* navigation_handle, + const GURL& currently_committed_url) override; ObservePolicy OnFencedFramesStart( content::NavigationHandle* navigation_handle, const GURL& currently_committed_url) override;
diff --git a/chrome/browser/password_check/android/password_check_manager.cc b/chrome/browser/password_check/android/password_check_manager.cc index 8a81991..6ddaa9c6 100644 --- a/chrome/browser/password_check/android/password_check_manager.cc +++ b/chrome/browser/password_check/android/password_check_manager.cc
@@ -14,6 +14,8 @@ #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_util.h" +#include "components/password_manager/core/browser/password_ui_utils.h" +#include "components/password_manager/core/browser/ui/credential_ui_entry.h" #include "components/password_manager/core/browser/ui/insecure_credentials_manager.h" #include "components/password_manager/core/browser/well_known_change_password_util.h" #include "components/password_manager/core/common/password_manager_features.h" @@ -25,15 +27,36 @@ namespace { +using password_manager::PasswordForm; + std::u16string GetDisplayUsername(const std::u16string& username) { return username.empty() ? l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EMPTY_LOGIN) : username; } -} // namespace +// Returns all the usernames for credentials saved for `signon_realm`. If +// `is_using_account_store` is true, this method will only consider +// credentials saved in the account store. Otherwiser it will only consider +// credentials saved in the profile store. +std::vector<std::u16string> GetUsernamesForRealm( + const std::vector<password_manager::CredentialUIEntry>& credentials, + const std::string& signon_realm, + bool is_using_account_store) { + std::vector<std::u16string> usernames; + PasswordForm::Store store = is_using_account_store + ? PasswordForm::Store::kAccountStore + : PasswordForm::Store::kProfileStore; + for (const auto& credential : credentials) { + if (credential.signon_realm == signon_realm && + credential.stored_in.contains(store)) { + usernames.push_back(credential.username); + } + } + return usernames; +} -using password_manager::PasswordForm; +} // namespace using CredentialsView = password_manager::InsecureCredentialsManager::CredentialsView; @@ -144,11 +167,12 @@ const PasswordForm form = insecure_credentials_manager_.GetSavedPasswordsFor(credential)[0]; + bool is_using_account_store = form.IsUsingAccountStore(); credential_edit_bridge_ = CredentialEditBridge::MaybeCreate( std::move(form), CredentialEditBridge::IsInsecureCredential(true), - saved_passwords_presenter_.GetUsernamesForRealm( - credential.signon_realm, form.IsUsingAccountStore()), + GetUsernamesForRealm(saved_passwords_presenter_.GetSavedCredentials(), + credential.signon_realm, is_using_account_store), &saved_passwords_presenter_, nullptr, base::BindOnce(&PasswordCheckManager::OnEditUIDismissed, base::Unretained(this)),
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn index da66470..79623eb 100644 --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -69,6 +69,7 @@ deps = [ ":jni_headers", "//components/autofill/core/browser:browser", + "//components/crash/core/common:crash_key_lib", "//components/password_manager/core/browser:browser", "//components/password_manager/core/browser:password_form", "//components/password_manager/core/common:common", @@ -187,6 +188,7 @@ "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", + "//chrome/android:chrome_java", "//chrome/browser/flags:java", "//chrome/browser/loading_modal/android:java", "//chrome/browser/preferences:java",
diff --git a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java index 84e2708..1a5576f9 100644 --- a/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java +++ b/chrome/browser/password_manager/android/junit/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelperTest.java
@@ -4,6 +4,9 @@ package org.chromium.chrome.browser.password_manager; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.doAnswer; @@ -11,18 +14,20 @@ import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; +import android.content.Context; +import android.os.Bundle; import com.google.android.gms.common.api.ApiException; import com.google.android.gms.common.api.CommonStatusCodes; import com.google.android.gms.common.api.Status; import com.google.common.base.Optional; -import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -48,15 +53,18 @@ import org.chromium.chrome.browser.password_manager.CredentialManagerLauncher.CredentialManagerError; import org.chromium.chrome.browser.password_manager.PasswordCheckupClientHelper.PasswordCheckBackendException; import org.chromium.chrome.browser.password_manager.PasswordManagerHelper.PasswordCheckOperation; +import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.sync.SyncService; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.components.browser_ui.settings.SettingsLauncher; import org.chromium.components.prefs.PrefService; import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.base.GoogleServiceAuthError; +import org.chromium.components.signin.base.GoogleServiceAuthError.State; import org.chromium.components.sync.ModelType; import org.chromium.components.user_prefs.UserPrefs; import org.chromium.components.user_prefs.UserPrefsJni; @@ -166,15 +174,15 @@ @Test public void testSyncCheckFeatureNotEnabled() { when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(false); - Assert.assertFalse(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); - Assert.assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( + assertFalse(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); + assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( mSyncServiceMock)); } @Test public void testSyncCheckNoSyncConsent() { when(mSyncServiceMock.hasSyncConsent()).thenReturn(false); - Assert.assertFalse( + assertFalse( PasswordManagerHelper.isSyncingPasswordsWithNoCustomPassphrase(mSyncServiceMock)); } @@ -182,8 +190,8 @@ public void testSyncPasswordsDisabled() { when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(true); when(mSyncServiceMock.getChosenDataTypes()).thenReturn(Collections.EMPTY_SET); - Assert.assertFalse(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); - Assert.assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( + assertFalse(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); + assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( mSyncServiceMock)); } @@ -192,7 +200,7 @@ when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(true); when(mSyncServiceMock.getChosenDataTypes()) .thenReturn(CollectionUtil.newHashSet(ModelType.PASSWORDS)); - Assert.assertTrue(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); + assertTrue(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); } @Test @@ -202,8 +210,8 @@ .thenReturn(CollectionUtil.newHashSet(ModelType.PASSWORDS)); when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); when(mSyncServiceMock.isUsingExplicitPassphrase()).thenReturn(true); - Assert.assertTrue(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); - Assert.assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( + assertTrue(PasswordManagerHelper.hasChosenToSyncPasswords(mSyncServiceMock)); + assertFalse(PasswordManagerHelper.hasChosenToSyncPasswordsWithNoCustomPassphrase( mSyncServiceMock)); } @@ -214,7 +222,7 @@ .thenReturn(CollectionUtil.newHashSet(ModelType.PASSWORDS)); when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); when(mSyncServiceMock.isUsingExplicitPassphrase()).thenReturn(false); - Assert.assertTrue( + assertTrue( PasswordManagerHelper.isSyncingPasswordsWithNoCustomPassphrase(mSyncServiceMock)); } @@ -225,12 +233,72 @@ .thenReturn(CollectionUtil.newHashSet(ModelType.PASSWORDS)); when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); when(mSyncServiceMock.isUsingExplicitPassphrase()).thenReturn(true); - Assert.assertFalse( + assertFalse( PasswordManagerHelper.isSyncingPasswordsWithNoCustomPassphrase(mSyncServiceMock)); } @Test @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testCanUseUpmCheckup() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.getChosenDataTypes()) + .thenReturn(CollectionUtil.newHashSet(ModelType.PASSWORDS)); + when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(true); + when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(true); + + assertTrue(PasswordManagerHelper.canUseUpmCheckup()); + SyncService.resetForTests(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testCanNotUseUpmCheckupWithoutPasswordType() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(true); + when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(true); + + assertFalse(PasswordManagerHelper.canUseUpmCheckup()); + SyncService.resetForTests(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testCanNotUseUpmCheckupWithoutSyncService() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.isEngineInitialized()).thenReturn(false); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(true); + + assertFalse(PasswordManagerHelper.canUseUpmCheckup()); + SyncService.resetForTests(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testCanNotUseUpmCheckupWithoutSyncConsent() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(false); + + assertFalse(PasswordManagerHelper.canUseUpmCheckup()); + SyncService.resetForTests(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testCanNotUseUpmCheckupWithAuthError() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.isEngineInitialized()).thenReturn(true); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(true); + when(mSyncServiceMock.getAuthError()).thenReturn(State.INVALID_GAIA_CREDENTIALS); + + assertFalse(PasswordManagerHelper.canUseUpmCheckup()); + SyncService.resetForTests(); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) public void testLaunchesCredentialManagerSync() { chooseToSyncPasswordsWithoutCustomPassphrase(); @@ -245,6 +313,22 @@ @Test @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testShowPasswordSettingsNoSyncLaunchesOldUI() { + when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(false); + Context mockContext = mock(Context.class); + + PasswordManagerHelper.showPasswordSettings(mockContext, + ManagePasswordsReferrer.CHROME_SETTINGS, mSettingsLauncherMock, + mCredentialManagerLauncherMock, mSyncServiceMock, mModalDialogManagerSupplier); + + verify(mockContext).startActivity(any()); + verify(mSettingsLauncherMock) + .createSettingsActivityIntent( + eq(mockContext), eq(PasswordSettings.class.getName()), any(Bundle.class)); + } + + @Test + @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) public void testRecordsSuccessMetricsForAccountIntent() { chooseToSyncPasswordsWithoutCustomPassphrase(); setUpSuccessfulIntentFetchingForAccount(); @@ -252,16 +336,16 @@ PasswordManagerHelper.showPasswordSettings(ContextUtils.getApplicationContext(), ManagePasswordsReferrer.CHROME_SETTINGS, mSettingsLauncherMock, mCredentialManagerLauncherMock, mSyncServiceMock, mModalDialogManagerSupplier); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_LATENCY_HISTOGRAM, 0)); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_SUCCESS_HISTOGRAM, 1)); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( ACCOUNT_GET_INTENT_ERROR_HISTOGRAM)); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, 1)); } @@ -276,16 +360,16 @@ ManagePasswordsReferrer.CHROME_SETTINGS, mSettingsLauncherMock, mCredentialManagerLauncherMock, mSyncServiceMock, mModalDialogManagerSupplier); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_ERROR_HISTOGRAM, CredentialManagerError.API_ERROR)); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_SUCCESS_HISTOGRAM, 0)); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( ACCOUNT_GET_INTENT_LATENCY_HISTOGRAM)); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( ACCOUNT_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM)); } @@ -301,21 +385,38 @@ ManagePasswordsReferrer.CHROME_SETTINGS, mSettingsLauncherMock, mCredentialManagerLauncherMock, mSyncServiceMock, mModalDialogManagerSupplier); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_LATENCY_HISTOGRAM, 0)); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_GET_INTENT_SUCCESS_HISTOGRAM, 1)); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( ACCOUNT_GET_INTENT_ERROR_HISTOGRAM)); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( ACCOUNT_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, 0)); } @Test + @DisableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) + public void testNoSyncShowPasswordCheckupImmediatelyReturns() { + SyncService.overrideForTests(mSyncServiceMock); + when(mSyncServiceMock.isSyncFeatureEnabled()).thenReturn(false); + when(mSyncServiceMock.hasSyncConsent()).thenReturn(false); + setUpSuccessfulIntentFetchingForAccount(); + + PasswordManagerHelper.showPasswordCheckup(ContextUtils.getApplicationContext(), + PasswordCheckReferrer.SAFETY_CHECK, mPasswordCheckupClientHelperMock, + mSyncServiceMock, mModalDialogManagerSupplier); + + verify(mCredentialManagerLauncherMock, times(0)) + .getCredentialManagerIntentForAccount(eq(ManagePasswordsReferrer.CHROME_SETTINGS), + eq(TEST_EMAIL_ADDRESS), any(Callback.class), any(Callback.class)); + } + + @Test @EnableFeatures(ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ANDROID) public void testLaunchesPasswordCheckupSync() { chooseToSyncPasswordsWithoutCustomPassphrase(); @@ -365,7 +466,7 @@ mSyncServiceMock, mModalDialogManagerSupplier); checkPasswordCheckupSuccessHistogramsForOperation( PasswordCheckOperation.GET_PASSWORD_CHECKUP_INTENT); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, 1)); } @@ -384,7 +485,7 @@ checkPasswordCheckupFailureHistogramsForOperation( PasswordCheckOperation.GET_PASSWORD_CHECKUP_INTENT, CredentialManagerError.UNCATEGORIZED, OptionalInt.empty()); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM)); } @@ -404,7 +505,7 @@ CredentialManagerError.API_ERROR, OptionalInt.of(CommonStatusCodes.DEVELOPER_ERROR)); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM)); } @@ -508,7 +609,7 @@ mSyncServiceMock, mModalDialogManagerSupplier); checkPasswordCheckupSuccessHistogramsForOperation( PasswordCheckOperation.GET_PASSWORD_CHECKUP_INTENT); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( PASSWORD_CHECKUP_LAUNCH_CREDENTIAL_MANAGER_SUCCESS_HISTOGRAM, 0)); } @@ -729,7 +830,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -748,7 +849,7 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); @@ -770,12 +871,12 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); mLoadingDialogCoordinatorObserver.onDismissable(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); @@ -796,7 +897,7 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); @@ -814,7 +915,7 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); @@ -822,7 +923,7 @@ .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); mLoadingDialogCoordinatorObserver.onDismissedWithState( LoadingModalDialogCoordinator.State.CANCELLED); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); @@ -839,7 +940,7 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); @@ -857,7 +958,7 @@ PasswordManagerHelper.launchTheCredentialManager(ManagePasswordsReferrer.CHROME_SETTINGS, mCredentialManagerLauncherMock, mSyncServiceMock, mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM)); @@ -865,7 +966,7 @@ .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); mLoadingDialogCoordinatorObserver.onDismissedWithState( LoadingModalDialogCoordinator.State.TIMED_OUT); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); @@ -885,7 +986,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -906,7 +1007,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_CREDENTIAL_MANAGER_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -926,7 +1027,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -948,7 +1049,7 @@ ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); @@ -968,12 +1069,12 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); mLoadingDialogCoordinatorObserver.onDismissable(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_LOADED)); @@ -994,7 +1095,7 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); @@ -1013,7 +1114,7 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); @@ -1021,7 +1122,7 @@ .thenReturn(LoadingModalDialogCoordinator.State.CANCELLED); mLoadingDialogCoordinatorObserver.onDismissedWithState( LoadingModalDialogCoordinator.State.CANCELLED); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_CANCELLED)); @@ -1039,7 +1140,7 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); @@ -1058,7 +1159,7 @@ mPasswordCheckupClientHelperMock, Optional.of(TEST_EMAIL_ADDRESS), mLoadingModalDialogCoordinator); - Assert.assertEquals(0, + assertEquals(0, RecordHistogram.getHistogramTotalCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM)); @@ -1066,7 +1167,7 @@ .thenReturn(LoadingModalDialogCoordinator.State.TIMED_OUT); mLoadingDialogCoordinatorObserver.onDismissedWithState( LoadingModalDialogCoordinator.State.TIMED_OUT); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.SHOWN_TIMED_OUT)); @@ -1088,7 +1189,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -1109,7 +1210,7 @@ verify(mLoadingModalDialogCoordinator).dismiss(); - Assert.assertEquals(1, + assertEquals(1, RecordHistogram.getHistogramValueCountForTesting( LOADING_DIALOG_PASSWORD_CHECKUP_HISTOGRAM, PasswordManagerHelper.LoadingDialogOutcome.NOT_SHOWN_LOADED)); @@ -1239,18 +1340,18 @@ @PasswordCheckOperation int operation) { final String nameWithSuffix = PASSWORD_CHECKUP_HISTOGRAM_BASE + "." + getPasswordCheckupHistogramSuffixForOperation(operation); - Assert.assertEquals(1, + assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".Success", 1)); - Assert.assertEquals(1, + assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".Latency", 0)); - Assert.assertEquals(0, + assertEquals(0, ShadowRecordHistogram.getHistogramTotalCountForTesting( nameWithSuffix + ".ErrorLatency")); - Assert.assertEquals(0, + assertEquals(0, ShadowRecordHistogram.getHistogramTotalCountForTesting(nameWithSuffix + ".Error")); - Assert.assertEquals(0, + assertEquals(0, ShadowRecordHistogram.getHistogramTotalCountForTesting( nameWithSuffix + ".ApiError")); } @@ -1259,24 +1360,24 @@ @PasswordCheckOperation int operation, int errorCode, OptionalInt apiErrorCode) { final String nameWithSuffix = PASSWORD_CHECKUP_HISTOGRAM_BASE + "." + getPasswordCheckupHistogramSuffixForOperation(operation); - Assert.assertEquals(1, + assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".Success", 0)); - Assert.assertEquals(0, + assertEquals(0, ShadowRecordHistogram.getHistogramTotalCountForTesting( nameWithSuffix + ".Latency")); - Assert.assertEquals(1, + assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".ErrorLatency", 0)); - Assert.assertEquals(1, + assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".Error", errorCode)); apiErrorCode.ifPresentOrElse(apiError - -> Assert.assertEquals(1, + -> assertEquals(1, ShadowRecordHistogram.getHistogramValueCountForTesting( nameWithSuffix + ".APIError", apiError)), () - -> Assert.assertEquals(0, + -> assertEquals(0, ShadowRecordHistogram.getHistogramTotalCountForTesting( nameWithSuffix + ".APIError"))); }
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.cc b/chrome/browser/password_manager/android/password_store_android_backend.cc index fdaa2b7..674ce27 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend.cc
@@ -11,6 +11,7 @@ #include "base/barrier_callback.h" #include "base/callback.h" +#include "base/debug/crash_logging.h" #include "base/debug/dump_without_crashing.h" #include "base/location.h" #include "base/memory/weak_ptr.h" @@ -27,6 +28,7 @@ #include "chrome/browser/password_manager/android/password_sync_controller_delegate_android.h" #include "chrome/browser/password_manager/android/password_sync_controller_delegate_bridge_impl.h" #include "components/autofill/core/browser/autofill_regexes.h" +#include "components/crash/core/common/crash_key.h" #include "components/password_manager/core/browser/login_database.h" #include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/browser/password_store_backend.h" @@ -250,6 +252,44 @@ : PasswordStoreBackendError::kRecoverable; } +// TODO(crbug.com/1324588): Remove once the dumps are replaced by DCHECK. +void SendDumpWithInfo(absl::optional<std::string> signon_realm, + absl::optional<std::string> origin, + absl::optional<bool> is_username_empty, + absl::optional<bool> is_blocklisted, + absl::optional<PasswordForm::Scheme> scheme) { + static crash_reporter::CrashKeyString<1024> signon_realm_key( + "PwdMgr.BackendError.signon_realm"); + static crash_reporter::CrashKeyString<1024> origin_key( + "PwdMgr.BackendError.origin"); + static crash_reporter::CrashKeyString<6> is_username_empty_key( + "PwdMgr.BackendError.is_username_empty"); + static crash_reporter::CrashKeyString<6> is_blocklisted_key( + "PwdMgr.BackendError.is_blocklisted"); + static crash_reporter::CrashKeyString<6> scheme_key( + "PwdMgr.BackendError.scheme"); + + if (signon_realm.has_value()) { + signon_realm_key.Set(signon_realm->substr(0, 1020)); + } + if (origin.has_value()) { + origin_key.Set(origin->substr(0, 1020)); + } + if (is_username_empty.has_value()) { + is_username_empty_key.Set(is_username_empty.value() ? "true" : "false"); + } + if (is_blocklisted.has_value()) { + is_blocklisted_key.Set(is_blocklisted.value() ? "true" : "false"); + } + if (scheme.has_value()) { + scheme_key.Set(base::NumberToString(static_cast<int>(scheme.value()))); + } + + base::debug::DumpWithoutCrashing(); + signon_realm_key.Clear(); + origin_key.Clear(); +} + } // namespace class PasswordStoreAndroidBackend::ClearAllLocalPasswordsMetricRecorder { @@ -295,15 +335,19 @@ PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler( LoginsOrErrorReply callback, - PasswordStoreBackendMetricsRecorder metrics_recorder) + PasswordStoreBackendMetricsRecorder metrics_recorder, + base::OnceClosure crash_dump_callback) : success_callback_(std::move(callback)), - metrics_recorder_(std::move(metrics_recorder)) {} + metrics_recorder_(std::move(metrics_recorder)), + crash_dump_callback_(std::move(crash_dump_callback)) {} PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler( PasswordChangesOrErrorReply callback, - PasswordStoreBackendMetricsRecorder metrics_recorder) + PasswordStoreBackendMetricsRecorder metrics_recorder, + base::OnceClosure crash_dump_callback) : success_callback_(std::move(callback)), - metrics_recorder_(std::move(metrics_recorder)) {} + metrics_recorder_(std::move(metrics_recorder)), + crash_dump_callback_(std::move(crash_dump_callback)) {} PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler( JobReturnHandler&&) = default; @@ -320,6 +364,10 @@ std::move(error)); } +void PasswordStoreAndroidBackend::JobReturnHandler::SendCrashDump() { + std::move(crash_dump_callback_).Run(); +} + base::TimeDelta PasswordStoreAndroidBackend::JobReturnHandler::GetElapsedTimeSinceStart() const { @@ -443,7 +491,9 @@ PasswordChangesOrErrorReply callback) { JobId job_id = bridge_->AddLogin(form, GetAccount(sync_delegate_->GetSyncingAccount())); - QueueNewJob(job_id, std::move(callback), MetricInfix("AddLoginAsync")); + QueueNewJob(job_id, std::move(callback), MetricInfix("AddLoginAsync"), + form.signon_realm, form.url.spec(), form.username_value.empty(), + form.blocked_by_user, form.scheme); } void PasswordStoreAndroidBackend::UpdateLoginAsync( @@ -451,7 +501,9 @@ PasswordChangesOrErrorReply callback) { JobId job_id = bridge_->UpdateLogin( form, GetAccount(sync_delegate_->GetSyncingAccount())); - QueueNewJob(job_id, std::move(callback), MetricInfix("UpdateLoginAsync")); + QueueNewJob(job_id, std::move(callback), MetricInfix("UpdateLoginAsync"), + form.signon_realm, form.url.spec(), form.username_value.empty(), + form.blocked_by_user, form.scheme); } void PasswordStoreAndroidBackend::RemoveLoginAsync( @@ -674,6 +726,10 @@ // TODO(crbug.com/1324588): DCHECK_EQ(api_error_code, // AndroidBackendAPIErrorCode::kDeveloperError) to catch dev errors. DCHECK_EQ(AndroidBackendErrorType::kExternalError, error.type); + if (error.api_error_code == + static_cast<int>(AndroidBackendAPIErrorCode::kDeveloperError)) { + reply->SendCrashDump(); + } RecordApiErrorInCombinationWithSyncStatus(error.api_error_code.value(), sync_service_->GetAuthError()); @@ -718,15 +774,25 @@ } template <typename Callback> -void PasswordStoreAndroidBackend::QueueNewJob(JobId job_id, - Callback callback, - MetricInfix metric_infix) { +void PasswordStoreAndroidBackend::QueueNewJob( + JobId job_id, + Callback callback, + MetricInfix metric_infix, + absl::optional<std::string> signon_realm, + absl::optional<std::string> origin, + absl::optional<bool> is_username_empty, + absl::optional<bool> is_blocklisted, + absl::optional<PasswordForm::Scheme> scheme) { DCHECK_CALLED_ON_VALID_SEQUENCE(main_sequence_checker_); request_for_job_.emplace( job_id, - JobReturnHandler(std::move(callback), PasswordStoreBackendMetricsRecorder( - BackendInfix("AndroidBackend"), - std::move(metric_infix)))); + JobReturnHandler( + std::move(callback), + PasswordStoreBackendMetricsRecorder(BackendInfix("AndroidBackend"), + std::move(metric_infix)), + base::BindOnce(SendDumpWithInfo, std::move(signon_realm), + std::move(origin), std::move(is_username_empty), + std::move(is_blocklisted), std::move(scheme)))); } absl::optional<PasswordStoreAndroidBackend::JobReturnHandler> @@ -747,9 +813,10 @@ FormToSignonRealmQuery(form, include_psl), GetAccount(sync_delegate_->GetSyncingAccount())); QueueNewJob(job_id, - base::BindOnce(&ValidateSignonRealm, std::move(form), include_psl, + base::BindOnce(&ValidateSignonRealm, form, include_psl, std::move(callback)), - MetricInfix("GetLoginsAsync")); + MetricInfix("GetLoginsAsync"), form.signon_realm, + form.url.spec()); } void PasswordStoreAndroidBackend::FilterAndDisableAutoSignIn(
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.h b/chrome/browser/password_manager/android/password_store_android_backend.h index b775c70..3ab1db87d 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend.h +++ b/chrome/browser/password_manager/android/password_store_android_backend.h
@@ -19,6 +19,7 @@ #include "chrome/browser/password_manager/android/password_manager_lifecycle_helper.h" #include "chrome/browser/password_manager/android/password_store_android_backend_bridge.h" #include "chrome/browser/password_manager/android/password_sync_controller_delegate_android.h" +#include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/browser/password_store_backend.h" #include "components/password_manager/core/browser/password_store_backend_metrics_recorder.h" #include "components/password_manager/core/browser/password_store_util.h" @@ -80,9 +81,11 @@ JobReturnHandler(); JobReturnHandler(LoginsOrErrorReply callback, - PasswordStoreBackendMetricsRecorder metrics_recorder); + PasswordStoreBackendMetricsRecorder metrics_recorder, + base::OnceClosure crash_dump_callback); JobReturnHandler(PasswordChangesOrErrorReply callback, - PasswordStoreBackendMetricsRecorder metrics_recorder); + PasswordStoreBackendMetricsRecorder metrics_recorder, + base::OnceClosure crash_dump_callback); JobReturnHandler(JobReturnHandler&&); JobReturnHandler& operator=(JobReturnHandler&&); ~JobReturnHandler(); @@ -99,11 +102,14 @@ void RecordMetrics(absl::optional<AndroidBackendError> error) const; base::TimeDelta GetElapsedTimeSinceStart() const; + // TODO(crbug.com/1324588): Remove after disabling crash dumps. + void SendCrashDump(); private: absl::variant<LoginsOrErrorReply, PasswordChangesOrErrorReply> success_callback_; PasswordStoreBackendMetricsRecorder metrics_recorder_; + base::OnceClosure crash_dump_callback_; }; using JobId = PasswordStoreAndroidBackendBridge::JobId; @@ -159,8 +165,17 @@ void OnError(PasswordStoreAndroidBackendBridge::JobId job_id, AndroidBackendError error) override; + // TODO(crbug.com/1324588): Remove signon_realm and origin after disabling + // crash dumps. template <typename Callback> - void QueueNewJob(JobId job_id, Callback callback, MetricInfix metric_infix); + void QueueNewJob(JobId job_id, + Callback callback, + MetricInfix metric_infix, + absl::optional<std::string> signon_realm = absl::nullopt, + absl::optional<std::string> origin = absl::nullopt, + absl::optional<bool> is_username_empty = absl::nullopt, + absl::optional<bool> is_blocklisted = absl::nullopt, + absl::optional<PasswordForm::Scheme> scheme = absl::nullopt); absl::optional<JobReturnHandler> GetAndEraseJob(JobId job_id); // Gets logins matching |form|.
diff --git a/chrome/browser/platform_util_linux.cc b/chrome/browser/platform_util_linux.cc index a17fd8e..e5fbf3e 100644 --- a/chrome/browser/platform_util_linux.cc +++ b/chrome/browser/platform_util_linux.cc
@@ -14,6 +14,7 @@ #include "base/callback_list.h" #include "base/containers/contains.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "base/posix/eintr_wrapper.h" #include "base/process/kill.h" @@ -276,8 +277,8 @@ } scoped_refptr<dbus::Bus> bus_; - dbus::ObjectProxy* dbus_proxy_ = nullptr; - dbus::ObjectProxy* object_proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> dbus_proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> object_proxy_ = nullptr; absl::optional<bool> prefer_filemanager_interface_;
diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc index 3bf3857..fa7ae481 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc
@@ -65,6 +65,7 @@ #include "base/files/file_util.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" @@ -550,7 +551,7 @@ fd_watch_controller_; // The ProcessSingleton::LinuxWatcher that owns us. - ProcessSingleton::LinuxWatcher* const parent_; + const raw_ptr<ProcessSingleton::LinuxWatcher> parent_; // A reference to the UI task runner. scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; @@ -606,7 +607,7 @@ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; // The ProcessSingleton that owns us. - ProcessSingleton* const parent_; + const raw_ptr<ProcessSingleton> parent_; std::set<std::unique_ptr<SocketReader>, base::UniquePtrComparator> readers_; };
diff --git a/chrome/browser/process_singleton_posix_unittest.cc b/chrome/browser/process_singleton_posix_unittest.cc index 063f18c9..5be7f4ed 100644 --- a/chrome/browser/process_singleton_posix_unittest.cc +++ b/chrome/browser/process_singleton_posix_unittest.cc
@@ -23,6 +23,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/posix/eintr_wrapper.h" #include "base/strings/stringprintf.h" #include "base/synchronization/waitable_event.h" @@ -264,7 +265,7 @@ base::WaitableEvent signal_event_; std::unique_ptr<base::Thread> worker_thread_; - TestableProcessSingleton* process_singleton_on_thread_; + raw_ptr<TestableProcessSingleton> process_singleton_on_thread_; }; } // namespace
diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc index 1d89505..1504fba 100644 --- a/chrome/browser/profiles/profile_destroyer.cc +++ b/chrome/browser/profiles/profile_destroyer.cc
@@ -53,9 +53,6 @@ // static void ProfileDestroyer::DestroyProfileWhenAppropriate(Profile* const profile) { - if (!profile) // profile might have been reset in ResetPendingDestroyers(); - return; - TRACE_EVENT("shutdown", "ProfileDestroyer::DestroyProfileWhenAppropriate", [&](perfetto::EventContext ctx) { auto* proto = @@ -64,46 +61,27 @@ proto->set_profile_ptr(reinterpret_cast<uint64_t>(profile)); proto->set_is_off_the_record(profile->IsOffTheRecord()); }); + + DCHECK(profile); profile->MaybeSendDestroyedNotification(); - // Profiles may have DestroyProfileWhenAppropriate() called before their - // RenderProcessHosts are gone. When this happens, we need to defer their - // deletion. - // - // TODO(arthursonzogni): Explore adding a ScopedProfileKeepAlive in - // RenderProcessHost. This would remove the need of a ProfileDestroyer waiting - // for RenderProcessHost deletion. It will make Chrome more stable and fix - // some UAF bugs. - // - // Note: The original profile waits for both its own RenderProcessHost and its - // OffTheRecord Profiles's RenderProcessHosts. It is slightly safer. OTR - // profiles holds a ScopedProfileKeepAlive on their parent and are deleted - // first, so this seems unnecessary, but ScopedProfileKeepAlive logic is - // ignored during shutdown and by the System Profile do not either. - HostSet profile_hosts; - GetHostsForProfile(&profile_hosts, profile); - for (Profile* otr_profile : profile->GetAllOffTheRecordProfiles()) { - GetHostsForProfile(&profile_hosts, otr_profile); - } - - if (!profile_hosts.empty()) { - // The instance will destroy itself once all (non-spare) render process - // hosts referring to it are properly terminated. This happens in the two - // "final" state: Retry() and Timeout(). - new ProfileDestroyer(profile, profile_hosts); + if (!profile->IsOffTheRecord()) { + DestroyOriginalProfileNow(profile); return; } - DestroyProfileNow(profile); -} - -// static -void ProfileDestroyer::DestroyPendingProfilesForShutdown() { - while (!PendingDestroyers().empty()) { - ProfileDestroyer* destroyer = *(PendingDestroyers().begin()); - // Destroys `destroyer`and removes it from `PendingDestroyers()`: - destroyer->Timeout(); + // Off-the-record profiles have DestroyProfileWhenAppropriate() called before + // their RenderProcessHosts are destroyed, to ensure private data is erased + // promptly. In this case, defer deletion until all the hosts are gone. + HostSet profile_hosts = GetHostsForProfile(profile); + if (profile_hosts.empty()) { + DestroyOffTheRecordProfileNow(profile); + return; } + + // The instance will destroy itself once all (non-spare) render process + // hosts referring to it are properly terminated. + new ProfileDestroyer(profile, &profile_hosts); } // static @@ -118,7 +96,12 @@ proto->set_profile_ptr(reinterpret_cast<uint64_t>(profile)); proto->set_otr_profile_id(profile->GetOTRProfileID().ToString()); }); - + if (ResetPendingDestroyers(profile)) { + // We want to signal this in debug builds so that we don't lose sight of + // these potential leaks, but we handle it in release so that we don't + // crash or corrupt profile data on disk. + NOTREACHED() << "A render process host wasn't destroyed early enough."; + } DCHECK(profile->GetOriginalProfile()); profile->GetOriginalProfile()->DestroyOffTheRecordProfile(profile); UMA_HISTOGRAM_ENUMERATION("Profile.Destroyer.OffTheRecord", @@ -126,21 +109,6 @@ } // static -void ProfileDestroyer::DestroyProfileNow(Profile* const profile) { - if (!profile) // profile might have been reset in ResetPendingDestroyers(); - return; - - // Make sure we don't delete the same profile twice, otherwise this would have - // been a UAF. - ResetPendingDestroyers(profile); - - if (profile->IsOffTheRecord()) - DestroyOffTheRecordProfileNow(profile); - else - DestroyOriginalProfileNow(profile); -} - -// static void ProfileDestroyer::DestroyOriginalProfileNow(Profile* const profile) { DCHECK(profile); DCHECK(!profile->IsOffTheRecord()); @@ -152,21 +120,20 @@ proto->set_profile_ptr(reinterpret_cast<uint64_t>(profile)); }); - // With DestroyProfileOnBrowserClose and --single-process, we need to clean up - // the RPH first. Single-process mode does not support multiple Profiles, so - // this will not interfere with other Profiles. + HostSet all_profile_hosts = GetHostsForProfile(profile, true); if (base::FeatureList::IsEnabled(features::kDestroyProfileOnBrowserClose) && - content::RenderProcessHost::run_renderer_in_process()) { - HostSet rph; - GetHostsForProfile(&rph, profile, /*include_spare_rph=*/true); - if (!rph.empty()) { - content::RenderProcessHost::ShutDownInProcessRenderer(); - } + content::RenderProcessHost::run_renderer_in_process() && + !all_profile_hosts.empty()) { + // With DestroyProfileOnBrowserClose and --single-process, we need to clean + // up the RPH first. Single-process mode does not support multiple Profiles, + // so this will not interfere with other Profiles. + content::RenderProcessHost::ShutDownInProcessRenderer(); } #if DCHECK_IS_ON() // Save the raw pointers of profile and off-the-record profile for DCHECKing // on later. + HostSet profile_hosts = GetHostsForProfile(profile); void* profile_ptr = profile; std::vector<Profile*> otr_profiles = profile->GetAllOffTheRecordProfiles(); #endif // DCHECK_IS_ON() @@ -176,16 +143,11 @@ #if DCHECK_IS_ON() // Count the number of hosts that have dangling pointers to the freed Profile // and off-the-record Profile. - HostSet dangling_hosts; - HostSet dangling_hosts_for_otr; - GetHostsForProfile(&dangling_hosts, profile_ptr); - for (Profile* otr : otr_profiles) { - GetHostsForProfile(&dangling_hosts_for_otr, otr); - } - const size_t profile_hosts_count = dangling_hosts.size(); - const size_t off_the_record_profile_hosts_count = - dangling_hosts_for_otr.size(); + const size_t profile_hosts_count = GetHostsForProfile(profile_ptr).size(); base::debug::Alias(&profile_hosts_count); + size_t off_the_record_profile_hosts_count = 0; + for (Profile* otr : otr_profiles) + off_the_record_profile_hosts_count += GetHostsForProfile(otr).size(); base::debug::Alias(&off_the_record_profile_hosts_count); // |profile| is not off-the-record, so if |profile_hosts| is not empty then @@ -204,16 +166,19 @@ #endif // DCHECK_IS_ON() } -// static -void ProfileDestroyer::ResetPendingDestroyers(Profile* const profile) { +bool ProfileDestroyer::ResetPendingDestroyers(Profile* const profile) { + DCHECK(profile); + bool found = false; for (auto* i : PendingDestroyers()) { if (i->profile_ == profile) { i->profile_ = nullptr; + found = true; } } + return found; } -ProfileDestroyer::ProfileDestroyer(Profile* const profile, const HostSet& hosts) +ProfileDestroyer::ProfileDestroyer(Profile* const profile, HostSet* hosts) : profile_(profile) { TRACE_EVENT("shutdown", "ProfileDestroyer::ProfileDestroyer", [&](perfetto::EventContext ctx) { @@ -221,19 +186,18 @@ ctx.event<perfetto::protos::pbzero::ChromeTrackEvent>() ->set_chrome_profile_destroyer(); proto->set_profile_ptr(reinterpret_cast<uint64_t>(profile)); - proto->set_host_count_at_creation(hosts.size()); + proto->set_host_count_at_creation(hosts->size()); }); - DCHECK(!hosts.empty()); PendingDestroyers().insert(this); - for (auto* host : hosts) + for (auto* host : *hosts) observations_.AddObservation(host); - DCHECK(observations_.IsObservingAnySource()); - - // We don't want to wait for RenderProcessHost to be destroyed longer than - // kTimerDelaySeconds. - timer_.Start(FROM_HERE, base::Seconds(kTimerDelaySeconds), - base::BindOnce(&ProfileDestroyer::Timeout, - weak_ptr_factory_.GetWeakPtr())); + // If we are going to wait for render process hosts, we don't want to do it + // for longer than kTimerDelaySeconds. + if (observations_.IsObservingAnySource()) { + timer_.Start(FROM_HERE, base::Seconds(kTimerDelaySeconds), + base::BindOnce(&ProfileDestroyer::DestroyProfile, + weak_ptr_factory_.GetWeakPtr())); + } } ProfileDestroyer::~ProfileDestroyer() { @@ -247,6 +211,11 @@ observations_.GetSourcesCount()); }); + // Check again, in case other render hosts were added while we were + // waiting for the previous ones to go away... + if (profile_) + DestroyProfileWhenAppropriate(profile_); + // Don't wait for pending registrations, if any, these hosts are buggy. // Note: this can happen, but if so, it's better to crash here than wait // for the host to dereference a deleted Profile. http://crbug.com/248625 @@ -274,38 +243,46 @@ proto->set_render_process_host_ptr(reinterpret_cast<uint64_t>(host)); }); observations_.RemoveObservation(host); - if (observations_.IsObservingAnySource()) + if (!observations_.IsObservingAnySource()) { + // Delay the destruction one step further in case other observers need to + // look at the profile attached to the host. + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(&ProfileDestroyer::DestroyProfile, + weak_ptr_factory_.GetWeakPtr())); + } +} + +void ProfileDestroyer::DestroyProfile() { + // We might have been cancelled externally before the timer expired. + if (!profile_) { + delete this; return; + } - // This instance is no more observing any RenderProcessHost. They are all - // deleted. It is time to retry deleting the profile. - // - // Note that this can loop several time, because some new RenderProcessHost - // might have been added in the meantime. - // TODO(arthursonzogni): Consider adding some TTL logic, because this might - // (unlikely) retry for a long time. - // - // Delay the retry one step further in case other observers need to look at - // the profile attached to the host. - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, - base::BindOnce(&ProfileDestroyer::Retry, weak_ptr_factory_.GetWeakPtr())); -} + DCHECK(profile_->IsOffTheRecord()); + DCHECK(profile_->GetOriginalProfile()); + profile_->GetOriginalProfile()->DestroyOffTheRecordProfile(profile_); -void ProfileDestroyer::Timeout() { - DestroyProfileNow(profile_); - delete this; // Final state. -} +#if BUILDFLAG(IS_ANDROID) + // It is possible on Android platform that more than one destroyer + // is instantiated to delete a single profile. Reset the others to + // avoid UAF. See https://crbug.com/1029677. + ResetPendingDestroyers(profile_); +#else + profile_ = nullptr; +#endif -void ProfileDestroyer::Retry() { - DestroyProfileWhenAppropriate(profile_); - delete this; // Final state. + // And stop the timer so we can be released early too. + timer_.Stop(); + + delete this; } // static -void ProfileDestroyer::GetHostsForProfile(HostSet* out, - void* const profile_ptr, - bool include_spare_rph) { +ProfileDestroyer::HostSet ProfileDestroyer::GetHostsForProfile( + void* const profile_ptr, + bool include_spare_rph) { + HostSet hosts; for (content::RenderProcessHost::iterator iter( content::RenderProcessHost::AllHostsIterator()); !iter.IsAtEnd(); iter.Advance()) { @@ -328,6 +305,7 @@ proto->set_render_process_host_ptr( reinterpret_cast<uint64_t>(render_process_host)); }); - out->insert(render_process_host); + hosts.insert(render_process_host); } + return hosts; }
diff --git a/chrome/browser/profiles/profile_destroyer.h b/chrome/browser/profiles/profile_destroyer.h index 38afdef..126a9c2 100644 --- a/chrome/browser/profiles/profile_destroyer.h +++ b/chrome/browser/profiles/profile_destroyer.h
@@ -27,33 +27,23 @@ // Ownership of the profile is passed to profile destroyer and the profile // should not be used after this call. static void DestroyProfileWhenAppropriate(Profile* const profile); - - // Force destroy all the profiles pending deletion. This is called by the - // ProfileManager during shutdown. - static void DestroyPendingProfilesForShutdown(); - ProfileDestroyer(const ProfileDestroyer&) = delete; ProfileDestroyer& operator=(const ProfileDestroyer&) = delete; private: friend class ProfileImpl; + typedef std::set<content::RenderProcessHost*> HostSet; + friend class base::RefCounted<ProfileDestroyer>; - using HostSet = std::set<content::RenderProcessHost*>; - - ProfileDestroyer(Profile* const profile, const HostSet& hosts); + ProfileDestroyer(Profile* const profile, HostSet* hosts); ~ProfileDestroyer() override; // content::RenderProcessHostObserver override. void RenderProcessHostDestroyed(content::RenderProcessHost* host) override; - // Two final state for the ProfileDestroyer instance: - // - Timeout(): It still exists some RenderProcessHost. Force delete the - // profile. - // - Retry(): Every observed RenderProcessHost have been deleted. We can try - // again destroying the profile. - void Retry(); - void Timeout(); + // Called by the timer to cancel the pending destruction and do it now. + void DestroyProfile(); // Fetch the list of render process hosts that still point to |profile_ptr|. // |profile_ptr| is a void* because the Profile object may be freed. Only @@ -61,12 +51,8 @@ // // If |include_spare_rph| is true, include spare render process hosts in the // output. - static void GetHostsForProfile(HostSet* out, - void* const profile_ptr, - bool include_spare_rph = false); - - // Destroys a profile immediately. - static void DestroyProfileNow(Profile* const profile); + static HostSet GetHostsForProfile(void* const profile_ptr, + bool include_spare_rph = false); // Destroys an Original (non-off-the-record) profile immediately. static void DestroyOriginalProfileNow(Profile* const profile); @@ -76,8 +62,9 @@ static void DestroyOffTheRecordProfileNow(Profile* const profile); // Reset pending destroyers whose target profile matches the given one - // to make it stop attempting to destroy it. - static void ResetPendingDestroyers(Profile* const profile); + // to make it stop attempting to destroy it. Returns true if any object + // object was found to match and get reset. + static bool ResetPendingDestroyers(Profile* const profile); // We don't want to wait forever, so we have a cancellation timer. base::OneShotTimer timer_;
diff --git a/chrome/browser/profiles/profile_destroyer_unittest.cc b/chrome/browser/profiles/profile_destroyer_unittest.cc index 4917ead..25885bc 100644 --- a/chrome/browser/profiles/profile_destroyer_unittest.cc +++ b/chrome/browser/profiles/profile_destroyer_unittest.cc
@@ -4,256 +4,115 @@ #include "chrome/browser/profiles/profile_destroyer.h" -#include "base/feature_list.h" #include "base/memory/raw_ptr.h" #include "base/run_loop.h" -#include "build/buildflag.h" -#include "chrome/browser/browser_features.h" -#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h" -#include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" -#include "chrome/test/base/testing_browser_process.h" +#include "chrome/test/base/browser_with_test_window_test.h" #include "chrome/test/base/testing_profile.h" -#include "chrome/test/base/testing_profile_manager.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/site_instance.h" -#include "content/public/test/browser_task_environment.h" -#include "content/public/test/test_renderer_host.h" -#include "testing/gtest/include/gtest/gtest.h" -class ProfileDestroyerTest : public testing::Test, +class ProfileDestroyerTest : public BrowserWithTestWindowTest, public testing::WithParamInterface<bool> { public: - ProfileDestroyerTest() = default; + ProfileDestroyerTest() : is_primary_otr_(GetParam()) {} + ProfileDestroyerTest(const ProfileDestroyerTest&) = delete; ProfileDestroyerTest& operator=(const ProfileDestroyerTest&) = delete; - void SetUp() override { ASSERT_TRUE(profile_manager_.SetUp()); } - - TestingProfile* original_profile() { return original_profile_; } - TestingProfile* otr_profile() { return otr_profile_; } - - void CreateOriginalProfile() { - original_profile_ = profile_manager_.CreateTestingProfile("foo"); - original_profile_->SetProfileDestructionObserver( + void SetUp() override { + BrowserWithTestWindowTest::SetUp(); + GetOriginalProfile()->SetProfileDestructionObserver( base::BindOnce(&ProfileDestroyerTest::SetOriginalProfileDestroyed, base::Unretained(this))); - original_profile_keep_alive_ = std::make_unique<ScopedProfileKeepAlive>( - original_profile_, ProfileKeepAliveOrigin::kBrowserWindow); } - void CreateOTRProfile() { - Profile::OTRProfileID profile_id = - is_primary_otr_ ? Profile::OTRProfileID::PrimaryID() - : Profile::OTRProfileID::CreateUniqueForTesting(); - TestingProfile::Builder builder; - builder.SetPath(original_profile_->GetPath()); - otr_profile_ = builder.BuildOffTheRecord(original_profile_, profile_id); - otr_profile_->SetProfileDestructionObserver(base::BindOnce( - &ProfileDestroyerTest::SetOTRProfileDestroyed, base::Unretained(this))); + TestingProfile* GetOriginalProfile() { return GetProfile(); } + + TestingProfile* GetOffTheRecordProfile() { + if (!otr_profile_) { + TestingProfile::Builder builder; + Profile::OTRProfileID profile_id = + is_primary_otr_ ? Profile::OTRProfileID::PrimaryID() + : Profile::OTRProfileID::CreateUniqueForTesting(); + otr_profile_ = + builder.BuildOffTheRecord(GetOriginalProfile(), profile_id); + otr_profile_->SetProfileDestructionObserver( + base::BindOnce(&ProfileDestroyerTest::SetOTRProfileDestroyed, + base::Unretained(this))); + } + return otr_profile_; } - void SetOriginalProfileDestroyed() { original_profile_ = nullptr; } - void SetOTRProfileDestroyed() { otr_profile_ = nullptr; } + void SetOriginalProfileDestroyed() { original_profile_destroyed_ = true; } + void SetOTRProfileDestroyed() { otr_profile_destroyed_ = true; } + + bool IsOriginalProfileDestroyed() { return original_profile_destroyed_; } + bool IsOTRProfileDestroyed() { return otr_profile_destroyed_; } // Creates a render process host based on a new site instance given the - // |profile| and mark it as used. Returns a reference to it. - content::RenderProcessHost* CreatedRendererProcessHost(Profile* profile) { + // |profile| and mark it as used. + std::unique_ptr<content::RenderProcessHost> CreatedRendererProcessHost( + Profile* profile) { site_instances_.emplace_back(content::SiteInstance::Create(profile)); - content::RenderProcessHost* rph = site_instances_.back()->GetProcess(); - EXPECT_TRUE(rph); - rph->SetIsUsed(); - return rph; - } + std::unique_ptr<content::RenderProcessHost> render_process_host; + render_process_host.reset(site_instances_.back()->GetProcess()); + render_process_host->SetIsUsed(); + EXPECT_NE(render_process_host.get(), nullptr); - void StopKeepingAliveOriginalProfile() { - original_profile_keep_alive_.reset(); - } - - // Destroying profile is still not universally supported. We need to disable - // some tests, because it isn't possible to start destroying the profile. - bool IsScopedProfileKeepAliveSupported() { -#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH) - return false; -#else - return base::FeatureList::IsEnabled( - features::kDestroyProfileOnBrowserClose); -#endif + return render_process_host; } protected: - const bool is_primary_otr_ = GetParam(); + bool is_primary_otr_; + bool original_profile_destroyed_{false}; + bool otr_profile_destroyed_{false}; + raw_ptr<TestingProfile> otr_profile_{nullptr}; - content::BrowserTaskEnvironment task_environment_; - TestingProfileManager profile_manager_{TestingBrowserProcess::GetGlobal()}; - content::RenderViewHostTestEnabler rvh_test_enabler_; - - raw_ptr<TestingProfile> original_profile_; - raw_ptr<TestingProfile> otr_profile_; - - std::unique_ptr<ScopedProfileKeepAlive> original_profile_keep_alive_; std::vector<scoped_refptr<content::SiteInstance>> site_instances_; }; -TEST_P(ProfileDestroyerTest, DestroyOriginalProfileImmediately) { - if (!IsScopedProfileKeepAliveSupported()) - return; - CreateOriginalProfile(); - CreateOTRProfile(); - - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - StopKeepingAliveOriginalProfile(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // This doesn't really match real-world scenarios, because TestingProfile is - // different from OffTheRecordProfileImpl. The real impl acquires a keepalive - // on the parent profile, whereas OTR TestingProfile doesn't do that. - base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(original_profile()); - EXPECT_FALSE(otr_profile()); -} - -TEST_P(ProfileDestroyerTest, DestroyOriginalProfileDeferedByRenderProcessHost) { - if (!IsScopedProfileKeepAliveSupported()) - return; - CreateOriginalProfile(); - CreateOTRProfile(); - content::RenderProcessHost* render_process_host = - CreatedRendererProcessHost(original_profile()); - - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // The original profile is not destroyed, because of the RenderProcessHost. - StopKeepingAliveOriginalProfile(); - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // Releasing the RenderProcessHost triggers the deletion of the Profile. It - // happens in a posted task. - render_process_host->Cleanup(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(original_profile()); - EXPECT_FALSE(otr_profile()); -} - -TEST_P(ProfileDestroyerTest, - DestroyOriginalProfileDeferedByOffTheRecordRenderProcessHost) { - if (!IsScopedProfileKeepAliveSupported()) - return; - CreateOriginalProfile(); - CreateOTRProfile(); - content::RenderProcessHost* render_process_host = - CreatedRendererProcessHost(otr_profile()); - - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // The original profile is not destroyed, because of the RenderProcessHost. - StopKeepingAliveOriginalProfile(); - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // Releasing the RenderProcessHost triggers the deletion of the Profile. It - // happens in a posted task. - render_process_host->Cleanup(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(original_profile()); - EXPECT_FALSE(otr_profile()); -} - -TEST_P(ProfileDestroyerTest, - DetroyBothProfileDeferedByMultipleRenderProcessHost) { - if (!IsScopedProfileKeepAliveSupported()) - return; - CreateOriginalProfile(); - CreateOTRProfile(); - content::RenderProcessHost* rph_otr_profile = - CreatedRendererProcessHost(otr_profile()); - content::RenderProcessHost* rph_original_profile = - CreatedRendererProcessHost(original_profile()); - - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // No profile are destroyed, because of the RenderProcessHosts. - StopKeepingAliveOriginalProfile(); - ProfileDestroyer::DestroyProfileWhenAppropriate(otr_profile()); - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - - // Release the first process. It causes the associated profile to be released. - // This happens in a posted task. - rph_otr_profile->Cleanup(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); - base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(original_profile()); - EXPECT_FALSE(otr_profile()); - - // Release the second process. It causes the associated profile to be - // released. This happens in a posted task. - rph_original_profile->Cleanup(); - EXPECT_TRUE(original_profile()); - EXPECT_FALSE(otr_profile()); - base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(original_profile()); - EXPECT_FALSE(otr_profile()); -} - // Expect immediate OTR profile destruction when no pending renderer // process host exists. TEST_P(ProfileDestroyerTest, ImmediateOTRProfileDestruction) { - CreateOriginalProfile(); - CreateOTRProfile(); - EXPECT_TRUE(original_profile()); - EXPECT_TRUE(otr_profile()); + TestingProfile* otr_profile = GetOffTheRecordProfile(); + + // Destroying the regular browser does not result in destruction of regular + // profile and hence should not destroy the OTR profile. + set_browser(nullptr); + EXPECT_FALSE(IsOriginalProfileDestroyed()); + EXPECT_FALSE(IsOTRProfileDestroyed()); // Ask for destruction of OTR profile, and expect immediate destruction. - ProfileDestroyer::DestroyProfileWhenAppropriate(otr_profile()); - EXPECT_FALSE(otr_profile()); + ProfileDestroyer::DestroyProfileWhenAppropriate(otr_profile); + EXPECT_TRUE(IsOTRProfileDestroyed()); } // Expect pending renderer process hosts delay OTR profile destruction. TEST_P(ProfileDestroyerTest, DelayedOTRProfileDestruction) { - CreateOriginalProfile(); - CreateOTRProfile(); + TestingProfile* otr_profile = GetOffTheRecordProfile(); // Create two render process hosts. - content::RenderProcessHost* render_process_host1 = - CreatedRendererProcessHost(otr_profile()); - content::RenderProcessHost* render_process_host2 = - CreatedRendererProcessHost(otr_profile()); + std::unique_ptr<content::RenderProcessHost> render_process_host1 = + CreatedRendererProcessHost(otr_profile); + std::unique_ptr<content::RenderProcessHost> render_process_host2 = + CreatedRendererProcessHost(otr_profile); // Ask for destruction of OTR profile, but expect it to be delayed. - ProfileDestroyer::DestroyProfileWhenAppropriate(otr_profile()); - EXPECT_TRUE(otr_profile()); + ProfileDestroyer::DestroyProfileWhenAppropriate(otr_profile); + EXPECT_FALSE(IsOTRProfileDestroyed()); // Destroy the first pending render process host, and expect it not to destroy // the OTR profile. - render_process_host1->Cleanup(); + render_process_host1.release()->Cleanup(); base::RunLoop().RunUntilIdle(); - EXPECT_TRUE(otr_profile()); + EXPECT_FALSE(IsOTRProfileDestroyed()); // Destroy the other renderer process, and expect destruction of OTR // profile. - render_process_host2->Cleanup(); + render_process_host2.release()->Cleanup(); base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(otr_profile()); + EXPECT_TRUE(IsOTRProfileDestroyed()); } INSTANTIATE_TEST_SUITE_P(AllOTRProfileTypes,
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 5943370..7d95939 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc
@@ -551,9 +551,6 @@ } } } - - profiles_info_.clear(); - ProfileDestroyer::DestroyPendingProfilesForShutdown(); } // static
diff --git a/chrome/browser/resources/chromeos/chromebox_for_meetings/OWNERS b/chrome/browser/resources/chromeos/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/chrome/browser/resources/chromeos/chromebox_for_meetings/OWNERS +++ b/chrome/browser/resources/chromeos/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js b/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js index 997d69f..6b8229b3 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js +++ b/chrome/browser/resources/chromeos/login/screens/common/arc_terms_of_service.js
@@ -18,12 +18,6 @@ }; /** - * Timeout to load online ToS. - * @type {number} - */ -const ONLINE_LOAD_TIMEOUT_IN_MS = 10000; - -/** * @constructor * @extends {PolymerElement} * @implements {LoginScreenBehaviorInterface} @@ -342,6 +336,10 @@ this.pageReady_ = true; var termsView = this.$.arcTosView; + var requestFilter = {urls: ['<all_urls>'], types: ['main_frame']}; + + termsView.request.onErrorOccurred.addListener( + this.onTermsViewErrorOccurred.bind(this), requestFilter); // Open links from webview in overlay dialog. var self = this; @@ -581,27 +579,8 @@ } this.termsError = false; this.usingOfflineTermsForTesting_ = false; - - const loadFailureCallback = () => { - // If in demo mode fallback to offline Terms of Service copy. - if (this.isDemoModeSetup_() && this.usingOfflineTermsForTesting_) { - const TERMS_URL = 'chrome://terms/arc/terms'; - const webView = this.$.arcTosView; - WebViewHelper.loadUrlContentToWebView( - webView, TERMS_URL, WebViewHelper.ContentType.HTML); - return; - } - this.showError_(); - }; - - const termsView = this.$.arcTosView; - const tosLoader = new WebViewLoader( - termsView, ONLINE_LOAD_TIMEOUT_IN_MS, loadFailureCallback, - this.isDemoModeSetup_() /* clear_anchors */, false /* inject_css */); - - const tosUrl = this.termsOfServiceHostName_ + '/about/play-terms.html'; - tosLoader.setUrl(tosUrl); - + var termsView = this.$.arcTosView; + termsView.src = this.termsOfServiceHostName_ + '/about/play-terms.html'; this.setUIStep(ArcTosState.LOADING); this.enableButtons_(false); } @@ -694,6 +673,26 @@ } /** + * Handles event when terms view cannot be loaded. + */ + onTermsViewErrorOccurred(details) { + // If in demo mode fallback to offline Terms of Service copy. + if (this.isDemoModeSetup_() && this.usingOfflineTermsForTesting_) { + const TERMS_URL = 'chrome://terms/arc/terms'; + var webView = this.$.arcTosView; + WebViewHelper.loadUrlContentToWebView( + webView, TERMS_URL, WebViewHelper.ContentType.HTML); + return; + } else if (details && details.error == 'net::ERR_ABORTED') { + // Retry triggers net::ERR_ABORTED, so ignore it. + // TODO(b/232592745): Replace with a state machine to handle aborts + // gracefully and avoid duplicate reloads. + return; + } + this.showError_(); + } + + /** * Shows error UI when terms view cannot be loaded or terms content cannot * be fetched from webview. */
diff --git a/chrome/browser/resources/chromeos/login/screens/common/gaia_signin.js b/chrome/browser/resources/chromeos/login/screens/common/gaia_signin.js index ba09e54..e61f09ea 100644 --- a/chrome/browser/resources/chromeos/login/screens/common/gaia_signin.js +++ b/chrome/browser/resources/chromeos/login/screens/common/gaia_signin.js
@@ -344,9 +344,14 @@ get EXTERNAL_API() { return [ - 'loadAuthExtension', 'doReload', 'showAllowlistCheckFailedError', - 'showPinDialog', 'closePinDialog', 'clickPrimaryButtonForTesting', - 'onBeforeLoad' + 'loadAuthExtension', + 'doReload', + 'showAllowlistCheckFailedError', + 'showPinDialog', + 'closePinDialog', + 'clickPrimaryButtonForTesting', + 'onBeforeLoad', + 'reset', ]; } @@ -666,27 +671,23 @@ onVideoEnabledChange_() { if (this.videoEnabled_ && this.videoTimer_ === undefined) { this.videoTimer_ = - setTimeout(this.onVideoTimeout_.bind(this), VIDEO_LOGIN_TIMEOUT); + setTimeout(this.cancel.bind(this), VIDEO_LOGIN_TIMEOUT); } else { this.clearVideoTimer_(); } } - /** - * @private - */ - onVideoTimeout_() { - if (!this.flagRedirectToDefaultIdPEnabled_) { - return this.cancel(); - } - // Reset webview to prevent calls from authenticator when the screen is - // hidden. + reset() { + this.clearLoadingTimer_(); + this.clearVideoTimer_(); + this.isAllowlistErrorShown_ = false; + this.authCompleted_ = false; + // Reset webview to prevent calls from authenticator. this.authenticator_.resetWebview(); // Explicitly disable video here to let `onVideoEnabledChange_()` handle // timer start next time when `videoEnabled_` will be set to true on SAML // page. this.videoEnabled_ = false; - this.userActed('samlVideoTimeout'); } /**
diff --git a/chrome/browser/resources/chromeos/login/screens/login/offline_login.js b/chrome/browser/resources/chromeos/login/screens/login/offline_login.js index d80099927..5f2c9e1e 100644 --- a/chrome/browser/resources/chromeos/login/screens/login/offline_login.js +++ b/chrome/browser/resources/chromeos/login/screens/login/offline_login.js
@@ -254,7 +254,7 @@ onEmailSubmitted_() { if (this.$.emailInput.validate()) { this.fullEmail_ = this.computeFullEmail_(this.email_); - chrome.send('OfflineLogin.onEmailSubmitted', [this.fullEmail_]); + this.userActed(['email-submitted', this.fullEmail_]); } else { this.$.emailInput.focusInput(); } @@ -265,7 +265,7 @@ return; } this.email_ = this.fullEmail_; - chrome.send('completeOfflineAuthentication', [this.email_, this.password_]); + this.userActed(['complete-authentication', this.email_, this.password_]); this.password_ = ''; }
diff --git a/chrome/browser/resources/settings/site_settings/all_sites.html b/chrome/browser/resources/settings/site_settings/all_sites.html index 65ec93b..2c458d6 100644 --- a/chrome/browser/resources/settings/site_settings/all_sites.html +++ b/chrome/browser/resources/settings/site_settings/all_sites.html
@@ -48,11 +48,11 @@ </div> <div id="clearAllContainer"> <div id="clearLabel"> - $i18n{siteSettingsClearAllStorageDescription} [[totalUsage_]] + [[getClearStorageDescription_(totalUsage_, filter)]] </div> <div id="clearAllButton"> <cr-button type="button" on-click="onConfirmClearAllData_"> - $i18n{siteSettingsClearAllStorageLabel} + [[getClearDataButtonString_(filter)]] </cr-button> </div> </div>
diff --git a/chrome/browser/resources/settings/site_settings/all_sites.ts b/chrome/browser/resources/settings/site_settings/all_sites.ts index c2f1ee2..ef56df7598 100644 --- a/chrome/browser/resources/settings/site_settings/all_sites.ts +++ b/chrome/browser/resources/settings/site_settings/all_sites.ts
@@ -70,6 +70,7 @@ $: { allSitesList: IronListElement, clearAllButton: HTMLElement, + clearLabel: HTMLElement, confirmClearAllData: CrLazyRenderElement<CrDialogElement>, confirmClearData: CrLazyRenderElement<CrDialogElement>, confirmRemoveSite: CrLazyRenderElement<CrDialogElement>, @@ -263,7 +264,6 @@ newMap.set(siteGroup.etldPlus1, siteGroup); }); this.siteGroupMap = newMap; - this.updateTotalUsage_(); this.forceListUpdate_(); }); } @@ -280,7 +280,6 @@ newMap.set(storageSiteGroup.etldPlus1, storageSiteGroup); }); this.siteGroupMap = newMap; - this.updateTotalUsage_(); this.forceListUpdate_(); this.focusOnLastSelectedEntry_(); } @@ -291,11 +290,12 @@ */ private updateTotalUsage_() { let usageSum = 0; - for (const [_etldPlus1, siteGroup] of this.siteGroupMap) { + for (const siteGroup of this.filteredList_) { siteGroup.origins.forEach(origin => { usageSum += origin.usage; }); } + this.browserProxy.getFormattedBytes(usageSum).then(totalUsage => { this.totalUsage_ = totalUsage; }); @@ -402,6 +402,7 @@ private forceListUpdate_() { this.filteredList_ = this.filterPopulatedList_(this.siteGroupMap, this.filter); + this.updateTotalUsage_(); this.$.allSitesList.fire('iron-resize'); } @@ -543,6 +544,41 @@ } /** + * Checks if a filter is applied. + * @return True if a filter is applied. + */ + private isFiltered_(): Boolean { + return this.filter !== ''; + } + + /** + * Selects the correct string to display for clear button based on whether a + * filter is applied. + * @return The correct |clearAllButton| string based on whether a filter + * is applied. + */ + private getClearDataButtonString_(): string { + const buttonStringId = this.isFiltered_() ? + 'siteSettingsClearDisplayedStorageLabel' : + 'siteSettingsClearAllStorageLabel'; + return this.i18n(buttonStringId); + } + + /** + * Selects the correct string to display for total usage based on whether a + * filter is applied. + * @return The correct |clearLabel| string based on whether a filter + * is applied. + */ + private getClearStorageDescription_(): string { + const descriptionId = this.isFiltered_() ? + 'siteSettingsClearDisplayedStorageDescription' : + 'siteSettingsClearAllStorageDescription'; + return loadTimeData.substituteString( + this.i18n(descriptionId), this.totalUsage_); + } + + /** * Confirms the clearing of all storage data for all sites. */ private onConfirmClearAllData_(e: Event) {
diff --git a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html index 98d168a1..84b42fef 100644 --- a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html +++ b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.html
@@ -1,13 +1,8 @@ <style include="signin-shared"> :host { --avatar-size: 100px; - --banner-height: 244px; --banner-size: auto; - --confirmation-description-margin-inline: auto; - --content-container-margin-bottom: calc(32px + 2 * var(--footer-margin)); - --content-container-margin-top: 104px; - --footer-margin: 40px; - --text-font-size: 1.16em; + --footer-margin: 24px; color: var(--cr-primary-text-color); display: block; } @@ -36,7 +31,7 @@ position: absolute; } - /* Old design */ + /* Modal dialog design */ #illustration-container { height: 168px; margin-bottom: 32px; @@ -93,48 +88,11 @@ } } - #old-footer { + #modal-footer { margin-bottom: 0; padding-top: 12px; } - /* New design */ - :host([is-new-design-modal-dialog_]) { - --avatar-size: 76px; - --banner-height: 128px; - --banner-size: 90% 90%; - --content-container-margin-bottom: 0; - --content-container-margin-top: 96px; - --confirmation-description-margin-inline: 32px; - --footer-margin: 16px; - --text-font-size: unset; - min-height: 468px; - position: relative; - width: 512px; - } - -<if expr="chromeos_lacros"> - :host { - --content-container-margin-top: 72px; - --content-container-title-font-size: 24px; - --content-container-title-font-weight: 500; - --content-container-title-line-height: 32px; - --confirmation-description-font-size: 14px; - --confirmation-description-line-height: 20px; - --theme-frame-color: transparent; - } -</if> - -<if expr="not chromeos_lacros"> - :host { - --content-container-title-font-size: 1.85em; - --content-container-title-font-weight: normal; - --content-container-title-line-height: auto; - --confirmation-description-font-size: var(--text-font-size); - --confirmation-description-line-height: auto; - } -</if> - /* Makes the absolutely positioned footer relative to confirmationContainer which may be larger than the window. */ #confirmationContainer { @@ -144,8 +102,7 @@ } #headerContainer { - background-color: var(--theme-frame-color); - height: var(--banner-height); + height: 244px; position: relative; width: 100%; } @@ -192,11 +149,6 @@ width: var(--badge-width); } - :host([is-new-design-modal-dialog_]) .work-badge { - --badge-width: 26px; - --badge-offset: -8px; - } - .work-badge > iron-icon { --work-icon-size: 20px; background-color: var(--md-background-color); @@ -209,21 +161,21 @@ } #contentContainer { - margin-bottom: var(--content-container-margin-bottom); - margin-top: var(--content-container-margin-top); + margin-bottom: calc(32px + 2 * var(--footer-margin)); + margin-top: 72px; text-align: center; } #contentContainer h2 { - font-size: var(--content-container-title-font-size); - font-weight: var(--content-container-title-font-weight); - line-height: var(--content-container-title-line-height); + font-size: 24px; + font-weight: 500; + line-height: 32px; } #confirmationDescription { - font-size: var(--confirmation-description-font-size); - line-height: var(--confirmation-description-line-height); - margin-inline: var(--confirmation-description-margin-inline); + font-size: 14px; + line-height: 20px; + margin-inline: auto; margin-top: 16px; max-width: 516px; } @@ -233,7 +185,7 @@ } #buttonsContainer cr-button { - font-size: var(--text-font-size); + font-size: 1.16em; min-width: 111px; } @@ -246,13 +198,13 @@ } @media (prefers-color-scheme: dark) { - /* Old design */ + /* Modal dialog design */ #illustration { background-image: url(./images/sync_confirmation_illustration_dark.svg); } - /* New design */ + /* Non-modal design */ #syncPromoBanner { background-image: url(images/sync_confirmation_refreshed_illustration_dark.svg); @@ -271,7 +223,7 @@ which user clicks to indicate consent. --> -<template is="dom-if" if="[[!isNewDesign_]]"> +<template is="dom-if" if="[[isModalDialog_]]"> <div id="illustration-container"> <div id="grey-banner"></div> <div id="illustration"></div> @@ -287,7 +239,7 @@ $i18n{syncConfirmationSyncInfoDesc} </div> </div> - <div id="old-footer" class="message-container secondary"> + <div id="modal-footer" class="message-container secondary"> $i18n{syncConfirmationSettingsInfo} </div> <div class="action-row"> @@ -319,13 +271,9 @@ </div> </template> -<template is="dom-if" if="[[isNewDesign_]]"> +<template is="dom-if" if="[[!isModalDialog_]]"> <div id="confirmationContainer"> - <div id="headerContainer" - <if expr="not chromeos_lacros"> - style$="--theme-frame-color:[[highlightColor_]]" - </if> - > + <div id="headerContainer"> <div id="syncPromoBanner"></div> <div id="avatarContainer"> <img id="avatar" alt="" src="[[accountImageSrc_]]">
diff --git a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.ts b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.ts index 1bec202..7047ba8f 100644 --- a/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.ts +++ b/chrome/browser/resources/signin/sync_confirmation/sync_confirmation_app.ts
@@ -50,30 +50,10 @@ value: false, }, - isNewDesignModalDialog_: { - type: Boolean, - reflectToAttribute: true, - value() { - return loadTimeData.getBoolean('isModalDialog') && - loadTimeData.getBoolean('isNewDesign'); - } - }, - - isNewDesign_: { + isModalDialog_: { type: Boolean, value() { - return loadTimeData.getBoolean('isNewDesign'); - } - }, - - highlightColor_: { - type: String, - value() { - if (!loadTimeData.valueExists('highlightColor')) { - return ''; - } - - return loadTimeData.getString('highlightColor'); + return loadTimeData.getBoolean('isModalDialog'); } }, @@ -103,9 +83,7 @@ private accountImageSrc_: string; private anyButtonClicked_: boolean; - private isNewDesignModalDialog_: boolean; - private isNewDesign_: boolean; - private highlightColor_: string; + private isModalDialog_: boolean; private showEnterpriseBadge_: boolean; private syncForced_: boolean; private syncOptionalClass_: string;
diff --git a/chrome/browser/resources/support_tool/data_collectors.html b/chrome/browser/resources/support_tool/data_collectors.html index 6900ea10..d282110 100644 --- a/chrome/browser/resources/support_tool/data_collectors.html +++ b/chrome/browser/resources/support_tool/data_collectors.html
@@ -3,12 +3,14 @@ found in the LICENSE file. --> <style include="support-tool-shared cr-shared-style"> - .data-collector-list { - height: 254px; - } + .data-collector-list { + /* Using negative margin to cancel out the padding of the top-most item if + the list to set the spacing between items to 8px.*/ + margin-top: -8px; + } </style> -<h2>Step 2 of 4: Select diagnostics data to export</h2> +<h1>Step 2 of 4: Select diagnostics data to export</h1> <iron-list class="data-collector-list" items="[[dataCollectors_]]"> <template> <cr-checkbox class="data-collector-checkbox" checked="{{item.isIncluded}}">
diff --git a/chrome/browser/resources/support_tool/data_export_done.html b/chrome/browser/resources/support_tool/data_export_done.html index e32685c..76671f1 100644 --- a/chrome/browser/resources/support_tool/data_export_done.html +++ b/chrome/browser/resources/support_tool/data_export_done.html
@@ -15,7 +15,7 @@ </style> -<h2>Step 4 of 4: Diagnostics data is exported</h2> +<h1>Step 4 of 4: Diagnostics data is exported</h1> <div class="support-tool-title"> Data has been exported into the selected location </div> @@ -25,4 +25,3 @@ [[path_]] </a> </div> -
diff --git a/chrome/browser/resources/support_tool/issue_details.html b/chrome/browser/resources/support_tool/issue_details.html index 057b898b..a2e7124 100644 --- a/chrome/browser/resources/support_tool/issue_details.html +++ b/chrome/browser/resources/support_tool/issue_details.html
@@ -4,7 +4,8 @@ <style include="md-select cr-input-style support-tool-shared"> .md-select { - height: 32px; + height: 27px; + margin-bottom: 5px; width: 248px; } @@ -28,7 +29,7 @@ } </style> -<h2>Step 1 of 4: Describe the issue</h2> +<h1>Step 1 of 4: Describe the issue</h1> <div class="support-tool-title">Support Case ID</div> <cr-input class="support-case-id" value="{{caseId_}}" spellcheck="false" maxlength="20">
diff --git a/chrome/browser/resources/support_tool/pii_selection.html b/chrome/browser/resources/support_tool/pii_selection.html index 0d8a60f..20cafcf 100644 --- a/chrome/browser/resources/support_tool/pii_selection.html +++ b/chrome/browser/resources/support_tool/pii_selection.html
@@ -65,7 +65,7 @@ } </style> -<h2>Step 3 of 4: Review personally identifiable information</h2> +<h1>Step 3 of 4: Review personally identifiable information</h1> <div id="pii-warning-text" class="support-tool-title"> Diagnostic data collection is complete. Some of your personal information is included in this data. @@ -87,7 +87,7 @@ </div> </iron-collapse> <cr-radio-button name="[[piiRadioButtonsEnum_.INCLUDE_SOME]]"> - Manually review personal information + Manually select personal information you want to include </cr-radio-button> </cr-radio-group> </div>
diff --git a/chrome/browser/resources/support_tool/pii_selection.ts b/chrome/browser/resources/support_tool/pii_selection.ts index 7107bfd9..0f12cb70 100644 --- a/chrome/browser/resources/support_tool/pii_selection.ts +++ b/chrome/browser/resources/support_tool/pii_selection.ts
@@ -21,6 +21,7 @@ INCLUDE_ALL = 'include-all', INCLUDE_NONE = 'include-none', INCLUDE_SOME = 'include-some', + UNSELECTED = 'unselected', } export class PIISelectionElement extends PolymerElement { @@ -49,7 +50,7 @@ }, selectedRadioButton_: { type: String, - value: PiiRadioButtons.INCLUDE_NONE, + value: PiiRadioButtons.UNSELECTED, }, showPIISelection_: { type: Boolean, @@ -95,11 +96,15 @@ private onSelectedRadioButtonChanged_(event: CustomEvent<{value: string}>) { this.selectedRadioButton_ = event.detail.value; + // this.selectedRadioButton_ is initialized as PiiRadioButtons.UNSELECTED by + // default and this value is not reachable once user modifies the value by + // selecting it in UI as it's not exposed in the UI. that's why we don't + // handle it in the if-else condition below. if (this.selectedRadioButton_ === PiiRadioButtons.INCLUDE_ALL) { this.setSelectAll_(true); } else if (this.selectedRadioButton_ === PiiRadioButtons.INCLUDE_NONE) { this.setSelectAll_(false); - } else { + } else if (this.selectedRadioButton_ === PiiRadioButtons.INCLUDE_SOME) { this.showPIISelection_ = true; } }
diff --git a/chrome/browser/resources/support_tool/spinner_page.html b/chrome/browser/resources/support_tool/spinner_page.html index 8879796..ed2c9851 100644 --- a/chrome/browser/resources/support_tool/spinner_page.html +++ b/chrome/browser/resources/support_tool/spinner_page.html
@@ -10,7 +10,7 @@ } </style> -<h2>[[pageTitle]]</h2> +<h1>[[pageTitle]]</h1> <paper-spinner-lite active> </paper-spinner-lite> <div class="navigation-buttons">
diff --git a/chrome/browser/resources/support_tool/support_tool.html b/chrome/browser/resources/support_tool/support_tool.html index 0cd9c3b..4401b48 100644 --- a/chrome/browser/resources/support_tool/support_tool.html +++ b/chrome/browser/resources/support_tool/support_tool.html
@@ -12,7 +12,7 @@ } cr-button { - margin-inline-start: 12px; + margin-inline-start: 8px; } </style>
diff --git a/chrome/browser/resources/support_tool/support_tool_shared.css b/chrome/browser/resources/support_tool/support_tool_shared.css index e9bf21f9..0c42977 100644 --- a/chrome/browser/resources/support_tool/support_tool_shared.css +++ b/chrome/browser/resources/support_tool/support_tool_shared.css
@@ -8,7 +8,7 @@ * #css_wrapper_metadata_end */ /* Common styles for Support Tool components. */ -h2 { +h1 { color: var(--cr-text-color-primary); font-size: 20px; font-weight: normal; @@ -19,20 +19,21 @@ color: var(--cr-title-text-color); font-size: 14px; line-height: 20px; - margin-bottom: 10px; - margin-top: 10px; + margin-bottom: 8px; + margin-top: 8px; } .navigation-buttons { float: right; - margin-bottom: 30px; - margin-top: 30px; + margin-bottom: 20px; + margin-top: 32px; position: relative; right: 0; } .support-case-id { height: 32px; + margin-bottom: 3px; width: 248px; } @@ -44,3 +45,7 @@ .data-collector-list { width: 520px; } + +cr-icon-button { + --cr-icon-button-fill-color: white; +}
diff --git a/chrome/browser/resources/support_tool/url_generator.html b/chrome/browser/resources/support_tool/url_generator.html index bd9a9e5..45e8ec0 100644 --- a/chrome/browser/resources/support_tool/url_generator.html +++ b/chrome/browser/resources/support_tool/url_generator.html
@@ -12,14 +12,13 @@ } .data-collector-list { - height: 148px; - padding-bottom: 8px; - padding-top: 8px; + /* Using negative margin to cancel out the padding of the top-most item if + the list to set the spacing between items to 8px.*/ + margin-top: -8px; } #info-text { color: var(--cr-secondary-text-color); - margin-top: 8px; } .navigation-buttons { @@ -28,20 +27,21 @@ } </style> -<h2>Get a Support Tool link</h2> +<h1>Get a Support Tool link</h1> <div class="support-tool-title">Support Case ID</div> <cr-input id="caseIdInput" class="support-case-id" value="{{caseId_}}" spellcheck="false" maxlength="20""> </cr-input> <div class="support-tool-title">Data sources to collect</div> -<iron-list class="data-collector-list" items="[[dataCollectors_]]"> - <template> +<div class="data-collector-list"> + <template is="dom-repeat" items="[[dataCollectors_]]"> <cr-checkbox class="data-collector-checkbox" checked="{{item.isIncluded}}" on-click="onDataCollectorItemClicked_"> [[item.name]] </cr-checkbox> </template> -</iron-list> +</div> + <div class="support-tool-title">Get a link</div> <div id="info-text"> Copy and send this link to the user to collect the logs. @@ -58,4 +58,4 @@ <cr-icon-button on-click="onErrorMessageToastCloseClicked_" iron-icon="cr:close"> </cr-icon-button> -</cr-toast> \ No newline at end of file +</cr-toast>
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc index 0178021..76340531 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc
@@ -196,7 +196,8 @@ const std::string& mime_type) const { for (const std::string& tag : content_analysis_request().tags()) { if (tag == "dlp" && tag_settings_.count("dlp")) { - const auto* supported_files = tag_settings_.at("dlp").supported_files; + const auto* supported_files = + tag_settings_.at("dlp").supported_files.get(); return supported_files->FileExtensionSupported(file_name_) || supported_files->MimeTypeSupported(mime_type); }
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index a6d063d..d18eca4 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -1836,7 +1836,7 @@ loop->Quit(); } - net::NSSCertDatabase* cert_db_; + raw_ptr<net::NSSCertDatabase> cert_db_; }; // SSL client certificate tests are only enabled when using NSS for private key
diff --git a/chrome/browser/supervised_user/child_accounts/child_account_service.cc b/chrome/browser/supervised_user/child_accounts/child_account_service.cc index aa75902..4f02764 100644 --- a/chrome/browser/supervised_user/child_accounts/child_account_service.cc +++ b/chrome/browser/supervised_user/child_accounts/child_account_service.cc
@@ -23,7 +23,6 @@ #include "chrome/browser/supervised_user/supervised_user_settings_service.h" #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h" #include "chrome/browser/supervised_user/web_approvals_manager.h" -#include "chrome/browser/sync/sync_service_factory.h" #include "chrome/common/pref_names.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" @@ -31,8 +30,6 @@ #include "components/signin/public/identity_manager/account_info.h" #include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h" #include "components/signin/public/identity_manager/tribool.h" -#include "components/sync/driver/sync_service.h" -#include "components/sync/driver/sync_user_settings.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/storage_partition.h" @@ -161,28 +158,6 @@ active_ = active; if (active_) { - SupervisedUserSettingsService* settings_service = - SupervisedUserSettingsServiceFactory::GetForKey( - profile_->GetProfileKey()); - - // In contrast to deprecated legacy SUs, child account SUs must sign in. - settings_service->SetLocalSetting(supervised_users::kSigninAllowed, - std::make_unique<base::Value>(true)); - - // Always allow cookies, to avoid website compatibility issues. - settings_service->SetLocalSetting(supervised_users::kCookiesAlwaysAllowed, - std::make_unique<base::Value>(true)); - - // SafeSearch is controlled at the account level, so don't override it - // client-side. - settings_service->SetLocalSetting(supervised_users::kForceSafeSearch, - std::make_unique<base::Value>(false)); - - // GeolocationDisabled is controlled at the account level, so don't override - // it client-side. - settings_service->SetLocalSetting(supervised_users::kGeolocationDisabled, - std::make_unique<base::Value>(false)); - #if !BUILDFLAG(IS_CHROMEOS) // This is also used by user policies (UserPolicySigninService), but since // child accounts can not also be Dasher accounts, there shouldn't be any @@ -197,18 +172,6 @@ service->web_approvals_manager().AddRemoteApprovalRequestCreator( PermissionRequestCreatorApiary::CreateWithProfile(profile_)); } else { - SupervisedUserSettingsService* settings_service = - SupervisedUserSettingsServiceFactory::GetForKey( - profile_->GetProfileKey()); - settings_service->SetLocalSetting(supervised_users::kSigninAllowed, - nullptr); - settings_service->SetLocalSetting(supervised_users::kCookiesAlwaysAllowed, - nullptr); - settings_service->SetLocalSetting(supervised_users::kForceSafeSearch, - nullptr); - settings_service->SetLocalSetting(supervised_users::kGeolocationDisabled, - nullptr); - #if !BUILDFLAG(IS_CHROMEOS) signin_util::SetUserSignoutAllowedForProfile(profile_, true); #endif @@ -216,18 +179,6 @@ CancelFetchingFamilyInfo(); } - // Trigger a sync reconfig to enable/disable the right SU data types. - // The logic to do this lives in the SupervisedUserSyncModelTypeController. - // TODO(crbug.com/946473): Get rid of this hack and instead call - // DataTypePreconditionChanged from the controller. - syncer::SyncService* sync_service = - SyncServiceFactory::GetForProfile(profile_); - if (sync_service->GetUserSettings()->IsFirstSetupComplete()) { - // Trigger a reconfig by grabbing a SyncSetupInProgressHandle and - // immediately releasing it again (via the temporary unique_ptr going away). - sync_service->GetSetupInProgressHandle(); - } - return true; }
diff --git a/chrome/browser/supervised_user/parental_control_metrics_unittest.cc b/chrome/browser/supervised_user/parental_control_metrics_unittest.cc index 7f75683..b2200b5 100644 --- a/chrome/browser/supervised_user/parental_control_metrics_unittest.cc +++ b/chrome/browser/supervised_user/parental_control_metrics_unittest.cc
@@ -19,6 +19,7 @@ #include "chrome/browser/supervised_user/supervised_user_service.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" #include "chrome/browser/supervised_user/supervised_user_url_filter.h" +#include "chrome/browser/sync/sync_service_factory.h" #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" @@ -52,6 +53,9 @@ TestingProfile::Builder profile_builder; profile_builder.SetPrefService(std::move(prefs)); profile_builder.SetIsSupervisedProfile(); + profile_builder.AddTestingFactory(SyncServiceFactory::GetInstance(), + SyncServiceFactory::GetDefaultFactory()); + profile_ = profile_builder.Build(); EXPECT_TRUE(profile_->IsChild()); supervised_user_service_ =
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc index 7095942..29d46b3 100644 --- a/chrome/browser/supervised_user/supervised_user_service.cc +++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -37,12 +37,15 @@ #include "chrome/browser/supervised_user/supervised_user_service_observer.h" #include "chrome/browser/supervised_user/supervised_user_settings_service.h" #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h" +#include "chrome/browser/sync/sync_service_factory.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" #include "chrome/grit/generated_resources.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" +#include "components/sync/driver/sync_service.h" +#include "components/sync/driver/sync_user_settings.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/storage_partition.h" #include "extensions/buildflags/buildflags.h" @@ -379,6 +382,18 @@ theme_service->UseDefaultTheme(); #endif + // Trigger a sync reconfig to enable/disable the right SU data types. + // The logic to do this lives in the SupervisedUserSyncModelTypeController. + // TODO(crbug.com/946473): Get rid of this hack and instead call + // DataTypePreconditionChanged from the controller. + syncer::SyncService* sync_service = + SyncServiceFactory::GetForProfile(profile_); + if (sync_service->GetUserSettings()->IsFirstSetupComplete()) { + // Trigger a reconfig by grabbing a SyncSetupInProgressHandle and + // immediately releasing it again (via the temporary unique_ptr going away). + sync_service->GetSetupInProgressHandle(); + } + GetSettingsService()->SetActive(active_); #if BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/supervised_user/supervised_user_service_browsertest.cc b/chrome/browser/supervised_user/supervised_user_service_browsertest.cc index 86431b42..7ace6fa 100644 --- a/chrome/browser/supervised_user/supervised_user_service_browsertest.cc +++ b/chrome/browser/supervised_user/supervised_user_service_browsertest.cc
@@ -82,9 +82,9 @@ logged_in_user_mixin_.LogInUser(); Profile* profile = browser()->profile(); PrefService* prefs = profile->GetPrefs(); - EXPECT_FALSE(prefs->GetBoolean(prefs::kForceGoogleSafeSearch)); + EXPECT_TRUE(prefs->GetBoolean(prefs::kForceGoogleSafeSearch)); EXPECT_EQ(prefs->GetInteger(prefs::kForceYouTubeRestrict), - safe_search_util::YOUTUBE_RESTRICT_OFF); + safe_search_util::YOUTUBE_RESTRICT_MODERATE); EXPECT_FALSE( prefs->IsUserModifiablePreference(prefs::kForceGoogleSafeSearch)); EXPECT_FALSE(prefs->IsUserModifiablePreference(prefs::kForceYouTubeRestrict));
diff --git a/chrome/browser/supervised_user/supervised_user_service_unittest.cc b/chrome/browser/supervised_user/supervised_user_service_unittest.cc index 9978fc20..7896631 100644 --- a/chrome/browser/supervised_user/supervised_user_service_unittest.cc +++ b/chrome/browser/supervised_user/supervised_user_service_unittest.cc
@@ -22,6 +22,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h" #include "chrome/browser/supervised_user/supervised_user_service_factory.h" +#include "chrome/browser/sync/sync_service_factory.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" @@ -130,6 +131,8 @@ // Build supervised profile. TestingProfile::Builder builder; + builder.AddTestingFactory(SyncServiceFactory::GetInstance(), + SyncServiceFactory::GetDefaultFactory()); builder.SetIsSupervisedProfile(); profile_ = builder.Build();
diff --git a/chrome/browser/supervised_user/supervised_user_settings_service.cc b/chrome/browser/supervised_user/supervised_user_settings_service.cc index bae11637..dee41b4a 100644 --- a/chrome/browser/supervised_user/supervised_user_settings_service.cc +++ b/chrome/browser/supervised_user/supervised_user_settings_service.cc
@@ -156,6 +156,25 @@ void SupervisedUserSettingsService::SetActive(bool active) { active_ = active; + + if (active_) { + // Child account supervised users must be signed in. + SetLocalSetting(supervised_users::kSigninAllowed, + std::make_unique<base::Value>(true)); + + // Always allow cookies, to avoid website compatibility issues. + SetLocalSetting(supervised_users::kCookiesAlwaysAllowed, + std::make_unique<base::Value>(true)); + + // SafeSearch and GeolocationDisabled are controlled at the account level, + // so don't override them client-side. + } else { + SetLocalSetting(supervised_users::kSigninAllowed, nullptr); + SetLocalSetting(supervised_users::kCookiesAlwaysAllowed, nullptr); + SetLocalSetting(supervised_users::kForceSafeSearch, nullptr); + SetLocalSetting(supervised_users::kGeolocationDisabled, nullptr); + } + InformSubscribers(); }
diff --git a/chrome/browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h b/chrome/browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h index 11f2f15..eada9de 100644 --- a/chrome/browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h +++ b/chrome/browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "components/gcm_driver/instance_id/fake_gcm_driver_for_instance_id.h" @@ -44,7 +45,7 @@ EncryptMessageCallback callback) override; private: - Profile* profile_; + raw_ptr<Profile> profile_; }; #endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_FAKE_SYNC_GCM_DRIVER_FOR_INSTANCE_ID_H_
diff --git a/chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.cc b/chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.cc similarity index 96% rename from chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.cc rename to chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.cc index b81efd0..e1f1573 100644 --- a/chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.cc +++ b/chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.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/sync/test/integration/fake_server_sync_invalidation_sender.h" +#include "chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.h" #include "base/time/time.h" #include "components/sync/invalidations/fcm_handler.h"
diff --git a/chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.h b/chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.h similarity index 83% rename from chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.h rename to chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.h index 794639b..03c25df 100644 --- a/chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.h +++ b/chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.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_SYNC_TEST_INTEGRATION_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_ -#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_ +#ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_ +#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_ #include "base/memory/raw_ptr.h" #include "components/sync/base/model_type.h" @@ -44,4 +44,4 @@ } // namespace fake_server -#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_ +#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SERVER_SYNC_INVALIDATION_SENDER_H_
diff --git a/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.cc b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.cc new file mode 100644 index 0000000..19fb53b --- /dev/null +++ b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.cc
@@ -0,0 +1,32 @@ +// 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. + +#include "chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.h" + +#include "base/strings/stringprintf.h" +#include "components/gcm_driver/instance_id/instance_id.h" + +FakeSyncInstanceID::FakeSyncInstanceID(const std::string& app_id, + gcm::GCMDriver* gcm_driver) + : instance_id::InstanceID(app_id, gcm_driver), + token_(GenerateNextToken()) {} + +void FakeSyncInstanceID::GetToken(const std::string& authorized_entity, + const std::string& scope, + base::TimeDelta time_to_live, + std::set<Flags> flags, + GetTokenCallback callback) { + std::move(callback).Run(token_, instance_id::InstanceID::Result::SUCCESS); +} + +// Deleting the InstanceID also clears any associated token. +void FakeSyncInstanceID::DeleteIDImpl(DeleteIDCallback callback) { + token_ = GenerateNextToken(); + std::move(callback).Run(instance_id::InstanceID::Result::SUCCESS); +} + +std::string FakeSyncInstanceID::GenerateNextToken() { + static int next_token_id_ = 1; + return base::StringPrintf("token %d", next_token_id_++); +}
diff --git a/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.h b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.h new file mode 100644 index 0000000..837c1da --- /dev/null +++ b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.h
@@ -0,0 +1,59 @@ +// 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 CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_H_ +#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_H_ + +#include <set> +#include <string> + +#include "base/time/time.h" +#include "components/gcm_driver/instance_id/instance_id.h" + +namespace gcm { +class GCMDriver; +} // namespace gcm + +class FakeSyncInstanceID : public instance_id::InstanceID { + public: + FakeSyncInstanceID(const std::string& app_id, gcm::GCMDriver* gcm_driver); + + FakeSyncInstanceID(const FakeSyncInstanceID&) = delete; + FakeSyncInstanceID& operator=(const FakeSyncInstanceID&) = delete; + + ~FakeSyncInstanceID() override = default; + + void GetID(GetIDCallback callback) override {} + + void GetCreationTime(GetCreationTimeCallback callback) override {} + + void GetToken(const std::string& authorized_entity, + const std::string& scope, + base::TimeDelta time_to_live, + std::set<Flags> flags, + GetTokenCallback callback) override; + + void ValidateToken(const std::string& authorized_entity, + const std::string& scope, + const std::string& token, + ValidateTokenCallback callback) override {} + + void DeleteToken(const std::string& authorized_entity, + const std::string& scope, + DeleteTokenCallback callback) override {} + + protected: + void DeleteTokenImpl(const std::string& authorized_entity, + const std::string& scope, + DeleteTokenCallback callback) override {} + + void DeleteIDImpl(DeleteIDCallback callback) override; + + private: + static std::string GenerateNextToken(); + + std::string token_; +}; + +#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_H_
diff --git a/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.cc b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.cc new file mode 100644 index 0000000..a647f59e --- /dev/null +++ b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.cc
@@ -0,0 +1,28 @@ +// 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. + +#include "chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h" + +#include "chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id.h" +#include "components/gcm_driver/gcm_driver.h" +#include "components/gcm_driver/instance_id/instance_id.h" + +FakeSyncInstanceIDDriver::FakeSyncInstanceIDDriver(gcm::GCMDriver* gcm_driver) + : instance_id::InstanceIDDriver(gcm_driver), gcm_driver_(gcm_driver) {} + +FakeSyncInstanceIDDriver::~FakeSyncInstanceIDDriver() = default; + +instance_id::InstanceID* FakeSyncInstanceIDDriver::GetInstanceID( + const std::string& app_id) { + if (!fake_instance_ids_.count(app_id)) { + fake_instance_ids_[app_id] = + std::make_unique<FakeSyncInstanceID>(app_id, gcm_driver_); + } + return fake_instance_ids_[app_id].get(); +} + +bool FakeSyncInstanceIDDriver::ExistsInstanceID( + const std::string& app_id) const { + return fake_instance_ids_.count(app_id); +}
diff --git a/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h new file mode 100644 index 0000000..b2a1d045 --- /dev/null +++ b/chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h
@@ -0,0 +1,40 @@ +// 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 CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_DRIVER_H_ +#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_DRIVER_H_ + +#include <memory> +#include <string> + +#include "components/gcm_driver/instance_id/instance_id_driver.h" + +namespace gcm { +class GCMDriver; +} // namespace gcm + +namespace instance_id { +class InstanceID; +} // namespace instance_id + +class FakeSyncInstanceID; + +class FakeSyncInstanceIDDriver : public instance_id::InstanceIDDriver { + public: + explicit FakeSyncInstanceIDDriver(gcm::GCMDriver* gcm_driver); + + FakeSyncInstanceIDDriver(const FakeSyncInstanceIDDriver&) = delete; + FakeSyncInstanceIDDriver& operator=(const FakeSyncInstanceIDDriver&) = delete; + + ~FakeSyncInstanceIDDriver() override; + instance_id::InstanceID* GetInstanceID(const std::string& app_id) override; + void RemoveInstanceID(const std::string& app_id) override {} + bool ExistsInstanceID(const std::string& app_id) const override; + + private: + raw_ptr<gcm::GCMDriver> gcm_driver_; + std::map<std::string, std::unique_ptr<FakeSyncInstanceID>> fake_instance_ids_; +}; + +#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_INVALIDATIONS_FAKE_SYNC_INSTANCE_ID_DRIVER_H_
diff --git a/chrome/browser/sync/test/integration/printers_helper.cc b/chrome/browser/sync/test/integration/printers_helper.cc index 3f147b47..039aa899 100644 --- a/chrome/browser/sync/test/integration/printers_helper.cc +++ b/chrome/browser/sync/test/integration/printers_helper.cc
@@ -87,9 +87,7 @@ const std::string& description) { PrinterList printers = manager->GetSavedPrinters(); std::string printer_id = PrinterId(index); - auto found = base::ranges::find( - printers, printer_id, - [](const chromeos::Printer& printer) { return printer.id(); }); + auto found = base::ranges::find(printers, printer_id, &chromeos::Printer::id); if (found == printers.end()) { return false;
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc index c56cf7b..d0cf9d2 100644 --- a/chrome/browser/sync/test/integration/sync_test.cc +++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -39,6 +39,7 @@ #include "chrome/browser/sync/test/integration/committed_all_nudged_changes_checker.h" #include "chrome/browser/sync/test/integration/device_info_helper.h" #include "chrome/browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h" +#include "chrome/browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h" #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h" #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" #include "chrome/browser/sync/test/integration/sync_disabled_checker.h" @@ -51,6 +52,8 @@ #include "components/bookmarks/test/bookmark_test_helpers.h" #include "components/gcm_driver/fake_gcm_profile_service.h" #include "components/gcm_driver/gcm_profile_service.h" +#include "components/gcm_driver/instance_id/instance_id.h" +#include "components/gcm_driver/instance_id/instance_id_driver.h" #include "components/invalidation/impl/fake_invalidation_service.h" #include "components/invalidation/impl/fcm_invalidation_service.h" #include "components/invalidation/impl/fcm_network_handler.h" @@ -208,7 +211,7 @@ profile_to_instance_id_driver_map) { if (!profile_to_instance_id_driver_map->count(profile)) { (*profile_to_instance_id_driver_map)[profile] = - std::make_unique<SyncTest::FakeInstanceIDDriver>( + std::make_unique<FakeSyncInstanceIDDriver>( /*gcm_driver=*/gcm::GCMProfileServiceFactory::GetForProfile(profile) ->driver()); } @@ -217,49 +220,6 @@ } // namespace -SyncTest::FakeInstanceID::FakeInstanceID(const std::string& app_id, - gcm::GCMDriver* gcm_driver) - : instance_id::InstanceID(app_id, gcm_driver), - token_(GenerateNextToken()) {} - -void SyncTest::FakeInstanceID::GetToken(const std::string& authorized_entity, - const std::string& scope, - base::TimeDelta time_to_live, - std::set<Flags> flags, - GetTokenCallback callback) { - std::move(callback).Run(token_, instance_id::InstanceID::Result::SUCCESS); -} - -// Deleting the InstanceID also clears any associated token. -void SyncTest::FakeInstanceID::DeleteIDImpl(DeleteIDCallback callback) { - token_ = GenerateNextToken(); - std::move(callback).Run(instance_id::InstanceID::Result::SUCCESS); -} - -std::string SyncTest::FakeInstanceID::GenerateNextToken() { - static int next_token_id_ = 1; - return base::StringPrintf("token %d", next_token_id_++); -} - -SyncTest::FakeInstanceIDDriver::FakeInstanceIDDriver(gcm::GCMDriver* gcm_driver) - : instance_id::InstanceIDDriver(gcm_driver), gcm_driver_(gcm_driver) {} - -SyncTest::FakeInstanceIDDriver::~FakeInstanceIDDriver() = default; - -instance_id::InstanceID* SyncTest::FakeInstanceIDDriver::GetInstanceID( - const std::string& app_id) { - if (!fake_instance_ids_.count(app_id)) { - fake_instance_ids_[app_id] = - std::make_unique<FakeInstanceID>(app_id, gcm_driver_); - } - return fake_instance_ids_[app_id].get(); -} - -bool SyncTest::FakeInstanceIDDriver::ExistsInstanceID( - const std::string& app_id) const { - return fake_instance_ids_.count(app_id); -} - #if !BUILDFLAG(IS_ANDROID) class SyncTest::ClosedBrowserObserver : public BrowserListObserver { public:
diff --git a/chrome/browser/sync/test/integration/sync_test.h b/chrome/browser/sync/test/integration/sync_test.h index 240d5cdfd..e59c10dc4 100644 --- a/chrome/browser/sync/test/integration/sync_test.h +++ b/chrome/browser/sync/test/integration/sync_test.h
@@ -19,10 +19,8 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/test/integration/configuration_refresher.h" #include "chrome/browser/sync/test/integration/fake_server_invalidation_sender.h" -#include "chrome/browser/sync/test/integration/fake_server_sync_invalidation_sender.h" +#include "chrome/browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.h" #include "chrome/common/buildflags.h" -#include "components/gcm_driver/instance_id/instance_id.h" -#include "components/gcm_driver/instance_id/instance_id_driver.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" #include "components/sync/base/model_type.h" #include "components/sync/base/user_selectable_type.h" @@ -77,6 +75,10 @@ class SyncServiceImpl; } // namespace syncer +namespace instance_id { +class InstanceIDDriver; +} // namespace instance_id + namespace switches { inline constexpr char kPasswordFileForTest[] = "password-file-for-test"; @@ -127,65 +129,6 @@ // in-process (bypassing HTTP calls). }; - class FakeInstanceID : public instance_id::InstanceID { - public: - explicit FakeInstanceID(const std::string& app_id, - gcm::GCMDriver* gcm_driver); - - FakeInstanceID(const FakeInstanceID&) = delete; - FakeInstanceID& operator=(const FakeInstanceID&) = delete; - - ~FakeInstanceID() override = default; - - void GetID(GetIDCallback callback) override {} - - void GetCreationTime(GetCreationTimeCallback callback) override {} - - void GetToken(const std::string& authorized_entity, - const std::string& scope, - base::TimeDelta time_to_live, - std::set<Flags> flags, - GetTokenCallback callback) override; - - void ValidateToken(const std::string& authorized_entity, - const std::string& scope, - const std::string& token, - ValidateTokenCallback callback) override {} - - void DeleteToken(const std::string& authorized_entity, - const std::string& scope, - DeleteTokenCallback callback) override {} - - protected: - void DeleteTokenImpl(const std::string& authorized_entity, - const std::string& scope, - DeleteTokenCallback callback) override {} - - void DeleteIDImpl(DeleteIDCallback callback) override; - - private: - static std::string GenerateNextToken(); - - std::string token_; - }; - - class FakeInstanceIDDriver : public instance_id::InstanceIDDriver { - public: - explicit FakeInstanceIDDriver(gcm::GCMDriver* gcm_driver); - - FakeInstanceIDDriver(const FakeInstanceIDDriver&) = delete; - FakeInstanceIDDriver& operator=(const FakeInstanceIDDriver&) = delete; - - ~FakeInstanceIDDriver() override; - instance_id::InstanceID* GetInstanceID(const std::string& app_id) override; - void RemoveInstanceID(const std::string& app_id) override {} - bool ExistsInstanceID(const std::string& app_id) const override; - - private: - raw_ptr<gcm::GCMDriver> gcm_driver_; - std::map<std::string, std::unique_ptr<FakeInstanceID>> fake_instance_ids_; - }; - // A SyncTest must be associated with a particular test type. explicit SyncTest(TestType test_type);
diff --git a/chrome/browser/sync/test/integration/user_events_helper.cc b/chrome/browser/sync/test/integration/user_events_helper.cc index b4dd501..48cbcccc 100644 --- a/chrome/browser/sync/test/integration/user_events_helper.cc +++ b/chrome/browser/sync/test/integration/user_events_helper.cc
@@ -62,9 +62,7 @@ // identical events, though there can be duplicates in some cases. auto iter = base::ranges::find( remaining_expected_specifics, server_specifics.event_time_usec(), - [](const sync_pb::UserEventSpecifics& specifics) { - return specifics.event_time_usec(); - }); + &sync_pb::UserEventSpecifics::event_time_usec); // We don't expect to encounter id matching events with different values, // this isn't going to recover so fail the test case now. EXPECT_NE(iter, remaining_expected_specifics.end());
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelObserver.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelObserver.java index ff6a682..3920399 100644 --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelObserver.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelObserver.java
@@ -9,17 +9,21 @@ */ public interface IncognitoTabModelObserver { /** - * A delegate to control whether to show or hide the Incognito reauth dialog. + * A delegate to control whether to show or hide the Incognito re-auth dialog. */ interface IncognitoReauthDialogDelegate { /** - * An event which is fired to control the visibility of the Incognito re-authentication - * dialog. - * - * @param newModel The new {@link TabModel} which is now active. - * @param oldModel The previous {@link TabModel} which was active. + * An event which is fired the last when the {@link TabModel} changed to regular in order + * to ensure we hide the re-auth dialog in the end, to avoid leaking any trace from the + * previous Incognito {@link TabModel} */ - void onAfterTabModelSelected(TabModel newModel, TabModel oldModel); + void onAfterRegularTabModelChanged(); + + /** + * An event which is fired the earliest when the {@link TabModel} is selected to incognito + * in order to ensure we show the re-auth dialog fast. + */ + void onBeforeIncognitoTabModelSelected(); } /**
diff --git a/chrome/browser/themes/theme_service_aura_linux.cc b/chrome/browser/themes/theme_service_aura_linux.cc index f2f7515..eb132114 100644 --- a/chrome/browser/themes/theme_service_aura_linux.cc +++ b/chrome/browser/themes/theme_service_aura_linux.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/themes/theme_service_aura_linux.h" #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/themes/custom_theme_supplier.h" #include "chrome/common/pref_names.h" @@ -34,8 +35,8 @@ ~SystemThemeLinux() override; // These pointers are not owned by us. - views::LinuxUI* const linux_ui_; - PrefService* const pref_service_; + const raw_ptr<views::LinuxUI> linux_ui_; + const raw_ptr<PrefService> pref_service_; }; SystemThemeLinux::SystemThemeLinux(PrefService* pref_service)
diff --git a/chrome/browser/themes/theme_service_linux_unittest.cc b/chrome/browser/themes/theme_service_linux_unittest.cc index 978ecb6..64ce56e7 100644 --- a/chrome/browser/themes/theme_service_linux_unittest.cc +++ b/chrome/browser/themes/theme_service_linux_unittest.cc
@@ -112,7 +112,7 @@ } protected: - views::LinuxUI* linux_ui_; + raw_ptr<views::LinuxUI> linux_ui_; }; // TODO(crbug.com/1310397): There're mismatched colors in some Linux themes.
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb index ce7effa5..ce0c452 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -284,7 +284,8 @@ <translation id="2534155362429831547">تم حذف <ph name="NUMBER_OF_ITEMS" /> من العناصر</translation> <translation id="2534582914273493287">يتم إرسال عناوين URL التي تزورها إلى Google</translation> <translation id="2536728043171574184">عرض نسخة بلا اتصال من هذه الصفحة</translation> -<translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع</translation> +<translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع الإلكترونية +</translation> <translation id="2549516196460093976">يمكنك استخدام هذا الجهاز اللوحي لتسجيل الدخول إلى حساب Google على جهاز الكمبيوتر الذي يعرض رمز الاستجابة السريعة هذا.</translation> <translation id="2558569818338050235">يؤثر سجلّ تصفّحك في الإعلانات التي تظهر لك.</translation> <translation id="2561519700418191927">معاينات الفيديوهات</translation> @@ -500,7 +501,7 @@ <translation id="371230970611282515">توقّع الأحداث الخطيرة قبل حدوثها والتحذير منها</translation> <translation id="3714981814255182093">فتح شريط البحث</translation> <translation id="3716182511346448902">تستهلك هذه الصفحة مساحة كبيرة من الذاكرة، لذلك أوقفها Chrome مؤقتًا.</translation> -<translation id="3721119614952978349">علاقتك مع Google</translation> +<translation id="3721119614952978349">أنت وGoogle</translation> <translation id="3737319253362202215">إعدادات الترجمة</translation> <translation id="3737402728074743863">عليك ضبط قفل الشاشة لاستخدام هذا الجهاز كمفتاح أمان.</translation> <translation id="3738139272394829648">المس للبحث</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb index 7a113a3..d57b118 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -674,7 +674,7 @@ <translation id="4736934858538408121">Tarjeta virtual</translation> <translation id="4738836084190194332">Última sincronización: <ph name="WHEN" /></translation> <translation id="4741753828624614066">Recibirás mejores sugerencias en la barra de direcciones.</translation> -<translation id="4742970037960872810">Quitar el texto destacado</translation> +<translation id="4742970037960872810">Dejar de destacar</translation> <translation id="4749960740855309258">Abrir una pestaña nueva</translation> <translation id="4758061975920522644">Compartir solo la imagen</translation> <translation id="4759238208242260848">Descargas</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb index 081211b..81ef690 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -1199,7 +1199,7 @@ <translation id="749294055653435199">Google Lens ez dago erabilgarri gailu honetan</translation> <translation id="7493994139787901920"><ph name="VERSION" /> (azken eguneratzea: <ph name="TIME_SINCE_UPDATE" />)</translation> <translation id="7498271377022651285">Itxaron, mesedez…</translation> -<translation id="7502234197872745058">Webgune guztietan Google-ko kontuaren saioa amaitzeko, <ph name="BEGIN_LINK1" />amaitu Chrome-ko saioa<ph name="END_LINK1" />.</translation> +<translation id="7502234197872745058">Webgune guztietan Google-ko kontuko saioa amaitzeko, <ph name="BEGIN_LINK1" />amaitu Chrome-ko saioa<ph name="END_LINK1" />.</translation> <translation id="750228856503700085">Ez dago berritasunik</translation> <translation id="7507207699631365376">Ikusi hornitzailearen <ph name="BEGIN_LINK" />pribatutasun-gidalerroak<ph name="END_LINK" /></translation> <translation id="7514365320538308">Deskargatu</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb index 3663c2d..641c791 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -1386,7 +1386,7 @@ <translation id="8453310803815879010">Bắt đầu Trò chơi Khủng long</translation> <translation id="8461694314515752532">Mã hóa dữ liệu đã đồng bộ hóa bằng cụm mật khẩu đồng bộ hóa của riêng bạn</translation> <translation id="8466613982764129868">Hãy đảm bảo <ph name="TARGET_DEVICE_NAME" /> có kết nối Internet</translation> -<translation id="8473863474539038330">Địa chỉ và các tùy chọn khác</translation> +<translation id="8473863474539038330">Địa chỉ và các lựa chọn khác</translation> <translation id="8481921391193215807">Khi bạn bật Hộp cát về quyền riêng tư, các trang web có thể dùng kỹ thuật bảo vệ quyền riêng tư theo mô tả ở đây để cung cấp nội dung và dịch vụ của mình. Các kỹ thuật này gồm có những biện pháp thay thế cho hoạt động theo dõi trên nhiều trang web. Theo thời gian, chúng tôi có thể bổ sung nhiều chế độ dùng thử khác. <ph name="BEGIN_LIST_ITEM1" />Các nhà quảng cáo và nhà xuất bản có thể dùng kỹ thuật FLoC.<ph name="END_LIST_ITEM1" />
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java index 5a1a7f3..223a13a 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionBridge.java
@@ -70,7 +70,7 @@ @CalledByNative private void destroy() { - mAccountSelectionComponent.hideBottomSheet(); + mAccountSelectionComponent.close(); mNativeView = 0; }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java index 9cd639e..f68f8b1 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionControllerTest.java
@@ -297,7 +297,7 @@ Arrays.asList(ANA, CARL, BOB), IDP_METADATA, CLIENT_ID_METADATA, false); verify(mMockBottomSheetController, times(1)).requestShowContent(any(), eq(true)); - assertEquals("Incorrectly hidden", true, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); } @Test @@ -305,7 +305,7 @@ when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); mMediator.showAccounts(TEST_ETLD_PLUS_ONE, TEST_ETLD_PLUS_ONE_1, Arrays.asList(ANA), IDP_METADATA, CLIENT_ID_METADATA, false); - assertEquals("Incorrectly hidden", true, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); assertNotNull(mModel.get(ItemProperties.CONTINUE_BUTTON) .get(ContinueButtonProperties.ON_CLICK_LISTENER)); @@ -313,9 +313,9 @@ .get(ContinueButtonProperties.ON_CLICK_LISTENER) .onResult(ANA); verify(mMockDelegate).onAccountSelected(ANA); - assertEquals(true, mMediator.isVisible()); - mMediator.hideBottomSheet(); - assertEquals(false, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); + mMediator.close(); + assertTrue(mMediator.wasDismissed()); } @Test @@ -323,14 +323,14 @@ when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); mMediator.showAccounts(TEST_ETLD_PLUS_ONE, TEST_ETLD_PLUS_ONE_1, Arrays.asList(ANA, CARL), IDP_METADATA, CLIENT_ID_METADATA, false); - assertEquals("Incorrectly hidden", true, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); assertNotNull(mSheetAccountItems.get(0).model.get(AccountProperties.ON_CLICK_LISTENER)); mSheetAccountItems.get(0).model.get(AccountProperties.ON_CLICK_LISTENER).onResult(CARL); verify(mMockDelegate).onAccountSelected(CARL); - assertEquals(true, mMediator.isVisible()); - mMediator.hideBottomSheet(); - assertEquals(false, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); + mMediator.close(); + assertTrue(mMediator.wasDismissed()); } @Test @@ -340,7 +340,7 @@ IDP_METADATA, CLIENT_ID_METADATA, false); pressBack(); verify(mMockDelegate).onDismissed(/*shouldEmbargo=*/false); - assertEquals(false, mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); } @Test @@ -350,7 +350,7 @@ IDP_METADATA, CLIENT_ID_METADATA, false); pressBack(); verify(mMockDelegate).onDismissed(/*shouldEmbargo=*/false); - assertEquals("Incorrectly visible", false, mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); } @Test @@ -360,9 +360,9 @@ IDP_METADATA, CLIENT_ID_METADATA, false); mMediator.onAccountSelected(ANA); verify(mMockDelegate).onAccountSelected(ANA); - assertEquals(true, mMediator.isVisible()); - mMediator.hideBottomSheet(); - assertEquals(false, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); + mMediator.close(); + assertTrue(mMediator.wasDismissed()); } @Test @@ -372,7 +372,7 @@ Arrays.asList(ANA, NEW_USER), IDP_METADATA, CLIENT_ID_METADATA, false); mMediator.onAccountSelected(NEW_USER); - assertEquals(true, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); assertTrue(containsItemOfType(mModel, ItemProperties.DATA_SHARING_CONSENT)); assertEquals(1, mSheetAccountItems.size()); @@ -387,12 +387,12 @@ mMediator.onAccountSelected(NEW_USER); pressBack(); - assertTrue(mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); assertFalse(containsItemOfType(mModel, ItemProperties.DATA_SHARING_CONSENT)); assertEquals(2, mSheetAccountItems.size()); pressBack(); - assertFalse(mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); verify(mMockDelegate, never()).onAccountSelected(NEW_USER); } @@ -405,9 +405,9 @@ // Auto signs in if no action is taken. ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); verify(mMockDelegate).onAccountSelected(ANA); - assertEquals(true, mMediator.isVisible()); - mMediator.hideBottomSheet(); - assertEquals(false, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); + mMediator.close(); + assertTrue(mMediator.wasDismissed()); } @Test @@ -417,7 +417,7 @@ IDP_METADATA, CLIENT_ID_METADATA, true); mMediator.onAutoSignInCancelled(); verify(mMockDelegate).onAutoSignInCancelled(); - assertEquals("Incorrectly visible", false, mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); } @Test @@ -425,7 +425,7 @@ when(mMockBottomSheetController.requestShowContent(any(), anyBoolean())).thenReturn(true); mMediator.showAccounts(TEST_ETLD_PLUS_ONE, TEST_ETLD_PLUS_ONE_1, Arrays.asList(ANA), IDP_METADATA, CLIENT_ID_METADATA, true); - assertEquals("Incorrectly hidden", true, mMediator.isVisible()); + assertFalse(mMediator.wasDismissed()); assertNotNull(mModel.get(ItemProperties.AUTO_SIGN_IN_CANCEL_BUTTON) .get(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER)); @@ -433,7 +433,7 @@ .get(AutoSignInCancelButtonProperties.ON_CLICK_LISTENER) .run(); verify(mMockDelegate).onAutoSignInCancelled(); - assertEquals("Incorrectly visible", false, mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); } @Test @@ -444,7 +444,7 @@ pressBack(); verify(mMockDelegate).onDismissed(/*shouldEmbargo=*/false); verifyNoMoreInteractions(mMockDelegate); - assertEquals("Incorrectly visible", false, mMediator.isVisible()); + assertTrue(mMediator.wasDismissed()); // The delayed task should not call delegate after user dismissing. ShadowLooper.runUiThreadTasksIncludingDelayedTasks(); }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java index ebf9aeb..1afa9cd 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionCoordinator.java
@@ -127,7 +127,7 @@ } @Override - public void hideBottomSheet() { - mMediator.hideBottomSheet(); + public void close() { + mMediator.close(); } }
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java index 8c0da6f8..45a0427e 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionMediator.java
@@ -11,7 +11,6 @@ import android.text.TextUtils; import androidx.annotation.Px; -import androidx.annotation.VisibleForTesting; import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.browser.ui.android.webid.AccountSelectionProperties.AccountProperties; @@ -43,7 +42,8 @@ * to events like clicks. */ class AccountSelectionMediator { - private boolean mVisible; + private boolean mRegisteredObservers; + private boolean mWasDismissed; private final AccountSelectionComponent.Delegate mDelegate; private final PropertyModel mModel; private final ModelList mSheetAccountItems; @@ -86,7 +86,6 @@ AccountSelectionBottomSheetContent bottomSheetContent, ImageFetcher imageFetcher, @Px int desiredAvatarSize) { assert delegate != null; - mVisible = false; mDelegate = delegate; mModel = model; mSheetAccountItems = sheetAccountItems; @@ -106,7 +105,7 @@ super.onSheetClosed(reason); mBottomSheetController.removeObserver(mBottomSheetObserver); - if (!mVisible) return; + if (mWasDismissed) return; // Dismissing the FedCM bottom sheet via {@link StateChangeReason#SWIPE} is more // intentional than other methods such as {@link StateChangeReason#OMNIBOX_FOCUS}. @@ -117,7 +116,7 @@ } private boolean handleBackPress() { - if (mVisible && mSelectedAccount != null && mAccounts.size() != 1) { + if (!mWasDismissed && mSelectedAccount != null && mAccounts.size() != 1) { mSelectedAccount = null; showAccountsInternal(mRpForDisplay, mIdpForDisplay, mAccounts, mIdpMetadata, mClientMetadata, /*isAutoSignIn=*/false, /*focusItem=*/ItemProperties.HEADER); @@ -162,8 +161,8 @@ /* focusItem=*/ItemProperties.HEADER); } - void hideBottomSheet() { - if (mVisible) hideContent(); + void close() { + if (!mWasDismissed) hideContent(); } void showAccounts(String rpForDisplay, String idpForDisplay, List<Account> accounts, @@ -261,12 +260,11 @@ * (e.g., higher priority content is being shown) it removes the request from the bottom sheet * controller queue and notifies the delegate of the dismissal. */ - @VisibleForTesting - void showContent() { + private void showContent() { if (mBottomSheetController.requestShowContent(mBottomSheetContent, true)) { - if (mVisible) return; + if (mRegisteredObservers) return; - mVisible = true; + mRegisteredObservers = true; mBottomSheetController.addObserver(mBottomSheetObserver); KeyboardVisibilityDelegate.getInstance().addKeyboardVisibilityListener( mKeyboardVisibilityListener); @@ -279,7 +277,7 @@ * Requests to hide the bottom sheet. */ void hideContent() { - mVisible = false; + mWasDismissed = true; KeyboardVisibilityDelegate.getInstance().removeKeyboardVisibilityListener( mKeyboardVisibilityListener); mBottomSheetController.hideContent(mBottomSheetContent, true); @@ -305,12 +303,12 @@ } } - boolean isVisible() { - return mVisible; + boolean wasDismissed() { + return mWasDismissed; } void onAccountSelected(Account selectedAccount) { - if (!mVisible) return; + if (mWasDismissed) return; Account oldSelectedAccount = mSelectedAccount; mSelectedAccount = selectedAccount;
diff --git a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java index 3601004..1e082004 100644 --- a/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java +++ b/chrome/browser/ui/android/webid/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionComponent.java
@@ -52,7 +52,7 @@ boolean isAutoSignIn); /** - * Hides the outstanding bottom sheet. + * Closes the outstanding bottom sheet. */ - void hideBottomSheet(); + void close(); }
diff --git a/chrome/browser/ui/app_list/search/omnibox_result.cc b/chrome/browser/ui/app_list/search/omnibox_result.cc index 4620cb1..495fefb7 100644 --- a/chrome/browser/ui/app_list/search/omnibox_result.cc +++ b/chrome/browser/ui/app_list/search/omnibox_result.cc
@@ -68,6 +68,7 @@ case AutocompleteMatchType::TAB_SEARCH_DEPRECATED: case AutocompleteMatchType::DOCUMENT_SUGGESTION: case AutocompleteMatchType::PEDAL_DEPRECATED: + case AutocompleteMatchType::HISTORY_CLUSTER: return Subtype::kDomain; case AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED: @@ -257,6 +258,7 @@ case AutocompleteMatchType::TILE_SUGGESTION: case AutocompleteMatchType::TILE_NAVSUGGEST: case AutocompleteMatchType::OPEN_TAB: + case AutocompleteMatchType::HISTORY_CLUSTER: case AutocompleteMatchType::NUM_TYPES: return ash::SEARCH_RESULT_TYPE_BOUNDARY; }
diff --git a/chrome/browser/ui/autofill_assistant/password_change/mock_password_change_run_controller.h b/chrome/browser/ui/autofill_assistant/password_change/mock_password_change_run_controller.h index 00de8f0..8ca0b98 100644 --- a/chrome/browser/ui/autofill_assistant/password_change/mock_password_change_run_controller.h +++ b/chrome/browser/ui/autofill_assistant/password_change/mock_password_change_run_controller.h
@@ -38,7 +38,7 @@ ShowBasePrompt, (const autofill_assistant::password_change::BasePromptSpecification&), (override)); - MOCK_METHOD(void, OnBasePromptChoiceSelected, (int), (override)); + MOCK_METHOD(void, OnBasePromptChoiceSelected, (size_t), (override)); MOCK_METHOD(void, ShowGeneratedPasswordPrompt, (const autofill_assistant::password_change::
diff --git a/chrome/browser/ui/autofill_assistant/password_change/password_change_run_controller.h b/chrome/browser/ui/autofill_assistant/password_change/password_change_run_controller.h index 8a12294..230de5a6 100644 --- a/chrome/browser/ui/autofill_assistant/password_change/password_change_run_controller.h +++ b/chrome/browser/ui/autofill_assistant/password_change/password_change_run_controller.h
@@ -50,7 +50,7 @@ virtual void ShowBasePrompt( const autofill_assistant::password_change::BasePromptSpecification& base_prompt) = 0; - virtual void OnBasePromptChoiceSelected(int choice_index) = 0; + virtual void OnBasePromptChoiceSelected(size_t choice_index) = 0; // Shows a generated password prompt and receives the response from the view. virtual void ShowGeneratedPasswordPrompt(
diff --git a/chrome/browser/ui/global_media_controls/media_notification_device_monitor.h b/chrome/browser/ui/global_media_controls/media_notification_device_monitor.h index eeca5a29..5a2f9960 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_device_monitor.h +++ b/chrome/browser/ui/global_media_controls/media_notification_device_monitor.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_GLOBAL_MEDIA_CONTROLS_MEDIA_NOTIFICATION_DEVICE_MONITOR_H_ #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "base/system/system_monitor.h" #include "build/build_config.h" @@ -82,7 +83,7 @@ media::AudioDeviceDescriptions descriptions); void NotifyObservers(); - MediaNotificationDeviceProvider* const device_provider_; + const raw_ptr<MediaNotificationDeviceProvider> device_provider_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; std::vector<std::string> device_ids_; bool is_task_posted_ = false;
diff --git a/chrome/browser/ui/passwords/settings/password_manager_porter.h b/chrome/browser/ui/passwords/settings/password_manager_porter.h index 65b782ce..cd5746ce 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_porter.h +++ b/chrome/browser/ui/passwords/settings/password_manager_porter.h
@@ -82,7 +82,7 @@ std::unique_ptr<password_manager::PasswordManagerExporter> exporter_; scoped_refptr<ui::SelectFileDialog> select_file_dialog_; - Profile* profile_; + raw_ptr<Profile> profile_; // We store |presenter_| and // |on_export_progress_callback_| to use them to create a new
diff --git a/chrome/browser/ui/passwords/settings/password_manager_presenter.cc b/chrome/browser/ui/passwords/settings/password_manager_presenter.cc index 9108354..31a1375 100644 --- a/chrome/browser/ui/passwords/settings/password_manager_presenter.cc +++ b/chrome/browser/ui/passwords/settings/password_manager_presenter.cc
@@ -322,7 +322,7 @@ SyncServiceFactory::GetForProfile(password_view_->GetProfile()); } if (password_manager::sync_util::IsSyncAccountCredential( - form, sync_service, + form.url, form.username_value, sync_service, IdentityManagerFactory::GetForProfile( password_view_->GetProfile()))) { base::RecordAction(
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_manager_unittest.cc b/chrome/browser/ui/views/bubble/webui_bubble_manager_unittest.cc index 6cd7d4c5..4668e9c 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_manager_unittest.cc +++ b/chrome/browser/ui/views/bubble/webui_bubble_manager_unittest.cc
@@ -70,7 +70,6 @@ const char* kProfileName = "Person 1"; auto* test_profile = profile_manager()->CreateTestingProfile(kProfileName); - // Owned by |test_profile|. auto* service = BubbleContentsWrapperServiceFactory::GetForProfile(test_profile, true); ASSERT_NE(nullptr, service); @@ -82,9 +81,8 @@ anchor_widget->GetContentsView(), test_profile, GURL(kTestURL), 1); bubble_manager->DisableCloseBubbleHelperForTesting(); - // If using per-profile persistence the `contents_wrapper` should have been + // If using per-profile peristence the `contents_wrapper` should have been // created before the bubble has been invoked. - // Owned by |service|. BubbleContentsWrapper* contents_wrapper = service->GetBubbleContentsWrapperFromURL(GURL(kTestURL)); EXPECT_NE(nullptr, contents_wrapper); @@ -104,7 +102,6 @@ EXPECT_EQ(contents_wrapper, service->GetBubbleContentsWrapperFromURL(GURL(kTestURL))); - service->Shutdown(); // Need to Shutdown() before the profile owning it. profile_manager()->DeleteTestingProfile(kProfileName); } @@ -225,8 +222,6 @@ test_manager(manager1.get(), service1, contents_wrapper_profile1); test_manager(manager2.get(), service1, contents_wrapper_profile1); test_manager(manager3.get(), service2, contents_wrapper_profile2); - service1->Shutdown(); // Need to Shutdown() before the profile owning it. - service2->Shutdown(); // Need to Shutdown() before the profile owning it. profile_manager()->DeleteTestingProfile(kProfileName1); profile_manager()->DeleteTestingProfile(kProfileName2); }
diff --git a/chrome/browser/ui/views/crypto_module_password_dialog_view.h b/chrome/browser/ui/views/crypto_module_password_dialog_view.h index 6e3891d8..12009e4 100644 --- a/chrome/browser/ui/views/crypto_module_password_dialog_view.h +++ b/chrome/browser/ui/views/crypto_module_password_dialog_view.h
@@ -8,6 +8,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "chrome/browser/ui/crypto_module_password_dialog.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/views/controls/textfield/textfield_controller.h" @@ -53,9 +54,9 @@ const std::string& slot_name, CryptoModulePasswordReason reason); - views::Label* reason_label_; - views::Label* password_label_; - views::Textfield* password_entry_; + raw_ptr<views::Label> reason_label_; + raw_ptr<views::Label> password_label_; + raw_ptr<views::Textfield> password_entry_; CryptoModulePasswordCallback callback_; };
diff --git a/chrome/browser/ui/views/first_run_dialog.h b/chrome/browser/ui/views/first_run_dialog.h index fb02b74..c5977ba 100644 --- a/chrome/browser/ui/views/first_run_dialog.h +++ b/chrome/browser/ui/views/first_run_dialog.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_VIEWS_FIRST_RUN_DIALOG_H_ #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/views/window/dialog_delegate.h" @@ -43,8 +44,8 @@ // instead, in which we default to disabling metrics reporting. bool closed_through_accept_button_ = false; - views::Checkbox* make_default_ = nullptr; - views::Checkbox* report_crashes_ = nullptr; + raw_ptr<views::Checkbox> make_default_ = nullptr; + raw_ptr<views::Checkbox> report_crashes_ = nullptr; base::RepeatingClosure quit_runloop_; };
diff --git a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h index 79c7e7e..a24d1f0 100644 --- a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h +++ b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_linux.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_LINUX_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_LINUX_H_ +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host.h" #include "ui/views/linux_ui/device_scale_factor_observer.h" @@ -88,9 +89,9 @@ // views::OnDeviceScaleFactorChanged: void OnDeviceScaleFactorChanged() override; - BrowserView* browser_view_ = nullptr; - BrowserFrame* browser_frame_ = nullptr; - DesktopBrowserFrameAuraLinux* native_frame_ = nullptr; + raw_ptr<BrowserView> browser_view_ = nullptr; + raw_ptr<BrowserFrame> browser_frame_ = nullptr; + raw_ptr<DesktopBrowserFrameAuraLinux> native_frame_ = nullptr; #if defined(USE_DBUS_MENU) // Each browser frame maintains its own menu bar object because the lower
diff --git a/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h b/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h index 0f7b250..b98c6a4 100644 --- a/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h +++ b/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_VIEW_LAYOUT_LINUX_NATIVE_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_VIEW_LAYOUT_LINUX_NATIVE_H_ +#include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux.h" #include "ui/views/linux_ui/nav_button_provider.h" #include "ui/views/linux_ui/window_frame_provider.h" @@ -42,8 +43,8 @@ views::FrameButton button_id) const; // Owned by BrowserFrameViewLinuxNative. - views::NavButtonProvider* const nav_button_provider_; - views::WindowFrameProvider* const window_frame_provider_; + const raw_ptr<views::NavButtonProvider> nav_button_provider_; + const raw_ptr<views::WindowFrameProvider> window_frame_provider_; }; #endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_VIEW_LAYOUT_LINUX_NATIVE_H_
diff --git a/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native_unittest.cc b/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native_unittest.cc index 33a0aef..fe67314b 100644 --- a/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native_unittest.cc +++ b/chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "chrome/browser/ui/views/frame/browser_frame_view_layout_linux_native.h" +#include "base/memory/raw_ptr.h" #include <memory> @@ -207,17 +208,17 @@ } std::unique_ptr<views::Widget> widget_; - views::View* root_view_ = nullptr; - BrowserFrameViewLayoutLinuxNative* layout_manager_ = nullptr; + raw_ptr<views::View> root_view_ = nullptr; + raw_ptr<BrowserFrameViewLayoutLinuxNative> layout_manager_ = nullptr; std::unique_ptr<TestLayoutDelegate> delegate_; std::unique_ptr<views::NavButtonProvider> nav_button_provider_; std::unique_ptr<views::WindowFrameProvider> frame_provider_; // Widgets: - views::ImageButton* minimize_button_ = nullptr; - views::ImageButton* maximize_button_ = nullptr; - views::ImageButton* restore_button_ = nullptr; - views::ImageButton* close_button_ = nullptr; + raw_ptr<views::ImageButton> minimize_button_ = nullptr; + raw_ptr<views::ImageButton> maximize_button_ = nullptr; + raw_ptr<views::ImageButton> restore_button_ = nullptr; + raw_ptr<views::ImageButton> close_button_ = nullptr; }; // Tests layout of native navigation buttons.
diff --git a/chrome/browser/ui/views/frame/browser_frame_view_linux_native.h b/chrome/browser/ui/views/frame/browser_frame_view_linux_native.h index c0575ac..e0b7de0 100644 --- a/chrome/browser/ui/views/frame/browser_frame_view_linux_native.h +++ b/chrome/browser/ui/views/frame/browser_frame_view_linux_native.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_VIEW_LINUX_NATIVE_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_VIEW_LINUX_NATIVE_H_ +#include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/frame/browser_frame_view_linux.h" #include "ui/views/linux_ui/nav_button_provider.h" #include "ui/views/linux_ui/window_frame_provider.h" @@ -57,7 +58,7 @@ std::unique_ptr<views::NavButtonProvider> nav_button_provider_; - views::WindowFrameProvider* const window_frame_provider_; + const raw_ptr<views::WindowFrameProvider> window_frame_provider_; DrawFrameButtonParams cache_{0, false, false}; };
diff --git a/chrome/browser/ui/views/frame/dbus_appmenu.h b/chrome/browser/ui/views/frame/dbus_appmenu.h index 4c9afde..1aede51 100644 --- a/chrome/browser/ui/views/frame/dbus_appmenu.h +++ b/chrome/browser/ui/views/frame/dbus_appmenu.h
@@ -9,6 +9,7 @@ #include <string> #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/scoped_observation.h" #include "chrome/browser/command_observer.h" @@ -139,9 +140,9 @@ ui::Accelerator* accelerator) const override; // State for the browser window we're tracking. - Browser* const browser_; - Profile* profile_; - BrowserView* browser_view_; + const raw_ptr<Browser> browser_; + raw_ptr<Profile> profile_; + raw_ptr<BrowserView> browser_view_; // XID of the browser's frame window that owns this menu. Deliberately stored // as plain int (and not as x11::Window) because it is never used for any // calls to the X server, but it is always used for building string paths and @@ -163,15 +164,15 @@ std::vector<std::unique_ptr<ui::SimpleMenuModel>> toplevel_menus_; std::vector<std::unique_ptr<ui::SimpleMenuModel>> recently_closed_window_menus_; - ui::SimpleMenuModel* history_menu_ = nullptr; - ui::SimpleMenuModel* profiles_menu_ = nullptr; + raw_ptr<ui::SimpleMenuModel> history_menu_ = nullptr; + raw_ptr<ui::SimpleMenuModel> profiles_menu_ = nullptr; // Tracks value of the kShowBookmarkBar preference. PrefChangeRegistrar pref_change_registrar_; scoped_refptr<history::TopSites> top_sites_; - sessions::TabRestoreService* tab_restore_service_; // weak + raw_ptr<sessions::TabRestoreService> tab_restore_service_; // weak std::unique_ptr<AvatarMenu> avatar_menu_;
diff --git a/chrome/browser/ui/views/frame/dbus_appmenu_registrar.h b/chrome/browser/ui/views/frame/dbus_appmenu_registrar.h index 29fbbe32..6897bac 100644 --- a/chrome/browser/ui/views/frame/dbus_appmenu_registrar.h +++ b/chrome/browser/ui/views/frame/dbus_appmenu_registrar.h
@@ -8,6 +8,7 @@ #include <map> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/no_destructor.h" @@ -71,7 +72,7 @@ void OnNameOwnerChanged(const std::string& service_owner); scoped_refptr<dbus::Bus> bus_; - dbus::ObjectProxy* registrar_proxy_; + raw_ptr<dbus::ObjectProxy> registrar_proxy_; bool service_has_owner_ = false; // Maps menus to flags that indicate if the menu has been successfully
diff --git a/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.h b/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.h index 57471f44..5014d30 100644 --- a/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.h +++ b/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_FRAME_DESKTOP_BROWSER_FRAME_AURA_LINUX_H_ #define CHROME_BROWSER_UI_VIEWS_FRAME_DESKTOP_BROWSER_FRAME_AURA_LINUX_H_ +#include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/frame/desktop_browser_frame_aura.h" #include "base/gtest_prod_util.h" @@ -43,7 +44,7 @@ // Whether the custom Chrome frame preference is set. BooleanPrefMember use_custom_frame_pref_; - BrowserDesktopWindowTreeHostLinux* host_ = nullptr; + raw_ptr<BrowserDesktopWindowTreeHostLinux> host_ = nullptr; }; #endif // CHROME_BROWSER_UI_VIEWS_FRAME_DESKTOP_BROWSER_FRAME_AURA_LINUX_H_
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.cc b/chrome/browser/ui/views/frame/system_menu_model_builder.cc index b708b6f..c55c6f3 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder.cc
@@ -144,9 +144,7 @@ model->AddSeparator(ui::NORMAL_SEPARATOR); model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); } -// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) +#if BUILDFLAG(IS_LINUX) model->AddSeparator(ui::NORMAL_SEPARATOR); model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); #endif
diff --git a/chrome/browser/ui/views/intent_picker_bubble_view.cc b/chrome/browser/ui/views/intent_picker_bubble_view.cc index be6674f9..70d5905 100644 --- a/chrome/browser/ui/views/intent_picker_bubble_view.cc +++ b/chrome/browser/ui/views/intent_picker_bubble_view.cc
@@ -734,11 +734,7 @@ ClearIntentPickerBubbleView(); if (!intent_picker_cb_.is_null()) { // Calling Run() will make |intent_picker_cb_| null. - // TODO(https://crbug.com/853604): Remove this and convert to a DCHECK - // after finding out the root cause. - if (should_persist && launch_name.empty()) { - base::debug::DumpWithoutCrashing(); - } + DCHECK(!should_persist || !launch_name.empty()); std::move(intent_picker_cb_) .Run(launch_name, entry_type, close_reason, should_persist); }
diff --git a/chrome/browser/ui/views/profiles/profile_picker_signed_in_flow_controller.cc b/chrome/browser/ui/views/profiles/profile_picker_signed_in_flow_controller.cc index 87ecd19..2df7560 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_signed_in_flow_controller.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_signed_in_flow_controller.cc
@@ -115,17 +115,10 @@ } GURL ProfilePickerSignedInFlowController::GetSyncConfirmationURL(bool loading) { - // The color should be set also for the loading case. Namely, the sync - // confirmation webUI is not re-initialized when loading a URL for the same - // host but with another path. If a policy later changes the value of - // `GetProfileColor()`, it's fine. In this case, Chrome shows the enterprise - // welcome screen in between the loading URL and the sync confirmation URL and - // thus the sync confirmation webUI will get recreated with the right color. GURL url = GURL(chrome::kChromeUISyncConfirmationURL); return AppendSyncConfirmationQueryParams( loading ? url.Resolve(chrome::kChromeUISyncConfirmationLoadingPath) : url, - {/*is_modal=*/false, SyncConfirmationUI::DesignVersion::kColored, - GetProfileColor()}); + /*is_modal=*/false); } std::unique_ptr<content::WebContents>
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc index 58d7882f..ba24e88a 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -134,12 +134,9 @@ return account_info; } -GURL GetSyncConfirmationURL( - absl::optional<SkColor> profile_color = kProfileColor) { - return AppendSyncConfirmationQueryParams( - GURL("chrome://sync-confirmation/"), - {/*is_modal=*/false, SyncConfirmationUI::DesignVersion::kColored, - profile_color}); +GURL GetSyncConfirmationURL() { + return AppendSyncConfirmationQueryParams(GURL("chrome://sync-confirmation/"), + /*is_modal=*/false); } #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -815,7 +812,7 @@ // Wait for the sign-in to propagate to the flow, resulting in sync // confirmation screen getting displayed. - WaitForLoadStop(GetSyncConfirmationURL(kDifferentProfileColor)); + WaitForLoadStop(GetSyncConfirmationURL()); // Simulate closing the UI with "No, thanks". LoginUIServiceFactory::GetForProfile(profile_being_created) @@ -1939,7 +1936,7 @@ profiles::testing::ExpectPickerWelcomeScreenType( EnterpriseProfileWelcomeUI::ScreenType::kLacrosConsumerWelcome); handler->HandleProceedForTesting(/*should_link_data=*/false); - WaitForLoadStop(GetSyncConfirmationURL(absl::optional<SkColor>())); + WaitForLoadStop(GetSyncConfirmationURL()); // Exit the FRE. ProfilePicker::Hide(); @@ -1992,7 +1989,7 @@ profiles::testing::ExpectPickerWelcomeScreenType( EnterpriseProfileWelcomeUI::ScreenType::kLacrosConsumerWelcome); handler->HandleProceedForTesting(/*should_link_data=*/false); - WaitForLoadStop(GetSyncConfirmationURL(absl::optional<SkColor>())); + WaitForLoadStop(GetSyncConfirmationURL()); // Opt-in to sync LoginUIServiceFactory::GetForProfile(profile)->SyncConfirmationUIClosed(
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_test_utils.cc b/chrome/browser/ui/views/profiles/profile_picker_view_test_utils.cc index 09c5ceb..c4a1058 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_test_utils.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view_test_utils.cc
@@ -160,10 +160,9 @@ EnterpriseProfileWelcomeHandler* handler = ExpectPickerWelcomeScreenType( EnterpriseProfileWelcomeUI::ScreenType::kLacrosConsumerWelcome); handler->HandleProceedForTesting(/*should_link_data=*/false); - WaitForPickerLoadStop(AppendSyncConfirmationQueryParams( - GURL("chrome://sync-confirmation/"), - {/*is_modal=*/false, SyncConfirmationUI::DesignVersion::kColored, - absl::optional<SkColor>()})); + WaitForPickerLoadStop( + AppendSyncConfirmationQueryParams(GURL("chrome://sync-confirmation/"), + /*is_modal=*/false)); if (result == LoginUIService::UI_CLOSED) { // `UI_CLOSED` is not provided via webui handlers. Instead, it gets sent
diff --git a/chrome/browser/ui/views/status_icons/concat_menu_model.h b/chrome/browser/ui/views/status_icons/concat_menu_model.h index 1503eac..9a60eb4 100644 --- a/chrome/browser/ui/views/status_icons/concat_menu_model.h +++ b/chrome/browser/ui/views/status_icons/concat_menu_model.h
@@ -7,6 +7,7 @@ #include <utility> +#include "base/memory/raw_ptr.h" #include "ui/base/models/image_model.h" #include "ui/base/models/menu_model.h" @@ -53,8 +54,8 @@ // adjusted for the returned menu. ui::MenuModel* GetMenuAndIndex(int* index) const; - ui::MenuModel* const m1_; - ui::MenuModel* const m2_; + const raw_ptr<ui::MenuModel> m1_; + const raw_ptr<ui::MenuModel> m2_; }; #endif // CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_CONCAT_MENU_MODEL_H_
diff --git a/chrome/browser/ui/views/status_icons/status_icon_button_linux.h b/chrome/browser/ui/views/status_icons/status_icon_button_linux.h index 5aef8cf6..0513007 100644 --- a/chrome/browser/ui/views/status_icons/status_icon_button_linux.h +++ b/chrome/browser/ui/views/status_icons/status_icon_button_linux.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/views/context_menu_controller.h" #include "ui/views/controls/button/button.h" @@ -49,7 +50,7 @@ private: std::unique_ptr<views::Widget> widget_; - aura::WindowTreeHost* host_ = nullptr; + raw_ptr<aura::WindowTreeHost> host_ = nullptr; std::unique_ptr<views::MenuRunner> menu_runner_; };
diff --git a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h index 5645b81..c9bf135c 100644 --- a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h +++ b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h
@@ -9,6 +9,7 @@ #include "base/callback_forward.h" #include "base/files/file_path.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" @@ -103,8 +104,8 @@ scoped_refptr<dbus::Bus> bus_; int service_id_ = 0; - dbus::ObjectProxy* watcher_ = nullptr; - dbus::ExportedObject* item_ = nullptr; + raw_ptr<dbus::ObjectProxy> watcher_ = nullptr; + raw_ptr<dbus::ExportedObject> item_ = nullptr; base::RepeatingCallback<void(bool)> barrier_;
diff --git a/chrome/browser/ui/views/status_icons/status_icon_linux_wrapper.h b/chrome/browser/ui/views/status_icons/status_icon_linux_wrapper.h index a1a41a1..65cbe081 100644 --- a/chrome/browser/ui/views/status_icons/status_icon_linux_wrapper.h +++ b/chrome/browser/ui/views/status_icons/status_icon_linux_wrapper.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "chrome/browser/status_icons/desktop_notification_balloon.h" #include "chrome/browser/status_icons/status_icon.h" @@ -89,12 +90,12 @@ scoped_refptr<StatusIconLinuxDbus> status_icon_dbus_; #endif std::unique_ptr<views::StatusIconLinux> status_icon_linux_; - views::StatusIconLinux* status_icon_; + raw_ptr<views::StatusIconLinux> status_icon_; StatusIconType status_icon_type_; gfx::ImageSkia image_; std::u16string tool_tip_; - StatusIconMenuModel* menu_model_ = nullptr; + raw_ptr<StatusIconMenuModel> menu_model_ = nullptr; }; #endif // CHROME_BROWSER_UI_VIEWS_STATUS_ICONS_STATUS_ICON_LINUX_WRAPPER_H_
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller.cc b/chrome/browser/ui/views/tabs/tab_drag_controller.cc index bbc7da0..947ec0f 100644 --- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc +++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
@@ -15,7 +15,6 @@ #include "base/containers/adapters.h" #include "base/containers/contains.h" #include "base/cxx17_backports.h" -#include "base/debug/dump_without_crashing.h" #include "base/i18n/rtl.h" #include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" @@ -885,25 +884,8 @@ static const int kMinimumDragDistance = 10; int x_offset = abs(point_in_screen.x() - start_point_in_screen_.x()); int y_offset = abs(point_in_screen.y() - start_point_in_screen_.y()); - auto distance = sqrt(pow(static_cast<float>(x_offset), 2) + - pow(static_cast<float>(y_offset), 2)); -#if BUILDFLAG(IS_WIN) - // We're getting rare, spurious mouse events at 0,0, which if immediately - // preceded by a mouse down on a tab, drag and drop the tab to 0,0. See - // https://crbug.com/1270828. Gather crash dump information to help find - // possible causes/correlations. - static constexpr int kMinSpuriousDistance = 200; - static constexpr int kMaxDumps = 3; - static int g_num_dumps = 0; - if (point_in_screen == gfx::Point(0, 0) && distance > kMinSpuriousDistance && - g_num_dumps++ < kMaxDumps) { - base::debug::Alias(&x_offset); - base::debug::Alias(&y_offset); - base::debug::DumpWithoutCrashing(); - } -#endif // BUILDFLAG(IS_WIN) - - return distance > kMinimumDragDistance; + return sqrt(pow(static_cast<float>(x_offset), 2) + + pow(static_cast<float>(y_offset), 2)) > kMinimumDragDistance; } TabDragController::Liveness TabDragController::ContinueDragging(
diff --git a/chrome/browser/ui/views/translate/partial_translate_bubble_view.h b/chrome/browser/ui/views/translate/partial_translate_bubble_view.h index 00444ece..252f2bf 100644 --- a/chrome/browser/ui/views/translate/partial_translate_bubble_view.h +++ b/chrome/browser/ui/views/translate/partial_translate_bubble_view.h
@@ -247,7 +247,7 @@ base::OnceClosure on_closing_; - content::WebContents* web_contents_; + raw_ptr<content::WebContents> web_contents_; }; #endif // CHROME_BROWSER_UI_VIEWS_TRANSLATE_PARTIAL_TRANSLATE_BUBBLE_VIEW_H_
diff --git a/chrome/browser/ui/webui/certificate_viewer_webui.h b/chrome/browser/ui/webui/certificate_viewer_webui.h index f9c5659..512c42b 100644 --- a/chrome/browser/ui/webui/certificate_viewer_webui.h +++ b/chrome/browser/ui/webui/certificate_viewer_webui.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "chrome/common/net/x509_certificate_model.h" #include "content/public/browser/web_ui_message_handler.h" @@ -82,8 +83,8 @@ // The title of the certificate viewer dialog, Certificate Viewer: CN. std::u16string title_; - content::WebUI* webui_ = nullptr; - ConstrainedWebDialogDelegate* delegate_ = nullptr; + raw_ptr<content::WebUI> webui_ = nullptr; + raw_ptr<ConstrainedWebDialogDelegate> delegate_ = nullptr; }; // Dialog handler which handles calls from the JS WebUI code to view certificate @@ -123,9 +124,10 @@ int GetCertificateIndex(int requested_index) const; // The dialog. - CertificateViewerDialog* dialog_; + raw_ptr<CertificateViewerDialog> dialog_; - const std::vector<x509_certificate_model::X509CertificateModel>* certs_; + raw_ptr<const std::vector<x509_certificate_model::X509CertificateModel>> + certs_; }; #endif // CHROME_BROWSER_UI_WEBUI_CERTIFICATE_VIEWER_WEBUI_H_
diff --git a/chrome/browser/ui/webui/certificates_handler.cc b/chrome/browser/ui/webui/certificates_handler.cc index 0f2f0f5..de86daba 100644 --- a/chrome/browser/ui/webui/certificates_handler.cc +++ b/chrome/browser/ui/webui/certificates_handler.cc
@@ -17,6 +17,7 @@ #include "base/callback_helpers.h" #include "base/files/file_util.h" // for FileAccessProvider #include "base/i18n/string_compare.h" +#include "base/memory/raw_ptr.h" #include "base/posix/safe_strerror.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" @@ -136,7 +137,7 @@ bool operator()(const scoped_refptr<net::X509Certificate> cert) const { return net::x509_util::IsSameCertificate(cert_, cert.get()); } - CERTCertificate* cert_; + raw_ptr<CERTCertificate> cert_; }; // Determine if |data| could be a PFX Protocol Data Unit.
diff --git a/chrome/browser/ui/webui/certificates_handler_unittest.cc b/chrome/browser/ui/webui/certificates_handler_unittest.cc index a3535e4c..56c2071 100644 --- a/chrome/browser/ui/webui/certificates_handler_unittest.cc +++ b/chrome/browser/ui/webui/certificates_handler_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/webui/certificates_handler.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/common/pref_names.h" @@ -41,7 +42,7 @@ protected: content::TestWebUI web_ui_; certificate_manager::CertificatesHandler cert_handler_; - sync_preferences::TestingPrefServiceSyncable* pref_service_ = nullptr; + raw_ptr<sync_preferences::TestingPrefServiceSyncable> pref_service_ = nullptr; }; #if BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/webui/chromeos/chromebox_for_meetings/OWNERS b/chrome/browser/ui/webui/chromeos/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/chrome/browser/ui/webui/chromeos/chromebox_for_meetings/OWNERS +++ b/chrome/browser/ui/webui/chromeos/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 8fc34e3..36a88315 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -1211,6 +1211,10 @@ } } +void GaiaScreenHandler::Reset() { + CallExternalAPI("reset"); +} + void GaiaScreenHandler::ShowSecurityTokenPinDialog( const std::string& /*caller_extension_name*/, security_token_pin::CodeType code_type,
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h index 83c6e55..137eed92 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h
@@ -92,6 +92,8 @@ virtual void ShowSigninScreenForTest(const std::string& username, const std::string& password, const std::string& services) = 0; + // Reset authenticator. + virtual void Reset() = 0; }; // A class that handles WebUI hooks in Gaia screen. @@ -137,6 +139,7 @@ void ShowSigninScreenForTest(const std::string& username, const std::string& password, const std::string& services) override; + void Reset() override; // SecurityTokenPinDialogHost: void ShowSecurityTokenPinDialog(
diff --git a/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.cc index 24058c7..5d42bc9 100644 --- a/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.cc
@@ -4,7 +4,6 @@ #include "chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.h" -#include "chrome/browser/ash/login/screens/offline_login_screen.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" #include "components/login/localized_values_builder.h" @@ -13,25 +12,10 @@ namespace chromeos { -constexpr StaticOobeScreenId OfflineLoginView::kScreenId; - OfflineLoginScreenHandler::OfflineLoginScreenHandler() - : BaseScreenHandler(kScreenId) { - set_user_acted_method_path_deprecated("login.OfflineLoginScreen.userActed"); -} + : BaseScreenHandler(kScreenId) {} -OfflineLoginScreenHandler::~OfflineLoginScreenHandler() { - if (screen_) - screen_->OnViewDestroyed(this); -} - -void OfflineLoginScreenHandler::RegisterMessages() { - BaseScreenHandler::RegisterMessages(); - AddCallback("completeOfflineAuthentication", - &OfflineLoginScreenHandler::HandleCompleteAuth); - AddCallback("OfflineLogin.onEmailSubmitted", - &OfflineLoginScreenHandler::HandleEmailSubmitted); -} +OfflineLoginScreenHandler::~OfflineLoginScreenHandler() = default; void OfflineLoginScreenHandler::DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) { @@ -59,41 +43,20 @@ Reset(); } -void OfflineLoginScreenHandler::Bind(OfflineLoginScreen* screen) { - screen_ = screen; - BaseScreenHandler::SetBaseScreenDeprecated(screen_); -} - -void OfflineLoginScreenHandler::Unbind() { - screen_ = nullptr; - BaseScreenHandler::SetBaseScreenDeprecated(nullptr); -} - void OfflineLoginScreenHandler::Reset() { - CallJS("login.OfflineLoginScreen.reset"); -} - -void OfflineLoginScreenHandler::HandleCompleteAuth( - const std::string& username, - const std::string& password) { - screen_->HandleCompleteAuth(username, password); -} - -void OfflineLoginScreenHandler::HandleEmailSubmitted( - const std::string& username) { - screen_->HandleEmailSubmitted(username); + CallExternalAPI("reset"); } void OfflineLoginScreenHandler::ShowPasswordPage() { - CallJS("login.OfflineLoginScreen.proceedToPasswordPage"); + CallExternalAPI("proceedToPasswordPage"); } void OfflineLoginScreenHandler::ShowOnlineRequiredDialog() { - CallJS("login.OfflineLoginScreen.showOnlineRequiredDialog"); + CallExternalAPI("showOnlineRequiredDialog"); } void OfflineLoginScreenHandler::ShowPasswordMismatchMessage() { - CallJS("login.OfflineLoginScreen.showPasswordMismatchMessage"); + CallExternalAPI("showPasswordMismatchMessage"); } } // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.h index 7805b63..76baa91 100644 --- a/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/offline_login_screen_handler.h
@@ -13,9 +13,10 @@ namespace chromeos { -class OfflineLoginView { +class OfflineLoginView : public base::SupportsWeakPtr<OfflineLoginView> { public: - constexpr static StaticOobeScreenId kScreenId{"offline-login"}; + inline constexpr static StaticOobeScreenId kScreenId{"offline-login", + "OfflineLoginScreen"}; OfflineLoginView() = default; virtual ~OfflineLoginView() = default; @@ -26,12 +27,6 @@ // Hide the contents of the screen. virtual void Hide() = 0; - // Binds |screen| to the view. - virtual void Bind(ash::OfflineLoginScreen* screen) = 0; - - // Unbinds the screen from the view. - virtual void Unbind() = 0; - // Clear the input fields on the screen. virtual void Reset() = 0; @@ -59,24 +54,18 @@ private: void HandleCompleteAuth(const std::string& username, const std::string& password); - void HandleEmailSubmitted(const std::string& username); // OfflineLoginView: void Show(base::Value::Dict params) override; void Hide() override; - void Bind(ash::OfflineLoginScreen* screen) override; - void Unbind() override; void Reset() override; void ShowPasswordPage() override; void ShowOnlineRequiredDialog() override; void ShowPasswordMismatchMessage() override; // BaseScreenHandler: - void RegisterMessages() override; void DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) override; - - ash::OfflineLoginScreen* screen_ = nullptr; }; } // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.cc index 8bbb632..9d40b33 100644 --- a/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.cc
@@ -5,12 +5,9 @@ #include "chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h" #include "base/values.h" -#include "chrome/browser/ash/login/oobe_screen.h" -#include "chrome/browser/ash/login/screens/tpm_error_screen.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" #include "components/login/localized_values_builder.h" -#include "ui/base/l10n/l10n_util.h" namespace chromeos { namespace { @@ -18,17 +15,9 @@ const char kTPMErrorDbusStep[] = "dbus-error"; } // namespace -constexpr StaticOobeScreenId TpmErrorView::kScreenId; +TpmErrorScreenHandler::TpmErrorScreenHandler() : BaseScreenHandler(kScreenId) {} -TpmErrorScreenHandler::TpmErrorScreenHandler() : BaseScreenHandler(kScreenId) { - set_user_acted_method_path_deprecated( - "login.TPMErrorMessageScreen.userActed"); -} - -TpmErrorScreenHandler::~TpmErrorScreenHandler() { - if (screen_) - screen_->OnViewDestroyed(this); -} +TpmErrorScreenHandler::~TpmErrorScreenHandler() = default; void TpmErrorScreenHandler::DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) { @@ -48,38 +37,16 @@ IDS_INSTALLED_PRODUCT_OS_NAME); } -void TpmErrorScreenHandler::InitializeDeprecated() { - if (show_on_init_) { - show_on_init_ = false; - Show(); - } -} - void TpmErrorScreenHandler::Show() { - if (!IsJavascriptAllowed()) { - show_on_init_ = true; - return; - } ShowInWebUI(); } void TpmErrorScreenHandler::SetTPMOwnedErrorStep() { - CallJS("login.TPMErrorMessageScreen.setStep", - std::string(kTPMErrorOwnedStep)); + CallExternalAPI("setStep", std::string(kTPMErrorOwnedStep)); } void TpmErrorScreenHandler::SetTPMDbusErrorStep() { - CallJS("login.TPMErrorMessageScreen.setStep", std::string(kTPMErrorDbusStep)); -} - -void TpmErrorScreenHandler::Bind(TpmErrorScreen* screen) { - screen_ = screen; - BaseScreenHandler::SetBaseScreenDeprecated(screen_); -} - -void TpmErrorScreenHandler::Unbind() { - screen_ = nullptr; - BaseScreenHandler::SetBaseScreenDeprecated(nullptr); + CallExternalAPI("setStep", std::string(kTPMErrorDbusStep)); } } // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h index df86d2f..6d44ea0e 100644 --- a/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/tpm_error_screen_handler.h
@@ -5,31 +5,23 @@ #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_TPM_ERROR_SCREEN_HANDLER_H_ #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_TPM_ERROR_SCREEN_HANDLER_H_ +#include "base/memory/weak_ptr.h" #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" -namespace ash { -class TpmErrorScreen; -} - namespace chromeos { // Interface for dependency injection between TpmErrorScreen and its // WebUI representation. -class TpmErrorView { +class TpmErrorView : public base::SupportsWeakPtr<TpmErrorView> { public: - constexpr static StaticOobeScreenId kScreenId{"tpm-error-message"}; + inline constexpr static StaticOobeScreenId kScreenId{"tpm-error-message", + "TPMErrorMessageScreen"}; - virtual ~TpmErrorView() {} + virtual ~TpmErrorView() = default; // Shows the contents of the screen. virtual void Show() = 0; - // Binds `screen` to the view. - virtual void Bind(ash::TpmErrorScreen* screen) = 0; - - // Unbinds the screen from the view. - virtual void Unbind() = 0; - // Sets corresponding error message when taking tpm ownership return an error. virtual void SetTPMOwnedErrorStep() = 0; virtual void SetTPMDbusErrorStep() = 0; @@ -46,19 +38,12 @@ private: void Show() override; - void Bind(ash::TpmErrorScreen* screen) override; - void Unbind() override; void SetTPMOwnedErrorStep() override; void SetTPMDbusErrorStep() override; // BaseScreenHandler: void DeclareLocalizedValues( ::login::LocalizedValuesBuilder* builder) override; - void InitializeDeprecated() override; - - bool show_on_init_ = false; - - ash::TpmErrorScreen* screen_ = nullptr; }; } // namespace chromeos
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 7b98647..5235358 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -2409,8 +2409,12 @@ IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DIALOG_TITLE}, {"siteSettingsClearAllStorageDescription", IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_DESCRIPTION}, + {"siteSettingsClearDisplayedStorageDescription", + IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_DESCRIPTION}, {"siteSettingsClearAllStorageLabel", IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_LABEL}, + {"siteSettingsClearDisplayedStorageLabel", + IDS_SETTINGS_SITE_SETTINGS_CLEAR_DISPLAYED_STORAGE_LABEL}, {"siteSettingsClearAllStorageConfirmation", IDS_SETTINGS_SITE_SETTINGS_CLEAR_ALL_STORAGE_CONFIRMATION}, {"siteSettingsClearAllStorageConfirmationInstalled",
diff --git a/chrome/browser/ui/webui/signin/signin_url_utils.cc b/chrome/browser/ui/webui/signin/signin_url_utils.cc index c57bf50..6cd32db 100644 --- a/chrome/browser/ui/webui/signin/signin_url_utils.cc +++ b/chrome/browser/ui/webui/signin/signin_url_utils.cc
@@ -16,78 +16,23 @@ // Query parameter names of the sync confirmtaion URL. const char kIsModalParamKey[] = "is_modal"; -const char kDesignParamKey[] = "design"; -const char kProfileColorParamKey[] = "profile_color"; // Query parameter names of the reauth confirmation URL. const char kAccessPointParamKey[] = "access_point"; -bool StringToDesignVersion(base::StringPiece input, - SyncConfirmationUI::DesignVersion* output) { - int int_value; - if (!base::StringToInt(input, &int_value)) - return false; - - SyncConfirmationUI::DesignVersion value = - static_cast<SyncConfirmationUI::DesignVersion>(int_value); - // Make sure that `value` is a valid `DesignVersion`. - switch (value) { - case SyncConfirmationUI::DesignVersion::kColored: - case SyncConfirmationUI::DesignVersion::kMonotone: - *output = value; - return true; - // No default. Please update the switch statement when adding a new - // enumerator. - } - - return false; -} - } // namespace -SyncConfirmationURLParams GetParamsFromSyncConfirmationURL(const GURL& url) { - // Use defaults provided by `SyncConfirmationURLParams` for parameters that - // fail to parse. - SyncConfirmationURLParams params; - +bool IsSyncConfirmationModal(const GURL& url) { std::string is_modal_str; - int is_modal; - if (net::GetValueForKeyInQuery(url, kIsModalParamKey, &is_modal_str) && - base::StringToInt(is_modal_str, &is_modal)) { - params.is_modal = is_modal; - } - - std::string design_str; - SyncConfirmationUI::DesignVersion design; - if (net::GetValueForKeyInQuery(url, kDesignParamKey, &design_str) && - StringToDesignVersion(design_str, &design)) { - params.design = design; - } - - std::string profile_color_str; - SkColor profile_color; - if (net::GetValueForKeyInQuery(url, kProfileColorParamKey, - &profile_color_str) && - base::StringToUint(profile_color_str, &profile_color)) { - params.profile_color = profile_color; - } - - return params; + int is_modal = 1; // Default to modal if the parameter is missing. + if (net::GetValueForKeyInQuery(url, kIsModalParamKey, &is_modal_str)) + base::StringToInt(is_modal_str, &is_modal); + return is_modal != 0; } -GURL AppendSyncConfirmationQueryParams( - const GURL& url, - const SyncConfirmationURLParams& params) { +GURL AppendSyncConfirmationQueryParams(const GURL& url, bool is_modal) { GURL url_with_params = net::AppendQueryParameter( - url, kIsModalParamKey, base::NumberToString(params.is_modal)); - url_with_params = net::AppendQueryParameter( - url_with_params, kDesignParamKey, - base::NumberToString(static_cast<int>(params.design))); - if (params.profile_color) { - url_with_params = - net::AppendQueryParameter(url_with_params, kProfileColorParamKey, - base::NumberToString(*params.profile_color)); - } + url, kIsModalParamKey, base::NumberToString(is_modal)); return url_with_params; }
diff --git a/chrome/browser/ui/webui/signin/signin_url_utils.h b/chrome/browser/ui/webui/signin/signin_url_utils.h index de7b62c2..c0fabf0 100644 --- a/chrome/browser/ui/webui/signin/signin_url_utils.h +++ b/chrome/browser/ui/webui/signin/signin_url_utils.h
@@ -7,26 +7,15 @@ #include "chrome/browser/ui/webui/signin/sync_confirmation_ui.h" #include "components/signin/public/base/signin_metrics.h" -#include "third_party/abseil-cpp/absl/types/optional.h" -#include "third_party/skia/include/core/SkColor.h" #include "url/gurl.h" -// Holds parameters for the chrome://sync-confirmation URL. -// The default values correspond to the original usage of the sync confirmation -// page -- in the modal flow. -struct SyncConfirmationURLParams { - bool is_modal = true; - SyncConfirmationUI::DesignVersion design = - SyncConfirmationUI::DesignVersion::kMonotone; - absl::optional<SkColor> profile_color; -}; - -// Returns `SyncConfirmationURLParams` parsed from `url`. -SyncConfirmationURLParams GetParamsFromSyncConfirmationURL(const GURL& url); +// Returns whether the sync confirmation page is using the design for modal +// dialog. +bool IsSyncConfirmationModal(const GURL& url); // Adds URL query parameters specified by `params` to `url`. -GURL AppendSyncConfirmationQueryParams(const GURL& url, - const SyncConfirmationURLParams& params); +// `is_modal` specifies whether the style for modal dialog is used. +GURL AppendSyncConfirmationQueryParams(const GURL& url, bool is_modal); // Returns `ReauthAccessPoint` encoded in the query of the reauth confirmation // URL.
diff --git a/chrome/browser/ui/webui/signin/signin_url_utils_unittest.cc b/chrome/browser/ui/webui/signin/signin_url_utils_unittest.cc index ec2c55bc..c412af4 100644 --- a/chrome/browser/ui/webui/signin/signin_url_utils_unittest.cc +++ b/chrome/browser/ui/webui/signin/signin_url_utils_unittest.cc
@@ -10,72 +10,28 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/abseil-cpp/absl/types/optional.h" -#include "third_party/skia/include/core/SkColor.h" #include "url/gurl.h" -MATCHER_P(ParamsEq, expected_params, "") { - return arg.is_modal == expected_params.is_modal && - arg.design == expected_params.design && - arg.profile_color == expected_params.profile_color; -} - -// Tests that the default values correspond to the usage of the sync -// confirmation page in the modal flow. -TEST(SigninURLUtilsTest, SyncConfirmationURLParamsDefault) { - SyncConfirmationURLParams default_params; - SyncConfirmationURLParams expected_params = { - /*is_modal=*/true, SyncConfirmationUI::DesignVersion::kMonotone, - absl::nullopt}; - EXPECT_THAT(default_params, ParamsEq(expected_params)); -} - TEST(SigninURLUtilsTest, ParseParameterlessSyncConfirmationURL) { GURL url = GURL(chrome::kChromeUISyncConfirmationURL); - SyncConfirmationURLParams parsed_params = - GetParamsFromSyncConfirmationURL(url); - // Default params are expected. - SyncConfirmationURLParams expected_params; - EXPECT_THAT(parsed_params, ParamsEq(expected_params)); + EXPECT_TRUE(IsSyncConfirmationModal(url)); } -class SigninURLUtilsSyncConfirmationURLTest - : public ::testing::TestWithParam<SyncConfirmationURLParams> {}; - -TEST_P(SigninURLUtilsSyncConfirmationURLTest, GetAndParseURL) { - SyncConfirmationURLParams params = GetParam(); +TEST(SigninURLUtilsSyncConfirmationURLTest, GetAndParseURL) { + // Modal version. GURL url = AppendSyncConfirmationQueryParams( - GURL(chrome::kChromeUISyncConfirmationURL), params); + GURL(chrome::kChromeUISyncConfirmationURL), /*is_modal=*/true); EXPECT_TRUE(url.is_valid()); EXPECT_EQ(url.host(), chrome::kChromeUISyncConfirmationHost); - SyncConfirmationURLParams parsed_params = - GetParamsFromSyncConfirmationURL(url); - EXPECT_THAT(parsed_params, ParamsEq(params)); -} + EXPECT_TRUE(IsSyncConfirmationModal(url)); -INSTANTIATE_TEST_SUITE_P( - All, - SigninURLUtilsSyncConfirmationURLTest, - ::testing::Values( - SyncConfirmationURLParams{}, - SyncConfirmationURLParams{ - true, SyncConfirmationUI::DesignVersion::kMonotone, absl::nullopt}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kMonotone, absl::nullopt}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kColored, absl::nullopt}, - SyncConfirmationURLParams{false, - SyncConfirmationUI::DesignVersion::kColored, - SK_ColorTRANSPARENT}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kColored, SK_ColorBLACK}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kColored, SK_ColorWHITE}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kColored, SK_ColorRED}, - SyncConfirmationURLParams{ - false, SyncConfirmationUI::DesignVersion::kColored, SK_ColorCYAN}, - SyncConfirmationURLParams{ - true, SyncConfirmationUI::DesignVersion::kColored, SK_ColorBLACK})); + // Non-modal version. + url = AppendSyncConfirmationQueryParams( + GURL(chrome::kChromeUISyncConfirmationURL), /*is_modal=*/false); + EXPECT_TRUE(url.is_valid()); + EXPECT_EQ(url.host(), chrome::kChromeUISyncConfirmationHost); + EXPECT_FALSE(IsSyncConfirmationModal(url)); +} class SigninURLUtilsReauthConfirmationURLTest : public ::testing::TestWithParam<int> {};
diff --git a/chrome/browser/ui/webui/signin/sync_confirmation_ui.cc b/chrome/browser/ui/webui/signin/sync_confirmation_ui.cc index 08907edb..40962de9 100644 --- a/chrome/browser/ui/webui/signin/sync_confirmation_ui.cc +++ b/chrome/browser/ui/webui/signin/sync_confirmation_ui.cc
@@ -41,11 +41,6 @@ namespace { -ProfileThemeColors GetProfileThemeColors(absl::optional<SkColor> theme_color) { - return theme_color ? GetProfileThemeColorsForAutogeneratedColor(*theme_color) - : GetDefaultProfileThemeColors(); -} - #if BUILDFLAG(IS_CHROMEOS_LACROS) bool SyncForced() { return !base::FeatureList::IsEnabled(switches::kLacrosNonSyncingProfiles); @@ -56,10 +51,8 @@ SyncConfirmationUI::SyncConfirmationUI(content::WebUI* web_ui) : SigninWebDialogUI(web_ui), profile_(Profile::FromWebUI(web_ui)) { - SyncConfirmationURLParams params = GetParamsFromSyncConfirmationURL( - web_ui->GetWebContents()->GetVisibleURL()); - DCHECK(!(params.design == DesignVersion::kMonotone && - params.profile_color.has_value())); + bool is_modal = + IsSyncConfirmationModal(web_ui->GetWebContents()->GetVisibleURL()); const bool is_sync_allowed = SyncServiceFactory::IsSyncAllowed(profile_); content::WebUIDataSource* source = @@ -82,8 +75,7 @@ IDS_SYNC_LOADING_CONFIRMATION_TITLE); if (is_sync_allowed) { - InitializeForSyncConfirmation(source, params.profile_color, params.design, - params.is_modal); + InitializeForSyncConfirmation(source, is_modal); } else { InitializeForSyncDisabled(source); } @@ -105,8 +97,6 @@ void SyncConfirmationUI::InitializeForSyncConfirmation( content::WebUIDataSource* source, - absl::optional<SkColor> profile_creation_flow_color, - DesignVersion design, bool is_modal_dialog) { int title_id = IDS_SYNC_CONFIRMATION_TITLE; int info_title_id = IDS_SYNC_CONFIRMATION_SYNC_INFO_TITLE; @@ -138,8 +128,6 @@ source->SetDefaultResource( IDR_SIGNIN_SYNC_CONFIRMATION_SYNC_CONFIRMATION_HTML); - source->AddBoolean("isNewDesign", design == DesignVersion::kColored); - source->AddBoolean("isModalDialog", is_modal_dialog); bool sync_forced = false; @@ -148,48 +136,30 @@ sync_forced = true; #endif source->AddBoolean("syncForced", sync_forced); + source->AddString("accountPictureUrl", + profiles::GetPlaceholderAvatarIconUrl()); - switch (design) { - case DesignVersion::kMonotone: { - source->AddString("accountPictureUrl", - profiles::GetPlaceholderAvatarIconUrl()); - AddStringResource(source, "syncConfirmationUndoLabel", IDS_CANCEL); - AddStringResource(source, "syncConfirmationSettingsLabel", - IDS_SYNC_CONFIRMATION_SETTINGS_BUTTON_LABEL); + if (is_modal_dialog) { + AddStringResource(source, "syncConfirmationUndoLabel", IDS_CANCEL); + AddStringResource(source, "syncConfirmationSettingsLabel", + IDS_SYNC_CONFIRMATION_SETTINGS_BUTTON_LABEL); - source->AddResourcePath( - "images/sync_confirmation_illustration.svg", - IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_ILLUSTRATION_SVG); - source->AddResourcePath( - "images/sync_confirmation_illustration_dark.svg", - IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_ILLUSTRATION_DARK_SVG); - break; - } - case DesignVersion::kColored: { - ProfileThemeColors colors = - GetProfileThemeColors(profile_creation_flow_color); - const int kAccountPictureSize = 128; - gfx::Image avatar_picture = profiles::GetPlaceholderAvatarIconWithColors( - colors.default_avatar_fill_color, colors.default_avatar_stroke_color, - kAccountPictureSize); - std::string avatar_picture_url = - webui::GetBitmapDataUrl(avatar_picture.AsBitmap()); - source->AddString("accountPictureUrl", avatar_picture_url); - - AddStringResource(source, "syncConfirmationUndoLabel", IDS_NO_THANKS); - AddStringResource(source, "syncConfirmationSettingsLabel", - IDS_SYNC_CONFIRMATION_REFRESHED_SETTINGS_BUTTON_LABEL); - source->AddString("highlightColor", color_utils::SkColorToRgbaString( - colors.profile_highlight_color)); - - source->AddResourcePath( - "images/sync_confirmation_refreshed_illustration.svg", - IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_REFRESHED_ILLUSTRATION_SVG); - source->AddResourcePath( - "images/sync_confirmation_refreshed_illustration_dark.svg", - IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_REFRESHED_ILLUSTRATION_DARK_SVG); - break; - } + source->AddResourcePath( + "images/sync_confirmation_illustration.svg", + IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_ILLUSTRATION_SVG); + source->AddResourcePath( + "images/sync_confirmation_illustration_dark.svg", + IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_ILLUSTRATION_DARK_SVG); + } else { + AddStringResource(source, "syncConfirmationUndoLabel", IDS_NO_THANKS); + AddStringResource(source, "syncConfirmationSettingsLabel", + IDS_SYNC_CONFIRMATION_REFRESHED_SETTINGS_BUTTON_LABEL); + source->AddResourcePath( + "images/sync_confirmation_refreshed_illustration.svg", + IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_REFRESHED_ILLUSTRATION_SVG); + source->AddResourcePath( + "images/sync_confirmation_refreshed_illustration_dark.svg", + IDR_SIGNIN_SYNC_CONFIRMATION_IMAGES_SYNC_CONFIRMATION_REFRESHED_ILLUSTRATION_DARK_SVG); } }
diff --git a/chrome/browser/ui/webui/signin/sync_confirmation_ui.h b/chrome/browser/ui/webui/signin/sync_confirmation_ui.h index 3e73365..b70c4f1 100644 --- a/chrome/browser/ui/webui/signin/sync_confirmation_ui.h +++ b/chrome/browser/ui/webui/signin/sync_confirmation_ui.h
@@ -12,7 +12,6 @@ #include "base/memory/raw_ptr.h" #include "chrome/browser/ui/webui/signin/signin_web_dialog_ui.h" #include "third_party/abseil-cpp/absl/types/optional.h" -#include "third_party/skia/include/core/SkColor.h" class Browser; class Profile; @@ -31,8 +30,6 @@ // the responsability of the caller to pass the correct message handler. class SyncConfirmationUI : public SigninWebDialogUI { public: - enum class DesignVersion { kMonotone, kColored }; - explicit SyncConfirmationUI(content::WebUI* web_ui); SyncConfirmationUI(const SyncConfirmationUI&) = delete; @@ -45,11 +42,8 @@ void InitializeMessageHandlerWithBrowser(Browser* browser) override; private: - void InitializeForSyncConfirmation( - content::WebUIDataSource* source, - absl::optional<SkColor> profile_creation_flow_color, - DesignVersion design, - bool is_modal_dialog); + void InitializeForSyncConfirmation(content::WebUIDataSource* source, + bool is_modal_dialog); void InitializeForSyncDisabled(content::WebUIDataSource* source); // Adds a string resource with the given GRD |ids| to the WebUI data |source|
diff --git a/chrome/browser/web_applications/commands/sub_app_install_command.h b/chrome/browser/web_applications/commands/sub_app_install_command.h index b37e355..8b1c608 100644 --- a/chrome/browser/web_applications/commands/sub_app_install_command.h +++ b/chrome/browser/web_applications/commands/sub_app_install_command.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_WEB_APPLICATIONS_COMMANDS_SUB_APP_INSTALL_COMMAND_H_ #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "chrome/browser/web_applications/commands/web_app_command.h" #include "chrome/browser/web_applications/web_app_id.h" #include "chrome/browser/web_applications/web_app_install_info.h" @@ -62,8 +63,8 @@ void AddResultAndRemoveFromPendingInstalls(const web_app::AppId& app_id, webapps::InstallResultCode result); - web_app::WebAppInstallManager* install_manager_; - web_app::WebAppRegistrar* registrar_; + raw_ptr<web_app::WebAppInstallManager> install_manager_; + raw_ptr<web_app::WebAppRegistrar> registrar_; std::vector<std::pair<web_app::UnhashedAppId, GURL>> requested_installs_; std::set<web_app::UnhashedAppId> pending_installs_; size_t num_pending_dialog_callbacks_ = 0;
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 72588d0..8e05f315 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1655790927-756aed577162dc4159a319813d710b5030ce217d.profdata +chrome-linux-main-1655812488-3e24cca7f96fde7ef392ffd74c5ba4f868ccaa05.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 43bedc9..44ce315 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1655769597-8148a1ad7c56e278b298e4c54112d67d03ebcc79.profdata +chrome-mac-main-1655812488-8b09e9486b9180454e1cb0c2bdf7ba0d8a6b046a.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 1c97069..56eee1c 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1655780114-f4ab246a6c785b328911f89622fd5113908dc219.profdata +chrome-win32-main-1655812488-16619c864cef3db74dd5ab8dfceb8b5f7a650066.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 0ab0c97..6597f91 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1655780114-a870aecd40371c5e2c48290b75aea1de589b1219.profdata +chrome-win64-main-1655812488-02591322faaea4b10e5f8a34f98808289fc44c22.profdata
diff --git a/chrome/common/extensions/api/_permission_features.json b/chrome/common/extensions/api/_permission_features.json index de736a35..d8f3352c 100644 --- a/chrome/common/extensions/api/_permission_features.json +++ b/chrome/common/extensions/api/_permission_features.json
@@ -909,7 +909,7 @@ "wallpaper": { "channel": "stable", "extension_types": ["platform_app", "extension"], - "platforms": ["chromeos"] + "platforms": ["chromeos", "lacros"] }, "wallpaperPrivate": { "channel": "stable",
diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extensions/api/api_sources.gni index 305872d30..a2b06a69 100644 --- a/chrome/common/extensions/api/api_sources.gni +++ b/chrome/common/extensions/api/api_sources.gni
@@ -93,6 +93,7 @@ "quick_unlock_private.idl", "shared_storage_private.idl", "vpn_provider.idl", + "wallpaper.json", ] if (use_cups) { @@ -112,7 +113,6 @@ "speech_recognition_private.idl", "terminal_private.json", "users_private.idl", - "wallpaper.json", "wallpaper_private.json", "wm_desks_private.idl", ]
diff --git a/chrome/common/extensions/api/autotest_private.idl b/chrome/common/extensions/api/autotest_private.idl index 4c4c1fa..b430095 100644 --- a/chrome/common/extensions/api/autotest_private.idl +++ b/chrome/common/extensions/api/autotest_private.idl
@@ -291,17 +291,6 @@ }; callback GetArcAppCallback = void (ArcAppDict package); - dictionary ArcAppKillsDict { - double oom; - double lmkdForeground; - double lmkdPerceptible; - double lmkdCached; - double pressureForeground; - double pressurePerceptible; - double pressureCached; - }; - callback GetArcAppKillsCallback = void (ArcAppKillsDict counts); - dictionary ArcPackageDict { DOMString packageName; long packageVersion; @@ -792,10 +781,6 @@ [supportsPromises] static void getArcApp(DOMString appId, GetArcAppCallback callback); - // Gets counts of how many ARC apps have been killed, by priority. - [supportsPromises] static void getArcAppKills( - GetArcAppKillsCallback callback); - // Gets information about requested ARC package. [supportsPromises] static void getArcPackage( DOMString packageName,
diff --git a/chrome/common/extensions/api/terminal_private.json b/chrome/common/extensions/api/terminal_private.json index b38f0d6..316a04c 100644 --- a/chrome/common/extensions/api/terminal_private.json +++ b/chrome/common/extensions/api/terminal_private.json
@@ -238,10 +238,6 @@ "name": "info", "type": "object", "properties": { - "alternative_renderer": { - "description": "True if alternative renderer flag is enabled.", - "type": "boolean" - }, "multi_profile": { "description": "True if multi profile settings is enabled.", "type": "boolean"
diff --git a/chrome/common/extensions/api/wallpaper.json b/chrome/common/extensions/api/wallpaper.json index 29f82e5..4adae9a 100644 --- a/chrome/common/extensions/api/wallpaper.json +++ b/chrome/common/extensions/api/wallpaper.json
@@ -9,6 +9,7 @@ "implemented_in": "chrome/browser/chromeos/extensions/wallpaper_api.h" }, "description": "Use the <code>chrome.wallpaper</code> API to change the ChromeOS wallpaper.", + "platforms": ["chromeos", "lacros"], "types": [ { @@ -23,6 +24,7 @@ "name": "setWallpaper", "type": "function", "description": "Sets wallpaper to the image at <em>url</em> or <em>wallpaperData</em> with the specified <em>layout</em>", + "platforms": ["chromeos", "lacros"], "parameters": [ { "name": "details",
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index a90f742..50226e33 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -706,7 +706,7 @@ const char kAttestationEnabled[] = "attestation.enabled"; // A boolean pref recording whether user has dismissed the multiprofile -// itroduction dialog show. +// introduction dialog show. const char kMultiProfileNeverShowIntro[] = "settings.multi_profile_never_show_intro"; @@ -1398,7 +1398,7 @@ // Whether a profile is using a default avatar name (eg. Pickles or Person 1) // because it was randomly assigned at profile creation time. const char kProfileUsingDefaultName[] = "profile.using_default_name"; -// Whether a profile is using an avatar without having explicitely chosen it +// Whether a profile is using an avatar without having explicitly chosen it // (i.e. was assigned by default by legacy profile creation). const char kProfileUsingDefaultAvatar[] = "profile.using_default_avatar"; const char kProfileUsingGAIAAvatar[] = "profile.using_gaia_avatar"; @@ -2024,7 +2024,7 @@ // A dictionary with all unsynced DevTools settings. const char kDevToolsPreferences[] = "devtools.preferences"; -// A boolean specyfing whether the "syncable" subset of DevTools preferences +// A boolean specifying whether the "syncable" subset of DevTools preferences // should be synced or not. const char kDevToolsSyncPreferences[] = "devtools.sync_preferences"; @@ -2258,7 +2258,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // Boolean whether Kerberos functionality is enabled. const char kKerberosEnabled[] = "kerberos.enabled"; -#endif +#endif // BUILDFLAG(IS_CHROMEOS_ASH) // Boolean that specifies whether to enable revocation checking (best effort) // by default.
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 9fb77863..466ff60c 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -856,7 +856,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) extern const char kKerberosEnabled[]; -#endif +#endif // BUILDFLAG(IS_CHROMEOS_ASH) extern const char kCertRevocationCheckingEnabled[]; extern const char kCertRevocationCheckingRequiredLocalAnchors[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 112d879..0d5734f 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -4634,6 +4634,7 @@ "../browser/lacros/screen_manager_lacros_browsertest.cc", "../browser/lacros/tab_scrubber_lacros_browsertest.cc", "../browser/lacros/tablet_mode_lacros_browsertest.cc", + "../browser/lacros/wallpaper_lacros_browsertest.cc", "../browser/lacros/web_contents_can_go_back_observer_browsertest.cc", "../browser/metrics/structured/lacros_structured_metrics_recorder_browsertest.cc", "../browser/ui/browser_navigator_browsertest.cc", @@ -4675,6 +4676,7 @@ "//components/proxy_config:proxy_config", "//components/services/app_service/public/cpp:intents", "//components/services/app_service/public/cpp:preferred_apps", + "//ui/gfx/codec", "//ui/platform_window", ] @@ -9648,10 +9650,14 @@ "../browser/sync/test/integration/fake_server_invalidation_sender.h", "../browser/sync/test/integration/fake_server_match_status_checker.cc", "../browser/sync/test/integration/fake_server_match_status_checker.h", - "../browser/sync/test/integration/fake_server_sync_invalidation_sender.cc", - "../browser/sync/test/integration/fake_server_sync_invalidation_sender.h", "../browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.cc", "../browser/sync/test/integration/fake_sync_gcm_driver_for_instance_id.h", + "../browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.cc", + "../browser/sync/test/integration/invalidations/fake_server_sync_invalidation_sender.h", + "../browser/sync/test/integration/invalidations/fake_sync_instance_id.cc", + "../browser/sync/test/integration/invalidations/fake_sync_instance_id.h", + "../browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.cc", + "../browser/sync/test/integration/invalidations/fake_sync_instance_id_driver.h", "../browser/sync/test/integration/multi_client_status_change_checker.cc", "../browser/sync/test/integration/multi_client_status_change_checker.h", "../browser/sync/test/integration/offer_helper.cc",
diff --git a/chrome/test/base/chrome_render_view_test.h b/chrome/test/base/chrome_render_view_test.h index 5c20c9a..007312ad 100644 --- a/chrome/test/base/chrome_render_view_test.h +++ b/chrome/test/base/chrome_render_view_test.h
@@ -21,6 +21,11 @@ class AutofillAssistantAgent; } // namespace autofill +// This test fixture emulates a single RenderView within the main test process. +// Since it does everything in a single process, tests based on this fixture do +// not cover code related to Chrome's multiprocess architecture, such as +// sandboxing. InProcessBrowserTest is a better fixture for integration tests +// that care about multiple processes. class ChromeRenderViewTest : public content::RenderViewTest { public: ChromeRenderViewTest();
diff --git a/chrome/test/base/testing_profile_manager.cc b/chrome/test/base/testing_profile_manager.cc index 20287d5..273c000 100644 --- a/chrome/test/base/testing_profile_manager.cc +++ b/chrome/test/base/testing_profile_manager.cc
@@ -17,7 +17,6 @@ #include "chrome/browser/browser_features.h" #include "chrome/browser/profiles/profile_attributes_entry.h" #include "chrome/browser/profiles/profile_attributes_storage.h" -#include "chrome/browser/profiles/profile_destroyer.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" @@ -60,8 +59,6 @@ profile_manager_(nullptr) {} TestingProfileManager::~TestingProfileManager() { - ProfileDestroyer::DestroyPendingProfilesForShutdown(); - // Destroying this class also destroys the LocalState, so make sure the // associated ProfileManager is also destroyed. browser_process_->SetProfileManager(nullptr);
diff --git a/chrome/test/chromedriver/chrome/page_tracker.h b/chrome/test/chromedriver/chrome/page_tracker.h index 89da5b0..563b0e3 100644 --- a/chrome/test/chromedriver/chrome/page_tracker.h +++ b/chrome/test/chromedriver/chrome/page_tracker.h
@@ -8,6 +8,7 @@ #include <list> #include <string> +#include "base/memory/raw_ptr.h" #include "chrome/test/chromedriver/chrome/devtools_event_listener.h" namespace base { @@ -36,7 +37,7 @@ const base::DictionaryValue& params) override; private: - std::list<std::unique_ptr<WebViewImpl>>* web_views_; + raw_ptr<std::list<std::unique_ptr<WebViewImpl>>> web_views_; }; #endif // CHROME_TEST_CHROMEDRIVER_CHROME_PAGE_TRACKER_H_
diff --git a/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc b/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc index b47807c..b38a8f1 100644 --- a/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc +++ b/chrome/test/chromedriver/chrome/web_view_impl_unittest.cc
@@ -13,6 +13,7 @@ #include "base/compiler_specific.h" #include "base/json/json_reader.h" #include "base/json/json_writer.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/values.h" #include "chrome/test/chromedriver/chrome/browser_info.h" @@ -292,7 +293,7 @@ bool HasNextMessage() override { return socket_->HasNextMessage(); } private: - SyncWebSocket* socket_; + raw_ptr<SyncWebSocket> socket_; }; } // namespace
diff --git a/chrome/test/data/extensions/api_test/autotest_private/test.js b/chrome/test/data/extensions/api_test/autotest_private/test.js index 503d49003..b1d7ecb4 100644 --- a/chrome/test/data/extensions/api_test/autotest_private/test.js +++ b/chrome/test/data/extensions/api_test/autotest_private/test.js
@@ -1274,17 +1274,6 @@ })); }); }, - - async function requestLowMemoryKillCounts() { - const counts = await promisify(chrome.autotestPrivate.getArcAppKills); - chrome.test.assertEq(counts.oom, 1); - chrome.test.assertEq(counts.lmkdForeground, 2); - chrome.test.assertEq(counts.lmkdPerceptible, 3); - chrome.test.assertEq(counts.lmkdCached, 4); - chrome.test.assertEq(counts.pressureForeground, 5); - chrome.test.assertEq(counts.pressurePerceptible, 6); - chrome.test.assertEq(counts.pressureCached, 7); - } ]; var policyTests = [
diff --git a/chrome/test/data/webui/chromeos/chromebox_for_meetings/OWNERS b/chrome/test/data/webui/chromeos/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/chrome/test/data/webui/chromeos/chromebox_for_meetings/OWNERS +++ b/chrome/test/data/webui/chromeos/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chrome/test/data/webui/settings/all_sites_tests.ts b/chrome/test/data/webui/settings/all_sites_tests.ts index 0b6c018..f6c30965 100644 --- a/chrome/test/data/webui/settings/all_sites_tests.ts +++ b/chrome/test/data/webui/settings/all_sites_tests.ts
@@ -8,7 +8,7 @@ import {AllSitesElement, ContentSetting, ContentSettingsTypes, LocalDataBrowserProxyImpl, SiteGroup, SiteSettingsPrefsBrowserProxyImpl, SortMethod} from 'chrome://settings/lazy_load.js'; import {CrSettingsPrefs, Router, routes} from 'chrome://settings/settings.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; -import {isChildVisible} from 'chrome://webui-test/test_util.js'; +import {flushTasks, isChildVisible} from 'chrome://webui-test/test_util.js'; import {TestLocalDataBrowserProxy} from './test_local_data_browser_proxy.js'; import {TestSiteSettingsPrefsBrowserProxy} from './test_site_settings_prefs_browser_proxy.js'; @@ -113,6 +113,11 @@ } } + function getSubstitutedString(messageId: string, substitute: string): string { + return loadTimeData.substituteString( + testElement.i18n(messageId), substitute); + } + test('All sites list populated', async function() { setUpAllSites(prefsVarious); testElement.currentRouteChanged(routes.SITE_SETTINGS_ALL); @@ -196,6 +201,69 @@ assertEquals('bar.com', siteEntries[2]!.$.displayName.innerText.trim()); }); + test('dynamic filtered clear data button strings', async function() { + setUpAllSites(prefsVarious); + testElement.currentRouteChanged(routes.SITE_SETTINGS_ALL); + await browserProxy.whenCalled('getAllSites'); + + const clearAllButton = testElement.$.clearAllButton; + assertEquals( + loadTimeData.getString('siteSettingsClearAllStorageLabel'), + clearAllButton.innerText.trim()); + + // Setting a filter, text should change. + testElement.filter = 'foo'; + await flushTasks(); + assertEquals( + loadTimeData.getString('siteSettingsClearDisplayedStorageLabel'), + clearAllButton.innerText.trim()); + + // Removing the filter. + testElement.filter = ''; + await flushTasks(); + assertEquals( + loadTimeData.getString('siteSettingsClearAllStorageLabel'), + clearAllButton.innerText.trim()); + }); + + test('dynamic filtered total usage strings', async function() { + setUpAllSites(prefsVarious); + testElement.currentRouteChanged(routes.SITE_SETTINGS_ALL); + await browserProxy.whenCalled('getAllSites'); + // Removing extra unwanted site entries. + testElement.siteGroupMap.delete('google.com'); + testElement.forceListUpdateForTesting(); + await flushTasks(); + + const clearLabel = testElement.$.clearLabel; + assertEquals( + getSubstitutedString('siteSettingsClearAllStorageDescription', '100 B'), + clearLabel.innerText.trim()); + + // Setting a filter, 'foo.com' exists but doesn't have storage. + testElement.filter = 'foo'; + await flushTasks(); + assertEquals( + getSubstitutedString( + 'siteSettingsClearDisplayedStorageDescription', '0 B'), + clearLabel.innerText.trim()); + + // Changing the filter, 100 B given to 'bar.com; in the test proxy. + testElement.filter = 'bar'; + await flushTasks(); + assertEquals( + getSubstitutedString( + 'siteSettingsClearDisplayedStorageDescription', '100 B'), + clearLabel.innerText.trim()); + + // Remove the filter, without changing the total amount of storage. + testElement.filter = ''; + await flushTasks(); + assertEquals( + getSubstitutedString('siteSettingsClearAllStorageDescription', '100 B'), + clearLabel.innerText.trim()); + }); + test('can be sorted by storage', async function() { setUpAllSites(prefsVarious); testElement.currentRouteChanged(routes.SITE_SETTINGS_ALL);
diff --git a/chrome/test/data/webui/signin/sync_confirmation_test.ts b/chrome/test/data/webui/signin/sync_confirmation_test.ts index 6929f8b..5418c37 100644 --- a/chrome/test/data/webui/signin/sync_confirmation_test.ts +++ b/chrome/test/data/webui/signin/sync_confirmation_test.ts
@@ -12,8 +12,8 @@ import {TestSyncConfirmationBrowserProxy} from './test_sync_confirmation_browser_proxy.js'; -[true, false].forEach(isNewDesignEnabled => { - const suiteDesignSuffix = isNewDesignEnabled ? 'NewDesign' : 'OldDesign'; +[true, false].forEach(isModalDialogDesignEnabled => { + const suiteDesignSuffix = isModalDialogDesignEnabled ? 'Modal' : 'NonModal'; const STANDARD_CONSENT_CONFIRMATION = 'Yes, I\'m in'; @@ -47,7 +47,7 @@ browserProxy = new TestSyncConfirmationBrowserProxy(); SyncConfirmationBrowserProxyImpl.setInstance(browserProxy); loadTimeData.overrideValues({ - isNewDesign: isNewDesignEnabled, + isModalDialog: isModalDialogDesignEnabled, syncForced: syncForcedEnabled }); document.body.innerHTML = ''; @@ -60,10 +60,10 @@ // Tests that no DCHECKS are thrown during initialization of the UI. test('LoadPage', function() { - const cancelButton = - app.shadowRoot!.querySelector( - isNewDesignEnabled ? '#notNowButton' : '#cancelButton') as - HTMLElement; + const cancelButton = app.shadowRoot!.querySelector( + isModalDialogDesignEnabled ? + '#cancelButton' : + '#notNowButton') as HTMLElement; if (syncForcedEnabled) { assertTrue(cancelButton!.hidden); } else { @@ -80,7 +80,7 @@ // Tests clicking on cancel button. test('CancelClicked', async function() { testButtonClick( - isNewDesignEnabled ? '#notNowButton' : '#cancelButton'); + isModalDialogDesignEnabled ? '#cancelButton' : '#notNowButton'); await browserProxy.whenCalled('undo'); }); @@ -112,7 +112,8 @@ browserProxy = new TestSyncConfirmationBrowserProxy(); SyncConfirmationBrowserProxyImpl.setInstance(browserProxy); - loadTimeData.overrideValues({isNewDesign: isNewDesignEnabled}); + loadTimeData.overrideValues( + {isModalDialog: isModalDialogDesignEnabled}); document.body.innerHTML = ''; app = document.createElement('sync-confirmation-app'); @@ -137,8 +138,8 @@ '#settingsButton')!.click(); const [_, confirmation] = await browserProxy.whenCalled('goToSettings'); - // 'Sync settings' is recorded for new design but this is passed from - // the UI class so overriding loadTimeData does not help here. + // 'Sync settings' is recorded for non-modal design but this is passed + // from the UI class so overriding loadTimeData does not help here. assertEquals('Settings', confirmation); }); });
diff --git a/chrome/utility/importer/nss_decryptor_system_nss.h b/chrome/utility/importer/nss_decryptor_system_nss.h index 16f759e0..bdf71faa 100644 --- a/chrome/utility/importer/nss_decryptor_system_nss.h +++ b/chrome/utility/importer/nss_decryptor_system_nss.h
@@ -9,6 +9,8 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" + struct FirefoxRawPasswordInfo; namespace importer { @@ -59,7 +61,7 @@ PK11SlotInfo* slot, SECItem* data, SECItem* result, void* cx) const; bool is_nss_initialized_; - PK11SlotInfo* db_slot_; + raw_ptr<PK11SlotInfo> db_slot_; }; #endif // CHROME_UTILITY_IMPORTER_NSS_DECRYPTOR_SYSTEM_NSS_H_
diff --git a/chromeos/components/chromebox_for_meetings/features/BUILD.gn b/chromeos/ash/components/chromebox_for_meetings/BUILD.gn similarity index 73% rename from chromeos/components/chromebox_for_meetings/features/BUILD.gn rename to chromeos/ash/components/chromebox_for_meetings/BUILD.gn index 624b036..67d33b53 100644 --- a/chromeos/components/chromebox_for_meetings/features/BUILD.gn +++ b/chromeos/ash/components/chromebox_for_meetings/BUILD.gn
@@ -6,7 +6,13 @@ # the buildflag header and feature list to get the necessary finch experiments, # respectively, without bringing in unneeded resources. -component("features") { +import("//build/config/chromebox_for_meetings/buildflags.gni") +import("//build/config/chromeos/ui_mode.gni") + +assert(is_chromeos_ash) +assert(is_cfm) + +component("chromebox_for_meetings") { output_name = "cfm_features" defines = [ "IS_CFM_FEATURES_IMPL" ] sources = [
diff --git a/chromeos/components/chromebox_for_meetings/OWNERS b/chromeos/ash/components/chromebox_for_meetings/OWNERS similarity index 100% rename from chromeos/components/chromebox_for_meetings/OWNERS rename to chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chromeos/components/chromebox_for_meetings/features/README.md b/chromeos/ash/components/chromebox_for_meetings/README.md similarity index 100% rename from chromeos/components/chromebox_for_meetings/features/README.md rename to chromeos/ash/components/chromebox_for_meetings/README.md
diff --git a/chromeos/components/chromebox_for_meetings/features/features.cc b/chromeos/ash/components/chromebox_for_meetings/features.cc similarity index 67% rename from chromeos/components/chromebox_for_meetings/features/features.cc rename to chromeos/ash/components/chromebox_for_meetings/features.cc index db726e9..f221c5e 100644 --- a/chromeos/components/chromebox_for_meetings/features/features.cc +++ b/chromeos/ash/components/chromebox_for_meetings/features.cc
@@ -2,17 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chromeos/components/chromebox_for_meetings/features/features.h" +#include "chromeos/ash/components/chromebox_for_meetings/features.h" -namespace chromeos { -namespace cfm { -namespace features { +namespace ash::cfm::features { const base::Feature kCloudLogger{"MeetDevicesCloudLogger", base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kMojoServices{"MeetDevicesMojoServices", base::FEATURE_ENABLED_BY_DEFAULT}; -} // namespace features -} // namespace cfm -} // namespace chromeos + +} // namespace ash::cfm::features
diff --git a/chromeos/components/chromebox_for_meetings/features/features.h b/chromeos/ash/components/chromebox_for_meetings/features.h similarity index 63% rename from chromeos/components/chromebox_for_meetings/features/features.h rename to chromeos/ash/components/chromebox_for_meetings/features.h index e4835f1..4f6d7cb 100644 --- a/chromeos/components/chromebox_for_meetings/features/features.h +++ b/chromeos/ash/components/chromebox_for_meetings/features.h
@@ -2,15 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROMEOS_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_FEATURES_H_ -#define CHROMEOS_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_FEATURES_H_ +#ifndef CHROMEOS_ASH_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_H_ +#define CHROMEOS_ASH_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_H_ #include "base/component_export.h" #include "base/feature_list.h" -namespace chromeos { -namespace cfm { -namespace features { +namespace ash::cfm::features { // IMPORTANT: Please keep this file in alphabetical order. @@ -26,14 +24,6 @@ COMPONENT_EXPORT(CFM_FEATURES) extern const base::Feature kMojoServices; -} // namespace features -} // namespace cfm -} // namespace chromeos - -// TODO(https://crbug.com/1164001): remove after the migration is finished. -namespace ash::cfm::features { -using ::chromeos::cfm::features::kCloudLogger; -using ::chromeos::cfm::features::kMojoServices; } // namespace ash::cfm::features -#endif // CHROMEOS_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_FEATURES_H_ +#endif // CHROMEOS_ASH_COMPONENTS_CHROMEBOX_FOR_MEETINGS_FEATURES_H_
diff --git a/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn b/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn index e8550e4..1e143ce 100644 --- a/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn +++ b/chromeos/ash/components/dbus/chromebox_for_meetings/BUILD.gn
@@ -12,7 +12,6 @@ component("chromebox_for_meetings") { defines = [ "IS_CFM_HOTLINE_CLIENT_IMPL" ] public_deps = [ - "//chromeos/components/chromebox_for_meetings/features", "//chromeos/dbus:dbus", "//chromeos/dbus/common", ]
diff --git a/chromeos/ash/components/dbus/chromebox_for_meetings/DEPS b/chromeos/ash/components/dbus/chromebox_for_meetings/DEPS index 8766f1b..f60ae61 100644 --- a/chromeos/ash/components/dbus/chromebox_for_meetings/DEPS +++ b/chromeos/ash/components/dbus/chromebox_for_meetings/DEPS
@@ -1,4 +1,3 @@ include_rules = [ # Do not add chrome here (use a delegate instead). - "+chromeos/components/chromebox_for_meetings/features", ]
diff --git a/chromeos/ash/components/dbus/chromebox_for_meetings/OWNERS b/chromeos/ash/components/dbus/chromebox_for_meetings/OWNERS index 063e069..985da0c 100644 --- a/chromeos/ash/components/dbus/chromebox_for_meetings/OWNERS +++ b/chromeos/ash/components/dbus/chromebox_for_meetings/OWNERS
@@ -1 +1 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS
diff --git a/chromeos/components/chromebox_for_meetings/README.md b/chromeos/components/chromebox_for_meetings/README.md deleted file mode 100644 index 3d1ecb5..0000000 --- a/chromeos/components/chromebox_for_meetings/README.md +++ /dev/null
@@ -1,4 +0,0 @@ -# Chromebox for Meetings - -Flags used to gate the scope of effect of CfM code on chromium. -Used exclusively for building CfM builds.
diff --git a/chromeos/components/feature_usage/feature_usage_metrics.h b/chromeos/components/feature_usage/feature_usage_metrics.h index 23476668..a99c8a5 100644 --- a/chromeos/components/feature_usage/feature_usage_metrics.h +++ b/chromeos/components/feature_usage/feature_usage_metrics.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/power_monitor/power_observer.h" #include "base/sequence_checker.h" #include "base/time/time.h" @@ -98,11 +99,11 @@ base::Time Now() const; const std::string histogram_name_; - const Delegate* const delegate_ GUARDED_BY_CONTEXT(sequence_checker_); + const raw_ptr<const Delegate> delegate_ GUARDED_BY_CONTEXT(sequence_checker_); base::Time last_time_enabled_reported_; - const base::Clock* const clock_; + const raw_ptr<const base::Clock> clock_; base::Time start_usage_; base::OneShotTimer timer_;
diff --git a/chromeos/crosapi/mojom/BUILD.gn b/chromeos/crosapi/mojom/BUILD.gn index 179fe3c..f9d8e73 100644 --- a/chromeos/crosapi/mojom/BUILD.gn +++ b/chromeos/crosapi/mojom/BUILD.gn
@@ -81,6 +81,7 @@ "video_capture.mojom", "vpn_extension_observer.mojom", "vpn_service.mojom", + "wallpaper.mojom", "web_app_service.mojom", "web_app_types.mojom", "web_page_info.mojom",
diff --git a/chromeos/crosapi/mojom/crosapi.mojom b/chromeos/crosapi/mojom/crosapi.mojom index 2d9d8bb3..06c8277 100644 --- a/chromeos/crosapi/mojom/crosapi.mojom +++ b/chromeos/crosapi/mojom/crosapi.mojom
@@ -76,6 +76,7 @@ import "chromeos/crosapi/mojom/video_capture.mojom"; import "chromeos/crosapi/mojom/kiosk_session_service.mojom"; import "chromeos/crosapi/mojom/vpn_extension_observer.mojom"; +import "chromeos/crosapi/mojom/wallpaper.mojom"; import "chromeos/crosapi/mojom/web_app_service.mojom"; import "chromeos/crosapi/mojom/web_page_info.mojom"; import "mojo/public/mojom/base/big_string.mojom"; @@ -114,8 +115,8 @@ // please note the milestone when you added it, to help us reason about // compatibility between the client applications and older ash-chrome binaries. // -// Next version: 84 -// Next method id: 87 +// Next version: 85 +// Next method id: 88 [Stable, Uuid="8b79c34f-2bf8-4499-979a-b17cac522c1e", RenamedFrom="crosapi.mojom.AshChromeService"] interface Crosapi { @@ -567,10 +568,15 @@ [MinVersion=69] BindWebAppService@72(pending_receiver<WebAppService> receiver); + // Binds the service to allow lacros-chrome to set the chromeos wallpaper. + [MinVersion=84] BindWallpaper@87(pending_receiver<Wallpaper> receiver); + // Passes generic browser information such as version, etc into ash in // |browser_info| during startup. // Added in M87. [MinVersion=3] OnBrowserStartup@6(BrowserInfo browser_info); + + }; [Stable, Extensible]
diff --git a/chromeos/crosapi/mojom/wallpaper.mojom b/chromeos/crosapi/mojom/wallpaper.mojom new file mode 100644 index 0000000..f6c066b --- /dev/null +++ b/chromeos/crosapi/mojom/wallpaper.mojom
@@ -0,0 +1,35 @@ +// 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. + +module crosapi.mojom; + +import "mojo/public/mojom/base/values.mojom"; + +[Extensible, Stable] +enum WallpaperLayout { + kNone = 0, + kStretch = 1, + kCenter = 2, + kCenterCropped = 3, +}; + +[Stable, Uuid="a2940756-55ef-4fc7-af10-f74a5bba6716"] +struct WallpaperSettings { + array<uint8> data@0; // The jpeg or png encoded wallpaper image. + WallpaperLayout layout@1; // Layout of the wallpaper on the desktop. + string filename@2; // The file name of the saved wallpaper. +}; + +// Interface for wallpaper. Implemented by ash-chrome. +// |extension_id| and |extension_name| are from the extension that is setting +// the wallpaper (ie, using the wallpaper API). This information is used +// internally to notify the Wallpaper Manager about the change. +// Next version: 1 +// Next method id: 1 +[Stable, Uuid="e2529a0d-9b3d-4ca3-9cca-23bc94a709e9"] +interface Wallpaper { + // Sets the wallpaper. + SetWallpaper@0(WallpaperSettings wallpaper, string extension_id, + string extension_name) => (array<uint8> thumbnail_data); +};
diff --git a/chromeos/lacros/lacros_service.cc b/chromeos/lacros/lacros_service.cc index b971ec7..2cd137b3 100644 --- a/chromeos/lacros/lacros_service.cc +++ b/chromeos/lacros/lacros_service.cc
@@ -79,6 +79,7 @@ #include "chromeos/crosapi/mojom/url_handler.mojom.h" #include "chromeos/crosapi/mojom/vpn_extension_observer.mojom.h" #include "chromeos/crosapi/mojom/vpn_service.mojom.h" +#include "chromeos/crosapi/mojom/wallpaper.mojom.h" #include "chromeos/crosapi/mojom/web_app_service.mojom.h" #include "chromeos/crosapi/mojom/web_page_info.mojom.h" #include "chromeos/lacros/lacros_service_never_blocking_state.h" @@ -427,6 +428,9 @@ Crosapi::MethodMinVersions::kBindUrlHandlerMinVersion>(); ConstructRemote<crosapi::mojom::AppPublisher, &Crosapi::BindWebAppPublisher, Crosapi::MethodMinVersions::kBindWebAppPublisherMinVersion>(); + ConstructRemote<crosapi::mojom::Wallpaper, + &crosapi::mojom::Crosapi::BindWallpaper, + Crosapi::MethodMinVersions::kBindWallpaperMinVersion>(); ConstructRemote<crosapi::mojom::WebAppService, &crosapi::mojom::Crosapi::BindWebAppService, Crosapi::MethodMinVersions::kBindWebAppServiceMinVersion>();
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index dacf3a0..56900ad 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-104-5060.22-1654508750-benchmark-104.0.5112.16-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-104-5112.9-1655719671-benchmark-104.0.5112.18-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index dd8698ebe..e5c731ee 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-104-5060.37-1655113479-benchmark-104.0.5112.16-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-104-5087.0-1655718466-benchmark-104.0.5112.18-r1-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb index 4a08ec4..04857ba5 100644 --- a/chromeos/strings/chromeos_strings_af.xtb +++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Gebruiker</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">"Dateer fermware op vir eksterne toestelle"-venster is oop. <ph name="NUM_UPDATES" /> opdaterings beskikbaar.</translation> +<translation id="1145516343487477149">Soek hulpartkels en antwoorde op algemene Chromebook-vrae</translation> <translation id="1165039591588034296">Fout</translation> <translation id="1175697296044146566">Hierdie <ph name="DEVICE_TYPE" /> word bestuur deur <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Gemiddeld (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Skakel donkertema af</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Skakel donkermodus af</translation> +<translation id="1881188606372070653">Gaan na die <ph name="BEGIN_LINK1" />Regshulp-bladsy<ph name="END_LINK1" /> om veranderinge om wetlike redes te versoek. Sekere rekening- en stelselinligting sal dalk na Google toe gestuur word. Ons sal die inligting wat jy vir ons gee, gebruik om te help om aan tegniese kwessies aandag te gee en om ons dienste te verbeter, onderworpe aan ons <ph name="BEGIN_LINK2" />privaatheidsbeleid<ph name="END_LINK2" /> en <ph name="BEGIN_LINK3" />diensbepalings<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Hardewarehersiening</translation> <translation id="1905710495812624430">Maksimum toegelate pogings is oorskry.</translation> <translation id="1908234395526491708">Mislukte UDP-versoeke</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Raakskerm</translation> <translation id="6381741036071372448">Toets jou sleutelbord</translation> <translation id="6388847657025262518">Die skandeerder se dokumentvoerder is geblokkeer. Gaan die dokumentvoerder na en probeer weer.</translation> +<translation id="6394634179843537518">Voeg lêer by</translation> <translation id="6410257289063177456">Prentlêers</translation> <translation id="641081527798843608">Voorwerppassing</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index 3df6fbf..8854540 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">İstifadəçi</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">"Proqramı xarici cihazlar üçün güncəlləyin" pəncərəsi açıqdır. <ph name="NUM_UPDATES" /> güncəlləmə əlçatandır.</translation> +<translation id="1145516343487477149">Ümumi Chromebook suallarına yardım məqalələri və cavablar tapın</translation> <translation id="1165039591588034296">Xəta</translation> <translation id="1175697296044146566">Bu <ph name="DEVICE_TYPE" /> <ph name="MANAGER" /> tərəfindən idarə olunur.</translation> <translation id="1175951029573070619">Orta (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Qaranlıq temanı deaktiv edin</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Qaranlıq rejimi deaktiv edin</translation> +<translation id="1881188606372070653">Hüquqi səbəbdən məzmun dəyişikliyini tələb etmək üçün <ph name="BEGIN_LINK1" />Hüquqi Yardım səhifəsinə<ph name="END_LINK1" /> keçin. Bəzi hesab və sistem məlumatları Google'a göndərilə bilər. Verdiyiniz məlumatı <ph name="BEGIN_LINK2" />Məxfilik Siyasəti<ph name="END_LINK2" /> və <ph name="BEGIN_LINK3" />Xidmət Şərtləri<ph name="END_LINK3" /> subyekti olan xidmətlərimizin daha da qabaqcıl edilməsi üçün istifadə ediləcək.</translation> <translation id="1887850431809612466">Avadanlıq versiyası</translation> <translation id="1905710495812624430">Maksimum icazə verilən cəhdlər bitdi</translation> <translation id="1908234395526491708">Alınmayan UDP sorğuları</translation> @@ -622,6 +624,7 @@ <translation id="6379086450106841622">Taçskrin</translation> <translation id="6381741036071372448">Klaviaturanızı test edin</translation> <translation id="6388847657025262518">Skanerin sənəd ötürücüsü ilişib. Ötürücünü yoxlayıb yenidən cəhd edin.</translation> +<translation id="6394634179843537518">Fayl əlavə edin</translation> <translation id="6410257289063177456">Təsvir Faylları</translation> <translation id="641081527798843608">Subyekt uyğunluğu</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb index ab959bc..52d1cfc 100644 --- a/chromeos/strings/chromeos_strings_be.xtb +++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Не ўдалося загрузіць відарысы. Праверце падключэнне да сеткі або паспрабуйце загрузіць відарысы зноў.</translation> <translation id="1751249301761991853">Персаналізацыя</translation> <translation id="1753496554272155572">Выйсці з рэжыму перадпрагляду шпалер</translation> +<translation id="1755556344721611131">Праграма для дыягностыкі</translation> <translation id="175763766237925754">Добры (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index c63dbee1..2065d8d 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">ব্যবহারকারী</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">এক্সটার্নাল ডিভাইসের জন্য ফার্মওয়্যার আপডেট করে এমন উইন্ডো খোলা আছে। <ph name="NUM_UPDATES" />টি আপডেট উপলভ্য।</translation> +<translation id="1145516343487477149">সহায়তা নিবন্ধ এবং Chromebook সংক্রান্ত সাধারণ প্রশ্নের উত্তর খুঁজুন</translation> <translation id="1165039591588034296">ত্রুটি</translation> <translation id="1175697296044146566"><ph name="MANAGER" /> এই <ph name="DEVICE_TYPE" /> ম্যানেজ করে।</translation> <translation id="1175951029573070619">গড় (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">ডার্ক থিম বন্ধ করুন</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">'ডার্ক মোড' বন্ধ করুন</translation> +<translation id="1881188606372070653">আইনি কারণে কন্টেন্ট পরিবর্তনের অনুরোধ জানাতে <ph name="BEGIN_LINK1" />আইনি সহায়তা পৃষ্ঠা<ph name="END_LINK1" /> দেখুন। অ্যাকাউন্ট ও সিস্টেমের কিছু তথ্য Google-এর কাছে পাঠানো হতে পারে। আপনার দেওয়া তথ্য আমরা টেকনিক্যাল সমস্যা সমাধানের কাজে এবং আমাদের পরিষেবা আরও ভাল করে তোলার জন্য ব্যবহার করব। এই তথ্য <ph name="BEGIN_LINK2" />গোপনীয়তা নীতি<ph name="END_LINK2" /> এবং <ph name="BEGIN_LINK3" />পরিষেবার শর্তাবলী<ph name="END_LINK3" /> মেনেই ব্যবহার করা হবে।</translation> <translation id="1887850431809612466">হার্ডওয়্যার পুনর্বিবেচনাগুলি</translation> <translation id="1905710495812624430">সর্বোচ্চ অনুমোদিত প্রচেষ্টা ছাড়িয়ে গেছে।</translation> <translation id="1908234395526491708">UDP-এর অনুরোধ করা যায়নি</translation> @@ -622,6 +624,7 @@ <translation id="6379086450106841622">টাচস্ক্রিন</translation> <translation id="6381741036071372448">কীবোর্ড যাচাই করুন</translation> <translation id="6388847657025262518">স্ক্যানারের ডকুমেন্ট ফিডার কাজ করছে না। ফিডার চেক করে আবার চেষ্টা করুন।</translation> +<translation id="6394634179843537518">ফাইল যোগ করুন</translation> <translation id="6410257289063177456">ছবি ফাইল</translation> <translation id="641081527798843608">বিষয়ের মিল</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 831e3184..7b63d9b 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Korisnik</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Prozor ažuriranja firmvera za vanjski uređaj je otvoren. Dostupan je sljedeći broj ažuriranja: <ph name="NUM_UPDATES" /></translation> +<translation id="1145516343487477149">Pronađite članke za pomoć i odgovore na uobičajena pitanja o Chromebooku</translation> <translation id="1165039591588034296">Greška</translation> <translation id="1175697296044146566">Ovim uređajem <ph name="DEVICE_TYPE" /> upravlja <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Prosječno (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Isključi tamnu temu</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Isključi tamni način rada</translation> +<translation id="1881188606372070653">Idite na <ph name="BEGIN_LINK1" />stranicu Pravna pomoć<ph name="END_LINK1" /> da zatražite izmjenu sadržaja zbog zakona. Možda će se neke informacije o računu i sistemu poslati Googleu. Informacije koje navedete će nam pomoći da riješimo tehničke probleme i poboljšamo usluge, u skladu s našim <ph name="BEGIN_LINK2" />Pravilima privatnosti<ph name="END_LINK2" /> i <ph name="BEGIN_LINK3" />Uslovima korištenja usluge<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Revizija hardvera</translation> <translation id="1905710495812624430">Prekoračen je maksimalan broj dozvoljenih pokušaja.</translation> <translation id="1908234395526491708">Greške UDP zahtjeva</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Ekran na dodir</translation> <translation id="6381741036071372448">Testirajte tastaturu</translation> <translation id="6388847657025262518">Ulagač za dokumente skenera se zaglavio. Provjerite ulagač i pokušajte ponovo.</translation> +<translation id="6394634179843537518">Dodajte fajl</translation> <translation id="6410257289063177456">Fajlovi slike</translation> <translation id="641081527798843608">Podudaranje predmeta</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 7a693fa2..7a2d329e 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Bruger</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Vinduet Opdater firmware for eksterne enheder er åbent. <ph name="NUM_UPDATES" /> opdateringer er tilgængelige.</translation> +<translation id="1145516343487477149">Find artikler i Hjælp og svar på almindelige spørgsmål om Chromebook</translation> <translation id="1165039591588034296">Fejl</translation> <translation id="1175697296044146566">Denne <ph name="DEVICE_TYPE" /> administreres af <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Gennemsnitligt (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Deaktiver Mørkt tema</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Deaktiver mørk tilstand</translation> +<translation id="1881188606372070653">Gå til <ph name="BEGIN_LINK1" />siden Hjælp til Juridisk<ph name="END_LINK1" /> for at anmode om indholdsændringer af juridiske årsager. Visse konto- og systemoplysninger kan blive sendt til Google. Vi bruger de oplysninger, du giver os, til at løse tekniske problemer og forbedre vores tjenester. Oplysningerne håndteres i henhold til vores <ph name="BEGIN_LINK2" />privatlivspolitik<ph name="END_LINK2" /> og <ph name="BEGIN_LINK3" />servicevilkår<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Hardwarerevision</translation> <translation id="1905710495812624430">Det maksimale antal forsøg er overskredet.</translation> <translation id="1908234395526491708">Mislykkede UDP-anmodninger</translation> @@ -622,6 +624,7 @@ <translation id="6379086450106841622">Touchskærm</translation> <translation id="6381741036071372448">Test dit tastatur</translation> <translation id="6388847657025262518">Scannerens dokumentføder sidder fast. Løs problemet, og prøv igen.</translation> +<translation id="6394634179843537518">Tilføj fil</translation> <translation id="6410257289063177456">Billedfiler</translation> <translation id="641081527798843608">Emnematch</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index f4d076cf..bb53d82 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Nutzer</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Das Fenster für Firmwareupdates für externe Geräte ist geöffnet. Es sind <ph name="NUM_UPDATES" /> Updates verfügbar.</translation> +<translation id="1145516343487477149">Hier findest du Hilfeartikel und Antworten auf häufig gestellte Fragen zu Chromebooks</translation> <translation id="1165039591588034296">Fehler</translation> <translation id="1175697296044146566">Dieses Gerät (<ph name="DEVICE_TYPE" />) wird von <ph name="MANAGER" /> verwaltet.</translation> <translation id="1175951029573070619">Durchschnittlich (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Dunkles Design ausschalten</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Dunklen Modus ausschalten</translation> +<translation id="1881188606372070653">Auf der Seite <ph name="BEGIN_LINK1" />Rechtliche Hinweise<ph name="END_LINK1" /> kannst du Inhaltsänderungen aus rechtlichen Gründen beantragen. Einige Konto- und Systeminformationen werden möglicherweise an Google gesendet. Wir verwenden diese Informationen, um unter Einhaltung der <ph name="BEGIN_LINK2" />Datenschutzerklärung<ph name="END_LINK2" /> und der <ph name="BEGIN_LINK3" />Nutzungsbedingungen<ph name="END_LINK3" /> von Google technische Probleme zu beheben und unsere Dienste zu optimieren.</translation> <translation id="1887850431809612466">Hardware-Version</translation> <translation id="1905710495812624430">Die maximal zulässige Anzahl an Versuchen wurde überschritten.</translation> <translation id="1908234395526491708">Fehlgeschlagene UDP-Anfragen</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Touchscreen</translation> <translation id="6381741036071372448">Tastatur testen</translation> <translation id="6388847657025262518">Der Dokumenteneinzug des Scanners klemmt. Kontrolliere den Einzug und versuche es noch einmal.</translation> +<translation id="6394634179843537518">Datei hinzufügen</translation> <translation id="6410257289063177456">Bilddateien</translation> <translation id="641081527798843608">subject-match</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index 8a36112..9adb50cc 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Χρήστης</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Το παράθυρο Ενημέρωσης υλικολογισμικού για εξωτερικές συσκευές είναι ανοικτό. <ph name="NUM_UPDATES" /> διαθέσιμες ενημερώσεις.</translation> +<translation id="1145516343487477149">Βρείτε άρθρα βοήθειας και απαντήσεις σε συνήθεις ερωτήσεις του Chromebook</translation> <translation id="1165039591588034296">Σφάλμα</translation> <translation id="1175697296044146566">Η διαχείριση της συσκευής <ph name="DEVICE_TYPE" /> γίνεται από <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Μέτριο (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Απενεργοποίηση σκούρου θέματος</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Απενεργοποίηση λειτουργίας χαμηλού φωτισμού</translation> +<translation id="1881188606372070653">Πηγαίνετε στη <ph name="BEGIN_LINK1" />σελίδα Βοήθεια για νομικά ζητήματα<ph name="END_LINK1" />, για να ζητήσετε αλλαγές περιεχομένου για νομικούς λόγους. Ορισμένες πληροφορίες λογαριασμού και συστήματος θα σταλούν στην Google. Θα χρησιμοποιήσουμε τις πληροφορίες που μας παρέχετε για να αντιμετωπίσουμε τεχνικά ζητήματα και να βελτιώσουμε τις υπηρεσίες μας, σύμφωνα με την <ph name="BEGIN_LINK2" />Πολιτική απορρήτου<ph name="END_LINK2" /> και τους <ph name="BEGIN_LINK3" />Όρους Παροχής Υπηρεσιών<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Έκδοση υλικού</translation> <translation id="1905710495812624430">Έγινε υπέρβαση του μέγιστου αριθμού επιτρεπόμενων προσπαθειών.</translation> <translation id="1908234395526491708">Σφάλματα αιτήματος UDP</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Οθόνη αφής</translation> <translation id="6381741036071372448">Έλεγχος του πληκτρολογίου σας</translation> <translation id="6388847657025262518">Ο τροφοδότης εγγράφων του σαρωτή έχει κολλήσει. Ελέγξτε τον τροφοδότη και δοκιμάστε ξανά.</translation> +<translation id="6394634179843537518">Προσθήκη αρχείου</translation> <translation id="6410257289063177456">Αρχεία εικόνας</translation> <translation id="641081527798843608">Αντιστοιχία θέματος</translation> <translation id="6423239382391657905">Άνοιγμα VPN</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index 1f07f93..4ff42e3 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">No se pudieron cargar las imágenes. Revisa tu conexión de red o intenta volver a cargar las imágenes.</translation> <translation id="1751249301761991853">Personal</translation> <translation id="1753496554272155572">Salir de la vista previa de fondo de pantalla</translation> +<translation id="1755556344721611131">App de diagnóstico</translation> <translation id="175763766237925754">Bueno (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb index f7928f9..5cdc6ec1b 100644 --- a/chromeos/strings/chromeos_strings_eu.xtb +++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -879,7 +879,7 @@ <translation id="885701979325669005">Biltegia</translation> <translation id="8863170912498892583">Gaitu gai iluna</translation> <translation id="8863888432376731307">Eskuratu "<ph name="QUERY" />" adierazpenaren <ph name="INTENT" /> eta beste</translation> -<translation id="8864415976656252616">Ez dago iradokitako edukirik. Ikusi goiko laguntza-edukia.</translation> +<translation id="8864415976656252616">Ez dago iradokitako edukirik. Ikusi laguntza-eduki nagusia.</translation> <translation id="8868741746785112895">GUIDa</translation> <translation id="8876270629542503161">Gailua tableta bat da.</translation> <translation id="8881098542468797602">Gainditu da proba</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index 6a14f564..749a94c 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">کاربر</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">پنجره بهروزرسانی سفتافزار برای دستگاههای خارجی باز است. <ph name="NUM_UPDATES" /> بهروزرسانی دردسترس است</translation> +<translation id="1145516343487477149">برای سؤالات متداول Chromebook، مقاله راهنما و پاسخ پیدا کنید</translation> <translation id="1165039591588034296">خطا</translation> <translation id="1175697296044146566"><ph name="MANAGER" /> این <ph name="DEVICE_TYPE" /> را مدیریت میکند.</translation> <translation id="1175951029573070619">متوسط (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -103,6 +104,7 @@ <translation id="1745577949879301685">تصویرها بار نشد. اتصال شبکه را بررسی کنید یا دوباره برای بار کردن تصویرها تلاش کنید.</translation> <translation id="1751249301761991853">شخصی</translation> <translation id="1753496554272155572">خروج از پیشنمای کاغذدیواری</translation> +<translation id="1755556344721611131">برنامه عیبیابی</translation> <translation id="175763766237925754">خوب (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation> @@ -119,6 +121,7 @@ <translation id="1871569928317311284">خاموش کردن زمینه تیره</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">خاموش کردن حالت تاریک</translation> +<translation id="1881188606372070653">برای درخواست تغییر محتوا بهدلایل حقوقی، به <ph name="BEGIN_LINK1" />صفحه «راهنمای حقوقی»<ph name="END_LINK1" /> بروید. ممکن است برخی اطلاعات سیستم و حساب به Google ارسال شود. از اطلاعاتی که به ما میدهید برای رسیدگی به مشکلات فنی و بهبود سرویسهایمان، مطابق با <ph name="BEGIN_LINK2" />خطمشی رازداری<ph name="END_LINK2" /> و <ph name="BEGIN_LINK3" />شرایط خدمات<ph name="END_LINK3" /> خود استفاده خواهیم کرد.</translation> <translation id="1887850431809612466">بازبینی سختافزار</translation> <translation id="1905710495812624430">به حداکثر تعداد مجاز تلاش رسیدهاید.</translation> <translation id="1908234395526491708">خطاهای درخواست UDP</translation> @@ -622,6 +625,7 @@ <translation id="6379086450106841622">صفحه لمسی</translation> <translation id="6381741036071372448">امتحان کردن صفحهکلید</translation> <translation id="6388847657025262518">تغذیهکننده سند اسکنر گیر کرده است. تغذیهکننده را بررسی کنید و دوباره امتحان کنید.</translation> +<translation id="6394634179843537518">افزودن فایل</translation> <translation id="6410257289063177456">فایلهای تصویری</translation> <translation id="641081527798843608">مطابقت موضوع</translation> <translation id="6423239382391657905">باز کردن VPN</translation>
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index e2c9c07..ac40ef8a 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Kuvien lataaminen epäonnistui. Tarkista verkkoyhteytesi tai kokeile kuvien lataamista uudelleen.</translation> <translation id="1751249301761991853">Henkilökohtainen</translation> <translation id="1753496554272155572">Poistu taustakuvan esikatselusta</translation> +<translation id="1755556344721611131">Diagnostiikka-sovellus</translation> <translation id="175763766237925754">Hyvä (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb index 65097cd6..16d4ba33 100644 --- a/chromeos/strings/chromeos_strings_fr-CA.xtb +++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Impossible de charger les images. Vérifiez votre connexion réseau ou essayez de charger les images à nouveau.</translation> <translation id="1751249301761991853">Personnel</translation> <translation id="1753496554272155572">Quitter l'aperçu des fonds d'écran</translation> +<translation id="1755556344721611131">Application de diagnostics</translation> <translation id="175763766237925754">Bon (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index 1e052de2..4e9f0e1 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">છબીઓ લોડ કરી શકાઈ નથી. તમારું નેટવર્ક કનેક્શન ચેક કરો અથવા છબીઓ ફરી લોડ કરવાનો પ્રયાસ કરો.</translation> <translation id="1751249301761991853">વ્યક્તિગત</translation> <translation id="1753496554272155572">વૉલપેપર પ્રીવ્યૂમાંથી બહાર નીકળો</translation> +<translation id="1755556344721611131">ડાયગ્નોસ્ટિક્સ ઍપ</translation> <translation id="175763766237925754">સારું (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 4da91f0..21fbf388 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">उपयोगकर्ता</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">बाहरी डिवाइसों के लिए फ़र्मवेयर को अपडेट करने वाली विंडो खुली है. <ph name="NUM_UPDATES" /> अपडेट उपलब्ध हैं.</translation> +<translation id="1145516343487477149">Chromebook से जुड़े सामान्य सवालों के लिए, सहायता लेख और जवाब ढूंढें</translation> <translation id="1165039591588034296">गड़बड़ी</translation> <translation id="1175697296044146566">इस <ph name="DEVICE_TYPE" /> को <ph name="MANAGER" /> मैनेज करता है.</translation> <translation id="1175951029573070619">सिग्नल ठीक-ठाक है (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">गहरे रंग वाली थीम बंद करें</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">गहरे रंग वाला मोड बंद करें</translation> +<translation id="1881188606372070653">कानूनी वजहों से कॉन्टेंट में बदलाव के अनुरोध के लिए, <ph name="BEGIN_LINK1" />कानूनी सहायता पेज<ph name="END_LINK1" /> पर जाएं. खाते और सिस्टम से जुड़ी कुछ जानकारी, Google को भेजी जा सकती है. हम आपसे मिली जानकारी का इस्तेमाल, तकनीकी समस्याएं हल करने और अपनी सेवाओं को बेहतर बनाने के लिए करेंगे. जानकारी का इस्तेमाल, हमारी <ph name="BEGIN_LINK2" />निजता नीति<ph name="END_LINK2" /> और <ph name="BEGIN_LINK3" />सेवा की शर्तों<ph name="END_LINK3" /> के मुताबिक किया जाता है.</translation> <translation id="1887850431809612466">हार्डवेयर पुनरीक्षण</translation> <translation id="1905710495812624430">अधिकतम स्वीकार्य प्रयासों की सीमा पार हो गई है.</translation> <translation id="1908234395526491708">यूडीपी अनुरोध पूरे नहीं हो पाए</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">टचस्क्रीन</translation> <translation id="6381741036071372448">अपना कीबोर्ड इस्तेमाल करके देखें</translation> <translation id="6388847657025262518">स्कैनर का डॉक्यूमेंट फ़ीडर जाम हो गया है. फ़ीडर की जांच करें और फिर से कोशिश करें.</translation> +<translation id="6394634179843537518">फ़ाइल जोड़ें</translation> <translation id="6410257289063177456">इमेज फ़ाइल</translation> <translation id="641081527798843608">विषय मिलान</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index a575fff..dcd3158 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Felhasználó</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">A külső eszközök firmware-frissítésére szolgáló ablak megnyílt. <ph name="NUM_UPDATES" /> frissítés érhető el</translation> +<translation id="1145516343487477149">Súgócikkek és a Chromebookkal kapcsolatos gyakori kérdésekre adott válaszok.</translation> <translation id="1165039591588034296">Hiba</translation> <translation id="1175697296044146566">Ezt a(z) <ph name="DEVICE_TYPE" /> eszközt a(z) <ph name="MANAGER" /> kezeli.</translation> <translation id="1175951029573070619">Átlagos (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Sötét téma kikapcsolása</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Sötét mód kikapcsolása</translation> +<translation id="1881188606372070653">Ha jogi okokból szeretne tartalmi módosítást kérvényezni, lépjen a <ph name="BEGIN_LINK1" />Jogi súgóoldalra<ph name="END_LINK1" />. A Google megkaphat bizonyos adatokat a fiókról és a rendszerről. Az Ön által megadott adatokat a technikai problémák kezelésére és szolgáltatásaink fejlesztésére használjuk fel az <ph name="BEGIN_LINK2" />Adatvédelmi irányelveinknek<ph name="END_LINK2" /> és az <ph name="BEGIN_LINK3" />Általános Szerződési Feltételeknek<ph name="END_LINK3" /> megfelelően.</translation> <translation id="1887850431809612466">Hardver ellenőrzése</translation> <translation id="1905710495812624430">Elérte az engedélyezett kísérletek maximális számát.</translation> <translation id="1908234395526491708">Hibás UDP-kérelmek.</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Érintőképernyő</translation> <translation id="6381741036071372448">Billentyűzet tesztelése</translation> <translation id="6388847657025262518">A szkenner dokumentumadagolója beragadt. Ellenőrizze az adagolót, és próbálja újra.</translation> +<translation id="6394634179843537518">Fájl hozzáadása</translation> <translation id="6410257289063177456">Képfájlok</translation> <translation id="641081527798843608">Tárgyegyeztetés</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb index 64e764f4..5c63e68 100644 --- a/chromeos/strings/chromeos_strings_hy.xtb +++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Չհաջողվեց բեռնել պատկերները։ Ստուգեք ձեր կապը կամ նորից փորձեք բեռնել պատկերները։</translation> <translation id="1751249301761991853">Անձնական կարգավորումներ</translation> <translation id="1753496554272155572">Փակել պաստառի նախադիտումը</translation> +<translation id="1755556344721611131">«Դիագնոստիկա» հավելված</translation> <translation id="175763766237925754">Լավ (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb index 6d7a4910..3be6e55 100644 --- a/chromeos/strings/chromeos_strings_is.xtb +++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Notandi</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Glugginn fyrir uppfærslu fastbúnaðar fyrir ytri tæki er opinn. <ph name="NUM_UPDATES" /> uppfærslur í boði.</translation> +<translation id="1145516343487477149">Finndu hjálpargreinar og svör við algengum spurningum um Chromebook</translation> <translation id="1165039591588034296">Villa</translation> <translation id="1175697296044146566"><ph name="DEVICE_TYPE" /> er í umsjón <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Í meðallagi (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Slökkva á dökku þema</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Slökkva á dökku þema</translation> +<translation id="1881188606372070653">Farðu á <ph name="BEGIN_LINK1" />síðuna lagaleg hjálp<ph name="END_LINK1" /> til að fara fram á breytingar á efni af lagalegum ástæðum. Sumar reiknings- og kerfisupplýsingar gætu verið sendar til Google. Við notum upplýsingarnar sem þú veitir okkur til að fást við tæknilega erfiðleika og bæta þjónustu okkar, í samræmi við <ph name="BEGIN_LINK2" />persónuverndarstefnu<ph name="END_LINK2" /> og <ph name="BEGIN_LINK3" />þjónustuskilmála<ph name="END_LINK3" /> okkar.</translation> <translation id="1887850431809612466">Útgáfa vélbúnaðar</translation> <translation id="1905710495812624430">Farið var yfir hámarksfjölda tilrauna.</translation> <translation id="1908234395526491708">UDP-beiðnir mistókust</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Snertiskjár</translation> <translation id="6381741036071372448">Prófa lyklaborðið</translation> <translation id="6388847657025262518">Skjalamatarinn á skannanum er fastur. Athugaðu skjalamatarann og reyndu aftur.</translation> +<translation id="6394634179843537518">Bæta við skrá</translation> <translation id="6410257289063177456">Myndaskrár</translation> <translation id="641081527798843608">Samsvörun viðfangs</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index 0f7869d..8fcc3d3e 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Суреттерді жүктеу мүмкін болмады. Желі байланысын тексеріңіз немесе суреттерді қайта жүктеп көріңіз.</translation> <translation id="1751249301761991853">Жеке</translation> <translation id="1753496554272155572">Тұсқағазды алдын ала қарау режимінен шығу</translation> +<translation id="1755556344721611131">Diagnostics қолданбасы</translation> <translation id="175763766237925754">Жақсы (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index 7c55a3d..ff6bfe4 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">អ្នកប្រើ</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">វិនដូដំឡើងកំណែកម្មវិធីបង្កប់សម្រាប់ឧបករណ៍ខាងក្រៅត្រូវបានបើក។ មានកំណែថ្មី <ph name="NUM_UPDATES" />។</translation> +<translation id="1145516343487477149">រកអត្ថបទជំនួយ និងចម្លើយចំពោះសំណួរ Chromebook ទូទៅ</translation> <translation id="1165039591588034296">កំហុសឆ្គង</translation> <translation id="1175697296044146566"><ph name="DEVICE_TYPE" /> នេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="MANAGER" />។</translation> <translation id="1175951029573070619">មធ្យម (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">បិទរចនាប័ទ្មងងឹត</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">បិទមុខងារងងឹត</translation> +<translation id="1881188606372070653">ចូលទៅកាន់<ph name="BEGIN_LINK1" />ទំព័រជំនួយផ្នែកច្បាប់<ph name="END_LINK1" /> ដើម្បីស្នើសុំធ្វើការផ្លាស់ប្ដូរខ្លឹមសារដោយសារហេតុផលផ្លូវច្បាប់។ ព័ត៌មានមួយចំនួនអំពីគណនី និងប្រព័ន្ធអាចត្រូវបានផ្ញើទៅ Google។ យើងនឹងប្រើប្រាស់ព័ត៌មានដែលអ្នកផ្ដល់ឱ្យយើង ដើម្បីជួយដោះស្រាយបញ្ហាបច្ចេកទេស និងដើម្បីកែលម្អសេវាកម្មរបស់យើង ដោយអនុលោមតាម<ph name="BEGIN_LINK2" />គោលការណ៍ឯកជនភាព<ph name="END_LINK2" /> និង<ph name="BEGIN_LINK3" />លក្ខខណ្ឌប្រើប្រាស់<ph name="END_LINK3" />របស់យើង។</translation> <translation id="1887850431809612466">ការផ្លាស់ប្តូរផ្នែករឹង</translation> <translation id="1905710495812624430">បានលើសការព្យាយាមចូូលអតិបរមាដែលបានអនុញ្ញាតហើយ។</translation> <translation id="1908234395526491708">សំណើ UDP មិនបានសម្រេច</translation> @@ -622,6 +624,7 @@ <translation id="6379086450106841622">អេក្រង់ថាច់</translation> <translation id="6381741036071372448">ធ្វើតេស្តក្ដារចុចរបស់អ្នក</translation> <translation id="6388847657025262518">ឧបករណ៍បញ្ចូលឯកសាររបស់ម៉ាស៊ីនស្កេនជាប់គាំង។ សូមពិនិត្យមើលឧបករណ៍បញ្ចូលឯកសារនោះ រួចព្យាយាមម្ដងទៀត។</translation> +<translation id="6394634179843537518">បញ្ចូលឯកសារ</translation> <translation id="6410257289063177456">ឯកសាររូបភាព</translation> <translation id="641081527798843608">ប្រធានបទត្រូវគ្នា</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb index 395e3ccc..872f310 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Naudotojas</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Išorinių įrenginių programinės aparatinės įrangos atnaujinimo langas atidarytas. Pasiekiama naujinių: <ph name="NUM_UPDATES" />.</translation> +<translation id="1145516343487477149">Pagalbos straipsnių ir atsakymų į dažnai užduodamus su „Chromebook“ susijusius klausimus paieška</translation> <translation id="1165039591588034296">Klaida</translation> <translation id="1175697296044146566">Šį „<ph name="DEVICE_TYPE" />“ valdo <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Vidutiniškas (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Išjungti tamsiąją temą</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Išjungti tamsų režimą</translation> +<translation id="1881188606372070653">Eikite į <ph name="BEGIN_LINK1" />teisinės pagalbos puslapį<ph name="END_LINK1" /> ir pateikite užklausą pakeisti turinį dėl teisinių priežasčių. Dalis informacijos apie paskyrą ir sistemą gali būti išsiųsta į sistemą „Google“. Informacija, kurią pateiksite, mums padės spręsti technines problemas ir tobulinti teikiamas paslaugas. Ją naudosime laikydamiesi <ph name="BEGIN_LINK2" />privatumo politikos<ph name="END_LINK2" /> ir <ph name="BEGIN_LINK3" />paslaugų teikimo sąlygų<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Aparatinės įrangos taisymas</translation> <translation id="1905710495812624430">Viršytas didžiausias bandymų skaičius.</translation> <translation id="1908234395526491708">Nepavyko pateikti UDP užklausų</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Jutiklinis ekranas</translation> <translation id="6381741036071372448">Klaviatūros išbandymas</translation> <translation id="6388847657025262518">Skaitytuvo dokumentų tiektuvas užstrigo. Patikrinkite tiektuvą ir bandykite dar kartą.</translation> +<translation id="6394634179843537518">Pridėti failą</translation> <translation id="6410257289063177456">Vaizdo failai</translation> <translation id="641081527798843608">Temos atitiktis</translation> <translation id="6423239382391657905">Atidaryti virtualųjį privatųjį tinklą</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index dd98e57a3..21fc82c 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Nevarēja ielādēt attēlus. Pārbaudiet tīkla savienojumu vai vēlreiz mēģiniet ielādēt attēlus.</translation> <translation id="1751249301761991853">Personīgi</translation> <translation id="1753496554272155572">Aizvērt fona tapetes priekšskatījumu</translation> +<translation id="1755556344721611131">Diagnostikas lietotne</translation> <translation id="175763766237925754">Labs (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index a356934..bf8afce 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Корисник</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Отворен е прозорецот за ажурирање фирмвер за надворешни уреди. Достапни се <ph name="NUM_UPDATES" /> ажурирања.</translation> +<translation id="1145516343487477149">Најдете статии за помош и одговори на вообичаени прашања за Chromebook</translation> <translation id="1165039591588034296">Грешка</translation> <translation id="1175697296044146566"><ph name="MANAGER" /> управува со овој <ph name="DEVICE_TYPE" />.</translation> <translation id="1175951029573070619">Просечен (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Исклучи темна тема</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Исклучи темен режим</translation> +<translation id="1881188606372070653">Одете на <ph name="BEGIN_LINK1" />страницата „Правна помош“<ph name="END_LINK1" /> за да побарате промени во содржините поради правни причини. Одредени податоци за сметката и системот може да се испратат до Google. Ќе ги користиме податоците што ни ги давате за да помогнеме во решавањето на техничките проблеми и да ги подобриме нашите услуги, што подлежат на нашата <ph name="BEGIN_LINK2" />Политика за приватност<ph name="END_LINK2" /> и<ph name="BEGIN_LINK3" />Условите за користење<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Ревизија на хардвер</translation> <translation id="1905710495812624430">Максималниот број дозволени обиди е надминат.</translation> <translation id="1908234395526491708">Неуспешни UDP-барања</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Екран на допир</translation> <translation id="6381741036071372448">Тестирајте ја тастатурата</translation> <translation id="6388847657025262518">Фиоката за документи на скенерот е заглавена. Проверете ја и обидете се повторно.</translation> +<translation id="6394634179843537518">Додај датотека</translation> <translation id="6410257289063177456">Датотеки со слики</translation> <translation id="641081527798843608">Совпаѓање на предмети</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 420e0a4..2bf56fcd 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">ഉപയോക്താവ്</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">'ബാഹ്യ ഉപകരണങ്ങൾക്കുള്ള ഫേംവെയർ അപ്ഡേറ്റ് ചെയ്യുക' വിൻഡോ തുറന്നിരിക്കുന്നു. <ph name="NUM_UPDATES" /> അപ്ഡേറ്റുകൾ ലഭ്യമാണ്.</translation> +<translation id="1145516343487477149">Chromebook-മായി ബന്ധപ്പെട്ട പൊതുവായ ചോദ്യങ്ങൾക്കുള്ള സഹായ ലേഖനങ്ങളും ഉത്തരങ്ങളും കണ്ടെത്തുക</translation> <translation id="1165039591588034296">പിശക്</translation> <translation id="1175697296044146566">ഈ <ph name="DEVICE_TYPE" /> മാനേജ് ചെയ്യുന്നത് <ph name="MANAGER" /> ആണ്.</translation> <translation id="1175951029573070619">ശരാശരി (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">ഡാർക്ക് തീം ഓഫാക്കുക</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">ഡാർക്ക് മോഡ് ഓഫാക്കുക</translation> +<translation id="1881188606372070653">നിയമപരമായ കാരണങ്ങളാലുള്ള ഉള്ളടക്ക മാറ്റങ്ങൾ അഭ്യർത്ഥിക്കാൻ <ph name="BEGIN_LINK1" />നിയമ സഹായ പേജിലേക്ക്<ph name="END_LINK1" /> പോകുക. അക്കൗണ്ടും സിസ്റ്റവുമായി ബന്ധപ്പെട്ട ചില വിവരങ്ങൾ Google-ന് അയച്ചേക്കാം. ഞങ്ങളുടെ <ph name="BEGIN_LINK2" />സ്വകാര്യതാ നയത്തിനും<ph name="END_LINK2" /> <ph name="BEGIN_LINK3" />സേവന നിബന്ധനകൾക്കും<ph name="END_LINK3" /> വിധേയമായി, സാങ്കേതിക പ്രശ്നങ്ങൾ പരിഹരിക്കാനും സേവനങ്ങൾ മെച്ചപ്പെടുത്താനും നിങ്ങൾ നൽകുന്ന വിവരങ്ങൾ ഞങ്ങൾ ഉപയോഗിക്കും.</translation> <translation id="1887850431809612466">ഹാർഡ്വെയർ അവലോകനം</translation> <translation id="1905710495812624430">അനുവദനീയമായ പരമാവധി ശ്രമങ്ങൾ നടത്തിക്കഴിഞ്ഞു.</translation> <translation id="1908234395526491708">പരാജയപ്പെട്ട UDP അഭ്യർത്ഥനകൾ</translation> @@ -622,6 +624,7 @@ <translation id="6379086450106841622">ടച്ച്സ്ക്രീൻ</translation> <translation id="6381741036071372448">നിങ്ങളുടെ കീബോർഡ് പരീക്ഷിക്കുക</translation> <translation id="6388847657025262518">ഈ സ്കാനറിന്റെ ഡോക്യുമെന്റ് ഫീഡർ ജാമായി. ഫീഡർ പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> +<translation id="6394634179843537518">ഫയൽ ചേർക്കുക</translation> <translation id="6410257289063177456">ചിത്ര ഫയലുകള്</translation> <translation id="641081527798843608">പൊരുത്തപ്പെടുന്ന വിഷയം</translation> <translation id="6423239382391657905">VPNതുറക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index b9da3aa..4df88b7 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">वापरकर्ता</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">बाह्य डिव्हाइससाठी फर्मवेअर अपडेट करण्याची विंडो खुली आहे. <ph name="NUM_UPDATES" /> अपडेट उपलब्ध आहेत.</translation> +<translation id="1145516343487477149">मदतपर लेख आणि Chromebook शी संबंधित सामान्य प्रश्नांची उत्तरे पहा</translation> <translation id="1165039591588034296">एरर</translation> <translation id="1175697296044146566">हे <ph name="DEVICE_TYPE" /> <ph name="MANAGER" /> द्वारे व्यवस्थापित केले आहे.</translation> <translation id="1175951029573070619">सरासरी (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">गडद थीम बंद करा</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">गडद मोड बंद करा</translation> +<translation id="1881188606372070653">कायदेशीर कारणांसाठी आशय बदलांची विनंती करण्यासाठी <ph name="BEGIN_LINK1" />कायदेशीर मदत पेज<ph name="END_LINK1" /> वर जा. काही खाते आणि सिस्टीम माहिती Google ला पाठवली जाईल. आम्ही आमचे <ph name="BEGIN_LINK2" />गोपनीयता धोरण<ph name="END_LINK2" /> आणि <ph name="BEGIN_LINK3" />सेवा अटी<ph name="END_LINK3" /> यांच्या अधीन राहून, तुम्ही आम्हाला दिलेल्या माहितीचा वापर तांत्रिक समस्या सोडवण्यात आणि आमच्या सेवांमध्ये सुधारणा करण्यात मदत करण्यासाठी करू.</translation> <translation id="1887850431809612466">हार्डवेअर पुनरावृत्ती</translation> <translation id="1905710495812624430">कमाल अनुमती असलेले प्रयत्न ओलांडले.</translation> <translation id="1908234395526491708">UDP विनंती पूर्ण करता आली नाही</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">टचस्क्रीन</translation> <translation id="6381741036071372448">तुमच्या कीबोर्डची चाचणी करा</translation> <translation id="6388847657025262518">स्कॅनरचा दस्तऐवज फीडर अडकला आहे. फीडर तपासा आणि पुन्हा प्रयत्न करा.</translation> +<translation id="6394634179843537518">फाइल जोडा</translation> <translation id="6410257289063177456">इमेज फाइल</translation> <translation id="641081527798843608">जुळणारा विषय</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 2537befb..06738fb6 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Pengguna</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Kemaskinian perisian tegar untuk tetingkap peranti luaran dibuka. <ph name="NUM_UPDATES" /> kemaskinian tersedia.</translation> +<translation id="1145516343487477149">Cari artikel bantuan dan jawapan kepada soalan lazim Chromebook</translation> <translation id="1165039591588034296">Ralat</translation> <translation id="1175697296044146566"><ph name="DEVICE_TYPE" /> ini diurus oleh <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Biasa (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Matikan tema gelap</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Matikan mod gelap</translation> +<translation id="1881188606372070653">Pergi ke <ph name="BEGIN_LINK1" />halaman Bantuan Undang-undang<ph name="END_LINK1" /> untuk meminta perubahan kandungan atas sebab undang-undang. Sesetengah maklumat akaun dan sistem mungkin dihantar kepada Google. Kami akan menggunakan maklumat yang anda berikan untuk membantu kami menyelesaikan isu teknikal dan untuk menambah baik perkhidmatan kami, tertakluk pada <ph name="BEGIN_LINK2" />Dasar Privasi<ph name="END_LINK2" /> dan <ph name="BEGIN_LINK3" />Syarat Perkhidmatan<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Semakan perkakasan</translation> <translation id="1905710495812624430">Melebihi had maksimum percubaan yang dibenarkan.</translation> <translation id="1908234395526491708">Kegagalan permintaan UDP</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Skrin sentuh</translation> <translation id="6381741036071372448">Uji papan kekunci anda</translation> <translation id="6388847657025262518">Penyuap dokumen pengimbas tersekat. Semak penyuap dan cuba lagi.</translation> +<translation id="6394634179843537518">Tambah fail</translation> <translation id="6410257289063177456">Fail Imej</translation> <translation id="641081527798843608">Padanan subjek</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 699c54b..7ece581 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Usuário</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">A janela de atualização de firmware para dispositivos externos está aberta. <ph name="NUM_UPDATES" /> atualizações disponíveis.</translation> +<translation id="1145516343487477149">Encontre artigos de ajuda e respostas a perguntas comuns sobre Chromebooks</translation> <translation id="1165039591588034296">Erro</translation> <translation id="1175697296044146566">Este <ph name="DEVICE_TYPE" /> é gerenciado por <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Médio (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Desativar o tema escuro</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Desativar o modo escuro</translation> +<translation id="1881188606372070653">Acesse a <ph name="BEGIN_LINK1" />página de Ajuda do Jurídico<ph name="END_LINK1" /> para pedir mudanças no conteúdo por questões legais. Talvez alguns dados sobre a conta e o sistema sejam enviados ao Google. As informações que você fornecer vão ser usadas para ajudar a resolver problemas técnicos e melhorar nossos serviços, conforme descrito na <ph name="BEGIN_LINK2" />Política de Privacidade<ph name="END_LINK2" /> e nos <ph name="BEGIN_LINK3" />Termos de Serviço<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Revisão do hardware</translation> <translation id="1905710495812624430">O número máximo de tentativas permitidas foi excedido.</translation> <translation id="1908234395526491708">Falhas de solicitações UDP</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Tela touchscreen</translation> <translation id="6381741036071372448">Testar o teclado</translation> <translation id="6388847657025262518">O alimentador de documentos do scanner está obstruído. Verifique-o e tente novamente.</translation> +<translation id="6394634179843537518">Adicionar arquivo</translation> <translation id="6410257289063177456">Arquivos de imagem</translation> <translation id="641081527798843608">Correspondência de assunto</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index 709fd52..42dad91 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Utilizador</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">A janela de atualização do firmware para dispositivos externos está aberta. <ph name="NUM_UPDATES" /> atualizações disponíveis</translation> +<translation id="1145516343487477149">Encontre artigos de ajuda e respostas a perguntas comuns sobre o Chromebook</translation> <translation id="1165039591588034296">Erro</translation> <translation id="1175697296044146566">Este <ph name="DEVICE_TYPE" /> é gerido por <ph name="MANAGER" />.</translation> <translation id="1175951029573070619">Média (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Desativar tema escuro</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Desativar modo escuro</translation> +<translation id="1881188606372070653">Aceda à <ph name="BEGIN_LINK1" />página de Ajuda legal<ph name="END_LINK1" /> para pedir alterações de conteúdo por motivos legais. Algumas informações da conta e do sistema podem ser enviadas para a Google. Usamos as informações fornecidas por si na resolução de problemas técnicos e melhoria dos nossos serviços, sujeitas à <ph name="BEGIN_LINK2" />Política de Privacidade<ph name="END_LINK2" /> e aos <ph name="BEGIN_LINK3" />Termos de Utilização<ph name="END_LINK3" /> da Google.</translation> <translation id="1887850431809612466">Revisão de hardware</translation> <translation id="1905710495812624430">Foi excedido o número máximo de tentativas permitidas.</translation> <translation id="1908234395526491708">Falhas de pedidos de UDP.</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Ecrã tátil</translation> <translation id="6381741036071372448">Teste o seu teclado</translation> <translation id="6388847657025262518">O alimentador de documentos do scanner está encravado. Verifique o alimentador e tente novamente.</translation> +<translation id="6394634179843537518">Adicionar ficheiro</translation> <translation id="6410257289063177456">Ficheiros de imagem</translation> <translation id="641081527798843608">Correspondência de assunto</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index f1007937..6a9bcb5 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Не удалось загрузить изображения. Проверьте подключение к сети и повторите попытку.</translation> <translation id="1751249301761991853">Персональные настройки</translation> <translation id="1753496554272155572">Выйти из предпросмотра обоев</translation> +<translation id="1755556344721611131">Приложение "Диагностика"</translation> <translation id="175763766237925754">Хороший (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb index bb898d7e..2885169 100644 --- a/chromeos/strings/chromeos_strings_si.xtb +++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">පරිශීලක</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">බාහිර උපාංග සඳහා නිත්ය මෘදුකාංග යාවත්කාලීන කිරීමේ කවුළුව විවෘතයි. යාවත්කාලීන <ph name="NUM_UPDATES" />ක් තිබේ.</translation> +<translation id="1145516343487477149">සුලබ Chromebook ප්රශ්නවලට උදවු ලිපි සහ පිළිතුරු සොයන්න</translation> <translation id="1165039591588034296">දෝෂයක්</translation> <translation id="1175697296044146566">මෙම <ph name="DEVICE_TYPE" /> කළමනාකරණය කරනු ලබන්නේ <ph name="MANAGER" /> මගිනි.</translation> <translation id="1175951029573070619">සාමාන්යයි (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">අඳුරු තේමාව ක්රියාවිරහිත කරන්න</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">අඳුරු ප්රකාරය ක්රියාවිරහිත කරන්න</translation> +<translation id="1881188606372070653">නීතිමය හේතු නිසා අන්තර්ගත වෙනස් කිරීම් ඉල්ලා සිටීමට <ph name="BEGIN_LINK1" />නීති උදවු පිටුව<ph name="END_LINK1" /> වෙත යන්න. සමහර ගිණුම් සහ පද්ධති තොරතුරු Google වෙත යැවිය හැකිය. අප අපගේ <ph name="BEGIN_LINK2" />රහස්යතා ප්රතිපත්තිය<ph name="END_LINK2" /> සහ <ph name="BEGIN_LINK3" />සේවා නියමවලට<ph name="END_LINK3" /> යටත්ව, තාක්ෂණික ගැටලු විසඳීමට සහ අපගේ සේවාවන් වැඩි දියුණු කිරීමට උදවු වීමට ඔබ අපට දෙන තොරතුරු භාවිත කරනු ඇත.</translation> <translation id="1887850431809612466">දෘඨාංග සංශෝධනය</translation> <translation id="1905710495812624430">ඉඩ දෙන උපරිම උත්සාහයන් ගණන ඉක්මවා ඇත.</translation> <translation id="1908234395526491708">UDP ඉල්ලීම් අසාර්ථක වීම්</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">ස්පර්ශ තිරය</translation> <translation id="6381741036071372448">ඔබගේ යතුරු පුවරුව පරික්ෂා කරන්න</translation> <translation id="6388847657025262518">ස්කෑනරයේ ලේඛන සංග්රහය තදබදයට පත්ව ඇත. සංග්රහය පරීක්ෂා කර නැවත උත්සාහ කරන්න.</translation> +<translation id="6394634179843537518">ගොනුව එක් කරන්න</translation> <translation id="6410257289063177456">පින්තූර ගොනු</translation> <translation id="641081527798843608">විෂය ගැළපුම</translation> <translation id="6423239382391657905">OpenVPN</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index 6e5668d8..61d6047 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Imazhet nuk mund të ngarkoheshin. Kontrollo lidhjen e rrjetit ose provo t'i ngarkosh përsëri imazhet.</translation> <translation id="1751249301761991853">Personale</translation> <translation id="1753496554272155572">Dil nga pamja paraprake e imazhit të sfondit</translation> +<translation id="1755556344721611131">Aplikacioni i diagnostikimit</translation> <translation id="175763766237925754">I mirë (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index 03555f4..9ad69b7 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Korisnik</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Prozor za ažuriranje firmvera za spoljne uređaje je otvoren. Dostupnih ažuriranja: <ph name="NUM_UPDATES" />.</translation> +<translation id="1145516343487477149">Pronađite članke pomoći i odgovore na česta pitanja o Chromebook-u</translation> <translation id="1165039591588034296">Greška</translation> <translation id="1175697296044146566"><ph name="MANAGER" /> upravlja ovim <ph name="DEVICE_TYPE" /> uređajem.</translation> <translation id="1175951029573070619">Prosečan (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Isključite tamnu temu</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Isključite tamni režim</translation> +<translation id="1881188606372070653">Idite na <ph name="BEGIN_LINK1" />stranicu pravne pomoći<ph name="END_LINK1" /> da biste zatražili promene sadržaja iz pravnih razloga. Neke informacije o nalogu i sistemu mogu da se šalju Google-u. Koristićemo informacije koje nam date kao pomoć u rešavanju tehničkih problema i u cilju poboljšanja usluga, a shodno <ph name="BEGIN_LINK2" />politici privatnosti<ph name="END_LINK2" /> i <ph name="BEGIN_LINK3" />uslovima korišćenja usluge<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Revizija hardvera</translation> <translation id="1905710495812624430">Premašen je maksimalni broj pokušaja.</translation> <translation id="1908234395526491708">Neuspeli UDP zahtevi</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Dodirni ekran</translation> <translation id="6381741036071372448">Testirajte tastaturu</translation> <translation id="6388847657025262518">Mehanizam za uvlačenje dokumenata na skeneru je zaglavljen. Proverite mehanizam i probajte ponovo.</translation> +<translation id="6394634179843537518">Dodajte fajl</translation> <translation id="6410257289063177456">Datoteke slika</translation> <translation id="641081527798843608">Podudaranje naslova</translation> <translation id="6423239382391657905">Otvorena VPN</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index 18bc4774..6dab82fb 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -16,6 +16,7 @@ <translation id="1124772482545689468">Корисник</translation> <translation id="1128128132059598906">EAP-TTLS</translation> <translation id="1145018782460575098">Прозор за ажурирање фирмвера за спољне уређаје је отворен. Доступних ажурирања: <ph name="NUM_UPDATES" />.</translation> +<translation id="1145516343487477149">Пронађите чланке помоћи и одговоре на честа питања о Chromebook-у</translation> <translation id="1165039591588034296">Грешка</translation> <translation id="1175697296044146566"><ph name="MANAGER" /> управља овим <ph name="DEVICE_TYPE" /> уређајем.</translation> <translation id="1175951029573070619">Просечан (<ph name="SIGNAL_STRENGTH" />)</translation> @@ -120,6 +121,7 @@ <translation id="1871569928317311284">Искључите тамну тему</translation> <translation id="1874612839560830905">MTU</translation> <translation id="188114911237521550">Искључите тамни режим</translation> +<translation id="1881188606372070653">Идите на <ph name="BEGIN_LINK1" />страницу правне помоћи<ph name="END_LINK1" /> да бисте затражили промене садржаја из правних разлога. Неке информације о налогу и систему могу да се шаљу Google-у. Користићемо информације које нам дате као помоћ у решавању техничких проблема и у циљу побољшања услуга, а сходно <ph name="BEGIN_LINK2" />политици приватности<ph name="END_LINK2" /> и <ph name="BEGIN_LINK3" />условима коришћења услуге<ph name="END_LINK3" />.</translation> <translation id="1887850431809612466">Ревизија хардвера</translation> <translation id="1905710495812624430">Премашен је максимални број покушаја.</translation> <translation id="1908234395526491708">Неуспели UDP захтеви</translation> @@ -623,6 +625,7 @@ <translation id="6379086450106841622">Додирни екран</translation> <translation id="6381741036071372448">Тестирајте тастатуру</translation> <translation id="6388847657025262518">Механизам за увлачење докумената на скенеру је заглављен. Проверите механизам и пробајте поново.</translation> +<translation id="6394634179843537518">Додајте фајл</translation> <translation id="6410257289063177456">Датотеке слика</translation> <translation id="641081527798843608">Подударање наслова</translation> <translation id="6423239382391657905">Отворена VPN</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index 3a57bf5..64eff94 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Det gick inte att läsa in bilder. Kontrollera nätverksanslutningen eller testa att läsa in bilderna igen.</translation> <translation id="1751249301761991853">Personligt</translation> <translation id="1753496554272155572">Stäng förhandsgranskning av bakgrund</translation> +<translation id="1755556344721611131">Appen Diagnostik</translation> <translation id="175763766237925754">Bra (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index b66e723b..40dbabc 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -103,6 +103,7 @@ <translation id="1745577949879301685">Imeshindwa kupakia picha. Angalia muunganisho wa mtandao wako au jaribu kupakia picha tena.</translation> <translation id="1751249301761991853">Binafsi</translation> <translation id="1753496554272155572">Funga onyesho la kukagua mandhari</translation> +<translation id="1755556344721611131">Programu ya uchunguzi</translation> <translation id="175763766237925754">Thabiti (<ph name="SIGNAL_STRENGTH" />)</translation> <translation id="1758018619400202187">EAP-TLS</translation> <translation id="1759842336958782510">Chrome</translation>
diff --git a/components/autofill_assistant/browser/js_flow_devtools_wrapper.h b/components/autofill_assistant/browser/js_flow_devtools_wrapper.h index 2f98ffa..a8f5026d 100644 --- a/components/autofill_assistant/browser/js_flow_devtools_wrapper.h +++ b/components/autofill_assistant/browser/js_flow_devtools_wrapper.h
@@ -7,6 +7,7 @@ #include "base/callback.h" #include "base/callback_list.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/autofill_assistant/browser/client_status.h" #include "components/autofill_assistant/browser/devtools/devtools_client.h" @@ -74,7 +75,7 @@ // True after FinishInit was called. bool InitDone(); - content::BrowserContext* browser_context_; + raw_ptr<content::BrowserContext> browser_context_; std::string js_flow_library_; // Only set for the browser context constructor. Lazily instantiated.
diff --git a/components/autofill_assistant/browser/js_flow_executor_impl.h b/components/autofill_assistant/browser/js_flow_executor_impl.h index 91cbb1cf1..c4323af 100644 --- a/components/autofill_assistant/browser/js_flow_executor_impl.h +++ b/components/autofill_assistant/browser/js_flow_executor_impl.h
@@ -120,10 +120,10 @@ } const raw_ptr<Delegate> delegate_; - JsFlowDevtoolsWrapper* js_flow_devtools_wrapper_; + raw_ptr<JsFlowDevtoolsWrapper> js_flow_devtools_wrapper_; // Only set during a flow. - DevtoolsClient* devtools_client_; + raw_ptr<DevtoolsClient> devtools_client_; int isolated_world_context_id_ = -1; std::unique_ptr<std::string> js_flow_; base::OnceCallback<void(const ClientStatus&, std::unique_ptr<base::Value>)>
diff --git a/components/autofill_assistant/browser/web/semantic_element_finder.cc b/components/autofill_assistant/browser/web/semantic_element_finder.cc index 7a35c1f9..8b60fef 100644 --- a/components/autofill_assistant/browser/web/semantic_element_finder.cc +++ b/components/autofill_assistant/browser/web/semantic_element_finder.cc
@@ -79,7 +79,8 @@ } void SemanticElementFinder::ResultFound(const GlobalBackendNodeId& node_id, - const std::string& object_id) { + const std::string& object_id, + const std::string& devtools_frame_id) { if (!callback_) { return; } @@ -87,6 +88,7 @@ ElementFinderResult result; result.SetRenderFrameHostGlobalId(node_id.host_id()); result.SetObjectId(object_id); + result.SetNodeFrameId(devtools_frame_id); result.SetBackendNodeId(node_id.backend_node_id()); SendResult(OkClientStatus(), result); @@ -207,26 +209,38 @@ GiveUpWithError(ClientStatus(ELEMENT_RESOLUTION_FAILED)); return; } + const auto& semantic_node_result = semantic_node_results_[0]; - // We need to set the empty string for the frame id. The expectation is that - // backend node ids are global and devtools is able to resolve the node - // without an explicit frame id. + // A non-exitent frame should never happen at this point, better to be safe. + // E.g. crbug/1335205. + // Only assign a devtools frame id if the owning frame is in a different + // process than the main frame (in process frames are not tracked and do + // not have a session id in our |DevtoolsClient|). + std::string devtools_frame_id; + auto* frame = + content::RenderFrameHost::FromID(semantic_node_result.host_id()); + if (frame != nullptr && web_contents_->GetPrimaryMainFrame()->GetProcess() != + frame->GetProcess()) { + devtools_frame_id = frame->GetDevToolsFrameToken().ToString(); + } + devtools_client_->GetDOM()->ResolveNode( dom::ResolveNodeParams::Builder() - .SetBackendNodeId(semantic_node_results_[0].backend_node_id()) + .SetBackendNodeId(semantic_node_result.backend_node_id()) .Build(), - /* current_frame_id= */ std::string(), + devtools_frame_id, base::BindOnce(&SemanticElementFinder::OnResolveNodeForAnnotateDom, - weak_ptr_factory_.GetWeakPtr(), - semantic_node_results_[0])); + weak_ptr_factory_.GetWeakPtr(), semantic_node_result, + devtools_frame_id)); } void SemanticElementFinder::OnResolveNodeForAnnotateDom( const GlobalBackendNodeId& node, + const std::string& devtools_frame_id, const DevtoolsClient::ReplyStatus& reply_status, std::unique_ptr<dom::ResolveNodeResult> result) { if (result && result->GetObject() && result->GetObject()->HasObjectId()) { - ResultFound(node, result->GetObject()->GetObjectId()); + ResultFound(node, result->GetObject()->GetObjectId(), devtools_frame_id); return; } SendResult(ClientStatus(ELEMENT_RESOLUTION_FAILED),
diff --git a/components/autofill_assistant/browser/web/semantic_element_finder.h b/components/autofill_assistant/browser/web/semantic_element_finder.h index d95e1da..2e707afc 100644 --- a/components/autofill_assistant/browser/web/semantic_element_finder.h +++ b/components/autofill_assistant/browser/web/semantic_element_finder.h
@@ -51,10 +51,11 @@ // Returns the given status and no element. This expects an error status. void GiveUpWithError(const ClientStatus& status); - // Builds a result from the |node_id| and the |object_id|, returns it with an + // Builds a result from the provided information and returns it with an // ok status. void ResultFound(const GlobalBackendNodeId& node_id, - const std::string& object_id); + const std::string& object_id, + const std::string& devtools_frame_id); // Call |callback_| with the |status| and |result|. void SendResult(const ClientStatus& status, @@ -79,6 +80,7 @@ void OnResolveNodeForAnnotateDom( const GlobalBackendNodeId& node, + const std::string& devtools_frame_id, const DevtoolsClient::ReplyStatus& reply_status, std::unique_ptr<dom::ResolveNodeResult> result);
diff --git a/components/autofill_assistant/browser/web/semantic_element_finder_browsertest.cc b/components/autofill_assistant/browser/web/semantic_element_finder_browsertest.cc index 8e66c85..347f4faa 100644 --- a/components/autofill_assistant/browser/web/semantic_element_finder_browsertest.cc +++ b/components/autofill_assistant/browser/web/semantic_element_finder_browsertest.cc
@@ -48,6 +48,7 @@ #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "url/gurl.h" namespace autofill_assistant { @@ -55,7 +56,9 @@ using ::base::test::RunOnceCallback; using ::testing::_; +using ::testing::Eq; using ::testing::IsEmpty; +using ::testing::Not; using ::testing::Return; using ::testing::WithArgs; @@ -201,7 +204,10 @@ return ClientStatus(captured_processed_actions[0].status()); } - int GetBackendNodeId(Selector selector, ClientStatus* status_out) { + int GetBackendNodeId( + Selector selector, + ClientStatus* status_out, + content::GlobalRenderFrameHostId* frame_id_out = nullptr) { std::unique_ptr<ElementFinderResult> element_result; int backend_node_id = -1; @@ -220,6 +226,10 @@ return backend_node_id; } + if (frame_id_out) { + *frame_id_out = element_result->render_frame_host()->GetGlobalId(); + } + // Second part in sequence, lookup backend node id. base::RunLoop run_loop_2; web_controller_->GetBackendNodeId( @@ -235,6 +245,40 @@ return backend_node_id; } + std::string GetFieldValue(Selector selector, ClientStatus* status_out) { + std::unique_ptr<ElementFinderResult> element_result; + std::string value; + + base::RunLoop run_loop_1; + web_controller_->FindElement( + selector, true, + base::BindLambdaForTesting( + [&](const ClientStatus& status, + std::unique_ptr<ElementFinderResult> result) { + element_result = std::move(result); + *status_out = status; + run_loop_1.Quit(); + })); + run_loop_1.Run(); + if (!status_out->ok()) { + return value; + } + + base::RunLoop run_loop_2; + web_controller_->GetFieldValue( + *element_result, + base::BindLambdaForTesting( + [&](const ClientStatus& status, const std::string& element_value) { + *status_out = status; + value = element_value; + run_loop_2.Quit(); + })); + run_loop_2.Run(); + + log_info_.Clear(); + return value; + } + protected: std::unique_ptr<WebController> web_controller_; UserData user_data_; @@ -318,20 +362,32 @@ IN_PROC_BROWSER_TEST_F(SemanticElementFinderBrowserTest, ElementExistenceCheckWithSemanticModelOOPIF) { + // Frames return an error by default. + EXPECT_CALL(autofill_assistant_agent_, GetSemanticNodes) + .WillRepeatedly(RunOnceCallback<4>( + mojom::NodeDataStatus::kUnexpectedError, std::vector<NodeData>())); + ClientStatus status; - int backend_node_id = - GetBackendNodeId(Selector({"#iframeExternal", "#button"}), &status); + content::GlobalRenderFrameHostId frame_id; + int backend_node_id = GetBackendNodeId( + Selector({"#iframeExternal", "#button"}), &status, &frame_id); EXPECT_TRUE(status.ok()); NodeData node_data; node_data.backend_node_id = backend_node_id; - EXPECT_CALL(autofill_assistant_agent_, + + MockAutofillAssistantAgent frame_autofill_assistant_agent_; + content::RenderFrameHost::FromID(frame_id) + ->GetRemoteAssociatedInterfaces() + ->OverrideBinderForTesting( + mojom::AutofillAssistantAgent::Name_, + base::BindRepeating( + &MockAutofillAssistantAgent::BindPendingReceiver, + base::Unretained(&frame_autofill_assistant_agent_))); + EXPECT_CALL(frame_autofill_assistant_agent_, GetSemanticNodes(1, 2, false, base::Milliseconds(5000), _)) .WillOnce(RunOnceCallback<4>(mojom::NodeDataStatus::kSuccess, - std::vector<NodeData>{node_data})) - // Capture any other frames. - .WillRepeatedly(RunOnceCallback<4>( - mojom::NodeDataStatus::kUnexpectedError, std::vector<NodeData>())); + std::vector<NodeData>{node_data})); // We pretend that the button is the correct element. SelectorProto proto; @@ -463,4 +519,208 @@ run_loop.Run(); } +IN_PROC_BROWSER_TEST_F(SemanticElementFinderBrowserTest, FillInputInMainFrame) { + // Frames return an error by default. + EXPECT_CALL(autofill_assistant_agent_, GetSemanticNodes) + .WillRepeatedly(RunOnceCallback<4>( + mojom::NodeDataStatus::kUnexpectedError, std::vector<NodeData>())); + EXPECT_CALL(autofill_assistant_agent_, SetElementValue).Times(0); + + Selector css_selector({"#input1"}); + ClientStatus input_status; + content::GlobalRenderFrameHostId frame_id; + int backend_node_id = + GetBackendNodeId(css_selector, &input_status, &frame_id); + ASSERT_TRUE(input_status.ok()); + + auto* frame = content::RenderFrameHost::FromID(frame_id); + ASSERT_TRUE(frame != nullptr); + EXPECT_THAT(frame, Eq(web_contents()->GetPrimaryMainFrame())); + + NodeData node_data; + node_data.backend_node_id = backend_node_id; + + MockAutofillAssistantAgent frame_autofill_assistant_agent_; + frame->GetRemoteAssociatedInterfaces()->OverrideBinderForTesting( + mojom::AutofillAssistantAgent::Name_, + base::BindRepeating(&MockAutofillAssistantAgent::BindPendingReceiver, + base::Unretained(&frame_autofill_assistant_agent_))); + EXPECT_CALL(frame_autofill_assistant_agent_, + GetSemanticNodes(1, 2, false, _, _)) + .WillOnce(RunOnceCallback<4>(mojom::NodeDataStatus::kSuccess, + std::vector<NodeData>{node_data})); + std::u16string expected_value = u"native"; + EXPECT_CALL(frame_autofill_assistant_agent_, + SetElementValue(backend_node_id, expected_value, + /* send_events= */ true, _)) + .WillOnce(RunOnceCallback<3>(true)); + + SelectorProto proto; + auto* semantic_filter = proto.add_filters()->mutable_semantic(); + semantic_filter->set_role(1); + semantic_filter->set_objective(2); + + ElementFinderResult element; + ClientStatus element_status; + FindElement(Selector(proto), &element_status, &element); + ASSERT_TRUE(element_status.ok()); + + base::RunLoop devtools_run_loop; + web_controller_->SetValueAttribute( + "devtools", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + devtools_run_loop.Quit(); + })); + devtools_run_loop.Run(); + ClientStatus check_status; + EXPECT_EQ(GetFieldValue(css_selector, &check_status), "devtools"); + EXPECT_TRUE(check_status.ok()); + + base::RunLoop native_run_loop; + web_controller_->SetNativeValue( + "native", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + native_run_loop.Quit(); + })); + native_run_loop.Run(); +} + +IN_PROC_BROWSER_TEST_F(SemanticElementFinderBrowserTest, FillInputInIFrame) { + // Frames return an error by default. + EXPECT_CALL(autofill_assistant_agent_, GetSemanticNodes) + .WillRepeatedly(RunOnceCallback<4>( + mojom::NodeDataStatus::kUnexpectedError, std::vector<NodeData>())); + EXPECT_CALL(autofill_assistant_agent_, SetElementValue).Times(0); + + Selector css_selector({"#iframe", "#input"}); + ClientStatus input_status; + content::GlobalRenderFrameHostId frame_id; + int backend_node_id = + GetBackendNodeId(css_selector, &input_status, &frame_id); + ASSERT_TRUE(input_status.ok()); + + auto* frame = content::RenderFrameHost::FromID(frame_id); + ASSERT_TRUE(frame != nullptr); + EXPECT_THAT(frame, Not(Eq(web_contents()->GetPrimaryMainFrame()))); + + NodeData node_data; + node_data.backend_node_id = backend_node_id; + + MockAutofillAssistantAgent frame_autofill_assistant_agent_; + frame->GetRemoteAssociatedInterfaces()->OverrideBinderForTesting( + mojom::AutofillAssistantAgent::Name_, + base::BindRepeating(&MockAutofillAssistantAgent::BindPendingReceiver, + base::Unretained(&frame_autofill_assistant_agent_))); + EXPECT_CALL(frame_autofill_assistant_agent_, + GetSemanticNodes(1, 2, false, _, _)) + .WillOnce(RunOnceCallback<4>(mojom::NodeDataStatus::kSuccess, + std::vector<NodeData>{node_data})); + std::u16string expected_value = u"native"; + EXPECT_CALL(frame_autofill_assistant_agent_, + SetElementValue(backend_node_id, expected_value, + /* send_events= */ true, _)) + .WillOnce(RunOnceCallback<3>(true)); + + SelectorProto proto; + auto* semantic_filter = proto.add_filters()->mutable_semantic(); + semantic_filter->set_role(1); + semantic_filter->set_objective(2); + + ElementFinderResult element; + ClientStatus element_status; + FindElement(Selector(proto), &element_status, &element); + ASSERT_TRUE(element_status.ok()); + + base::RunLoop devtools_run_loop; + web_controller_->SetValueAttribute( + "devtools", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + devtools_run_loop.Quit(); + })); + devtools_run_loop.Run(); + ClientStatus check_status; + EXPECT_EQ(GetFieldValue(css_selector, &check_status), "devtools"); + EXPECT_TRUE(check_status.ok()); + + base::RunLoop native_run_loop; + web_controller_->SetNativeValue( + "native", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + native_run_loop.Quit(); + })); + native_run_loop.Run(); +} + +IN_PROC_BROWSER_TEST_F(SemanticElementFinderBrowserTest, FillInputInOOPIF) { + // Frames return an error by default. + EXPECT_CALL(autofill_assistant_agent_, GetSemanticNodes) + .WillRepeatedly(RunOnceCallback<4>( + mojom::NodeDataStatus::kUnexpectedError, std::vector<NodeData>())); + EXPECT_CALL(autofill_assistant_agent_, SetElementValue).Times(0); + + Selector css_selector({"#iframeExternal", "#input"}); + ClientStatus input_status; + content::GlobalRenderFrameHostId frame_id; + int backend_node_id = + GetBackendNodeId(css_selector, &input_status, &frame_id); + ASSERT_TRUE(input_status.ok()); + + auto* frame = content::RenderFrameHost::FromID(frame_id); + ASSERT_TRUE(frame != nullptr); + EXPECT_THAT(frame, Not(Eq(web_contents()->GetPrimaryMainFrame()))); + + NodeData node_data; + node_data.backend_node_id = backend_node_id; + + MockAutofillAssistantAgent frame_autofill_assistant_agent_; + frame->GetRemoteAssociatedInterfaces()->OverrideBinderForTesting( + mojom::AutofillAssistantAgent::Name_, + base::BindRepeating(&MockAutofillAssistantAgent::BindPendingReceiver, + base::Unretained(&frame_autofill_assistant_agent_))); + EXPECT_CALL(frame_autofill_assistant_agent_, + GetSemanticNodes(1, 2, false, _, _)) + .WillOnce(RunOnceCallback<4>(mojom::NodeDataStatus::kSuccess, + std::vector<NodeData>{node_data})); + std::u16string expected_value = u"native"; + EXPECT_CALL(frame_autofill_assistant_agent_, + SetElementValue(backend_node_id, expected_value, + /* send_events= */ true, _)) + .WillOnce(RunOnceCallback<3>(true)); + + SelectorProto proto; + auto* semantic_filter = proto.add_filters()->mutable_semantic(); + semantic_filter->set_role(1); + semantic_filter->set_objective(2); + + ElementFinderResult element; + ClientStatus element_status; + FindElement(Selector(proto), &element_status, &element); + ASSERT_TRUE(element_status.ok()); + + base::RunLoop devtools_run_loop; + web_controller_->SetValueAttribute( + "devtools", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + devtools_run_loop.Quit(); + })); + devtools_run_loop.Run(); + ClientStatus check_status; + EXPECT_EQ(GetFieldValue(css_selector, &check_status), "devtools"); + EXPECT_TRUE(check_status.ok()); + + base::RunLoop native_run_loop; + web_controller_->SetNativeValue( + "native", element, + base::BindLambdaForTesting([&](const ClientStatus& status) { + EXPECT_TRUE(status.ok()); + native_run_loop.Quit(); + })); + native_run_loop.Run(); +} + } // namespace autofill_assistant
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb index 4d0b454..7d62fb0 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_af.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Vra voordat werwe toegelaat word om 'n 3D-kaart van jou omgewing te skep of kameraposisie na te spoor (aanbeveel)</translation> <translation id="2212565012507486665">Laat webkoekies toe</translation> <translation id="2228071138934252756">Om <ph name="APP_NAME" /> toegang tot jou kamera te gee, moet jy kamera ook in <ph name="BEGIN_LINK" />Android-instellings<ph name="END_LINK" /> aanskakel.</translation> +<translation id="2238944249568001759">Voorgestelde soektogte op grond van jou jongste oortjie</translation> <translation id="2241634353105152135">Net een keer</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Verwyder</translation> <translation id="2289270750774289114">Vra wanneer 'n werf Bluetooth-toestelle in die omtrek wil ontdek (aanbeveel)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb index 1d88899..83d842d 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Saytların ətrafınızdakı sahələrin 3D xəritəsini yaratmasına və ya kamera mövqeyini izləməsinə icazə verməzdən əvvəl icazə tələb edin (tövsiyə edilir)</translation> <translation id="2212565012507486665">Kukilərə icazə verin</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> tətbiqinə kameranıza giriş icazəsi vermək üçün <ph name="BEGIN_LINK" />Android Ayarlarında<ph name="END_LINK" /> kameranı da aktiv edin.</translation> +<translation id="2238944249568001759">Son tabınıza əsasən təklif olunan axtarışlar</translation> <translation id="2241634353105152135">Sadəcə bir dəfə</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Silin</translation> <translation id="2289270750774289114">Sayt yaxınlıqdakı Bluetooth cihazlarını kəşf etmək istədikdə soruşun (tövsiyə edilir)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb index d538609..61f1544 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">আপনার আশেপাশের এলাকার একটি 3D ম্যাপ তৈরি করতে বা ক্যামেরার অবস্থান ট্র্যাক করতে কোনও সাইট অনুমোদন দেওয়ার আগে, একবার জিজ্ঞাসা করে নিন (সাজেস্ট করা হয়েছে)</translation> <translation id="2212565012507486665">কুকিগুলিকে অনুমতি দিন</translation> <translation id="2228071138934252756">তাছাড়া, যাতে <ph name="APP_NAME" /> আপনার ক্যামেরা অ্যাক্সেস করতে পারে, তার জন্য <ph name="BEGIN_LINK" />Android সেটিংসে<ph name="END_LINK" /> গিয়েও ক্যামেরা চালু করে দিন।</translation> +<translation id="2238944249568001759">আপনার শেষ ট্যাবের উপর ভিত্তি করে সাজেস্ট করা সার্চ</translation> <translation id="2241634353105152135">শুধুমাত্র একবার</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> সরিয়ে দিন</translation> <translation id="2289270750774289114">কাছাকাছি ব্লুটুথ ডিভাইস আছে কিনা তা কোনও সাইট খুঁজতে চাইলে আমাকে জিজ্ঞাসা করুন (সাজেস্ট করা হচ্ছে)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb index 33327883..c7dcf91 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bs.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Web lokacije moraju tražiti odobrenje za kreiranje 3D mape okruženja i praćenje položaja kamere (preporučeno)</translation> <translation id="2212565012507486665">Dozvoli kolačiće</translation> <translation id="2228071138934252756">Da omogućite aplikaciji <ph name="APP_NAME" /> pristup kameri, također uključite kameru u <ph name="BEGIN_LINK" />Postavkama Androida<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Predložena pretraživanja na osnovu vaše posljednje kartice</translation> <translation id="2241634353105152135">Samo ovaj put</translation> <translation id="2253414712144136228">Uklanjanje stavke <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">Pitaj kada web lokacija želi otkriti Bluetooth uređaje u blizini (preporučeno)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb index 92c698f..2112227 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_da.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Spørg, inden websites kan oprette et 3D-kort over dine omgivelser eller registrere kamerapositionen (anbefales)</translation> <translation id="2212565012507486665">Tillad cookies</translation> <translation id="2228071138934252756">Aktivér også dit kamera i <ph name="BEGIN_LINK" />Android-indstillingerne<ph name="END_LINK" /> for at give <ph name="APP_NAME" /> adgang til kameraet.</translation> +<translation id="2238944249568001759">Foreslåede søgninger baseret på din seneste fane</translation> <translation id="2241634353105152135">Kun én gang</translation> <translation id="2253414712144136228">Fjern <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">Spørg, når et website vil søge efter Bluetooth-enheder i nærheden (anbefalet)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb index e13e91ab..5ba3a1c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_de.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Nachfragen, bevor Websites erlaubt wird, eine 3D-Karte meiner Umgebung zu erstellen oder die Kameraposition zu verfolgen (empfohlen)</translation> <translation id="2212565012507486665">Cookies zulassen</translation> <translation id="2228071138934252756">Um <ph name="APP_NAME" /> Zugriff auf deine Kamera zu gewähren, muss die Kameraberechtigung auch in den <ph name="BEGIN_LINK" />Android-Einstellungen<ph name="END_LINK" /> aktiviert werden.</translation> +<translation id="2238944249568001759">Vorgeschlagene Suchanfragen basierend auf deinem letzten Tab</translation> <translation id="2241634353105152135">Nur einmal</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> entfernen</translation> <translation id="2289270750774289114">Nachfragen, wenn eine Website nach Bluetooth-Geräten in der Nähe suchen möchte (empfohlen)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb index f6748ae..df6e4179 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_el.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Να γίνεται ερώτηση προτού επιτραπεί σε ιστοτόπους η δημιουργία τρισδιάστατου χάρτη του περιβάλλοντα χώρου σας και η παρακολούθηση της θέσης της κάμερας (συνιστάται)</translation> <translation id="2212565012507486665">Αποδοχή cookie</translation> <translation id="2228071138934252756">Για να επιτρέψετε στην εφαρμογή <ph name="APP_NAME" /> να αποκτήσει πρόσβαση στην κάμερά σας, ενεργοποιήστε επίσης την κάμερα στις <ph name="BEGIN_LINK" />Ρυθμίσεις Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Προτεινόμενες αναζητήσεις βάσει της τελευταίας καρτέλας σας</translation> <translation id="2241634353105152135">Μόνο μία φορά</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Κατάργηση</translation> <translation id="2289270750774289114">Να γίνεται ερώτηση όταν ένας ιστότοπος επιθυμεί να εντοπίσει κοντινές συσκευες Bluetooth (συνιστάται)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb index 0d70da4..1da94b4 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">قبل از اینکه به سایتها اجازه داده شود نقشه سهبعدی از محیط ایجاد کنند یا موقعیت دوربین را ردیابی کنند سؤال شود (توصیه میشود)</translation> <translation id="2212565012507486665">مجاز کردن کوکی ها</translation> <translation id="2228071138934252756">برای اینکه به <ph name="APP_NAME" /> اجازه دهید به دوربین دسترسی پیدا کند، دوربین را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> نیز روشن کنید.</translation> +<translation id="2238944249568001759">جستجوهای پیشنهادی براساس آخرین برگه شما</translation> <translation id="2241634353105152135">فقط یک بار</translation> <translation id="2253414712144136228">برداشتن <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">وقتی سایتی میخواهد دستگاههای بلوتوث اطراف را پیدا کند، سؤال شود (توصیه میشود)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb index b737faa..a9d72b7a7 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hi.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">किसी साइट को आपके आस-पास की जगह का 3D मैप बनाने या कैमरे की स्थिति ट्रैक करने की अनुमति देने से पहले पूछें (सुझाया गया)</translation> <translation id="2212565012507486665">कुकी की अनुमति दें</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> को कैमरे का ऐक्सेस देने के लिए, <ph name="BEGIN_LINK" />Android की सेटिंग<ph name="END_LINK" /> में जाकर भी कैमरा चालू करें.</translation> +<translation id="2238944249568001759">आपके आखिरी टैब के आधार पर सुझाई गई खोजें</translation> <translation id="2241634353105152135">बस एक बार</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> हटाएं</translation> <translation id="2289270750774289114">जब कोई साइट आस-पास के ब्लूटूथ डिवाइस को खोजना चाहे, तो इसके लिए पूछें (सुझाया गया)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb index fc9b3c6..4a6cfbb 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_hu.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Kérdezzen rá, mielőtt engedélyezi a webhelyek számára 3D-s térkép létrehozását az Ön környezetéről, valamint a kamera pozíciójának követését (ajánlott)</translation> <translation id="2212565012507486665">Cookie-k engedélyezése</translation> <translation id="2228071138934252756">Ahhoz, hogy a(z) <ph name="APP_NAME" /> hozzáférhessen a kamerához, a kamerát az <ph name="BEGIN_LINK" />Android-beállítások<ph name="END_LINK" /> között is be kell kapcsolni.</translation> +<translation id="2238944249568001759">Javasolt keresések a legutóbbi lap alapján</translation> <translation id="2241634353105152135">Csak egyszer</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> eltávolítása</translation> <translation id="2289270750774289114">Kérdezzen rá, ha valamelyik webhely szeretné felfedezni a közeli Bluetooth-eszközöket (ajánlott)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb index 2b484e9..7bb2c305b 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Spyrja áður en vefsvæðum er leyft að búa til þrívíddarkort af umhverfinu eða rekja staðsetningu myndavélarinnar (ráðlagt)</translation> <translation id="2212565012507486665">Leyfa fótspor</translation> <translation id="2228071138934252756">Til að veita <ph name="APP_NAME" /> aðgang að myndavélinni þarftu einnig að kveikja á henni í <ph name="BEGIN_LINK" />stillingum Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Leitartillögur byggðar á síðasta flipa</translation> <translation id="2241634353105152135">Bara einu sinni</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Fjarlægja</translation> <translation id="2289270750774289114">Spyrja þegar vefsvæði vill finna nálæg Bluetooth-tæki (ráðlagt)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb index c861a894..be8f59a 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">សួរមុនពេលអនុញ្ញាតឱ្យគេហទំព័របង្កើតផែនទី 3D នៃមជ្ឈដ្ឋានជុំវិញរបស់អ្នក ឬតាមដានទីតាំងកាមេរ៉ា (បានណែនាំ)</translation> <translation id="2212565012507486665">អនុញ្ញាតខូគី</translation> <translation id="2228071138934252756">ដើម្បីអនុញ្ញាតឱ្យ <ph name="APP_NAME" /> ចូលប្រើកាមេរ៉ារបស់អ្នក អ្នកក៏ត្រូវបើកកាមេរ៉ានៅក្នុង<ph name="BEGIN_LINK" />ការកំណត់ Android<ph name="END_LINK" /> ផងដែរ។</translation> +<translation id="2238944249568001759">ការស្វែងរកដែលបានណែនាំផ្អែកលើផ្ទាំងចុងក្រោយរបស់អ្នក</translation> <translation id="2241634353105152135">ម្តងប៉ុណ្ណោះ</translation> <translation id="2253414712144136228">ដក <ph name="NAME_OF_LIST_ITEM" /> ចេញ</translation> <translation id="2289270750774289114">សួរនៅពេលគេហទំព័រចង់ស្វែងរកឧបករណ៍ប៊្លូធូសដែលនៅជិត (បានណែនាំ)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb index 9d88c9d..2f34c50e 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Klausti, ar svetainėms leidžiama kurti jūsų aplinkos 3D žemėlapį ir stebėti kameros padėtį (rekomenduojama)</translation> <translation id="2212565012507486665">Leisti slapukus</translation> <translation id="2228071138934252756">Norėdami leisti „<ph name="APP_NAME" />“ pasiekti jūsų kamerą, taip pat įjunkite ją <ph name="BEGIN_LINK" />„Android“ nustatymuose<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Siūlomos paieškos atsižvelgiant į paskutinį skirtuką</translation> <translation id="2241634353105152135">Tik vieną kartą</translation> <translation id="2253414712144136228">Pašalinti „<ph name="NAME_OF_LIST_ITEM" />“</translation> <translation id="2289270750774289114">Paklausti, kai svetainė nori atrasti netoliese esančius „Bluetooth“ įrenginius (rekomenduojama)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb index 98bb5621..741180b 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mk.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Прашувај пред да им дозволиш на сајтовите да создадат 3D-карта на опкружувањето или да ја следат позицијата на камерата (препорачано)</translation> <translation id="2212565012507486665">Дозволи колачиња</translation> <translation id="2228071138934252756">За да овозможите <ph name="APP_NAME" /> да пристапува до вашата камера, вклучете ја дозволата за камерата и во <ph name="BEGIN_LINK" />Поставки за Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Предложени пребарувања според вашата последна картичка</translation> <translation id="2241634353105152135">Само еднаш</translation> <translation id="2253414712144136228">Отстранете <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">Прашај кога некој сајт сака да открива уреди со Bluetooth во близина (се препорачува)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb index ec0cb5b..cc79f17f 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">നിങ്ങളുടെ ചുറ്റുപാടുകളുടെ 3D മാപ്പ് സൃഷ്ടിക്കുന്നതിനോ ക്യാമറയുടെ സ്ഥാനം ട്രാക്ക് ചെയ്യുന്നതിനോ സൈറ്റുകളെ അനുവദിക്കുന്നതിന് മുമ്പ് ചോദിക്കുക (ശുപാർശ ചെയ്യുന്നത്)</translation> <translation id="2212565012507486665">കുക്കികൾ അനുവദിക്കുക</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ആപ്പിനെ നിങ്ങളുടെ ക്യാമറ ആക്സസ് ചെയ്യാൻ അനുവദിക്കുന്നതിന്, <ph name="BEGIN_LINK" />Android ക്രമീകരണത്തിലും<ph name="END_LINK" /> ക്യാമറ ഓണാക്കുക.</translation> +<translation id="2238944249568001759">നിങ്ങളുടെ അവസാന ടാബ് അടിസ്ഥാനമാക്കി നിർദ്ദേശിക്കുന്ന തിരയലുകൾ</translation> <translation id="2241634353105152135">ഒരിക്കൽ മാത്രം</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> നീക്കം ചെയ്യുക</translation> <translation id="2289270750774289114">സമീപത്തുള്ള Bluetooth ഉപകരണങ്ങൾ കണ്ടെത്താൻ ഒരു സൈറ്റ് താൽപ്പര്യപ്പെടുമ്പോൾ ചോദിക്കുക (ശുപാർശചെയ്തത്)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb index fbe27d3f..5af9c5e 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mr.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">साइटना तुमच्या आसपासच्या परिसराचा 3D नकाशा तयार करू किंवा कॅमेर्याचे स्थान ट्रॅक करू देण्याआधी विचारा (शिफारस केलेले)</translation> <translation id="2212565012507486665">कुकींना अनुमती द्या</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> ला तुमचा कॅमेरा ॲक्सेस करू देण्यासाठी, <ph name="BEGIN_LINK" />Android सेटिंग्ज<ph name="END_LINK" /> मध्येदेखील कॅमेरा सुरू करा.</translation> +<translation id="2238944249568001759">तुमच्या मागील टॅबनुसार सुचवलेले शोध</translation> <translation id="2241634353105152135">फक्त एकदाच</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> काढून टाका</translation> <translation id="2289270750774289114">साइटला केव्हा जवळपासचे ब्लूटूथ डिव्हाइस शोधायचे आहे हे विचारा (शिफारस केलेले)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb index 961d686..a5316be8 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Tanya sebelum membenarkan tapak membuat peta 3D bagi persekitaran anda atau menjejaki kedudukan kamera (disyorkan)</translation> <translation id="2212565012507486665">Benarkan kuki</translation> <translation id="2228071138934252756">Untuk membolehkan <ph name="APP_NAME" /> mengakses kamera anda, hidupkan juga kamera dalam <ph name="BEGIN_LINK" />Tetapan Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Carian cadangan berdasarkan tab terakhir anda</translation> <translation id="2241634353105152135">Hanya sekali</translation> <translation id="2253414712144136228">Alih keluar <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">Tanya apabila tapak mahu mencari peranti Bluetooth berdekatan (disyorkan)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb index 4f368dbf..8e80177 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-BR.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Perguntar antes de permitir que sites criem um mapa 3D do ambiente a sua volta ou acompanhem a posição da câmera (recomendado)</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para permitir que o app <ph name="APP_NAME" /> acesse sua câmera, ative-a também nas <ph name="BEGIN_LINK" />configurações do Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Pesquisas sugeridas com base na sua última guia</translation> <translation id="2241634353105152135">Apenas uma vez</translation> <translation id="2253414712144136228">Remover <ph name="NAME_OF_LIST_ITEM" /></translation> <translation id="2289270750774289114">Perguntar quando um site quer descobrir dispositivos Bluetooth nas proximidades (recomendado)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb index 1899435..7b12ca01 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pt-PT.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Perguntar antes de permitir que os sites criem um mapa 3D do ambiente à sua volta ou monitorizem a posição da câmara (recomendado)</translation> <translation id="2212565012507486665">Permitir cookies</translation> <translation id="2228071138934252756">Para permitir que a app <ph name="APP_NAME" /> aceda à câmara, ative também a câmara nas <ph name="BEGIN_LINK" />Definições do Android<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Pesquisas sugeridas com base no último separador</translation> <translation id="2241634353105152135">Apenas uma vez</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Remover</translation> <translation id="2289270750774289114">Perguntar quando um site pretende detetar dispositivos Bluetooth próximos (recomendado)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb index 44b8dbf..73bf09a 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_si.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">වෙබ් අඩවිවලට ඔබේ වටපිටාවේ ත්රිමාන සිතියමක් සෑදීමට හෝ කැමරා ස්ථානය හඹා යෑමට ඉඩ දීමට පෙර අසන්න (නිර්දේශිතයි)</translation> <translation id="2212565012507486665">කුකීවලට ඉඩ දෙන්න</translation> <translation id="2228071138934252756"><ph name="APP_NAME" /> හට ඔබේ කැමරාවට ප්රවේශ වීමට ඉඩ දීමට, <ph name="BEGIN_LINK" />Android සැකසීම්<ph name="END_LINK" /> තුළද කැමරාව ක්රියාත්මක කරන්න.</translation> +<translation id="2238944249568001759">ඔබගේ අවසන් ටැබය මත පදනම්ව යෝජිත සෙවීම්</translation> <translation id="2241634353105152135">හුදෙක් එක් වරක්</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> ඉවත් කරන්න</translation> <translation id="2289270750774289114">වෙබ් අඩවියකට අවට බ්ලූටූත් උපාංග සොයා ගැනීමට අවශ්ය වූ විට අසන්න (නිර්දේශිතයි)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb index da28a02..fb9342bd 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr-Latn.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Pre nego što dozvolite sajtovima da prave 3D mapu okruženja ili prate položaj kamere prikazuje se upit (preporučeno)</translation> <translation id="2212565012507486665">Dozvoli kolačiće</translation> <translation id="2228071138934252756">Da biste dozvolili da <ph name="APP_NAME" /> pristupa kameri, uključite kameru i u <ph name="BEGIN_LINK" />Android podešavanjima<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Predložene pretrage na osnovu vaše poslednje kartice</translation> <translation id="2241634353105152135">Samo jednom</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Uklonite</translation> <translation id="2289270750774289114">Pitaj kada sajt želi da otkrije Bluetooth uređaje u blizini (preporučeno)</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb index a57e42e..b8674faf 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sr.xtb
@@ -49,6 +49,7 @@ <translation id="2182457891543959921">Пре него што дозволите сајтовима да праве 3D мапу окружења или прате положај камере приказује се упит (препоручено)</translation> <translation id="2212565012507486665">Дозволи колачиће</translation> <translation id="2228071138934252756">Да бисте дозволили да <ph name="APP_NAME" /> приступа камери, укључите камеру и у <ph name="BEGIN_LINK" />Android подешавањима<ph name="END_LINK" />.</translation> +<translation id="2238944249568001759">Предложене претраге на основу ваше последње картице</translation> <translation id="2241634353105152135">Само једном</translation> <translation id="2253414712144136228"><ph name="NAME_OF_LIST_ITEM" /> Уклоните</translation> <translation id="2289270750774289114">Питај када сајт жели да открије Bluetooth уређаје у близини (препоручено)</translation>
diff --git a/components/crash/core/app/BUILD.gn b/components/crash/core/app/BUILD.gn index 7a5e524..937b5af3 100644 --- a/components/crash/core/app/BUILD.gn +++ b/components/crash/core/app/BUILD.gn
@@ -56,6 +56,7 @@ sources += [ "breakpad_linux.cc", "breakpad_linux.h", + "breakpad_linux_impl.cc", "breakpad_linux_impl.h", "crashpad_linux.cc", ]
diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc index 3c28019..6aa864d 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc
@@ -706,7 +706,7 @@ DCHECK(!(upload && minidump.IsFD())); - BreakpadInfo info = {0}; + BreakpadInfo info; info.filename = minidump.path(); info.fd = minidump.fd(); #if defined(ADDRESS_SANITIZER)
diff --git a/components/crash/core/app/breakpad_linux_impl.cc b/components/crash/core/app/breakpad_linux_impl.cc new file mode 100644 index 0000000..2f138d5 --- /dev/null +++ b/components/crash/core/app/breakpad_linux_impl.cc
@@ -0,0 +1,11 @@ +// 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. + +#include "components/crash/core/app/breakpad_linux_impl.h" + +namespace breakpad { + +BreakpadInfo::BreakpadInfo() {} + +} // namespace breakpad
diff --git a/components/crash/core/app/breakpad_linux_impl.h b/components/crash/core/app/breakpad_linux_impl.h index ee75a02..83a9e2b 100644 --- a/components/crash/core/app/breakpad_linux_impl.h +++ b/components/crash/core/app/breakpad_linux_impl.h
@@ -12,6 +12,7 @@ #include <stdint.h> #include <sys/types.h> +#include "base/memory/raw_ptr.h" #include "components/crash/core/app/breakpad_linux.h" #include "components/crash/core/common/crash_key_internal.h" @@ -38,7 +39,9 @@ // The minidump information can either be contained in a file descriptor (fd) or // in a file (whose path is in filename). struct BreakpadInfo { - int fd; // File descriptor to the Breakpad dump data. + BreakpadInfo(); + + int fd = 0; // File descriptor to the Breakpad dump data. const char* filename; // Path to the Breakpad dump data. #if defined(ADDRESS_SANITIZER) const char* log_filename; // Path to the ASan log file. @@ -53,7 +56,7 @@ uint64_t process_start_time; // Uptime of the crashing process. size_t oom_size; // Amount of memory requested if OOM. uint64_t pid; // PID where applicable. - crash_reporter::internal::TransitionalCrashKeyStorage* crash_keys; + raw_ptr<crash_reporter::internal::TransitionalCrashKeyStorage> crash_keys; }; extern void HandleCrashDump(const BreakpadInfo& info);
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java index fc0dcef..0440c1c1 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -392,9 +392,11 @@ urlRequestBuilder.bindToNetwork(defaultNetwork); UrlRequest urlRequest = urlRequestBuilder.build(); - assertFalse(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertFalse( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); urlRequest.start(); - assertTrue(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertTrue( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); // Resume callback execution. callback.waitForNextStep(); @@ -406,7 +408,8 @@ // The default network should still be active, hence the underlying network-bound context // should still be there. - assertTrue(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertTrue( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); // Fake disconnect event for the default network, this should destroy the underlying // network-bound context. @@ -419,7 +422,8 @@ }); CronetLibraryLoader.postToInitThread(task); task.get(); - assertFalse(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertFalse( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); testFramework.mCronetEngine.shutdown(); } @@ -455,13 +459,16 @@ urlRequestBuilder.bindToNetwork(defaultNetwork); UrlRequest urlRequest = urlRequestBuilder.build(); - assertFalse(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertFalse( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); urlRequest.start(); - assertTrue(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertTrue( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); callback.waitForNextStep(); assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); - assertTrue(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertTrue( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); // Cronet registers for NCN notifications on the init thread (see // CronetLibraryLoader#ensureInitializedOnInitThread), hence we need to trigger fake // notifications from there. @@ -479,7 +486,8 @@ // mError should be null due to urlRequest.cancel(). assertNull(callback.mError); // urlRequest.cancel(); should destroy the underlying network bound context. - assertFalse(doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); + assertFalse( + ApiHelper.doesContextExistForNetwork(testFramework.mCronetEngine, defaultNetwork)); testFramework.mCronetEngine.shutdown(); } @@ -1543,16 +1551,18 @@ /** * @returns the thread priority of {@code engine}'s network thread. */ - private boolean doesContextExistForNetwork(CronetEngine engine, Network network) - throws Exception { - FutureTask<Boolean> task = new FutureTask<Boolean>(new Callable<Boolean>() { - @Override - public Boolean call() { - return CronetTestUtil.doesURLRequestContextExistForTesting(engine, network); - } - }); - postToNetworkThread(engine, task); - return task.get(); + private static class ApiHelper { + public static boolean doesContextExistForNetwork(CronetEngine engine, Network network) + throws Exception { + FutureTask<Boolean> task = new FutureTask<Boolean>(new Callable<Boolean>() { + @Override + public Boolean call() { + return CronetTestUtil.doesURLRequestContextExistForTesting(engine, network); + } + }); + postToNetworkThread(engine, task); + return task.get(); + } } /**
diff --git a/components/dbus/menu/menu.h b/components/dbus/menu/menu.h index 402a822..ddb50aa 100644 --- a/components/dbus/menu/menu.h +++ b/components/dbus/menu/menu.h
@@ -13,6 +13,7 @@ #include "base/callback_forward.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/dbus/menu/menu_property_list.h" #include "components/dbus/properties/types.h" @@ -74,10 +75,10 @@ // The MenuModel corresponding to this MenuItem, or null if this MenuItem is // not a submenu. This can happen for leaf items or an empty root item. - ui::MenuModel* const menu; + const raw_ptr<ui::MenuModel> menu; // |containing_menu| will be null for the root item. If it's null, then // |containing_menu_index| is meaningless. - ui::MenuModel* const containing_menu; + const raw_ptr<ui::MenuModel> containing_menu; const int containing_menu_index; }; @@ -95,7 +96,7 @@ dbus::MessageReader& reader() { return reader_; } private: - dbus::MethodCall* method_call_; + raw_ptr<dbus::MethodCall> method_call_; dbus::ExportedObject::ResponseSender response_sender_; // |reader_| is always needed for all methods on this interface, so it's not @@ -153,7 +154,7 @@ void SendLayoutChangedSignal(int32_t id); - dbus::ExportedObject* menu_ = nullptr; + raw_ptr<dbus::ExportedObject> menu_ = nullptr; base::RepeatingCallback<void(bool)> barrier_;
diff --git a/components/dbus/properties/dbus_properties.h b/components/dbus/properties/dbus_properties.h index 509d3956c..c0b9a4c6 100644 --- a/components/dbus/properties/dbus_properties.h +++ b/components/dbus/properties/dbus_properties.h
@@ -7,6 +7,7 @@ #include "base/callback_forward.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/dbus/properties/types.h" #include "dbus/bus.h" @@ -71,7 +72,7 @@ bool initialized_ = false; - dbus::ExportedObject* exported_object_ = nullptr; + raw_ptr<dbus::ExportedObject> exported_object_ = nullptr; base::RepeatingCallback<void(bool)> barrier_;
diff --git a/components/dom_distiller/standalone/content_extractor_browsertest.cc b/components/dom_distiller/standalone/content_extractor_browsertest.cc index 116fc6f6..b4d176c 100644 --- a/components/dom_distiller/standalone/content_extractor_browsertest.cc +++ b/components/dom_distiller/standalone/content_extractor_browsertest.cc
@@ -14,6 +14,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/path_service.h" #include "base/run_loop.h" @@ -300,7 +301,7 @@ FROM_HERE, std::move(finished_callback_)); } - const DistilledArticleProto* article_proto_; + raw_ptr<const DistilledArticleProto> article_proto_; std::unique_ptr<ViewerHandle> viewer_handle_; GURL url_; base::OnceClosure finished_callback_;
diff --git a/components/embedder_support/android/util/android_stream_reader_url_loader.cc b/components/embedder_support/android/util/android_stream_reader_url_loader.cc index 2656856e..f6f2bb1 100644 --- a/components/embedder_support/android/util/android_stream_reader_url_loader.cc +++ b/components/embedder_support/android/util/android_stream_reader_url_loader.cc
@@ -34,6 +34,7 @@ const char kHTTPOkText[] = "OK"; const char kHTTPNotFoundText[] = "Not Found"; +const int kMaxBytesToReadWhenAvailableUnknown = 32768; } // namespace @@ -86,6 +87,24 @@ } int ReadRawData(net::IOBuffer* buffer, int buffer_size) { + if (base::FeatureList::IsEnabled( + network::features::kOptimizeNetworkBuffers)) { + int available = 0; + // Only use `available` if the app has an estimate, otherwise it'll return + // 0. In that case we still want to do a blocking read until there's data + // or EOF. + if (input_stream_->BytesAvailable(&available) && available > 0) { + // Make sure a bad app doesn't lead to reading past the buffer. + buffer_size = std::min(available, buffer_size); + } else { + // `buffer_size' could be large since it comes from the size of the data + // pipe, but we don't want to synchronously wait for too many bytes in + // case they're coming from the network. + buffer_size = + std::min(kMaxBytesToReadWhenAvailableUnknown, buffer_size); + } + } + return input_stream_reader_->ReadRawData(buffer, buffer_size); }
diff --git a/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc b/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc index 1503b84..0e69f40 100644 --- a/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc +++ b/components/heap_profiling/in_process/heap_profiler_controller_unittest.cc
@@ -314,7 +314,19 @@ return os; } -constexpr FeatureTestParams kAllFeatureConfigs[] = { +class HeapProfilerControllerFeatureTest + : public HeapProfilerControllerTest, + public ::testing::WithParamInterface<FeatureTestParams> { + public: + HeapProfilerControllerFeatureTest() + : HeapProfilerControllerTest(GetParam().feature_enabled, + GetParam().supported_processes, + GetParam().stable.probability, + GetParam().nonstable.probability) {} +}; + +// Test the feature on various channels. +constexpr FeatureTestParams kChannelConfigs[] = { // Disabled. { .feature_enabled = false, @@ -345,53 +357,15 @@ .stable = {.probability = 0.0, .expect_browser_sample = false}, .nonstable = {.probability = 1.0, .expect_browser_sample = true}, }, - // Enabled in parent process only. - { - .supported_processes = "browser", - .stable = {.expect_browser_sample = true, .expect_child_sample = false}, - .nonstable = {.expect_browser_sample = true, - .expect_child_sample = false}, - }, - // Enabled in child process only. - { - .supported_processes = "utility", - .stable = {.expect_browser_sample = false, .expect_child_sample = true}, - .nonstable = {.expect_browser_sample = false, - .expect_child_sample = true}, - }, - // Enabled in parent and child processes. - { - .supported_processes = "browser;utility", - .stable = {.expect_browser_sample = true, .expect_child_sample = true}, - .nonstable = {.expect_browser_sample = true, - .expect_child_sample = true}, - }, - // Setting an unsupported process type can never work. - { - .supported_processes = "unknown", - .stable = {.expect_browser_sample = false, - .expect_child_sample = false}, - .nonstable = {.expect_browser_sample = false, - .expect_child_sample = false}, - }, }; -class HeapProfilerControllerFeatureTest - : public HeapProfilerControllerTest, - public ::testing::WithParamInterface<FeatureTestParams> { - public: - HeapProfilerControllerFeatureTest() - : HeapProfilerControllerTest(GetParam().feature_enabled, - GetParam().supported_processes, - GetParam().stable.probability, - GetParam().nonstable.probability) {} -}; +using HeapProfilerControllerChannelTest = HeapProfilerControllerFeatureTest; INSTANTIATE_TEST_SUITE_P(All, - HeapProfilerControllerFeatureTest, - ::testing::ValuesIn(kAllFeatureConfigs)); + HeapProfilerControllerChannelTest, + ::testing::ValuesIn(kChannelConfigs)); -TEST_P(HeapProfilerControllerFeatureTest, StableChannel) { +TEST_P(HeapProfilerControllerChannelTest, StableChannel) { StartHeapProfiling( version_info::Channel::STABLE, ProcessType::kBrowser, base::BindRepeating(&HeapProfilerControllerTest::RecordSampleReceived, @@ -416,7 +390,7 @@ #else #define MAYBE_CanaryChannel CanaryChannel #endif -TEST_P(HeapProfilerControllerFeatureTest, MAYBE_CanaryChannel) { +TEST_P(HeapProfilerControllerChannelTest, MAYBE_CanaryChannel) { StartHeapProfiling( version_info::Channel::CANARY, ProcessType::kBrowser, base::BindRepeating(&HeapProfilerControllerTest::RecordSampleReceived, @@ -435,7 +409,57 @@ EXPECT_EQ(sample_received_, GetParam().nonstable.expect_browser_sample); } -TEST_P(HeapProfilerControllerFeatureTest, ChildProcess) { +// Test the feature in various processes. +constexpr FeatureTestParams kProcessConfigs[] = { + // Enabled in parent process only. + { + .supported_processes = "browser", + .stable = {.expect_browser_sample = true, .expect_child_sample = false}, + .nonstable = {.expect_browser_sample = true, + .expect_child_sample = false}, + }, + // Enabled in child process only. + { + .supported_processes = "utility", + .stable = {.expect_browser_sample = false, .expect_child_sample = true}, + .nonstable = {.expect_browser_sample = false, + .expect_child_sample = true}, + }, + // Enabled in parent and child processes. + { + .supported_processes = "browser;utility", + .stable = {.expect_browser_sample = true, .expect_child_sample = true}, + .nonstable = {.expect_browser_sample = true, + .expect_child_sample = true}, + }, +}; + +using HeapProfilerControllerProcessTest = HeapProfilerControllerFeatureTest; + +INSTANTIATE_TEST_SUITE_P(All, + HeapProfilerControllerProcessTest, + ::testing::ValuesIn(kProcessConfigs)); + +TEST_P(HeapProfilerControllerProcessTest, BrowserProcess) { + StartHeapProfiling( + version_info::Channel::STABLE, ProcessType::kBrowser, + base::BindRepeating(&HeapProfilerControllerTest::RecordSampleReceived, + base::Unretained(this))); + EXPECT_EQ(HeapProfilerController::GetProfilingEnabled(), + GetParam().stable.expect_browser_sample + ? HeapProfilerController::ProfilingEnabled::kEnabled + : HeapProfilerController::ProfilingEnabled::kDisabled); + histogram_tester_.ExpectUniqueSample( + "HeapProfiling.InProcess.Enabled.Browser", + GetParam().stable.expect_browser_sample, 1); + histogram_tester_.ExpectUniqueSample("HeapProfiling.InProcess.Enabled", + GetParam().stable.expect_browser_sample, + 1); + AddOneSampleAndWait(); + EXPECT_EQ(sample_received_, GetParam().stable.expect_browser_sample); +} + +TEST_P(HeapProfilerControllerProcessTest, ChildProcess) { StartHeapProfiling( version_info::Channel::STABLE, ProcessType::kUtility, base::BindRepeating(&HeapProfilerControllerTest::RecordSampleReceived, @@ -454,21 +478,38 @@ EXPECT_EQ(sample_received_, GetParam().stable.expect_child_sample); } -TEST_P(HeapProfilerControllerFeatureTest, UnhandledProcess) { +class HeapProfilerControllerUnknownProcessTest + : public HeapProfilerControllerTest { + protected: + HeapProfilerControllerUnknownProcessTest() + : HeapProfilerControllerTest( + /*feature_enabled=*/true, + /*supported_processes=*/"browser;unrecognized-process-string") {} +}; + +TEST_F(HeapProfilerControllerUnknownProcessTest, UnknownParamString) { + // Unrecognized string in `supported_processes` should safely be ignored. + StartHeapProfiling(version_info::Channel::STABLE, ProcessType::kBrowser, + base::DoNothing()); + EXPECT_EQ(HeapProfilerController::GetProfilingEnabled(), + HeapProfilerController::ProfilingEnabled::kEnabled); + histogram_tester_.ExpectUniqueSample( + "HeapProfiling.InProcess.Enabled.Browser", true, 1); + histogram_tester_.ExpectUniqueSample("HeapProfiling.InProcess.Enabled", true, + 1); +} + +TEST_F(HeapProfilerControllerUnknownProcessTest, UnhandledProcess) { // Starting the heap profiler in an unhandled process type should safely do // nothing. - StartHeapProfiling( - version_info::Channel::STABLE, ProcessType::kUnknown, - base::BindRepeating(&HeapProfilerControllerTest::RecordSampleReceived, - base::Unretained(this))); + StartHeapProfiling(version_info::Channel::STABLE, ProcessType::kUnknown, + base::DoNothing()); EXPECT_EQ(HeapProfilerController::GetProfilingEnabled(), HeapProfilerController::ProfilingEnabled::kDisabled); // The Enabled summary histogram should not be logged for unsupported // processes, because they're not included in the per-process histograms that // are aggregated into it. histogram_tester_.ExpectTotalCount("HeapProfiling.InProcess.Enabled", 0); - AddOneSampleAndWait(); - EXPECT_FALSE(sample_received_); } } // namespace
diff --git a/components/history/core/browser/sync/typed_url_sync_bridge.cc b/components/history/core/browser/sync/typed_url_sync_bridge.cc index 4846897..3dfc7b74b 100644 --- a/components/history/core/browser/sync/typed_url_sync_bridge.cc +++ b/components/history/core/browser/sync/typed_url_sync_bridge.cc
@@ -56,8 +56,7 @@ }; static bool VisitsAreSorted(const std::vector<VisitRow>& visits) { - return base::ranges::is_sorted( - visits, /*comp=*/{}, [](const VisitRow& row) { return row.visit_time; }); + return base::ranges::is_sorted(visits, /*comp=*/{}, &VisitRow::visit_time); } std::string GetStorageKeyFromURLRow(const URLRow& row) {
diff --git a/components/history_clusters/core/BUILD.gn b/components/history_clusters/core/BUILD.gn index 45d7b6a..680aff2 100644 --- a/components/history_clusters/core/BUILD.gn +++ b/components/history_clusters/core/BUILD.gn
@@ -66,6 +66,7 @@ "//components/optimization_guide/core", "//components/optimization_guide/core:entities", "//components/pref_registry", + "//components/prefs", "//components/query_parser", "//components/search_engines", "//components/site_engagement/core",
diff --git a/components/history_clusters/core/DEPS b/components/history_clusters/core/DEPS index aa5111e..d6aec55 100644 --- a/components/history_clusters/core/DEPS +++ b/components/history_clusters/core/DEPS
@@ -3,6 +3,7 @@ "+components/keyed_service/core", "+components/optimization_guide/core", "+components/pref_registry", + "+components/prefs", "+components/query_parser", "+components/site_engagement/core", "+components/strings/grit/components_strings.h",
diff --git a/components/history_clusters/core/config.cc b/components/history_clusters/core/config.cc index b7895a7..0c269f5 100644 --- a/components/history_clusters/core/config.cc +++ b/components/history_clusters/core/config.cc
@@ -12,7 +12,10 @@ #include "base/strings/string_split.h" #include "build/build_config.h" #include "components/history_clusters/core/features.h" +#include "components/history_clusters/core/history_clusters_prefs.h" +#include "components/history_clusters/core/history_clusters_service.h" #include "components/history_clusters/core/on_device_clustering_features.h" +#include "components/prefs/pref_service.h" #include "ui/base/l10n/l10n_util.h" namespace history_clusters { @@ -89,6 +92,9 @@ internal::kOmniboxAction, "omnibox_action_with_pedals", omnibox_action_with_pedals); + omnibox_history_cluster_provider = + base::FeatureList::IsEnabled(internal::kOmniboxHistoryClusterProvider); + keyword_filter_on_entity_aliases = base::GetFieldTrialParamByFeatureAsBool( history_clusters::features::kOnDeviceClusteringKeywordFiltering, "keyword_filter_on_entity_aliases", keyword_filter_on_entity_aliases); @@ -313,6 +319,20 @@ base::Contains(allowlist, l10n_util::GetLanguage(application_locale)); } +bool IsJourneysEnabledInOmnibox(HistoryClustersService* service, + PrefService* prefs) { + if (!service) + return false; + + if (!service->IsJourneysEnabled()) + return false; + + if (!prefs->GetBoolean(history_clusters::prefs::kVisible)) + return false; + + return true; +} + const Config& GetConfig() { return GetConfigInternal(); }
diff --git a/components/history_clusters/core/config.h b/components/history_clusters/core/config.h index e88be63..14d6acd4 100644 --- a/components/history_clusters/core/config.h +++ b/components/history_clusters/core/config.h
@@ -9,8 +9,12 @@ #include "base/time/time.h" +class PrefService; + namespace history_clusters { +class HistoryClustersService; + // The default configuration. Always use |GetConfig()| to get the current // configuration. // @@ -98,6 +102,12 @@ // contain pedals. Does nothing if `omnibox_action` is disabled. bool omnibox_action_with_pedals = false; + // Enables `HistoryClusterProvider` to surface Journeys as a suggestion row + // instead of an action chip. Enabling this won't actually disable + // `omnibox_action_with_pedals`, but for user experiments, the intent is to + // only have 1 enabled. + bool omnibox_history_cluster_provider = false; + // If enabled, adds the keywords of aliases for detected entity names to a // cluster. bool keyword_filter_on_entity_aliases = false; @@ -278,6 +288,11 @@ bool IsApplicationLocaleSupportedByJourneys( const std::string& application_locale); +// Checks some prerequisites for history cluster omnibox suggestions and +// actions. +bool IsJourneysEnabledInOmnibox(HistoryClustersService* service, + PrefService* prefs); + // Gets the current configuration. OverrideWithFinch() must have been called // before GetConfig() is called. const Config& GetConfig();
diff --git a/components/history_clusters/core/features.cc b/components/history_clusters/core/features.cc index 7018296b..887837d 100644 --- a/components/history_clusters/core/features.cc +++ b/components/history_clusters/core/features.cc
@@ -35,6 +35,9 @@ const base::Feature kOmniboxAction{"JourneysOmniboxAction", enabled_by_default_desktop_only}; +const base::Feature kOmniboxHistoryClusterProvider{ + "JourneysOmniboxHistoryClusterProvider", base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kNonUserVisibleDebug{"JourneysNonUserVisibleDebug", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/history_clusters/core/features.h b/components/history_clusters/core/features.h index 3617b09d..101fb0a5 100644 --- a/components/history_clusters/core/features.h +++ b/components/history_clusters/core/features.h
@@ -26,6 +26,12 @@ // for this to take effect. extern const base::Feature kOmniboxAction; +// Enables the `HistoryClusterProvider` to surface Journeys as a suggestion row +// instead of an action chip. Enabling this won't actually disable +// `kOmniboxAction` but for user experiments, the intent is to only have 1 +// enabled. `kJourneys` must also be enabled for this to take effect. +extern const base::Feature kOmniboxHistoryClusterProvider; + // Enables debug info in non-user-visible surfaces, like Chrome Inspector. // Does nothing if `kJourneys` is disabled. extern const base::Feature kNonUserVisibleDebug;
diff --git a/components/history_clusters/core/history_clusters_prefs.h b/components/history_clusters/core/history_clusters_prefs.h index 714ae90..27f1c76 100644 --- a/components/history_clusters/core/history_clusters_prefs.h +++ b/components/history_clusters/core/history_clusters_prefs.h
@@ -9,16 +9,12 @@ class PrefRegistrySyncable; } // namespace user_prefs -namespace history_clusters { - -namespace prefs { +namespace history_clusters::prefs { extern const char kVisible[]; void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); -} // namespace prefs - -} // namespace history_clusters +} // namespace history_clusters::prefs #endif // COMPONENTS_HISTORY_CLUSTERS_CORE_HISTORY_CLUSTERS_PREFS_H_
diff --git a/components/nacl/browser/nacl_file_host_unittest.cc b/components/nacl/browser/nacl_file_host_unittest.cc index c7dc060..55697a1 100644 --- a/components/nacl/browser/nacl_file_host_unittest.cc +++ b/components/nacl/browser/nacl_file_host_unittest.cc
@@ -7,6 +7,7 @@ #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/test/scoped_path_override.h" #include "build/build_config.h" #include "components/nacl/browser/nacl_browser.h" @@ -44,7 +45,8 @@ void SetUp() override { nacl_browser_delegate_ = new FileHostTestNaClBrowserDelegate; - nacl::NaClBrowser::SetDelegate(base::WrapUnique(nacl_browser_delegate_)); + nacl::NaClBrowser::SetDelegate( + base::WrapUnique(nacl_browser_delegate_.get())); } void TearDown() override { @@ -57,7 +59,7 @@ } private: - FileHostTestNaClBrowserDelegate* nacl_browser_delegate_; + raw_ptr<FileHostTestNaClBrowserDelegate> nacl_browser_delegate_; }; NaClFileHostTest::NaClFileHostTest() : nacl_browser_delegate_(nullptr) {}
diff --git a/components/nacl/browser/nacl_process_host.h b/components/nacl/browser/nacl_process_host.h index 15c8150b..54b41f86 100644 --- a/components/nacl/browser/nacl_process_host.h +++ b/components/nacl/browser/nacl_process_host.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_NACL_BROWSER_NACL_PROCESS_HOST_H_ #define COMPONENTS_NACL_BROWSER_NACL_PROCESS_HOST_H_ +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include <stddef.h> @@ -216,7 +217,7 @@ // The reply message to send. We must always send this message when the // sub-process either succeeds or fails to unblock the renderer waiting for // the reply. NULL when there is no reply to send. - IPC::Message* reply_msg_; + raw_ptr<IPC::Message> reply_msg_; #if BUILDFLAG(IS_WIN) bool debug_exception_handler_requested_; std::unique_ptr<IPC::Message> attach_debug_exception_handler_reply_msg_;
diff --git a/components/nacl/browser/pnacl_host.cc b/components/nacl/browser/pnacl_host.cc index 0b6ae64..5b9388e 100644 --- a/components/nacl/browser/pnacl_host.cc +++ b/components/nacl/browser/pnacl_host.cc
@@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_math.h" #include "components/nacl/browser/nacl_browser.h" #include "components/nacl/browser/pnacl_translation_cache.h" @@ -49,7 +50,7 @@ private: std::unique_ptr<base::File> file_; - PnaclHost* host_; + raw_ptr<PnaclHost> host_; }; FileProxy::FileProxy(std::unique_ptr<base::File> file, PnaclHost* host)
diff --git a/components/nacl/browser/pnacl_host_unittest.cc b/components/nacl/browser/pnacl_host_unittest.cc index 0e658ff..1f2dfc20 100644 --- a/components/nacl/browser/pnacl_host_unittest.cc +++ b/components/nacl/browser/pnacl_host_unittest.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/files/scoped_temp_dir.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "build/build_config.h" #include "components/nacl/browser/pnacl_translation_cache.h" @@ -105,7 +106,7 @@ } protected: - PnaclHost* host_; + raw_ptr<PnaclHost> host_; int temp_callback_count_; int write_callback_count_; content::BrowserTaskEnvironment task_environment_;
diff --git a/components/nacl/browser/pnacl_translation_cache.cc b/components/nacl/browser/pnacl_translation_cache.cc index 0016e73..a772808 100644 --- a/components/nacl/browser/pnacl_translation_cache.cc +++ b/components/nacl/browser/pnacl_translation_cache.cc
@@ -13,6 +13,7 @@ #include "base/callback.h" #include "base/files/file_path.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/threading/thread_checker.h" #include "components/nacl/common/pnacl_types.h" @@ -108,7 +109,7 @@ base::WeakPtr<PnaclTranslationCache> cache_; std::string key_; - disk_cache::Entry* entry_; + raw_ptr<disk_cache::Entry> entry_; CacheStep step_; bool is_read_; GetNexeCallback read_callback_;
diff --git a/components/nacl/loader/nacl_ipc_adapter.cc b/components/nacl/loader/nacl_ipc_adapter.cc index cf074df..28deed64 100644 --- a/components/nacl/loader/nacl_ipc_adapter.cc +++ b/components/nacl/loader/nacl_ipc_adapter.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/location.h" #include "base/memory/platform_shared_memory_region.h" +#include "base/memory/raw_ptr.h" #include "base/task/task_runner_util.h" #include "base/tuple.h" #include "build/build_config.h" @@ -236,7 +237,7 @@ NaClDesc* desc() { return desc_; } private: - NaClDesc* desc_; + raw_ptr<NaClDesc> desc_; }; std::unique_ptr<NaClDescWrapper> MakeShmRegionNaClDesc(
diff --git a/components/nacl/loader/nacl_ipc_adapter_unittest.cc b/components/nacl/loader/nacl_ipc_adapter_unittest.cc index f93d04e..68d5d1e 100644 --- a/components/nacl/loader/nacl_ipc_adapter_unittest.cc +++ b/components/nacl/loader/nacl_ipc_adapter_unittest.cc
@@ -10,6 +10,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "base/threading/platform_thread.h" @@ -70,7 +71,7 @@ // // In real life the adapter needs to take ownership so the channel can be // destroyed on the right thread. - IPC::TestSink* sink_; + raw_ptr<IPC::TestSink> sink_; }; } // namespace
diff --git a/components/nacl/loader/nacl_listener.cc b/components/nacl/loader/nacl_listener.cc index f976f24..7bfbad6 100644 --- a/components/nacl/loader/nacl_listener.cc +++ b/components/nacl/loader/nacl_listener.cc
@@ -13,6 +13,7 @@ #include <utility> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #if BUILDFLAG(IS_POSIX) @@ -150,7 +151,7 @@ private: // The listener never dies, otherwise this might be a dangling reference. - NaClListener* listener_; + raw_ptr<NaClListener> listener_; }; NaClListener::NaClListener()
diff --git a/components/nacl/loader/nacl_validation_query.h b/components/nacl/loader/nacl_validation_query.h index a864d7f..727f43b 100644 --- a/components/nacl/loader/nacl_validation_query.h +++ b/components/nacl/loader/nacl_validation_query.h
@@ -9,6 +9,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" #include "crypto/hmac.h" @@ -25,7 +26,7 @@ NaClValidationQuery* CreateQuery(); private: - NaClValidationDB* db_; + raw_ptr<NaClValidationDB> db_; // A key used by HMAC that is specific to this installation of Chrome. std::string profile_key_; @@ -73,7 +74,7 @@ QueryState state_; crypto::HMAC hasher_; - NaClValidationDB* db_; + raw_ptr<NaClValidationDB> db_; // The size of buffer_ is a somewhat arbitrary choice. It needs to be at // at least kDigestLength * 2, but it can be arbitrarily large. In practice
diff --git a/components/omnibox/browser/BUILD.gn b/components/omnibox/browser/BUILD.gn index 3283e5ac..3ba2f56 100644 --- a/components/omnibox/browser/BUILD.gn +++ b/components/omnibox/browser/BUILD.gn
@@ -293,6 +293,8 @@ sources += [ "actions/history_clusters_action.cc", "actions/history_clusters_action.h", + "history_cluster_provider.cc", + "history_cluster_provider.h", ] deps += [ "//components/history_clusters/core", @@ -676,7 +678,10 @@ } if (!is_ios) { - sources += [ "actions/history_clusters_action_unittest.cc" ] + sources += [ + "actions/history_clusters_action_unittest.cc", + "history_cluster_provider_unittest.cc", + ] deps += [ "//components/history_clusters/core:test_support" ] } }
diff --git a/components/omnibox/browser/actions/history_clusters_action.cc b/components/omnibox/browser/actions/history_clusters_action.cc index 1e3a6cf5..9c15f78 100644 --- a/components/omnibox/browser/actions/history_clusters_action.cc +++ b/components/omnibox/browser/actions/history_clusters_action.cc
@@ -13,7 +13,6 @@ #include "build/build_config.h" #include "components/history_clusters/core/config.h" #include "components/history_clusters/core/features.h" -#include "components/history_clusters/core/history_clusters_prefs.h" #include "components/history_clusters/core/history_clusters_service.h" #include "components/history_clusters/core/history_clusters_util.h" #include "components/omnibox/browser/actions/omnibox_action.h" @@ -177,18 +176,12 @@ // This is to prevent binary size increase for no reason. return; #else - if (!service) + + if (!IsJourneysEnabledInOmnibox(service, prefs)) return; - // Both features must be enabled to ever attach the action chip. - if (!service->IsJourneysEnabled() || !GetConfig().omnibox_action) { + if (!GetConfig().omnibox_action) return; - } - - // History Clusters must be visible to the user to attach the action chip. - if (!prefs->GetBoolean(history_clusters::prefs::kVisible)) { - return; - } if (result.empty()) return;
diff --git a/components/omnibox/browser/actions/history_clusters_action_unittest.cc b/components/omnibox/browser/actions/history_clusters_action_unittest.cc index 0f059da..509e17d 100644 --- a/components/omnibox/browser/actions/history_clusters_action_unittest.cc +++ b/components/omnibox/browser/actions/history_clusters_action_unittest.cc
@@ -54,9 +54,9 @@ return matches; } -class HistClustersActionTest : public testing::Test { +class HistoryClustersActionTest : public testing::Test { public: - HistClustersActionTest() = default; + HistoryClustersActionTest() = default; // `history_dir_` needs to be initialized once only. void SetUp() override { @@ -119,7 +119,7 @@ } // `AttachHistoryClustersActions()` will kick off an async task to refresh - // the keyword task. Wait for it to avoid it possibly being processed after + // the keyword cache. Wait for it to avoid it possibly being processed after // the next test case begins. history::BlockUntilHistoryProcessesPendingRequests(history_service_.get()); } @@ -144,7 +144,7 @@ TestingPrefServiceSimple prefs_enabled_; }; -TEST_F(HistClustersActionTest, AttachHistoryClustersActions) { +TEST_F(HistoryClustersActionTest, AttachHistoryClustersActions) { { SCOPED_TRACE("Shouldn't add action if history cluster service is nullptr."); SetUpWithConfig(search_actions_config_);
diff --git a/components/omnibox/browser/autocomplete_classifier.cc b/components/omnibox/browser/autocomplete_classifier.cc index 612b14a..244695b1 100644 --- a/components/omnibox/browser/autocomplete_classifier.cc +++ b/components/omnibox/browser/autocomplete_classifier.cc
@@ -21,6 +21,10 @@ #include "third_party/metrics_proto/omnibox_event.pb.h" #include "url/gurl.h" +#if !BUILDFLAG(IS_IOS) +#include "components/history_clusters/core/config.h" +#endif + AutocompleteClassifier::AutocompleteClassifier( std::unique_ptr<AutocompleteController> controller, std::unique_ptr<AutocompleteSchemeClassifier> scheme_classifier) @@ -51,6 +55,12 @@ #if BUILDFLAG(IS_ANDROID) AutocompleteProvider::TYPE_VOICE_SUGGEST | #endif +#if !BUILDFLAG(IS_IOS) + (history_clusters::GetConfig().is_journeys_enabled_no_locale_check && + history_clusters::GetConfig().omnibox_history_cluster_provider + ? AutocompleteProvider::TYPE_HISTORY_CLUSTER_PROVIDER + : 0) | +#endif AutocompleteProvider::TYPE_ZERO_SUGGEST | AutocompleteProvider::TYPE_ZERO_SUGGEST_LOCAL_HISTORY | (base::FeatureList::IsEnabled(omnibox::kDocumentProvider)
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc index 2a2fa36..b0a0a51 100644 --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -31,6 +31,7 @@ #include "base/trace_event/memory_usage_estimator.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" +#include "components/history_clusters/core/config.h" #include "components/omnibox/browser/actions/omnibox_pedal_provider.h" #include "components/omnibox/browser/autocomplete_input.h" #include "components/omnibox/browser/bookmark_provider.h" @@ -66,6 +67,7 @@ #if !BUILDFLAG(IS_IOS) #include "components/omnibox/browser/actions/history_clusters_action.h" +#include "components/omnibox/browser/history_cluster_provider.h" #include "components/open_from_clipboard/clipboard_recent_content_generic.h" #endif @@ -396,6 +398,25 @@ if (provider_types & AutocompleteProvider::TYPE_OPEN_TAB) { providers_.push_back(new OpenTabProvider(provider_client_.get())); } + // Ideally, we'd check `IsApplicationLocaleSupportedByJourneys()` when + // constructing `provider_types`. But that's usually constructed in + // `AutocompleteClassifier::DefaultOmniboxProviders` which can't depend on the + // browser dir to detect locale. The alternative of piping in the locale from + // each call site seems too intrusive for a temporary condition (some call + // sites are also in the components dir). All callers of + // `DefaultOmniboxProviders` only use it to then construct + // `AutocompleteController`, so placing the check here instead has no behavior + // change. +#if !BUILDFLAG(IS_IOS) + // HistoryClusters is not enabled on iOS. + if (provider_types & AutocompleteProvider::TYPE_HISTORY_CLUSTER_PROVIDER && + history_clusters::IsApplicationLocaleSupportedByJourneys( + provider_client_->GetApplicationLocale()) && + search_provider_ != nullptr) { + providers_.push_back(new HistoryClusterProvider(provider_client_.get(), + this, search_provider_)); + } +#endif base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( this, "AutocompleteController", base::ThreadTaskRunnerHandle::Get());
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc index 2d36a33..06727161 100644 --- a/components/omnibox/browser/autocomplete_match.cc +++ b/components/omnibox/browser/autocomplete_match.cc
@@ -416,6 +416,7 @@ case Type::TAB_SEARCH_DEPRECATED: case Type::TILE_NAVSUGGEST: case Type::OPEN_TAB: + case Type::HISTORY_CLUSTER: return omnibox::kPageIcon; case Type::SEARCH_SUGGEST: { @@ -1078,6 +1079,8 @@ return OmniboxEventProto::Suggestion::NAVSUGGEST; case AutocompleteMatchType::OPEN_TAB: return OmniboxEventProto::Suggestion::OPEN_TAB; + case AutocompleteMatchType::HISTORY_CLUSTER: + return OmniboxEventProto::Suggestion::HISTORY_CLUSTER; case AutocompleteMatchType::VOICE_SUGGEST: // VOICE_SUGGEST matches are only used in Java and are not logged, // so we should never reach this case.
diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h index 4787d1e..2c89ae8 100644 --- a/components/omnibox/browser/autocomplete_match.h +++ b/components/omnibox/browser/autocomplete_match.h
@@ -626,7 +626,10 @@ // The destination URL modified for better dupe finding. The result may not // be navigable or even valid; it's only meant to be used for detecting - // duplicates. + // duplicates. Providers are not expected to set this field, + // `AutocompleteResult` will set it using `ComputeStrippedDestinationURL()`. + // Providers may manually set it to avoid the default + // `ComputeStrippedDestinationURL()` computation. GURL stripped_destination_url; // Optional image information. Used for entity suggestions. The dominant color @@ -671,7 +674,7 @@ // A rich-format version of the display for the dropdown. absl::optional<SuggestionAnswer> answer; - // The transition type to use when the user opens this match. By default + // The transition type to use when the user opens this match. By default, // this is TYPED. Providers whose matches do not look like URLs should set // it to GENERATED. ui::PageTransition transition = ui::PAGE_TRANSITION_TYPED; @@ -680,7 +683,7 @@ Type type = AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED; // True if we saw a tab that matched this suggestion. - // Unset if has not been computed yet. + // Unset if it has not been computed yet. absl::optional<bool> has_tab_match; // Used to identify the specific source / type for suggestions by the @@ -688,7 +691,7 @@ // details. // We use flat_set to help us deduplicate repetitive elements. // The order of elements reported back via AQS is irrelevant, and in the case - // we have repetitive subtypes (eg. as a result of Chrome enriching the set + // we have repetitive subtypes (e.g., as a result of Chrome enriching the set // with its own metadata) we want to merge these subtypes together. // flat_set uses std::vector as a container, allowing us to reduce memory // overhead of keeping a handful of integers, while offering similar
diff --git a/components/omnibox/browser/autocomplete_match_classification.h b/components/omnibox/browser/autocomplete_match_classification.h index 4bf5f76..d94ffa4a 100644 --- a/components/omnibox/browser/autocomplete_match_classification.h +++ b/components/omnibox/browser/autocomplete_match_classification.h
@@ -30,11 +30,11 @@ // Return an ACMatchClassifications structure given the |matches| to highlight. // |matches| can be retrieved from calling FindTermMatches. |text_length| should // be the full length (not the length of the truncated text clean returns) of -// the text being classified. It is used to ensure the the trailing -// classification is correct; i.e. if matches end at 20, and text_length is -// greater than 20, ClassifyTermMatches will add a non_match_style -// classification with offset 20. |match_style| and |non_match_style| specify -// the classifications to use for matched and non-matched text. +// the text being classified. It is used to ensure the trailing classification +// is correct; i.e. if matches end at 20, and text_length is greater than 20, +// ClassifyTermMatches will add a non_match_style classification with offset 20. +// |match_style| and |non_match_style| specify the classifications to use for +// matched and non-matched text. ACMatchClassifications ClassifyTermMatches(TermMatches matches, size_t text_length, int match_style,
diff --git a/components/omnibox/browser/autocomplete_match_type.cc b/components/omnibox/browser/autocomplete_match_type.cc index 07d81289..d9b0d63e 100644 --- a/components/omnibox/browser/autocomplete_match_type.cc +++ b/components/omnibox/browser/autocomplete_match_type.cc
@@ -50,6 +50,7 @@ "query-tiles", "navsuggest-tiles", "open-tab", + "history-cluster", }; // clang-format on static_assert(std::size(strings) == AutocompleteMatchType::NUM_TYPES, @@ -139,6 +140,7 @@ 0, // TILE_SUGGESTION 0, // TILE_NAVSUGGEST 0, // OPEN_TAB + 0, // HISTORY_CLUSTER }; static_assert(std::size(message_ids) == AutocompleteMatchType::NUM_TYPES, "message_ids must have NUM_TYPES elements");
diff --git a/components/omnibox/browser/autocomplete_match_type.h b/components/omnibox/browser/autocomplete_match_type.h index b288caf9..e44cd75 100644 --- a/components/omnibox/browser/autocomplete_match_type.h +++ b/components/omnibox/browser/autocomplete_match_type.h
@@ -76,6 +76,7 @@ TILE_NAVSUGGEST = 29, // A suggestion with navigation tiles. OPEN_TAB = 30, // A URL match amongst the currently open // tabs. + HISTORY_CLUSTER = 31, // A history cluster suggestion. NUM_TYPES, }; // clang-format on
diff --git a/components/omnibox/browser/autocomplete_provider.cc b/components/omnibox/browser/autocomplete_provider.cc index d46e1b5..abab36b 100644 --- a/components/omnibox/browser/autocomplete_provider.cc +++ b/components/omnibox/browser/autocomplete_provider.cc
@@ -72,6 +72,8 @@ return "HistoryFuzzy"; case TYPE_OPEN_TAB: return "OpenTab"; + case TYPE_HISTORY_CLUSTER_PROVIDER: + return "HistoryCluster"; default: NOTREACHED() << "Unhandled AutocompleteProvider::Type " << type; return "Unknown"; @@ -163,6 +165,8 @@ return metrics::OmniboxEventProto::HISTORY_FUZZY; case TYPE_OPEN_TAB: return metrics::OmniboxEventProto::OPEN_TAB; + case TYPE_HISTORY_CLUSTER_PROVIDER: + return metrics::OmniboxEventProto::HISTORY_CLUSTER; default: NOTREACHED() << "Unhandled AutocompleteProvider::Type " << type_; return metrics::OmniboxEventProto::UNKNOWN_PROVIDER;
diff --git a/components/omnibox/browser/autocomplete_provider.h b/components/omnibox/browser/autocomplete_provider.h index c1383277..24c8e6a2 100644 --- a/components/omnibox/browser/autocomplete_provider.h +++ b/components/omnibox/browser/autocomplete_provider.h
@@ -171,6 +171,7 @@ TYPE_VOICE_SUGGEST = 1 << 15, TYPE_HISTORY_FUZZY = 1 << 16, TYPE_OPEN_TAB = 1 << 17, + TYPE_HISTORY_CLUSTER_PROVIDER = 1 << 18, }; explicit AutocompleteProvider(Type type);
diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h index f2b95f1..4713d2f 100644 --- a/components/omnibox/browser/autocomplete_provider_client.h +++ b/components/omnibox/browser/autocomplete_provider_client.h
@@ -70,6 +70,7 @@ GetURLLoaderFactory() = 0; virtual PrefService* GetPrefs() const = 0; virtual PrefService* GetLocalState() = 0; + virtual std::string GetApplicationLocale() const = 0; virtual const AutocompleteSchemeClassifier& GetSchemeClassifier() const = 0; virtual AutocompleteClassifier* GetAutocompleteClassifier() = 0; virtual history::HistoryService* GetHistoryService() = 0;
diff --git a/components/omnibox/browser/fake_autocomplete_provider_client.cc b/components/omnibox/browser/fake_autocomplete_provider_client.cc index c0a351a7..d06ba338 100644 --- a/components/omnibox/browser/fake_autocomplete_provider_client.cc +++ b/components/omnibox/browser/fake_autocomplete_provider_client.cc
@@ -55,6 +55,11 @@ return history_service_.get(); } +history_clusters::HistoryClustersService* +FakeAutocompleteProviderClient::GetHistoryClustersService() { + return history_clusters_service_; +} + bookmarks::BookmarkModel* FakeAutocompleteProviderClient::GetBookmarkModel() { return bookmark_model_.get(); }
diff --git a/components/omnibox/browser/fake_autocomplete_provider_client.h b/components/omnibox/browser/fake_autocomplete_provider_client.h index 63b3f72..f1b306d 100644 --- a/components/omnibox/browser/fake_autocomplete_provider_client.h +++ b/components/omnibox/browser/fake_autocomplete_provider_client.h
@@ -54,6 +54,8 @@ PrefService* GetLocalState() override; const AutocompleteSchemeClassifier& GetSchemeClassifier() const override; history::HistoryService* GetHistoryService() override; + history_clusters::HistoryClustersService* GetHistoryClustersService() + override; bookmarks::BookmarkModel* GetBookmarkModel() override; InMemoryURLIndex* GetInMemoryURLIndex() override; scoped_refptr<ShortcutsBackend> GetShortcutsBackend() override; @@ -71,6 +73,11 @@ history_service_ = std::move(service); } + void set_history_clusters_service( + history_clusters::HistoryClustersService* service) { + history_clusters_service_ = service; + } + void set_in_memory_url_index(std::unique_ptr<InMemoryURLIndex> index) { in_memory_url_index_ = std::move(index); } @@ -89,6 +96,7 @@ TestSchemeClassifier scheme_classifier_; std::unique_ptr<InMemoryURLIndex> in_memory_url_index_; std::unique_ptr<history::HistoryService> history_service_; + history_clusters::HistoryClustersService* history_clusters_service_ = nullptr; std::unique_ptr<TestingPrefServiceSimple> local_state_; std::unique_ptr<TestingPrefServiceSimple> pref_service_; scoped_refptr<ShortcutsBackend> shortcuts_backend_;
diff --git a/components/omnibox/browser/history_cluster_provider.cc b/components/omnibox/browser/history_cluster_provider.cc new file mode 100644 index 0000000..204be41c --- /dev/null +++ b/components/omnibox/browser/history_cluster_provider.cc
@@ -0,0 +1,118 @@ +// 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. + +#include "components/omnibox/browser/history_cluster_provider.h" + +#include "base/strings/stringprintf.h" +#include "base/strings/utf_string_conversions.h" +#include "components/history_clusters/core/config.h" +#include "components/history_clusters/core/history_clusters_service.h" +#include "components/omnibox/browser/autocomplete_controller.h" +#include "components/omnibox/browser/autocomplete_match.h" +#include "components/omnibox/browser/autocomplete_match_classification.h" +#include "components/omnibox/browser/autocomplete_match_type.h" +#include "components/omnibox/browser/autocomplete_provider_client.h" +#include "components/omnibox/browser/autocomplete_provider_listener.h" +#include "components/omnibox/browser/search_provider.h" + +HistoryClusterProvider::HistoryClusterProvider( + AutocompleteProviderClient* client, + AutocompleteProviderListener* listener, + SearchProvider* search_provider) + : AutocompleteProvider(AutocompleteProvider::TYPE_HISTORY_CLUSTER_PROVIDER), + client_(client), + listener_(listener), + search_provider_(search_provider) { + DCHECK(search_provider_); + search_provider_->AddListener(this); +} + +void HistoryClusterProvider::Start(const AutocompleteInput& input, + bool minimal_changes) { + done_ = true; + matches_.clear(); + + if (!input.want_asynchronous_matches()) + return; + + if (!IsJourneysEnabledInOmnibox(client_->GetHistoryClustersService(), + client_->GetPrefs())) { + return; + } + + if (!history_clusters::GetConfig().omnibox_history_cluster_provider) + return; + + done_ = false; + input_ = input; + + if (search_provider_->done()) + CreateMatches(); +} + +void HistoryClusterProvider::Stop(bool clear_cached_results, + bool due_to_user_inactivity) { + done_ = true; +} + +void HistoryClusterProvider::OnProviderUpdate(bool updated_matches) { + if (done_ || !search_provider_->done()) + return; + listener_->OnProviderUpdate(CreateMatches()); +} + +bool HistoryClusterProvider::CreateMatches() { + done_ = true; + + // Iterate search matches in their current order. This is usually highest to + // lowest relevance with an exception for search-what-you-typed search + // suggestions being ordered before others. + for (const auto& search_match : search_provider_->matches()) { + if (client_->GetHistoryClustersService()->DoesQueryMatchAnyCluster( + base::UTF16ToUTF8(search_match.contents))) { + matches_.push_back(CreateMatch(search_match.contents)); + return true; + } + } + return false; +} + +AutocompleteMatch HistoryClusterProvider::CreateMatch(std::u16string text) { + AutocompleteMatch match; + match.provider = this; + match.type = AutocompleteMatch::Type::HISTORY_CLUSTER; + + // 900 seems to work well in local tests. It's high enough to + // outscore search suggestions and therefore not be crowded out, but low + // enough to only display when there aren't too many strong navigation + // matches. + // TODO(manukh): Currently, history cluster suggestions only display when the + // `text` is an exact match of a cluster keyword, and all cluster keywords + // are treated equal. Therefore, we're limited to using a static value. + // Ideally, relevance would depend on how many keywords matched, how + // significant the keywords were, how significant their clusters were etc. + match.relevance = 900; + + match.fill_into_edit = base::UTF8ToUTF16(base::StringPrintf( + "chrome://history/journeys?q=%s", base::UTF16ToUTF8(text).c_str())); + + match.destination_url = GURL(base::UTF8ToUTF16(base::StringPrintf( + "chrome://history/journeys?q=%s", + base::EscapeQueryParamValue(base::UTF16ToUTF8(text), /*use_plus=*/false) + .c_str()))); + + match.description = text; + match.description_class = ClassifyTermMatches( + FindTermMatches(input_.text(), text), text.length(), + ACMatchClassification::MATCH, ACMatchClassification::NONE); + + // TODO(manukh): Ideally, this would read e.g. "Journey from Yesterday", but + // we don't currently track which keyword is connected to which history + // cluster. + match.contents = u"Journey"; + match.contents_class.push_back( + ACMatchClassification(0, ACMatchClassification::DIM)); + + return match; +}
diff --git a/components/omnibox/browser/history_cluster_provider.h b/components/omnibox/browser/history_cluster_provider.h new file mode 100644 index 0000000..b886c0d --- /dev/null +++ b/components/omnibox/browser/history_cluster_provider.h
@@ -0,0 +1,56 @@ +// 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 COMPONENTS_OMNIBOX_BROWSER_HISTORY_CLUSTER_PROVIDER_H_ +#define COMPONENTS_OMNIBOX_BROWSER_HISTORY_CLUSTER_PROVIDER_H_ + +#include "components/omnibox/browser/autocomplete_input.h" +#include "components/omnibox/browser/autocomplete_provider.h" +#include "components/omnibox/browser/autocomplete_provider_listener.h" + +class AutocompleteProviderClient; +class SearchProvider; + +// `HistoryClusterProvider` adds suggestions to the history journey page if +// any `SearchProvider` suggestions matched a cluster keyword. Inherits +// `AutocompleteProviderListener` in order to listen to `SearchProvider` +// updates. Uses `SearchProvider` suggestions, as a proxy for what the user may +// be typing if they're typing a query. Doesn't use other search providers' +// (i.e. `VoiceSearchProvider` and `ZeroSuggestProvider`) suggestions for +// simplicity. +class HistoryClusterProvider : public AutocompleteProvider, + public AutocompleteProviderListener { + public: + HistoryClusterProvider(AutocompleteProviderClient* client, + AutocompleteProviderListener* listener, + SearchProvider* search_provider); + + // AutocompleteProvider: + void Start(const AutocompleteInput& input, bool minimal_changes) override; + void Stop(bool clear_cached_results, bool due_to_user_inactivity) override; + + // AutocompleteProviderListener: + // `HistoryClusterProvider` listens to `SearchProvider` updates. + void OnProviderUpdate(bool updated_matches) override; + + private: + ~HistoryClusterProvider() override = default; + + // Iterates `search_provider_->matches()` and check if any can be used to + // create a history cluster match. Returns whether any matches were created. + bool CreateMatches(); + + // Creates a `AutocompleteMatch`. + AutocompleteMatch CreateMatch(std::u16string text); + + // The `AutocompleteInput` passed to `Start()`. + AutocompleteInput input_; + + // These are never null. + const raw_ptr<AutocompleteProviderClient> client_; + const raw_ptr<AutocompleteProviderListener> listener_; + const raw_ptr<SearchProvider> search_provider_; +}; + +#endif // COMPONENTS_OMNIBOX_BROWSER_HISTORY_CLUSTER_PROVIDER_H_
diff --git a/components/omnibox/browser/history_cluster_provider_unittest.cc b/components/omnibox/browser/history_cluster_provider_unittest.cc new file mode 100644 index 0000000..7f375daf --- /dev/null +++ b/components/omnibox/browser/history_cluster_provider_unittest.cc
@@ -0,0 +1,310 @@ +// 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. + +#include "components/omnibox/browser/history_cluster_provider.h" + +#include <memory> + +#include "base/files/scoped_temp_dir.h" +#include "base/memory/scoped_refptr.h" +#include "base/test/task_environment.h" +#include "components/history/core/browser/history_service.h" +#include "components/history_clusters/core/config.h" +#include "components/history_clusters/core/history_clusters_prefs.h" +#include "components/history_clusters/core/history_clusters_service.h" +#include "components/history_clusters/core/history_clusters_service_test_api.h" +#include "components/omnibox/browser/autocomplete_match.h" +#include "components/omnibox/browser/autocomplete_provider_listener.h" +#include "components/omnibox/browser/fake_autocomplete_provider_client.h" +#include "components/omnibox/browser/search_provider.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/testing_pref_service.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +class FakeSearchProvider : public SearchProvider { + public: + explicit FakeSearchProvider(AutocompleteProviderClient* client, + AutocompleteProviderListener* listener) + : SearchProvider(client, listener) {} + + using SearchProvider::done_; + using SearchProvider::matches_; + + private: + ~FakeSearchProvider() override = default; +}; + +AutocompleteMatch CreateMatch(std::u16string contents) { + AutocompleteMatch match; + match.contents = contents; + return match; +} + +class HistoryClustersProviderTest : public testing::Test, + public AutocompleteProviderListener { + public: + HistoryClustersProviderTest() { + config_.is_journeys_enabled_no_locale_check = true; + config_.omnibox_history_cluster_provider = true; + history_clusters::SetConfigForTesting(config_); + + CHECK(history_dir_.CreateUniqueTempDir()); + history_service_ = + history::CreateHistoryService(history_dir_.GetPath(), true); + + history_clusters_service_ = + std::make_unique<history_clusters::HistoryClustersService>( + "en-US", history_service_.get(), + /*entity_metadata_provider=*/nullptr, + /*url_loader_factory=*/nullptr, + /*engagement_score_provider=*/nullptr, + /*optimization_guide_decider=*/nullptr); + + history_clusters_service_test_api_ = + std::make_unique<history_clusters::HistoryClustersServiceTestApi>( + history_clusters_service_.get(), history_service_.get()); + history_clusters_service_test_api_->SetAllKeywordsCache( + {{u"keyword", {}}, {u"keyword2", {}}}); + + autocomplete_provider_client_ = + std::make_unique<FakeAutocompleteProviderClient>(); + autocomplete_provider_client_->set_history_clusters_service( + history_clusters_service_.get()); + static_cast<TestingPrefServiceSimple*>( + autocomplete_provider_client_->GetPrefs()) + ->registry() + ->RegisterBooleanPref(history_clusters::prefs::kVisible, true); + + search_provider_ = + new FakeSearchProvider(autocomplete_provider_client_.get(), this); + provider_ = new HistoryClusterProvider(autocomplete_provider_client_.get(), + this, search_provider_.get()); + }; + + ~HistoryClustersProviderTest() override { + // The provider will kick off an async task to refresh the keyword cache. + // Wait for it to avoid it possibly being processed after the next test case + // begins. + history::BlockUntilHistoryProcessesPendingRequests(history_service_.get()); + } + + // AutocompleteProviderListener + void OnProviderUpdate(bool updated_matches) override { + on_provider_update_calls_.push_back(updated_matches); + }; + + // Tracks `OnProviderUpdate()` invocations. + std::vector<bool> on_provider_update_calls_; + + base::test::TaskEnvironment task_environment_; + + base::ScopedTempDir history_dir_; + std::unique_ptr<history::HistoryService> history_service_; + std::unique_ptr<history_clusters::HistoryClustersService> + history_clusters_service_; + + std::unique_ptr<FakeAutocompleteProviderClient> autocomplete_provider_client_; + + scoped_refptr<FakeSearchProvider> search_provider_; + scoped_refptr<HistoryClusterProvider> provider_; + + std::unique_ptr<history_clusters::HistoryClustersServiceTestApi> + history_clusters_service_test_api_; + + history_clusters::Config config_; +}; + +TEST_F(HistoryClustersProviderTest, WantAsynchronousMatchesFalse) { + // When `input.want_asynchronous_matches_` is false, should not attempt + // to provide suggestions. + AutocompleteInput input; + input.set_want_asynchronous_matches(false); + + EXPECT_TRUE(provider_->done()); + provider_->Start(input, false); + EXPECT_TRUE(provider_->done()); +} + +TEST_F(HistoryClustersProviderTest, SyncSearchMatches) { + // Test the unlikely, but valid, case where the search provider completes + // before the history cluster provider begins. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + search_provider_->matches_ = {CreateMatch(u"keyword")}; + search_provider_->done_ = true; + EXPECT_TRUE(provider_->done()); + provider_->Start(input, false); + EXPECT_TRUE(provider_->done()); + ASSERT_EQ(provider_->matches().size(), 1u); + EXPECT_EQ(provider_->matches()[0].relevance, 900); + EXPECT_EQ(provider_->matches()[0].description, u"keyword"); + EXPECT_EQ(provider_->matches()[0].contents, u"Journey"); + EXPECT_EQ(provider_->matches()[0].fill_into_edit, + u"chrome://history/journeys?q=keyword"); + EXPECT_EQ(provider_->matches()[0].destination_url, + GURL("chrome://history/journeys?q=keyword")); + + EXPECT_TRUE(on_provider_update_calls_.empty()); +} + +TEST_F(HistoryClustersProviderTest, AsyncSearchMatches) { + // Test the more common case where the search provider completes after the + // history cluster provider begins. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + // `done()` should be true before starting. + EXPECT_TRUE(provider_->done()); + + // `done()` should be false after starting. + search_provider_->done_ = false; + provider_->Start(input, false); + EXPECT_FALSE(provider_->done()); + + // Calling `Start()` or `OnProviderUpdate()` should process search matches + // if the search provider is not done when called. + search_provider_->matches_ = {CreateMatch(u"keyword")}; + provider_->Start(input, false); + provider_->OnProviderUpdate(true); + search_provider_->done_ = true; + EXPECT_FALSE(provider_->done()); + EXPECT_TRUE(provider_->matches().empty()); + + // Calling `OnProviderUpdate()` should process search matches if the search + // provider is done. + provider_->OnProviderUpdate(true); + EXPECT_TRUE(provider_->done()); + ASSERT_EQ(provider_->matches().size(), 1u); + EXPECT_EQ(provider_->matches()[0].description, u"keyword"); + + EXPECT_THAT(on_provider_update_calls_, testing::ElementsAre(true)); +} + +TEST_F(HistoryClustersProviderTest, EmptySyncSearchMatches) { + // Test the sync case where the search provider finds no matches. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + provider_->Start(input, false); + EXPECT_TRUE(provider_->done()); + EXPECT_TRUE(provider_->matches().empty()); + + EXPECT_TRUE(on_provider_update_calls_.empty()); +} + +TEST_F(HistoryClustersProviderTest, EmptyAsyncSearchMatches) { + // Test the async case where the search provider finds no matches. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + search_provider_->done_ = false; + provider_->Start(input, false); + search_provider_->done_ = true; + EXPECT_FALSE(provider_->done()); + provider_->OnProviderUpdate(false); + EXPECT_TRUE(provider_->done()); + EXPECT_TRUE(provider_->matches().empty()); + + EXPECT_THAT(on_provider_update_calls_, testing::ElementsAre(false)); +} + +TEST_F(HistoryClustersProviderTest, MultipassSearchMatches) { + // Test the case where the search provider finds matches in multiple passes. + // This is typically the case; search-what-you-typed and search-history + // suggestions are produced syncly, while the other search types from + // the server are produced asyncly. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + // Simulate receiving sync search matches. + search_provider_->done_ = false; + search_provider_->matches_.push_back(CreateMatch(u"keyword")); + search_provider_->matches_.push_back(CreateMatch(u"dolphin")); + provider_->Start(input, false); + EXPECT_FALSE(provider_->done()); + + // Simulate receiving async search matches. + provider_->OnProviderUpdate(true); + EXPECT_FALSE(provider_->done()); + + // Simulate receiving the last set of async search matches. + search_provider_->done_ = true; + provider_->OnProviderUpdate(true); + EXPECT_TRUE(provider_->done()); + ASSERT_EQ(provider_->matches().size(), 1u); + EXPECT_EQ(provider_->matches()[0].description, u"keyword"); + + EXPECT_THAT(on_provider_update_calls_, testing::ElementsAre(true)); +} + +TEST_F(HistoryClustersProviderTest, MultipassSyncSearchMatches) { + // Like `MultipassSearchMatches` above, test the case where the search + // provider tries multiple passes. But in this case, it finds matches in only + // the sync pass. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + // Simulate receiving sync search matches. + search_provider_->done_ = false; + search_provider_->matches_.push_back(CreateMatch(u"keyword")); + search_provider_->matches_.push_back(CreateMatch(u"Levon Aronian")); + provider_->Start(input, false); + EXPECT_FALSE(provider_->done()); + + // Simulate receiving async search update with no matches. + search_provider_->done_ = true; + provider_->OnProviderUpdate(false); + EXPECT_TRUE(provider_->done()); + ASSERT_EQ(provider_->matches().size(), 1u); + + EXPECT_THAT(on_provider_update_calls_, testing::ElementsAre(true)); +} + +TEST_F(HistoryClustersProviderTest, NoKeyworddMatches) { + // Test the case where none of the search matches match a keyword. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + search_provider_->matches_ = {CreateMatch(u"key"), CreateMatch(u"keyworddd"), + CreateMatch(u"Tigran Petrosian")}; + search_provider_->done_ = false; + provider_->Start(input, false); + search_provider_->done_ = true; + provider_->OnProviderUpdate(false); + EXPECT_TRUE(provider_->done()); + EXPECT_TRUE(provider_->matches().empty()); + + // ALso test that `provider_` calls `OnProviderUpdate()` with false when it + // completes asyncly without matches. + EXPECT_THAT(on_provider_update_calls_, testing::ElementsAre(false)); +} + +TEST_F(HistoryClustersProviderTest, MultipleKeyworddMatches) { + // Test the case where multiple of the search matches match a keyword. + + AutocompleteInput input; + input.set_want_asynchronous_matches(true); + + search_provider_->matches_ = {CreateMatch(u"keyword2"), + CreateMatch(u"keyword"), + CreateMatch(u"Lilit Mkrtchian")}; + search_provider_->done_ = true; + provider_->Start(input, false); + EXPECT_TRUE(provider_->done()); + ASSERT_EQ(provider_->matches().size(), 1u); + EXPECT_EQ(provider_->matches()[0].description, u"keyword2"); + + // Also test that `provider_` does not call `OnProviderUpdate()` when it + // completes syncly, even if it has matches. + EXPECT_TRUE(on_provider_update_calls_.empty()); +}
diff --git a/components/omnibox/browser/mock_autocomplete_provider_client.h b/components/omnibox/browser/mock_autocomplete_provider_client.h index a530f52..b30b6b37 100644 --- a/components/omnibox/browser/mock_autocomplete_provider_client.h +++ b/components/omnibox/browser/mock_autocomplete_provider_client.h
@@ -38,6 +38,7 @@ // AutocompleteProviderClient: MOCK_CONST_METHOD0(GetPrefs, PrefService*()); MOCK_METHOD0(GetLocalState, PrefService*()); + MOCK_CONST_METHOD0(GetApplicationLocale, std::string()); MOCK_CONST_METHOD0(GetSchemeClassifier, const AutocompleteSchemeClassifier&()); MOCK_METHOD0(GetAutocompleteClassifier, AutocompleteClassifier*());
diff --git a/components/omnibox/browser/search_provider.h b/components/omnibox/browser/search_provider.h index ec2a95f0..63152e97 100644 --- a/components/omnibox/browser/search_provider.h +++ b/components/omnibox/browser/search_provider.h
@@ -79,7 +79,7 @@ // AutocompleteProvider: void ResetSession() override; - // The verbatim score for an input which is not an URL. + // The verbatim score for an input which is not a URL. static const int kNonURLVerbatimRelevance = 1300; protected:
diff --git a/components/os_crypt/key_storage_kwallet_unittest.cc b/components/os_crypt/key_storage_kwallet_unittest.cc index c87ba0e..d3a8375 100644 --- a/components/os_crypt/key_storage_kwallet_unittest.cc +++ b/components/os_crypt/key_storage_kwallet_unittest.cc
@@ -4,6 +4,7 @@ #include "components/os_crypt/key_storage_kwallet.h" +#include "base/memory/raw_ptr.h" #include "base/nix/xdg_util.h" #include "build/branding_buildflags.h" #include "dbus/message.h" @@ -122,7 +123,7 @@ } protected: - StrictMock<MockKWalletDBus>* kwallet_dbus_mock_; + raw_ptr<StrictMock<MockKWalletDBus>> kwallet_dbus_mock_; KeyStorageKWallet key_storage_kwallet_; const std::string wallet_name_ = "mollet"; }; @@ -258,7 +259,7 @@ } protected: - StrictMock<MockKWalletDBus>* kwallet_dbus_mock_; + raw_ptr<StrictMock<MockKWalletDBus>> kwallet_dbus_mock_; KeyStorageKWallet key_storage_kwallet_; const std::string wallet_name_ = "mollet"; };
diff --git a/components/os_crypt/key_storage_libsecret_unittest.cc b/components/os_crypt/key_storage_libsecret_unittest.cc index 19ee89a3..767b3fa0 100644 --- a/components/os_crypt/key_storage_libsecret_unittest.cc +++ b/components/os_crypt/key_storage_libsecret_unittest.cc
@@ -6,6 +6,7 @@ #include <unordered_map> #include "base/lazy_instance.h" +#include "base/memory/raw_ptr.h" #include "components/os_crypt/key_storage_libsecret.h" #include "components/os_crypt/libsecret_util_linux.h" #include "testing/gtest/include/gtest/gtest.h" @@ -73,7 +74,7 @@ std::unordered_map<GObject*, std::string> mapping_; std::vector<GObject*> objects_returned_to_caller_; - GObject* password_ = nullptr; + raw_ptr<GObject> password_ = nullptr; }; base::LazyInstance<MockPasswordStore>::Leaky g_password_store = LAZY_INSTANCE_INITIALIZER;
diff --git a/components/os_crypt/key_storage_linux_unittest.cc b/components/os_crypt/key_storage_linux_unittest.cc index 44f48cd9..6e3ee0c6 100644 --- a/components/os_crypt/key_storage_linux_unittest.cc +++ b/components/os_crypt/key_storage_linux_unittest.cc
@@ -5,6 +5,7 @@ #include "components/os_crypt/key_storage_linux.h" #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/test/test_simple_task_runner.h" #include "testing/gtest/include/gtest/gtest.h" @@ -30,7 +31,7 @@ base::SequencedTaskRunner* GetTaskRunner() override { return task_runner_; } private: - base::SequencedTaskRunner* task_runner_; + raw_ptr<base::SequencedTaskRunner> task_runner_; }; class KeyStorageLinuxTest : public testing::Test {
diff --git a/components/os_crypt/kwallet_dbus.h b/components/os_crypt/kwallet_dbus.h index 9703174..0a59cef 100644 --- a/components/os_crypt/kwallet_dbus.h +++ b/components/os_crypt/kwallet_dbus.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/nix/xdg_util.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -136,7 +137,7 @@ // DBus handle for communication with klauncher and kwalletd. scoped_refptr<dbus::Bus> session_bus_; // Object proxy for kwalletd. We do not own this. - dbus::ObjectProxy* kwallet_proxy_; + raw_ptr<dbus::ObjectProxy> kwallet_proxy_; // KWallet DBus name. std::string dbus_service_name_;
diff --git a/components/os_crypt/libsecret_util_linux.h b/components/os_crypt/libsecret_util_linux.h index 90ddda6..c80700af 100644 --- a/components/os_crypt/libsecret_util_linux.h +++ b/components/os_crypt/libsecret_util_linux.h
@@ -11,6 +11,7 @@ #include <string> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" // Utility for dynamically loading libsecret. class LibsecretLoader { @@ -58,7 +59,7 @@ private: // |results_| and |error_| are C-style objects owned by this instance. - GList* results_ = nullptr; + raw_ptr<GList> results_ = nullptr; GError* error_ = nullptr; }; @@ -124,7 +125,7 @@ // to the objects stored in this container. Using a vector here will fail the // ASan tests, because it may move the objects and break the references. std::list<std::string> name_values_; - GHashTable* attrs_; + raw_ptr<GHashTable> attrs_; }; #endif // COMPONENTS_OS_CRYPT_LIBSECRET_UTIL_LINUX_H_
diff --git a/components/page_load_metrics/browser/page_load_metrics_forward_observer.cc b/components/page_load_metrics/browser/page_load_metrics_forward_observer.cc index 05e3dd1..3be6579 100644 --- a/components/page_load_metrics/browser/page_load_metrics_forward_observer.cc +++ b/components/page_load_metrics/browser/page_load_metrics_forward_observer.cc
@@ -145,6 +145,9 @@ content::RenderFrameHost* subframe_rfh, const mojom::InputTiming& input_timing_delta) {} +void PageLoadMetricsForwardObserver::OnPageInputTimingUpdate( + uint64_t num_input_events) {} + void PageLoadMetricsForwardObserver::OnSubFrameRenderDataUpdate( content::RenderFrameHost* subframe_rfh, const mojom::FrameRenderDataUpdate& render_data) {
diff --git a/components/page_load_metrics/browser/page_load_metrics_forward_observer.h b/components/page_load_metrics/browser/page_load_metrics_forward_observer.h index 061ff48..8a2d95c 100644 --- a/components/page_load_metrics/browser/page_load_metrics_forward_observer.h +++ b/components/page_load_metrics/browser/page_load_metrics_forward_observer.h
@@ -70,6 +70,7 @@ void OnInputTimingUpdate( content::RenderFrameHost* subframe_rfh, const mojom::InputTiming& input_timing_delta) override; + void OnPageInputTimingUpdate(uint64_t num_input_events) override; void OnSubFrameRenderDataUpdate( content::RenderFrameHost* subframe_rfh, const mojom::FrameRenderDataUpdate& render_data) override;
diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.h b/components/page_load_metrics/browser/page_load_metrics_observer.h index 9e615d7..31b0335 100644 --- a/components/page_load_metrics/browser/page_load_metrics_observer.h +++ b/components/page_load_metrics/browser/page_load_metrics_observer.h
@@ -176,6 +176,7 @@ void OnInputTimingUpdate( content::RenderFrameHost* subframe_rfh, const mojom::InputTiming& input_timing_delta) override {} + void OnPageInputTimingUpdate(uint64_t num_input_events) override {} void OnSubFrameRenderDataUpdate( content::RenderFrameHost* subframe_rfh, const mojom::FrameRenderDataUpdate& render_data) override {}
diff --git a/components/page_load_metrics/browser/page_load_metrics_observer_interface.h b/components/page_load_metrics/browser/page_load_metrics_observer_interface.h index 3116cb4..e19b9ba 100644 --- a/components/page_load_metrics/browser/page_load_metrics_observer_interface.h +++ b/components/page_load_metrics/browser/page_load_metrics_observer_interface.h
@@ -327,6 +327,10 @@ content::RenderFrameHost* subframe_rfh, const mojom::InputTiming& input_timing_delta) = 0; + // OnPageInputTimingUpdate is triggered when an updated InputTiming is + // available at the page level. + virtual void OnPageInputTimingUpdate(uint64_t num_input_events) = 0; + // OnRenderDataUpdate is triggered when an updated PageRenderData is available // at the subframe level. This method may be called multiple times over the // course of the page load.
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc index ecac1be4..818a462 100644 --- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc +++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.cc
@@ -51,6 +51,8 @@ void OnSoftNavigationCountUpdated() override; + void OnPageInputTimingUpdate(uint64_t num_input_events) override; + void OnCpuTimingUpdate(content::RenderFrameHost* subframe_rfh, const mojom::CpuTiming& timing) override; @@ -228,6 +230,14 @@ soft_navigation_count_updated_ = true; } +void PageLoadMetricsTestWaiter::OnPageInputTimingUpdated( + uint64_t num_input_events) { + current_num_input_events_ = num_input_events; + observed_.page_fields_.Set(TimingField::kTotalInputDelay); + if (ExpectationsSatisfied() && run_loop_) + run_loop_->Quit(); +} + void PageLoadMetricsTestWaiter::OnCpuTimingUpdated( content::RenderFrameHost* subframe_rfh, const page_load_metrics::mojom::CpuTiming& timing) { @@ -505,6 +515,12 @@ observed_.memory_update_frame_ids_); } +bool PageLoadMetricsTestWaiter::TotalInputDelayExpectationsSatisfied() const { + if (!expected_.page_fields_.IsSet(TimingField::kTotalInputDelay)) + return true; + return current_num_input_events_ == expected_num_input_events_; +} + bool PageLoadMetricsTestWaiter::ExpectationsSatisfied() const { return expected_.page_fields_.AreAllSetIn(observed_.page_fields_) && expected_.subframe_fields_.AreAllSetIn(observed_.subframe_fields_) && @@ -517,7 +533,8 @@ CpuTimeExpectationsSatisfied() && MainFrameIntersectionExpectationsSatisfied() && MainFrameViewportRectExpectationsSatisfied() && - MemoryUpdateExpectationsSatisfied(); + MemoryUpdateExpectationsSatisfied() && + TotalInputDelayExpectationsSatisfied(); } void PageLoadMetricsTestWaiter::ResetExpectations() { @@ -551,6 +568,11 @@ waiter_->OnSoftNavigationCountUpdated(); } +void WaiterMetricsObserver::OnPageInputTimingUpdate(uint64_t num_input_events) { + if (waiter_) + waiter_->OnPageInputTimingUpdated(num_input_events); +} + void WaiterMetricsObserver::OnCpuTimingUpdate( content::RenderFrameHost* subframe_rfh, const page_load_metrics::mojom::CpuTiming& timing) {
diff --git a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h index b042e8d..6a78dd88 100644 --- a/components/page_load_metrics/browser/page_load_metrics_test_waiter.h +++ b/components/page_load_metrics/browser/page_load_metrics_test_waiter.h
@@ -42,6 +42,7 @@ kRequestAnimationFrameAfterBackForwardCacheRestore = 1 << 12, kFirstScrollDelay = 1 << 13, kSoftNavigationCountUpdated = 1 << 14, + kTotalInputDelay = 1 << 15, }; using FrameTreeNodeId = page_load_metrics::PageLoadMetricsObserver::FrameTreeNodeId; @@ -124,6 +125,11 @@ return current_network_body_bytes_; } + // Add the number of input events count expectation. + void AddNumInputEventsExpectation(uint64_t expected_num_input_events) { + expected_num_input_events_ = expected_num_input_events; + } + protected: virtual bool ExpectationsSatisfied() const; @@ -191,6 +197,11 @@ void OnSoftNavigationCountUpdated(); + // Updates observed page fields when a input timing update is received by the + // MetricsWebContentsObserver. Stops waiting if expectations are satsfied + // after update. + void OnPageInputTimingUpdated(uint64_t num_input_events); + // Updates observed page fields when a timing update is received by the // MetricsWebContentsObserver. Stops waiting if expectations are satsfied // after update. @@ -254,6 +265,7 @@ bool MainFrameIntersectionExpectationsSatisfied() const; bool MainFrameViewportRectExpectationsSatisfied() const; bool MemoryUpdateExpectationsSatisfied() const; + bool TotalInputDelayExpectationsSatisfied() const; void AddObserver(page_load_metrics::PageLoadTracker* tracker); @@ -302,6 +314,9 @@ double last_main_frame_layout_shift_score_ = 0; + uint64_t current_num_input_events_ = 0; + uint64_t expected_num_input_events_ = 0; + base::WeakPtrFactory<PageLoadMetricsTestWaiter> weak_factory_{this}; friend class WaiterMetricsObserver;
diff --git a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc index ac8ea40..19d6b8b 100644 --- a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc +++ b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.cc
@@ -768,6 +768,8 @@ input_timing_delta.num_interactions, *(input_timing_delta.max_event_durations)); } + if (page_input_timing_->num_input_events > 0) + client_->OnPageInputTimingChanged(page_input_timing_->num_input_events); } void PageLoadMetricsUpdateDispatcher::UpdatePageRenderData(
diff --git a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.h b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.h index d592c64..870ea5d 100644 --- a/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.h +++ b/components/page_load_metrics/browser/page_load_metrics_update_dispatcher.h
@@ -114,6 +114,7 @@ virtual bool IsPageMainFrame(content::RenderFrameHost* rfh) const = 0; virtual void OnTimingChanged() = 0; + virtual void OnPageInputTimingChanged(uint64_t num_input_events) = 0; virtual void OnSubFrameTimingChanged( content::RenderFrameHost* rfh, const mojom::PageLoadTiming& timing) = 0; @@ -258,6 +259,7 @@ void UpdateSoftNavigationCount(uint32_t soft_navigation_count); void UpdatePageInputTiming(const mojom::InputTiming& input_timing_delta); + void MaybeUpdateMainFrameIntersectionRect( content::RenderFrameHost* render_frame_host, const mojom::FrameMetadataPtr& frame_metadata);
diff --git a/components/page_load_metrics/browser/page_load_tracker.cc b/components/page_load_metrics/browser/page_load_tracker.cc index 43e3e7c..9206d4cf 100644 --- a/components/page_load_metrics/browser/page_load_tracker.cc +++ b/components/page_load_metrics/browser/page_load_tracker.cc
@@ -809,6 +809,12 @@ metrics_update_dispatcher_.timing().Clone(); } +void PageLoadTracker::OnPageInputTimingChanged(uint64_t num_input_events) { + for (const auto& observer : observers_) { + observer->OnPageInputTimingUpdate(num_input_events); + } +} + void PageLoadTracker::OnSubFrameTimingChanged( content::RenderFrameHost* rfh, const mojom::PageLoadTiming& timing) {
diff --git a/components/page_load_metrics/browser/page_load_tracker.h b/components/page_load_metrics/browser/page_load_tracker.h index 739e53f..ef0c77a 100644 --- a/components/page_load_metrics/browser/page_load_tracker.h +++ b/components/page_load_metrics/browser/page_load_tracker.h
@@ -202,6 +202,7 @@ // PageLoadMetricsUpdateDispatcher::Client implementation: bool IsPageMainFrame(content::RenderFrameHost* rfh) const override; void OnTimingChanged() override; + void OnPageInputTimingChanged(uint64_t num_input_events) override; void OnSubFrameTimingChanged(content::RenderFrameHost* rfh, const mojom::PageLoadTiming& timing) override; void OnSubFrameInputTimingChanged(
diff --git a/components/password_manager/core/browser/password_sync_util.cc b/components/password_manager/core/browser/password_sync_util.cc index 9d4633a..980a0a3 100644 --- a/components/password_manager/core/browser/password_sync_util.cc +++ b/components/password_manager/core/browser/password_sync_util.cc
@@ -45,20 +45,21 @@ .email; } -bool IsSyncAccountCredential(const PasswordForm& form, +bool IsSyncAccountCredential(const GURL& url, + const std::u16string& username, const syncer::SyncService* sync_service, const signin::IdentityManager* identity_manager) { - if (!GURL(form.signon_realm).DomainIs("google.com")) + if (!url.DomainIs("google.com")) return false; // The empty username can mean that Chrome did not detect it correctly. For // reasons described in http://crbug.com/636292#c1, the username is suspected // to be the sync username unless proven otherwise. - if (form.username_value.empty()) + if (username.empty()) return true; return gaia::AreEmailsSame( - base::UTF16ToUTF8(form.username_value), + base::UTF16ToUTF8(username), GetSyncUsernameIfSyncingPasswords(sync_service, identity_manager)); }
diff --git a/components/password_manager/core/browser/password_sync_util.h b/components/password_manager/core/browser/password_sync_util.h index 7bfda623..3a83e4b5 100644 --- a/components/password_manager/core/browser/password_sync_util.h +++ b/components/password_manager/core/browser/password_sync_util.h
@@ -29,10 +29,11 @@ const syncer::SyncService* sync_service, const signin::IdentityManager* identity_manager); -// Returns true if |form| corresponds to the account specified by -// GetSyncUsernameIfSyncingPasswords. Returns false if +// Returns true if |url| is google.com domain and |username| corresponds to the +// account specified by GetSyncUsernameIfSyncingPasswords. Returns false if // GetSyncUsernameIfSyncingPasswords does not specify any account. -bool IsSyncAccountCredential(const PasswordForm& form, +bool IsSyncAccountCredential(const GURL& url, + const std::u16string& username, const syncer::SyncService* sync_service, const signin::IdentityManager* identity_manager);
diff --git a/components/password_manager/core/browser/password_sync_util_unittest.cc b/components/password_manager/core/browser/password_sync_util_unittest.cc index db4f31b..4356ed99 100644 --- a/components/password_manager/core/browser/password_sync_util_unittest.cc +++ b/components/password_manager/core/browser/password_sync_util_unittest.cc
@@ -24,6 +24,7 @@ PasswordForm SimpleGAIAChangePasswordForm() { PasswordForm form; + form.url = GURL("https://myaccount.google.com/"); form.signon_realm = "https://myaccount.google.com/"; return form; } @@ -31,6 +32,7 @@ PasswordForm SimpleForm(const char* signon_realm, const char* username) { PasswordForm form; form.signon_realm = signon_realm; + form.url = GURL(signon_realm); form.username_value = ASCIIToUTF16(username); return form; } @@ -97,8 +99,9 @@ SetSyncingPasswords(true); FakeSigninAs(kTestCases[i].fake_sync_username); EXPECT_EQ(kTestCases[i].expected_result, - IsSyncAccountCredential(kTestCases[i].form, sync_service(), - identity_manager())); + IsSyncAccountCredential(kTestCases[i].form.url, + kTestCases[i].form.username_value, + sync_service(), identity_manager())); } }
diff --git a/components/password_manager/core/browser/sync_credentials_filter.cc b/components/password_manager/core/browser/sync_credentials_filter.cc index 3f3df71a..ab94afb 100644 --- a/components/password_manager/core/browser/sync_credentials_filter.cc +++ b/components/password_manager/core/browser/sync_credentials_filter.cc
@@ -56,8 +56,8 @@ } else { // If kEnablePasswordsAccountStorage is NOT enabled, then don't allow saving // the password for the sync account specifically. - if (sync_util::IsSyncAccountCredential(form, sync_service, - identity_manager)) { + if (sync_util::IsSyncAccountCredential(form.url, form.username_value, + sync_service, identity_manager)) { return false; } } @@ -87,8 +87,9 @@ void SyncCredentialsFilter::ReportFormLoginSuccess( const PasswordFormManager& form_manager) const { + const PasswordForm& form = form_manager.GetPendingCredentials(); if (!form_manager.IsNewLogin() && - sync_util::IsSyncAccountCredential(form_manager.GetPendingCredentials(), + sync_util::IsSyncAccountCredential(form.url, form.username_value, sync_service_factory_function_.Run(), client_->GetIdentityManager())) { base::RecordAction(base::UserMetricsAction(
diff --git a/components/password_manager/core/browser/sync_username_test_base.cc b/components/password_manager/core/browser/sync_username_test_base.cc index d26188c..88b4811 100644 --- a/components/password_manager/core/browser/sync_username_test_base.cc +++ b/components/password_manager/core/browser/sync_username_test_base.cc
@@ -60,6 +60,7 @@ PasswordForm SyncUsernameTestBase::SimpleGaiaForm(const char* username) { PasswordForm form; form.signon_realm = "https://accounts.google.com"; + form.url = GURL("https://accounts.google.com"); form.username_value = ASCIIToUTF16(username); form.form_data = CreateSigninFormData(GURL(form.signon_realm), username); form.in_store = PasswordForm::Store::kProfileStore; @@ -70,6 +71,7 @@ PasswordForm SyncUsernameTestBase::SimpleNonGaiaForm(const char* username) { PasswordForm form; form.signon_realm = "https://site.com"; + form.url = GURL("https://site.com"); form.username_value = ASCIIToUTF16(username); form.form_data = CreateSigninFormData(GURL(form.signon_realm), username); form.in_store = PasswordForm::Store::kProfileStore;
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc index 1f4ce9ff..4f08cae 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
@@ -183,21 +183,9 @@ bool SavedPasswordsPresenter::EditPassword(const PasswordForm& form, std::u16string new_password) { - auto is_equal = [&form](const PasswordForm& form_to_check) { - return ArePasswordFormUniqueKeysEqual(form, form_to_check); - }; - auto found = base::ranges::find_if(passwords_, is_equal); - if (found == passwords_.end()) - return false; - - found->password_value = std::move(new_password); - found->date_password_modified = base::Time::Now(); - found->password_issues.clear(); - PasswordStoreInterface& store = - form.IsUsingAccountStore() ? *account_store_ : *profile_store_; - store.UpdateLogin(*found); - NotifyEdited(*found); - return true; + CredentialUIEntry entry(form); + entry.password = new_password; + return EditSavedCredentials(entry); } bool SavedPasswordsPresenter::EditSavedPasswords( @@ -206,15 +194,10 @@ const std::u16string& new_password) { // TODO(crbug.com/1184691): Change desktop settings and maybe iOS to use this // presenter for updating the duplicates. - std::vector<PasswordForm> forms_to_change; - - std::string current_form_key = CreateSortKey(form, IgnoreStore(true)); - const auto range = sort_key_to_password_forms_.equal_range(current_form_key); - - base::ranges::transform(range.first, range.second, - std::back_inserter(forms_to_change), - [](const auto& pair) { return pair.second; }); - return EditSavedPasswords(forms_to_change, new_username, new_password); + CredentialUIEntry entry(form); + entry.password = new_password; + entry.username = new_username; + return EditSavedCredentials(entry); } bool SavedPasswordsPresenter::EditSavedCredentials( @@ -368,19 +351,6 @@ return credentials; } -std::vector<std::u16string> SavedPasswordsPresenter::GetUsernamesForRealm( - const std::string& signon_realm, - bool is_using_account_store) { - std::vector<std::u16string> usernames; - for (const auto& form : passwords_) { - if (form.signon_realm == signon_realm && - form.IsUsingAccountStore() == is_using_account_store) { - usernames.push_back(form.username_value); - } - } - return usernames; -} - void SavedPasswordsPresenter::AddObserver(Observer* observer) { observers_.AddObserver(observer); } @@ -424,41 +394,27 @@ void SavedPasswordsPresenter::OnGetPasswordStoreResultsFrom( PasswordStoreInterface* store, std::vector<std::unique_ptr<PasswordForm>> results) { - // Profile store passwords are always stored first in `passwords_`. - auto account_passwords_it = base::ranges::partition_point( - passwords_, - [](auto& password) { return !password.IsUsingAccountStore(); }); - if (store == profile_store_) { - // Old profile store passwords are in front. Create a temporary buffer for - // the new passwords and replace existing passwords. - std::vector<PasswordForm> new_passwords; - new_passwords.reserve(results.size() + passwords_.end() - - account_passwords_it); - auto new_passwords_back_inserter = std::back_inserter(new_passwords); - base::ranges::transform(results, new_passwords_back_inserter, - [](auto& result) { return std::move(*result); }); - std::move(account_passwords_it, passwords_.end(), - new_passwords_back_inserter); - passwords_ = std::move(new_passwords); - } else { - // Need to replace existing account passwords at the end. Can re-use - // existing `passwords_` vector. - passwords_.erase(account_passwords_it, passwords_.end()); - if (passwords_.capacity() < passwords_.size() + results.size()) - passwords_.reserve(passwords_.size() + results.size()); - base::ranges::transform(results, std::back_inserter(passwords_), - [](auto& result) { return std::move(*result); }); - } + bool is_account_store = store == account_store_.get(); - sort_key_to_password_forms_.clear(); - base::ranges::for_each(passwords_, [&](const auto& result) { - sort_key_to_password_forms_.insert( - std::make_pair(CreateSortKey(result, IgnoreStore(true)), result)); + // Remove cached credentials for current store. + base::EraseIf(sort_key_to_password_forms_, + [&is_account_store](const auto& pair) { + return pair.second.IsUsingAccountStore() == is_account_store; + }); + + // Move |results| into |sort_key_to_password_forms_|. + base::ranges::for_each(results, [&](const auto& result) { + PasswordForm form = std::move(*result); + sort_key_to_password_forms_.insert(std::make_pair( + CreateSortKey(form, IgnoreStore(true)), std::move(form))); }); - // Remove blocked or federated credentials. - base::EraseIf(passwords_, [](const auto& form) { - return form.blocked_by_user || form.IsFederatedCredential(); + // Update |passwords_|. + passwords_.clear(); + base::ranges::for_each(sort_key_to_password_forms_, [&](const auto& pair) { + PasswordForm form = pair.second; + if (!form.blocked_by_user && !form.IsFederatedCredential()) + passwords_.push_back(std::move(form)); }); NotifySavedPasswordsChanged();
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.h b/components/password_manager/core/browser/ui/saved_passwords_presenter.h index ddcff51..08b65b2 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.h +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
@@ -26,7 +26,7 @@ // passwords and register themselves as observers for changes. In contrast to // simply registering oneself as an observer of a password store directly, this // class possibly responds to changes in multiple password stores, such as the -// local and account store used for passwords for butter. +// local and account store used for passwords for account store users. // Furthermore, this class exposes a direct mean to edit a password, and // notifies its observers about this event. An example use case for this is the // bulk check settings page, where an edit operation in that page should result @@ -126,14 +126,6 @@ std::vector<PasswordForm> GetUniquePasswordForms() const; std::vector<CredentialUIEntry> GetSavedCredentials() const; - // Returns all the usernames for credentials saved for `signon_realm`. If - // `is_using_account_store` is true, this method will only consider - // credentials saved in the account store. Otherwiser it will only consider - // credentials saved in the profile store. - std::vector<std::u16string> GetUsernamesForRealm( - const std::string& signon_realm, - bool is_using_account_store); - // Allows clients and register and de-register themselves. void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); @@ -169,8 +161,7 @@ std::unique_ptr<PasswordUndoHelper> undo_helper_; - // Cache of the most recently obtained saved passwords. Profile store - // passwords are always stored first, and then account store passwords if any. + // Cache of the most recently obtained saved passwords. std::vector<PasswordForm> passwords_; // Structure used to deduplicate list of passwords.
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc index e3f6e8a..9513968 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
@@ -1136,43 +1136,6 @@ EXPECT_TRUE(account_store().IsEmpty()); } -TEST_F(SavedPasswordsPresenterWithTwoStoresTest, - ReturnsUsernamesForRealmFromSameStore) { - PasswordForm form = - CreateTestPasswordForm(PasswordForm::Store::kProfileStore); - - PasswordForm other_form = form; - other_form.username_value = u"test2@gmail.com"; - - PasswordForm account_store_form = other_form; - account_store_form.username_value = u"test3@gmail.com"; - account_store_form.in_store = PasswordForm::Store::kAccountStore; - - profile_store().AddLogin(form); - profile_store().AddLogin(other_form); - - account_store().AddLogin(account_store_form); - - RunUntilIdle(); - - ASSERT_THAT(profile_store().stored_passwords(), - ElementsAre(Pair(form.signon_realm, - UnorderedElementsAre(form, other_form)))); - - ASSERT_THAT(account_store().stored_passwords(), - ElementsAre(Pair(account_store_form.signon_realm, - ElementsAre(account_store_form)))); - - EXPECT_THAT( - presenter().GetUsernamesForRealm(form.signon_realm, - /*is_using_account_store=*/false), - UnorderedElementsAre(form.username_value, other_form.username_value)); - - EXPECT_THAT(presenter().GetUsernamesForRealm(account_store_form.signon_realm, - /*is_using_account_store=*/true), - ElementsAre(account_store_form.username_value)); -} - TEST_F(SavedPasswordsPresenterWithTwoStoresTest, GetUniquePasswords) { PasswordForm profile_store_form = CreateTestPasswordForm(PasswordForm::Store::kProfileStore);
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index 30996fc..d6b544e 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -86,6 +86,7 @@ Ist sie auf "true" gesetzt, werden Informationen zur Hintergrundbeleuchtung des Geräts ausgegeben.</translation> <translation id="1076751984131277498">Zulassungsliste von trennbaren USB-Geräten</translation> <translation id="1077675271127011209">Berichte mit Nutzungs- und Absturzdaten deaktivieren</translation> +<translation id="1079120839835170592">Die Event.path API wird bis M115 wieder aktiviert.</translation> <translation id="1079425471279127373">Mit dieser Richtlinie kannst du festlegen, ob einige Ursprünge von Webanwendungen mit erzwungener Installation über die Device Attributes Web API Geräteattribute wie Seriennummer oder Hostname abrufen können. Device Attributes API ist eine Liste mit Web APIs. Weitere Informationen findest du unter: https://wicg.github.io/WebApiDevice/device_attributes. Sie sind nur für Ursprünge verfügbar, die zu Webanwendungen mit erzwungener Installation über <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> gehören, oder für die in der Kiosk-Session konfigurierten.</translation> @@ -147,6 +148,7 @@ <translation id="1160939557934457296">Fortfahren von der Safe Browsing-Hinweisseite deaktivieren</translation> <translation id="1163080558183062209">Druckertypen auf der "Deny"-Liste deaktivieren</translation> <translation id="117059611145966538">Externe Druckserver</translation> +<translation id="117080706484659953">Lässt die Erkennung des Anwendungsbereichs von Richtlinien unter <ph name="MAC_OS_NAME" /> zu</translation> <translation id="1171785618439752042">Wenn die Richtlinie konfiguriert ist, wird angegeben, welche Verschlüsselungstypen bei der Anforderung von Kerberos-Tickets von einem <ph name="MS_AD_NAME" />-Server zulässig sind. Richtlinienkonfiguration: @@ -259,6 +261,7 @@ Wenn die Richtlinie nicht konfiguriert wird und <ph name="CHROME_CLEANUP_NAME" /> unerwünschte Software erkennt, können gemäß der durch <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" /> festgelegten Richtlinie Informationen zum Scan an Google gesendet werden. <ph name="CHROME_CLEANUP_NAME" /> fragt den Nutzer, ob die Bereinigung erwünscht ist, und bittet ihn, die Ergebnisse mit Google zu teilen, damit unerwünschte Software zukünftig besser erkannt werden kann. Diese Ergebnisse enthalten Dateimetadaten, automatisch installierte Erweiterungen und Registrierungsschlüssel, wie es im Whitepaper zum Datenschutz bei Chrome beschrieben ist. Unter <ph name="MS_WIN_NAME" /> steht diese Funktion nur bei Instanzen zur Verfügung, die Teil einer <ph name="MS_AD_NAME" />-Domain sind, auf denen Windows 10 Pro läuft oder die über <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> verwaltet werden.</translation> +<translation id="1285819498003746288">Die Event.path API ist nicht verfügbar.</translation> <translation id="1290634681382861275">Legt sonstige Einstellungen fest, u. a. für USB, Bluetooth, Richtlinienaktualisierung, Entwicklermodus und mehr.</translation> <translation id="1291880496936992484">Achtung: RC4 wird nach Version 52, etwa im September 2016, vollständig aus <ph name="PRODUCT_NAME" /> entfernt. Anschließend funktioniert diese Richtlinie nicht mehr. @@ -933,6 +936,17 @@ <translation id="1962864958436828230">Mindestgrößenbeschränkung zur Zwischenablagenbeschränkung für die Verhinderung von Datenlecks festlegen</translation> <translation id="1964634611280150550">Inkognitomodus deaktiviert</translation> <translation id="1964802606569741174">Diese Richtlinie hat keine Auswirkungen auf die Android YouTube App. Wenn der Sicherheitsmodus in YouTube erzwungen werden soll, darf das Installieren der Android YouTube App nicht zugelassen werden.</translation> +<translation id="1965363065727209968">„setTimeout(…, 0)“ wird häufig verwendet, um lange JavaScript-Aufgaben aufzuteilen. + Wenn die Richtlinie aktiviert ist, werden die JavaScript-Funktionen „setTimeouts“ und „setIntervals“ mit einem kleineren Intervall als 4 ms weniger aggressiv verzögert. + So wird die Leistung kurzfristig verbessert, aber für Websites, die die API missbrauchen, wird „setTimeouts“ trotzdem verzögert. + + Dies kann die Aufgabenreihenfolge auf einer Webseite verändern und unerwartetes Verhalten auf Websites bewirken, die auf eine bestimmte Reihenfolge angewiesen sind. + Außerdem kann dies Auswirkungen auf Websites haben, für die bei der Funktion „setTimeout()“ häufig ein Zeitlimit von 0 ms verwendet wird, etwa in Form einer erhöhten CPU-Auslastung. + + Für Nutzer, für die diese Richtlinie nicht konfiguriert ist, wird diese Änderung schrittweise in der stabilen Version von <ph name="PRODUCT_NAME" /> eingeführt. + + Diese Richtlinie kommt nur vorübergehend zum Einsatz und wird voraussichtlich in <ph name="PRODUCT_NAME" /> 107 entfernt. Die Frist kann verlängert werden, sofern bei Unternehmen Bedarf besteht. + </translation> <translation id="1967334955994230472">Projector deaktivieren</translation> <translation id="1969212217917526199">Überschreibt Richtlinien auf Fehlerbehebungs-Builds des Hosts für den Remotezugriff @@ -1464,6 +1478,14 @@ <translation id="2496180316473517155">Browserverlauf</translation> <translation id="2497751676088107779">Nutzerskript</translation> <translation id="2497965601277442929">Nutzern nicht erlauben, den Nur-HTTPS-Modus zu aktivieren</translation> +<translation id="249798396824949930"> Über diese Richtlinie wird geregelt, ob der Browser den obligatorischen Anwendungsbereich von Richtlinien unter <ph name="MAC_OS_NAME" /> erkennen kann. + + Wenn die Richtlinie aktiviert oder nicht konfiguriert ist, wird der Anwendungsbereich jeder Richtlinie vom Anwendungsbereich des jeweiligen verwalteten <ph name="MAC_OS_NAME" />-Profils bestimmt. + Ist die Richtlinie deaktiviert, werden alle Richtlinien als Richtlinien für die Computerebene erkannt. + + Diese Richtlinie kommt nur vorübergehend zum Einsatz, um einen reibungslosen Übergang zu Richtlinien mit korrekten Anwendungsbereichen unter <ph name="MAC_OS_NAME" /> zu ermöglichen. Sie wird in <ph name="PRODUCT_NAME" /> 107 entfernt. + + </translation> <translation id="2498238926436517902">Ablage immer automatisch ausblenden</translation> <translation id="250022556568924228">Wenn die Richtlinie aktiviert ist, lädt <ph name="PRODUCT_OS_NAME" /> die Nutzungsbedingungen herunter und zeigt sie jedes Mal an, wenn eine Sitzung mit einem lokalen Gerätekonto gestartet wird. Die Nutzer können sich erst in der Sitzung anmelden, nachdem sie die Nutzungsbedingungen akzeptiert haben. @@ -2511,6 +2533,7 @@ <translation id="3652670852519271837">Websites dürfen den Nutzer um Lesezugriff auf Dateien und Verzeichnisse über die File System API bitten</translation> <translation id="3653237928288822292">Symbol der Standardsuchmaschine</translation> <translation id="3654906736796256792">Ausführen der Audio-Sandbox zulassen</translation> +<translation id="3655885297177292093">Die Event.path API hat den Standardstatus: verfügbar vor M109 und nicht verfügbar von M109 bis M114.</translation> <translation id="3659542706175323490">Wenn die Richtlinie aktiviert ist, ist das Starten bei anliegender Netzspannung aktiviert, sofern die Funktion vom Gerät unterstützt wird. Diese Energieverwaltungsrichtlinie erlaubt den Neustart des Systems aus dem abgeschalteten oder dem Ruhezustand bei Verbindung mit einer Netzspannungsquelle. Wenn die Richtlinie deaktiviert ist, ist das Starten bei anliegender Netzspannung immer deaktiviert. @@ -2682,6 +2705,7 @@ <translation id="3838094946886335701">Wenn diese Richtlinie konfiguriert ist – jedoch nur wie empfohlen –, kannst du eine Liste mit Protokoll-Handlern registrieren, die mit den vom Nutzer registrierten zusammengeführt werden. Nachfolgend werden beide Handler-Gruppen verwendet. Setze die Eigenschaft "protocol" auf das Schema, z. B. "mailto", und die Eigenschaft "URL" auf das URL-Muster der Anwendung, die das im Feld "protocol" angegebene Schema bearbeitet. In dem Muster kann es einen "%s"-Platzhalter geben, der von der verarbeiteten URL ersetzt wird. Ein von der Richtlinie registrierter Protokoll-Handler kann vom Nutzer nicht entfernt werden. Allerdings können durch Installation eines neuen Standard-Handlers die von der Richtlinie installierten Protokoll-Handler geändert werden.</translation> +<translation id="3851443303439635700">Steuert den Verschachtelungsgrenzwert, bevor die JavaScript-Funktion „setTimeout()“ verzögert wird</translation> <translation id="3857816702027059082">Hiermit aktivierst du <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> für eine Liste von URLs. Wenn du diese Richtlinie konfigurierst, legst du damit fest, welche URLs für den Attestierungsablauf zugelassen sein sollen, um die Signalgruppe vom Computer abzurufen. @@ -3201,6 +3225,7 @@ <translation id="4472740647327683596">Seitenbreite in Mikrometern.</translation> <translation id="4474167089968829729">Aktiviert das Speichern von Passwörtern im Passwortmanager</translation> <translation id="4476769083125004742">Wenn diese Richtlinie auf <ph name="BLOCK_GEOLOCATION_SETTING" /> gesetzt ist, haben Android-Apps keinen Zugriff auf Standortdaten. Wenn du diese Richtlinie auf einen anderen Wert setzt oder sie nicht konfigurierst, wird der Nutzer um seine Zustimmung gebeten, wenn eine Android-App auf Standortdaten zugreifen möchte.</translation> +<translation id="4478248026668918517">Blockiert die Erkennung des Anwendungsbereichs von Richtlinien.</translation> <translation id="4479671363221255277">Wenn diese Richtlinie konfiguriert ist, kannst du eine Liste mit URL-Mustern erstellen, die angeben, welche Websites Nutzer um Lesezugriff auf Dateien oder Verzeichnisse im Dateisystem des Host-Betriebssystems über die File System API bitten dürfen. Wenn die Richtlinie nicht konfiguriert ist, gilt <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> für alle Websites, sofern konfiguriert. Falls nicht, werden die persönlichen Einstellungen des Nutzers verwendet. @@ -4041,6 +4066,7 @@ Wenn die Richtlinie nicht konfiguriert ist, können Nutzer die Sichtbarkeit von Karten steuern. Standardmäßig sind Karten sichtbar. </translation> +<translation id="5449690328792750354">Die Event.path API ist verfügbar.</translation> <translation id="5455609857202311243">Genehmigung der KDC-Richtlinie bei der HTTP-Authentifizierung ignorieren</translation> <translation id="5455888515928026628">Während der Anmeldung über den Sperrbildschirm kann <ph name="PRODUCT_OS_NAME" /> die Authentifizierung über einen Server (online) oder über ein Passwort im Cache (offline) ausführen. @@ -4781,6 +4807,7 @@ <translation id="6282799760374509080">Audioaufzeichnung gestatten oder ablehnen</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Cookie-Einstellungen</translation> +<translation id="6299147100249359151">Lässt die Erkennung des Anwendungsbereichs von Richtlinien zu.</translation> <translation id="6300871921951390976">Nutzer dürfen die Release-Version des Geräts nur ändern, wenn diese Richtlinie auf „True“ gesetzt ist. Wenn diese Richtlinie auf „False“ gesetzt oder nicht konfiguriert ist, dürfen Nutzer die Version nicht ändern. Die Einstellung <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> ist nur wirksam, wenn <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> auf „False“ gesetzt ist.</translation> @@ -6772,6 +6799,15 @@ <translation id="8410477879938914253">Die Richtlinie wird nur auf verwaltete Gastsitzungen angewendet. Wenn die Richtlinie auf „True“ gesetzt oder nicht konfiguriert ist, wird ein Dialogfeld angezeigt, über das der Nutzer dazu aufgefordert wird, die Abmeldung zu bestätigen oder abzulehnen, wenn das letzte Fenster geschlossen wird. Ist die Richtlinie auf „False“ gesetzt, wird das Dialogfeld nicht angezeigt und dadurch auch die automatische Abmeldung nach dem Schließen des letzten Fensters deaktiviert.</translation> +<translation id="8411050083243181286"> Ab M109 wird die nicht standardmäßige Event.path API entfernt, um die Webkompatibilität zu verbessern. Durch diese Richtlinie wird die API bis zur Version M115 wieder aktiviert. + + Ist diese Richtlinie aktiviert, ist die Event.path API verfügbar. + + Ist sie deaktiviert, ist die Event.path API nicht verfügbar. + + Wenn diese Richtlinie nicht konfiguriert ist, hat die Event.path API den Standardstatus: verfügbar vor M109 und nicht verfügbar von M109 bis 114. + + Die Richtlinie wird nach Chrome 115 entfernt.</translation> <translation id="8415953438346821074">Wenn du diese Einstellung aktivierst, werden die in <ph name="PRODUCT_NAME" />-Profilen gespeicherten Einstellungen, etwa Lesezeichen, Daten zum automatischen Ausfüllen und Passwörter, zusätzlich in eine Datei geschrieben, die im Roaming-Nutzerprofilordner oder an einem vom Administrator über die Richtlinie <ph name="ROAMING_PROFILE_LOCATION_POLICY_NAME" /> festgelegten Ort gespeichert wird. Durch die Aktivierung dieser Richtlinie wird die Cloudsynchronisierung deaktiviert. Wenn diese Richtlinie deaktiviert oder nicht konfiguriert ist, werden nur die regulären lokalen Profile verwendet.</translation>
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 57a444b..30f53f5 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -147,6 +147,7 @@ <translation id="1160939557934457296">Menonaktifkan untuk melanjutkan dari halaman peringatan Safe Browsing</translation> <translation id="1163080558183062209">Menonaktifkan jenis printer di daftar tolak</translation> <translation id="117059611145966538">Server cetak eksternal</translation> +<translation id="117080706484659953">Mengizinkan deteksi cakupan kebijakan di <ph name="MAC_OS_NAME" /></translation> <translation id="1171785618439752042">Menyetel kebijakan akan menentukan jenis enkripsi yang diizinkan saat meminta tiket Kerberos dari server <ph name="MS_AD_NAME" />. Menyetel kebijakan ke: @@ -946,6 +947,17 @@ <translation id="1962864958436828230">Menyetel batas ukuran minimal untuk batasan papan klip pencegahan kebocoran data</translation> <translation id="1964634611280150550">Mode samaran dinonaktifkan</translation> <translation id="1964802606569741174">Kebijakan ini tidak memengaruhi aplikasi YouTube Android. Jika Mode Perlindungan di YouTube harus diterapkan, pemasangan aplikasi YouTube Android harus dilarang.</translation> +<translation id="1965363065727209968">setTimeout(…, 0) biasa digunakan untuk menguraikan tugas JavaScript panjang. + Jika kebijakan disetel ke Aktif, setTimeout dan setInterval dengan interval yang lebih kecil dari 4 md tidak akan dibatasi dengan sangat cepat. + Hal ini meningkatkan performa jangka pendek. Namun, situs yang menyalahgunakan API pada akhirnya akan memiliki setTimeout terbatas. + + Hal ini dapat mengubah urutan tugas di suatu halaman web, yang menyebabkan perilaku tak terduga di situs yang bergantung pada urutan tertentu dengan cara tertentu pula. + Kebijakan ini juga dapat memengaruhi situs yang menggunakan banyak setTimeout() dengan waktu tunggu 0 md, misalnya penambahan beban CPU. + + Bagi pengguna yang tidak menyetel kebijakan ini, <ph name="PRODUCT_NAME" /> akan meluncurkan perubahan secara bertahap pada saluran Stabil. + + Kebijakan ini bersifat sementara dan akan dihapus di <ph name="PRODUCT_NAME" /> 107. Batas waktu ini dapat diperpanjang jika diperlukan di antara perusahaan. + </translation> <translation id="1967334955994230472">Nonaktifkan Projector</translation> <translation id="1969212217917526199">Menggantikan kebijakan pada versi Debug untuk host akses jarak jauh. @@ -1490,6 +1502,14 @@ <translation id="2496180316473517155">Histori penjelajahan</translation> <translation id="2497751676088107779">Skrip pengguna</translation> <translation id="2497965601277442929">Jangan izinkan pengguna mengaktifkan Mode Khusus HTTPS</translation> +<translation id="249798396824949930"> Mengontrol apakah browser dapat mendeteksi cakupan kebijakan wajib di <ph name="MAC_OS_NAME" /> atau tidak. + + Jika kebijakan disetel ke Aktif atau tidak disetel, setiap cakupan kebijakan akan ditentukan oleh cakupan profil yang dikelola <ph name="MAC_OS_NAME" />. + Jika kebijakan disetel ke Nonaktif, semua kebijakan akan dianggap sebagai kebijakan cakupan perangkat. + + Kebijakan ini bersifat sementara untuk memudahkan transisi ke kebijakan dengan cakupan yang benar di <ph name="MAC_OS_NAME" /> dan akan dihapus di <ph name="PRODUCT_NAME" /> 107. + + </translation> <translation id="2498238926436517902">Selalu sembunyikan rak secara otomatis</translation> <translation id="250022556568924228">Jika kebijakan disetel, <ph name="PRODUCT_OS_NAME" /> akan mendownload Persyaratan Layanan dan menampilkannya kepada pengguna saat sesi akun lokal perangkat dimulai. Pengguna hanya dapat login ke sesi setelah menerima Persyaratan Layanan. @@ -2712,6 +2732,7 @@ <translation id="3838094946886335701">Jika menyetel kebijakan (sebagai direkomendasikan saja), Anda akan dapat mendaftarkan daftar pengendali protokol, yang digabungkan dengan yang didaftarkan pengguna, sehingga keduanya dapat digunakan. Setel properti "protokol" ke skema, seperti "mailto", dan setel properti "URL" ke pola URL aplikasi yang menangani skema yang ditentukan dalam kolom "protokol". Pola dapat mencakup placeholder "%s", yang diganti dengan URL yang ditangani. Pengguna tidak dapat menghapus pengendali protokol yang didaftarkan oleh kebijakan. Namun, dengan menginstal pengendali default baru, pengguna dapat mengubah pengendali protokol yang diinstal oleh kebijakan.</translation> +<translation id="3851443303439635700">Mengontrol batas bertingkat sebelum fungsi setTimeout() JavaScript mulai dibatasi</translation> <translation id="3857816702027059082">Mengaktifkan <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> untuk daftar URL. Menyetel kebijakan ini akan menentukan URL mana yang akan diizinkan menjadi bagian dari alur pengesahan untuk mendapatkan serangkaian sinyal dari perangkat. @@ -3243,6 +3264,7 @@ <translation id="4472740647327683596">Lebar halaman dalam mikrometer.</translation> <translation id="4474167089968829729">Aktifkan penyimpanan sandi di pengelola sandi</translation> <translation id="4476769083125004742">Jika kebijakan ini disetel ke <ph name="BLOCK_GEOLOCATION_SETTING" />, aplikasi Android tidak dapat mengakses informasi lokasi. Jika Anda menyetel kebijakan ini ke nilai lain atau tidak menyetel kebijakan, pengguna akan dimintai persetujuan ketika aplikasi Android ingin mengakses informasi lokasi.</translation> +<translation id="4478248026668918517">Blokir deteksi cakupan Kebijakan.</translation> <translation id="4479671363221255277">Menyetel kebijakan memungkinkan Anda menetapkan daftar pola URL yang menentukan situs mana yang dapat meminta akses baca ke file atau direktori di sistem file pada sistem operasi host melalui File System API. Tidak menyetel kebijakan berarti <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> akan berlaku untuk semua situs, jika disetel. Jika tidak, setelan pribadi pengguna akan berlaku. @@ -4853,6 +4875,7 @@ <translation id="6282799760374509080">Izinkan atau tolak penangkapan audio</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Setelan cookie</translation> +<translation id="6299147100249359151">Izinkan deteksi cakupan Kebijakan.</translation> <translation id="6300871921951390976">Jika kebijakan ini disetel ke Benar (True), pengguna hanya akan diizinkan mengubah saluran rilis perangkat. Jika kebijakan ini disetel ke Salah (False) atau tidak disetel, pengguna tidak akan diizinkan mengubah saluran. Menyetel <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> hanya akan berpengaruh jika <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> disetel ke Salah (False).</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 94bb00e..c3726b61 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -149,6 +149,7 @@ <translation id="1160939557934457296">Disattiva procedendo dalla pagina di avviso Navigazione sicura</translation> <translation id="1163080558183062209">Disattiva tipi di stampanti nell'elenco di tipi non consentiti</translation> <translation id="117059611145966538">Server di stampa esterni</translation> +<translation id="117080706484659953">Consenti il rilevamento dell'ambito dei criteri su <ph name="MAC_OS_NAME" /></translation> <translation id="1171785618439752042">La configurazione del criterio consente di determinare quali tipi di crittografia sono consentiti quando vengono richiesti ticket Kerberos a un server <ph name="MS_AD_NAME" />. La configurazione del criterio su: @@ -943,6 +944,17 @@ <translation id="1962864958436828230">Imposta le dimensioni minime dei dati per la limitazione relativa agli appunti, al fine di impedire la fuga di dati</translation> <translation id="1964634611280150550">Modalità di navigazione in incognito non attiva</translation> <translation id="1964802606569741174">Questa norma non ha effetto sull'app YouTube per Android. Se è necessario applicare la modalità di protezione di YouTube, l'installazione dell'app YouTube per Android non deve essere consentita.</translation> +<translation id="1965363065727209968">setTimeout(…, 0) viene comunemente utilizzato per suddividere le attività JavaScript lunghe. + Se il criterio viene impostato su Enabled, i valori di setTimeouts e setIntervals con un intervallo inferiore a 4 ms non vengono limitati in modo aggressivo. + Ciò migliora le prestazioni a breve termine, ma in definitiva i valori di setTimeouts dei siti web che abusano dell'API verranno fatti rientrare nei limiti. + + L'operazione potrebbe modificare l'ordine delle attività su una pagina web, causando comportamenti imprevisti sui siti che dipendono in qualche misura da un ordine specifico. + Potrebbe anche incidere sui siti che utilizzano spesso setTimeout() con timeout di 0 ms, ad es. causando un aumento del carico della CPU. + + Per gli utenti per i quali il criterio non è stato impostato, <ph name="PRODUCT_NAME" /> renderà disponibile gradualmente la modifica sul canale stabile. + + Si tratta di un criterio temporaneo di cui è prevista la rimozione in <ph name="PRODUCT_NAME" /> 107. Questo termine potrebbe essere esteso nel caso in cui le aziende dovessero averne bisogno. + </translation> <translation id="1967334955994230472">Disattiva Proiettore</translation> <translation id="1969212217917526199">Sostituisce le build di debug dell'host di accesso remoto. @@ -1487,6 +1499,14 @@ <translation id="2496180316473517155">Cronologia di navigazione</translation> <translation id="2497751676088107779">Script utente</translation> <translation id="2497965601277442929">Non consentire agli utenti di attivare la Modalità solo HTTPS</translation> +<translation id="249798396824949930"> Consente di stabilire se il browser può rilevare l'ambito dei criteri obbligatori su <ph name="MAC_OS_NAME" /> o meno. + + Se il criterio viene impostato su Enabled o se non viene configurato, l'ambito di ogni criterio viene determinato dall'ambito del profilo gestito di <ph name="MAC_OS_NAME" />. + Se viene impostato su Disabled, tutti i criteri vengono riconosciuti come criterio dell' ambito macchina. + + Questo criterio è temporaneo per semplificare la transizione ai criteri con ambito corretto su <ph name="MAC_OS_NAME" /> e verrà rimosso in <ph name="PRODUCT_NAME" /> 107. + + </translation> <translation id="2498238926436517902">Nascondi sempre automaticamente la barra delle app</translation> <translation id="250022556568924228">Se il criterio viene configurato, <ph name="PRODUCT_OS_NAME" /> scarica i Termini di servizio e li presenta agli utenti a ogni avvio di sessione con un account locale del dispositivo. Gli utenti possono accedere alla sessione dopo aver accettato i Termini di servizio. @@ -2705,6 +2725,7 @@ <translation id="3838094946886335701">Se il criterio viene impostato (solo come consigliato), puoi registrare un elenco di gestori di protocolli che vengono uniti a quelli registrati dall'utente, con conseguente utilizzo di entrambi i gruppi. Imposta la proprietà "protocollo" sullo schema (ad esempio "mailto") e la proprietà "URL" sul pattern URL dell'applicazione che gestisce lo schema specificato nel campo "protocollo". Il pattern può includere un segnaposto "%s", che viene sostituito dall'URL gestito. Gli utenti non possono rimuovere un gestore di protocollo registrato tramite il criterio. Se però installano un nuovo gestore predefinito, possono cambiare i gestori di protocolli installati in base al criterio.</translation> +<translation id="3851443303439635700">Controlla la soglia di nidificazione prima della quale la funzione JavaScript setTimeout() inizia a essere bloccata</translation> <translation id="3857816702027059082">Consente di attivare <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> per un elenco di URL. La configurazione di questo criterio consente di specificare gli URL autorizzati a far parte del flusso di attestazione per ricevere l'insieme di segnali dalla macchina. @@ -3223,6 +3244,7 @@ <translation id="4472740647327683596">La larghezza della pagina in micron.</translation> <translation id="4474167089968829729">Attiva il salvataggio delle password in Gestione password</translation> <translation id="4476769083125004742">Se la norma viene impostata su <ph name="BLOCK_GEOLOCATION_SETTING" />, le app Android non possono accedere ai dati sulla posizione. Se la norma viene impostata su qualsiasi altro valore o non viene impostata, all'utente viene chiesta l'autorizzazione quando un'app Android vuole accedere ai dati sulla posizione.</translation> +<translation id="4478248026668918517">Blocca il rilevamento dell'ambito dei criteri.</translation> <translation id="4479671363221255277">La configurazione del criterio consente di elencare pattern URL che specificano quali siti possono richiedere agli utenti l'accesso di lettura di file o directory nel file system del sistema operativo host tramite l'API file system. Se il criterio non viene configurato, <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> si applica per tutti i siti, se impostato. In caso contrario, vengono applicate le impostazioni personali degli utenti. @@ -4824,6 +4846,7 @@ <translation id="6282799760374509080">Consenti o nega acquisizione audio</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Impostazioni dei cookie</translation> +<translation id="6299147100249359151">Consenti il rilevamento dell'ambito dei criteri.</translation> <translation id="6300871921951390976">Gli utenti sono autorizzati a modificare il canale di rilascio del dispositivo solo se questo criterio è impostato su True. Se questo criterio è impostato su False o non viene configurato, gli utenti non potranno modificare il canale. L'impostazione di <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> ha effetto solo se <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> è impostato su False.</translation>
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index deedad7..bbc74f9a 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -143,6 +143,7 @@ <translation id="1160939557934457296">セーフ ブラウジングの警告ページからの続行を無効にする</translation> <translation id="1163080558183062209">拒否リストのプリンタタイプを無効にする</translation> <translation id="117059611145966538">外部プリント サーバー</translation> +<translation id="117080706484659953"><ph name="MAC_OS_NAME" /> でポリシー スコープの検出を許可します</translation> <translation id="1171785618439752042">このポリシーでは、<ph name="MS_AD_NAME" /> サーバーに Kerberos チケットをリクエストする際に許可する暗号化タイプを指定できます。 このポリシーには、次のいずれかを指定します。 @@ -877,6 +878,17 @@ <translation id="1962864958436828230">データ漏洩防止のクリップボード制限の最小サイズを設定する</translation> <translation id="1964634611280150550">シークレット モードを無効にする</translation> <translation id="1964802606569741174">このポリシーは Android YouTube アプリには適用されません。YouTube でセーフモードを有効にする場合は、Android YouTube アプリのインストールを禁止する必要があります。</translation> +<translation id="1965363065727209968">setTimeout(…, 0) は、一般的に長い JavaScript タスクを分割する目的で使用されます。 + このポリシーを有効に設定した場合、4 ミリ秒未満の間隔が指定された setTimeouts と setIntervals は積極的にはクランプされません。 + これにより短期的および水平的なパフォーマンスは向上しますが、API を誤用しているウェブサイトでは引き続き setTimeouts がクランプされることになります。 + + ウェブページによってはタスクの実行順序が変更され、特定の実行順序でのみ機能するサイトでは予期しない動作が発生することがあります。 + また、タイムアウトを 0 ミリ秒に設定した setTimeout() が多く使用されているサイトでも影響が生じる可能性があります(CPU の負荷が増加するなど)。 + + このポリシーを未設定のままにした場合、<ph name="PRODUCT_NAME" /> の Stable チャンネルで段階的に変更が適用されます。 + + これは、<ph name="PRODUCT_NAME" /> 107 で削除が計画されている一時的なポリシーです。企業からのニーズがある場合、この期限は延長される可能性があります。 + </translation> <translation id="1967334955994230472">プロジェクターを無効にする</translation> <translation id="1969212217917526199">リモート アクセス ホストの Debug ビルドでポリシーをオーバーライドします。 @@ -1373,6 +1385,14 @@ <translation id="2496180316473517155">閲覧履歴</translation> <translation id="2497751676088107779">ユーザー スクリプト</translation> <translation id="2497965601277442929">ユーザーに HTTPS 専用モードの有効化を許可しない</translation> +<translation id="249798396824949930"> ブラウザに <ph name="MAC_OS_NAME" /> で必須ポリシー スコープの検出を許可するかどうかを管理します。 + + このポリシーを有効に設定するか、未設定のままにした場合、各ポリシーのスコープは <ph name="MAC_OS_NAME" /> 管理対象プロファイルのスコープによって決まります。 + このポリシーを無効に設定した場合、すべてのポリシーがマシンスコープ ポリシーとして認識されます。 + + このポリシーは、<ph name="MAC_OS_NAME" /> で適切にスコープが設定されたポリシーへの移行をスムーズに行うための一時的なものであり、<ph name="PRODUCT_NAME" /> 107 で削除されます。 + + </translation> <translation id="2498238926436517902">常にシェルフを自動的に非表示にする</translation> <translation id="250022556568924228">このポリシーを設定した場合、デバイスのローカル アカウントのセッションが開始されると、<ph name="PRODUCT_OS_NAME" /> は利用規約をダウンロードしてユーザーに表示します。利用規約に同意した場合のみ、ユーザーはセッションにログインできます。このポリシーを未設定のままにした場合、利用規約は表示されません。このポリシーは、<ph name="PRODUCT_OS_NAME" /> による利用規約のダウンロードが可能な URL に設定する必要があります。利用規約は書式なしテキストで、MIME タイプの text/plain として配信してください。マークアップ形式は使用できません。</translation> <translation id="250151283451228612"><ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" /> が有効な場合に、<ph name="DEVICE_POWER_PEAK_SHIFT_BATTERY_THRESHOLD_POLICY_NAME" /> では電力ピークシフトのバッテリーのしきい値をパーセントで設定できます。 @@ -2562,6 +2582,7 @@ <translation id="3838094946886335701">このポリシーを設定した場合(推奨)、プロトコル ハンドラのリストを登録できます。プロトコル ハンドラはユーザーが登録するプロトコル ハンドラと統合され、両方のセットが使用されます。protocol プロパティには「mailto」などのスキームを設定します。URL プロパティには、「protocol」フィールドで指定したスキームを処理するアプリケーションの URL パターンを設定します。このパターンに「%s」プレースホルダを含めて、処理された URL で置き換えることもできます。 ユーザーはポリシーで登録されたプロトコル ハンドラを削除することはできません。ただし、新しいデフォルトのハンドラをインストールすることにより、ポリシーでインストールされたプロトコル ハンドラを変更できます。</translation> +<translation id="3851443303439635700">JavaScript の setTimeout() 関数のクランプを開始するネストのしきい値を管理します</translation> <translation id="3857816702027059082"><ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> を有効にする URL のリストを指定します。 このポリシーでは、パソコンから一連のシグナルを受け取る認証フローに含める URL を指定できます。 @@ -3062,6 +3083,7 @@ <translation id="4472740647327683596">ページの幅(マイクロメートル)</translation> <translation id="4474167089968829729">パスワード マネージャーへのパスワード保存を有効にする</translation> <translation id="4476769083125004742">このポリシーを <ph name="BLOCK_GEOLOCATION_SETTING" /> に設定した場合、Android アプリは位置情報にアクセスできません。このポリシーを他の値に設定するか未設定のままにした場合、Android アプリで位置情報へのアクセスが必要になったときには、ユーザーに同意が求められます。</translation> +<translation id="4478248026668918517">ポリシー スコープの検出をブロックする。</translation> <translation id="4479671363221255277">このポリシーでは、ホスト オペレーティング システムのファイル システム内にあるファイルやディレクトリに File System API 経由で読み取りアクセスすることに関して、ユーザーに許可を要求できるサイトの URL パターンリストを指定できます。 このポリシーを未設定のままにした場合、<ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> が設定されていればその設定がすべてのサイトで使用され、設定されていなければユーザーの個人設定が適用されます。 @@ -4565,6 +4587,7 @@ <translation id="6282799760374509080">音声キャプチャを許可または拒否する</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Cookie の設定</translation> +<translation id="6299147100249359151">ポリシー スコープの検出を許可する。</translation> <translation id="6300871921951390976">このポリシーが True に設定されている場合、ユーザーにはデバイスのリリース チャンネルの変更のみが許可されます。このポリシーが False か未設定の場合、ユーザーはチャンネルを変更できません。 <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> の設定は、<ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> が False に設定されている場合にのみ適用されます。</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index 178c4af..0bbb1238 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -147,6 +147,7 @@ <translation id="1160939557934457296">세이프 브라우징 경고 페이지 사용 중지</translation> <translation id="1163080558183062209">거부 목록에 있는 프린터 유형 사용 중지</translation> <translation id="117059611145966538">외부 인쇄 서버</translation> +<translation id="117080706484659953"><ph name="MAC_OS_NAME" />에서 정책 범위 감지 허용</translation> <translation id="1171785618439752042">정책을 설정하면 <ph name="MS_AD_NAME" /> 서버에서 Kerberos 티켓을 요청할 때 어떤 암호화 유형이 허용되는지 지정됩니다. 정책을 다음과 같이 설정할 수 있습니다. @@ -944,6 +945,17 @@ <translation id="1962864958436828230">데이터 유출 방지를 위한 클립보드 제한용 최소 크기 한도 설정</translation> <translation id="1964634611280150550">시크릿 모드 사용이 중지됨</translation> <translation id="1964802606569741174">이 정책은 Android YouTube 앱에 아무런 영향도 미치지 않습니다. YouTube의 안전 모드를 실행해야 하는 경우 Android YouTube 앱 설치를 허용하지 않아야 합니다.</translation> +<translation id="1965363065727209968">setTimeout(…, 0)은 긴 자바스크립트 작업을 세분화하는 데 흔히 사용됩니다. + 정책을 사용으로 설정하면 간격이 4ms 미만인 setTimeout 및 setInterval이 제대로 고정되지 않으므로 + 짧은 기간의 성능이 개선됩니다. 단, API를 악용하는 웹사이트에서는 여전히 setTimeout이 고정됩니다. + + setTimeout 고정되지 않으므로 웹페이지에서 작업 순서가 변경될 수 있으며, 특정 순서에 의존하는 사이트에서는 예기치 않은 동작이 발생할 수 있습니다. + 또한 시간 초과가 0ms인 setTimeout()이 많은 경우 사이트에서 CPU 부하 증가 등의 문제가 발생할 수 있습니다. + + 정책을 설정하지 않은 사용자의 경우 <ph name="PRODUCT_NAME" />에서 공개 버전 채널을 통해 점진적으로 변경사항을 출시할 예정입니다. + + 이는 임시 정책으로 <ph name="PRODUCT_NAME" /> 107에서 삭제됩니다. 기업에 필요한 경우 기한이 연장될 수 있습니다. + </translation> <translation id="1967334955994230472">Projector 사용 중지</translation> <translation id="1969212217917526199">원격 액세스 호스트의 디버그 빌드 관련 정책을 재정의합니다. @@ -1488,6 +1500,14 @@ <translation id="2496180316473517155">인터넷 사용 기록</translation> <translation id="2497751676088107779">사용자 스크립트</translation> <translation id="2497965601277442929">사용자가 HTTPS 전용 모드를 사용 설정하도록 허용하지 않음</translation> +<translation id="249798396824949930"> 브라우저가 <ph name="MAC_OS_NAME" />에서 필수 정책 범위를 감지할 수 있는지를 제어합니다. + + 정책을 사용으로 설정하거나 설정하지 않으면 각 정책의 범위가 <ph name="MAC_OS_NAME" /> 관리 프로필의 범위에 따라 결정됩니다. + 정책을 사용 중지로 설정하면 모든 정책이 시스템 범위 정책으로 인식됩니다. + + 이는 <ph name="MAC_OS_NAME" />에서 범위가 제대로 지정된 정책으로 원활하게 전환하기 위해 사용하는 임시 정책이며, <ph name="PRODUCT_NAME" /> 107에서 삭제될 예정입니다. + + </translation> <translation id="2498238926436517902">항상 실행기 자동 숨김</translation> <translation id="250022556568924228">정책을 설정하면 <ph name="PRODUCT_OS_NAME" />에서 서비스 약관을 다운로드하여 기기 로컬 계정 세션이 시작될 때마다 사용자에게 서비스 약관을 표시합니다. 사용자는 서비스 약관을 수락한 후에만 세션에 로그인할 수 있습니다. @@ -2708,6 +2728,7 @@ <translation id="3838094946886335701">정책을 설정하면(권장되는 방식으로만) 프로토콜 핸들러 목록을 등록할 수 있으며, 여기에는 사용자가 등록한 핸들러가 병합되므로 두 핸들러가 모두 사용됩니다. '프로토콜' 속성을 'mailto'와 같은 스키마로, 'URL' 속성을 '프로토콜' 필드에 지정된 스키마를 처리하는 애플리케이션의 URL 패턴으로 설정합니다. 패턴에는 '%s' 자리표시자가 포함될 수 있으며, 이 부분은 처리된 URL로 교체됩니다. 사용자는 정책에 의해 등록된 프로토콜 핸들러를 삭제할 수 없습니다. 그러나 새 기본 핸들러를 설치하여 정책에 따라 설치된 프로토콜 핸들러를 변경할 수는 있습니다.</translation> +<translation id="3851443303439635700">자바스크립트 setTimeout() 함수가 고정되기 전에 중첩 기준점 제어</translation> <translation id="3857816702027059082">URL 목록에 대한 <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" />를 사용 설정합니다. 정책을 설정하면 시스템에서 여러 신호를 가져오기 위한 증명 흐름의 일부로서 어떤 URL을 허용할지 지정할 수 있습니다. @@ -3239,6 +3260,7 @@ <translation id="4472740647327683596">페이지의 너비(마이크로미터)입니다.</translation> <translation id="4474167089968829729">비밀번호 관리자에 비밀번호 저장 기능 사용</translation> <translation id="4476769083125004742">이 정책이 <ph name="BLOCK_GEOLOCATION_SETTING" />(으)로 설정되는 경우 Android 앱에서 위치 정보에 액세스할 수 없습니다. 이 정책을 다른 값으로 설정하거나 설정하지 않은 채로 두면 Android 앱에서 위치 정보에 액세스하려고 할 때 사용자에게 동의를 요청하는 메시지가 표시됩니다.</translation> +<translation id="4478248026668918517">정책 범위 감지 차단</translation> <translation id="4479671363221255277">정책을 설정하면 URL 패턴 목록을 만들어 사용자에게 File System API를 통해 호스트 운영체제의 파일 시스템 내 파일 또는 디렉터리에 대한 읽기 액세스 권한을 요청할 수 있는 사이트를 지정하는 것이 가능합니다. 정책을 설정하지 않았을 때 <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" />이 설정되어 있으면 모든 사이트에 적용되며 설정되어 있지 않으면 사용자의 개인 설정이 적용됩니다. @@ -4844,6 +4866,7 @@ <translation id="6282799760374509080">오디오 캡처 허용 또는 거부</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">쿠키 설정</translation> +<translation id="6299147100249359151">정책 범위 감지 허용</translation> <translation id="6300871921951390976">정책을 True로 설정하면 사용자가 기기의 출시 채널만 변경할 수 있습니다. 정책을 False로 설정하거나 설정하지 않으면 사용자가 채널을 변경할 수 없습니다. <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> 설정은 <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" />를 False로 설정하는 경우에만 적용됩니다.</translation>
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index b09dbba..602409ba 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -86,6 +86,7 @@ Se ela for definida como verdadeira, as informações sobre as luzes de fundo do dispositivo serão enviadas.</translation> <translation id="1076751984131277498">Lista de permissões de dispositivos USB removíveis</translation> <translation id="1077675271127011209">Desativar relatórios de uso e dados relacionados a falhas</translation> +<translation id="1079120839835170592">A API Event.path foi reativada até a versão M115.</translation> <translation id="1079425471279127373">Definir a política permite que algumas origens de aplicativos da web de instalação forçada recebam atributos de dispositivo (como número de série, nome do host) usando a API Device Attributes. A API Device Attributes é uma lista de APIs da Web. Consulte https://wicg.github.io/WebApiDevice/device_attributes (link em inglês). Essas APIs estão disponíveis apenas para origens que correspondem a aplicativos da Web de instalação forçada pela <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> ou para a configurada na sessão de quiosque.</translation> @@ -256,6 +257,7 @@ Se a política não for definida, a <ph name="CHROME_CLEANUP_NAME" /> poderá enviar os resultados da varredura de software indesejado ao Google de acordo com a política definida por <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. A <ph name="CHROME_CLEANUP_NAME" /> perguntará aos usuários se querem fazer a varredura e compartilhar os resultados com o Google para ajudar na detecção de software indesejado no futuro. Esses resultados contêm metadados de arquivos, extensões instaladas automaticamente e chaves de registro, conforme descrito no Whitepaper de Privacidade do Chrome. No <ph name="MS_WIN_NAME" />, essa funcionalidade está disponível apenas em instâncias associadas a um domínio do <ph name="MS_AD_NAME" />, executadas no Windows 10 Pro ou registradas no <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation> +<translation id="1285819498003746288">A API Event.path não vai estar disponível.</translation> <translation id="1290634681382861275">Controla diversas configurações, inclusive USB, Bluetooth, atualização de políticas, modo de desenvolvedor, entre outras.</translation> <translation id="1291880496936992484">Atenção: o RC4 será completamente removido de <ph name="PRODUCT_NAME" /> após a versão 52 (por volta de setembro de 2016), e esta política parará de funcionar. @@ -2526,6 +2528,7 @@ <translation id="3652670852519271837">Permitir que sites peçam ao usuário para conceder permissão de acesso de leitura de arquivos e diretórios com a API File System</translation> <translation id="3653237928288822292">Ícone do provedor de pesquisa padrão</translation> <translation id="3654906736796256792">Permite a execução do sandbox de áudio.</translation> +<translation id="3655885297177292093">A API Event.path vai estar no status padrão: disponível antes da versão M109 e indisponível da versão M109 à M114.</translation> <translation id="3659542706175323490">Se a política for definida como "Ativada", a inicialização em CA ficará ativada, se compatível com o dispositivo. A inicialização em CA oferece uma oportunidade ao sistema de reiniciar do estado "Desligado" ou "Suspenso" após a conexão do cabo de energia. Se a política for definida como "Desativada", a inicialização em CA ficará desativada. @@ -4069,6 +4072,7 @@ Se a política não for definida, os usuários poderão controlar a visibilidade dos cards. O padrão é visível. </translation> +<translation id="5449690328792750354">A API Event.path vai estar disponível.</translation> <translation id="5455609857202311243">Ignorar a aprovação da política de KDC durante a autenticação do HTTP</translation> <translation id="5455888515928026628">Durante o login pela tela de bloqueio, o <ph name="PRODUCT_OS_NAME" /> pode fazer a autenticação por um servidor (on-line) ou usando uma senha armazenada em cache (off-line). @@ -6817,6 +6821,15 @@ <translation id="8410477879938914253">Esta política se aplica apenas a sessões de visitante gerenciadas. Se a política for definida como verdadeira ou deixada sem definição, uma caixa de diálogo será exibida e pedirá que o usuário confirme ou negue que quer sair da conta depois que a última janela for fechada. Se a política for definida como falsa, a caixa de diálogo não será exibida e, portanto, a saída automática será desativada após o fechamento da última janela.</translation> +<translation id="8411050083243181286"> Da versão M109 em diante, a API Event.path não padrão será removida para melhorar a compatibilidade com a Web. Esta política reativa a API até a versão M115. + + Se a política for ativada, a API Event.path vai ficar disponível. + + Se ela for desativada, a API Event.path não vai estar disponível. + + Se ela não for definida, a API Event.path vai estar no status padrão: disponível antes da versão M109 e indisponível da versão M109 à M114. + + Esta política será removida após o Chrome 115.</translation> <translation id="8415953438346821074">Se você ativar esta configuração, as definições armazenadas nos perfis do <ph name="PRODUCT_NAME" />, como favoritos, dados de preenchimento automático, senhas, entre outras, serão gravadas em um arquivo armazenado na pasta "Perfil de usuário de roaming" ou em um local especificado pelo administrador por meio da política <ph name="ROAMING_PROFILE_LOCATION_POLICY_NAME" />. A ativação dessa política desativa a sincronização em nuvem. Se a política for desativada ou não for configurada, apenas os perfis locais normais serão usados.</translation>
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index 6dd61c74..2ba05e3 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -146,6 +146,7 @@ <translation id="1160939557934457296">Запрет перехода со страницы предупреждения Безопасного просмотра</translation> <translation id="1163080558183062209">Отключить типы принтеров, добавленные в список недопустимых</translation> <translation id="117059611145966538">Внешние серверы печати</translation> +<translation id="117080706484659953">Разрешить обнаружение области действия правил на устройствах с <ph name="MAC_OS_NAME" /></translation> <translation id="1171785618439752042">Правило позволяет указать, какой тип шифрования применять при запросе билетов Kerberos с сервера "<ph name="MS_AD_NAME" />". Укажите для правила одно из значений: @@ -943,6 +944,17 @@ <translation id="1962864958436828230">Установить минимально допустимый объем данных для ограничения CLIPBOARD, связанного с предотвращением утечки данных</translation> <translation id="1964634611280150550">Режим инкогнито отключен</translation> <translation id="1964802606569741174">Правило не влияет на приложение YouTube для Android. Чтобы принудительно включить режим Безопасного просмотра на YouTube, необходимо запретить установку приложения YouTube для Android.</translation> +<translation id="1965363065727209968">Функция setTimeout(…, 0) обычно используется, чтобы разбивать длинные задачи JavaScript. + Если правило включено, для функций setTimeout и setInterval с временем ожидания менее 4 мс минимальная задержка применяется реже. + Это улучшает краткосрочную производительность, но на сайтах, которые используют API чрезмерно, время задержки для функции setTimeout по-прежнему будет увеличено. + + Обратите внимание, что порядок выполнения задач на веб-странице может измениться. В результате на сайтах, для работы которых этот порядок важен, возможны сбои. + Кроме того, если на сайте используется множество функций setTimeout() с временем ожидания 0 мс, может повыситься нагрузка на процессор. + + Для пользователей стабильной версии <ph name="PRODUCT_NAME" />, в которой это правило не настроено, постепенно будет выпущено изменение. + + Это временное правило, которое мы планируем удалить в <ph name="PRODUCT_NAME" /> версии 107. Срок его действия может быть продлен, если в этом возникнет необходимость у компаний. + </translation> <translation id="1967334955994230472">Отключить проектор</translation> <translation id="1969212217917526199">Позволяет изменить правила сборок для отладки хоста удаленного доступа. @@ -1477,6 +1489,14 @@ <translation id="2496180316473517155">История браузера</translation> <translation id="2497751676088107779">Пользовательский скрипт</translation> <translation id="2497965601277442929">Запретить пользователям включать режим "Только HTTPS"</translation> +<translation id="249798396824949930"> Это правило позволяет контролировать, может ли браузер обнаруживать обязательную область действия правил на устройствах с <ph name="MAC_OS_NAME" />. + + Если правило включено или не настроено, область действия каждого правила будет определяться параметрами управляемого профиля <ph name="MAC_OS_NAME" />. + Если правило отключено, считается, что все правила применяются на уровне компьютера. + + Это правило введено временно для плавного перехода к правилам с корректно определенной областью действия в <ph name="MAC_OS_NAME" />. Оно будет удалено в <ph name="PRODUCT_NAME" /> версии 107. + + </translation> <translation id="2498238926436517902">Автоматическое скрытие панели загрузок</translation> <translation id="250022556568924228">Если это правило настроено, <ph name="PRODUCT_OS_NAME" /> скачивает Условия использования и показывает их пользователю в начале каждого сеанса работы в локальном аккаунте. Начать работу можно, только приняв эти условия. @@ -2696,6 +2716,7 @@ <translation id="3838094946886335701">Правило позволяет зарегистрировать список обработчиков протоколов (только рекомендательно). Эти обработчики будут работать наряду с теми, которые зарегистрированы пользователем. Задайте свойство protocol в соответствии с протоколом (например, можно указать значение mailto) и свойство url в соответствии с шаблоном URL для приложения, которое обрабатывает протокол. Шаблон может содержать макрос %s, который заменяется обрабатываемым URL. Пользователи не могут удалять обработчики протоколов, зарегистрированные в правиле, но могут менять их, устанавливая новый обработчик как вариант по умолчанию.</translation> +<translation id="3851443303439635700">Позволяет контролировать, при каком пороговом значении вложенности задержка для функции JavaScript setTimeout() начинает увеличиваться</translation> <translation id="3857816702027059082">Включение <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> для списка URL. Правило позволяет указать, какие URL могут проходить проверку и получать набор сигналов от машины. @@ -3224,6 +3245,7 @@ <translation id="4472740647327683596">Ширина страницы в микрометрах.</translation> <translation id="4474167089968829729">Включить сохранение паролей</translation> <translation id="4476769083125004742">Если для правила задано значение <ph name="BLOCK_GEOLOCATION_SETTING" />, у приложений Android не будет доступа к данным о местоположении. Если правило не настроено либо для него задано другое значение, приложение Android может запросить разрешение на доступ к геоданным.</translation> +<translation id="4478248026668918517">Блокировать обнаружение области действия правил</translation> <translation id="4479671363221255277">Позволяет задать шаблоны URL для указания сайтов, которым разрешено запрашивать у пользователей право на чтение файлов или каталогов в файловой системе хоста через File System API. Если правило не настроено, для всех сайтов действует правило <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> при условии, что оно задано. В противном случае применяются персональные настройки пользователя. @@ -4824,6 +4846,7 @@ <translation id="6282799760374509080">Включение или отключение функции захвата аудио</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Настройки cookie</translation> +<translation id="6299147100249359151">Разрешить обнаружение области действия правил</translation> <translation id="6300871921951390976">Пользователям разрешено менять версию обновления на устройстве, только если для этого правила задано значение True. Если задано значение False или правило не настроено, пользователям запрещено менять версию обновления. Правило <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> будет работать, только если для правила <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> задано значение False.</translation>
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index 78d3603..8fab8653 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -147,6 +147,7 @@ <translation id="1160939557934457296">ปิดใช้งานการดำเนินการต่อจากหน้าคำเตือน Safe Browsing</translation> <translation id="1163080558183062209">ปิดใช้ประเภทเครื่องพิมพ์ในรายการปฏิเสธ</translation> <translation id="117059611145966538">เซิร์ฟเวอร์การพิมพ์ภายนอก</translation> +<translation id="117080706484659953">อนุญาตการตรวจหาขอบเขตนโยบายใน <ph name="MAC_OS_NAME" /></translation> <translation id="1171785618439752042">การตั้งค่านโยบายจะกำหนดประเภทการเข้ารหัสที่ได้รับอนุญาตเมื่อขอตั๋ว Kerberos จากเซิร์ฟเวอร์ <ph name="MS_AD_NAME" /> การตั้งค่านโยบายเป็น @@ -916,6 +917,17 @@ <translation id="1962864958436828230">ตั้งขีดจำกัดข้อมูลขนาดเล็กสำหรับข้อจำกัดของคลิปบอร์ดเพื่อป้องกันข้อมูลรั่วไหล</translation> <translation id="1964634611280150550">ปิดใช้งานโหมดไม่ระบุตัวตน</translation> <translation id="1964802606569741174">นโยบายนี้ไม่มีผลสำหรับแอป YouTube ของ Android หากมีการใช้โหมดปลอดภัยใน YouTube ควรยกเลิกการอนุญาตการติดตั้งแอป YouTube ใน Android</translation> +<translation id="1965363065727209968">โดยทั่วไปแล้ว setTimeout(…, 0) จะใช้เพื่อแบ่งงาน JavaScript ที่ยาว + เมื่อตั้งค่านโยบายนี้เป็น "เปิดใช้" ระบบจะไม่บีบ setTimeouts และ setIntervals ที่มีช่วงเวลาน้อยกว่า 4 มิลลิวินาทีมากเกินไป + การตั้งค่าดังกล่าวจะช่วยปรับปรุงประสิทธิภาพในระยะสั้น แต่สุดท้ายเว็บไซต์ที่ละเมิด API จะยังคงถูกบีบ setTimeouts ไว้ + + ซึ่งอาจทำให้ลำดับงานของบางหน้าเว็บเปลี่ยนไปได้ จนเกิดลักษณะการทำงานที่ไม่ได้คาดไว้ในเว็บไซต์ที่อาศัยการเรียงลำดับงานในบางรูปแบบ + นอกจากนี้ยังอาจส่งผลต่อเว็บไซต์ที่มี setTimeout() จำนวนมากที่มีการใช้ระยะหมดเวลาที่ 0 มิลลิวินาทีด้วย เช่น ทำให้โหลดของ CPU มากขึ้น + + สำหรับผู้ใช้ที่ไม่ได้ตั้งค่านโยบายนี้ไว้ <ph name="PRODUCT_NAME" /> จะทยอยทำการเปลี่ยนแปลงทีละน้อยในเวอร์ชันเสถียร + + นโยบายนี้เป็นนโยบายชั่วคราวซึ่งจะถูกนำออกใน <ph name="PRODUCT_NAME" /> 107 กำหนดเวลานี้อาจเลื่อนออกไปได้หากมีบริษัทที่ยังคงต้องการใช้จำนวนมาก + </translation> <translation id="1967334955994230472">ปิดใช้โปรเจ็กเตอร์</translation> <translation id="1969212217917526199">ลบล้างนโยบายในเวอร์ชันการแก้ปัญหาของโฮสต์การเข้าถึงระยะไกล @@ -1450,6 +1462,14 @@ <translation id="2496180316473517155">ประวัติการเข้าชมที่เรียกดู</translation> <translation id="2497751676088107779">สคริปต์ของผู้ใช้</translation> <translation id="2497965601277442929">ไม่อนุญาตให้ผู้ใช้เปิดใช้โหมด "HTTPS เท่านั้น"</translation> +<translation id="249798396824949930"> กำหนดว่าจะให้เบราว์เซอร์ตรวจหาขอบเขตนโยบายที่จำเป็นใน <ph name="MAC_OS_NAME" /> ได้หรือไม่ + + หากตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่า ขอบเขตของนโยบายแต่ละรายการจะกำหนดตามขอบเขตของโปรไฟล์ที่มีการจัดการของ <ph name="MAC_OS_NAME" /> + หากตั้งค่านโยบายเป็น "ปิดใช้" ระบบจะถือว่านโยบายทั้งหมดเป็นนโยบายขอบเขตระดับเครื่อง + + นโยบายนี้มีผลชั่วคราวโดยมีจุดประสงค์เพื่อช่วยให้การเปลี่ยนไปใช้นโยบายที่กําหนดขอบเขตอย่างเหมาะสมใน <ph name="MAC_OS_NAME" /> เป็นไปอย่างราบรื่น และจะถูกนำออกไปใน <ph name="PRODUCT_NAME" /> 107 + + </translation> <translation id="2498238926436517902">ซ่อนชั้นวางอัตโนมัติเสมอ</translation> <translation id="250022556568924228">การตั้งค่านโยบายหมายความว่า <ph name="PRODUCT_OS_NAME" /> จะดาวน์โหลดข้อกำหนดในการให้บริการและแสดงต่อผู้ใช้เมื่อมีการเริ่มเซสชันบัญชีภายในอุปกรณ์ ผู้ใช้จะลงชื่อเข้าใช้เซสชันได้หลังจากที่ยอมรับข้อกำหนดในการให้บริการแล้วเท่านั้น @@ -2661,6 +2681,7 @@ <translation id="3838094946886335701">การตั้งค่านโยบาย (ตามที่แนะนำเท่านั้น) จะให้คุณลงทะเบียนรายการเครื่องจัดการโปรโตคอล ซึ่งรวมเข้ากับรายการที่ผู้ใช้ลงทะเบียน และทำให้มีการนำทั้ง 2 ชุดไปใช้งาน ตั้งค่าพร็อพเพอร์ตี้ "โปรโตคอล" เป็นรูปแบบ เช่น "mailto" และตั้งค่าพร็อพเพอร์ตี้ "URL" เป็นรูปแบบ URL ของแอปพลิเคชันที่จัดการรูปแบบที่ระบุไว้ในช่อง "โปรโตคอล" รูปแบบ URL อาจมีตัวยึดตำแหน่ง "%s" ได้ ซึ่ง URL ที่มีการจัดการจะมาแทนที่ ผู้ใช้จะนำเครื่องจัดการโปรโตคอลที่นโยบายลงทะเบียนไว้ออกไม่ได้ แต่หากติดตั้งเครื่องจัดการเริ่มต้นเครื่องใหม่ ก็จะเปลี่ยนเครื่องจัดการโปรโตคอลที่นโยบายติดตั้งไว้ได้</translation> +<translation id="3851443303439635700">กำหนดเกณฑ์ระดับการซ้อนซึ่งควบคุมการเริ่มฟังก์ชัน setTimeout() ของ JavaScript</translation> <translation id="3857816702027059082">เปิดใช้ <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> สำหรับรายการ URL การตั้งค่านโยบายนี้จะระบุ URL ที่ควรได้เป็นส่วนหนึ่งของโฟลว์เอกสารรับรองเพื่อรับชุดสัญญาณจากเครื่อง @@ -3177,6 +3198,7 @@ <translation id="4472740647327683596">ความกว้างของหน้าโดยหน่วยเป็นไมโครเมตร</translation> <translation id="4474167089968829729">เปิดการบันทึกรหัสผ่านไปยังโปรแกรมจัดการรหัสผ่าน</translation> <translation id="4476769083125004742">หากคุณตั้งค่านโยบายนี้เป็น <ph name="BLOCK_GEOLOCATION_SETTING" /> แอป Android จะไม่สามารถเข้าถึงข้อมูลตำแหน่ง แต่หากตั้งค่าเป็นค่าอื่นหรือไม่ได้ตั้งค่า ระบบจะขอการยินยอมจากผู้ใช้หากแอป Android ต้องการเข้าถึงข้อมูลตำแหน่ง</translation> +<translation id="4478248026668918517">บล็อกการตรวจหาขอบเขตนโยบาย</translation> <translation id="4479671363221255277">การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บไซต์ที่ขอให้ผู้ใช้ให้สิทธิ์การเข้าถึงในการอ่านไฟล์หรือไดเรกทอรีในระบบไฟล์ของระบบปฏิบัติการของโฮสต์ผ่าน File System API ได้ การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> จะมีผลกับทุกเว็บไซต์ (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล @@ -4753,6 +4775,7 @@ <translation id="6282799760374509080">อนุญาตหรือปฏิเสธการจับเสียง</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">การตั้งค่าคุกกี้</translation> +<translation id="6299147100249359151">อนุญาตการตรวจหาขอบเขตนโยบาย</translation> <translation id="6300871921951390976">ผู้ใช้ได้รับอนุญาตให้เปลี่ยนเวอร์ชันการเผยแพร่ของอุปกรณ์หากตั้งค่านโยบายนี้เป็น "จริง" เท่านั้น หากนโยบายนี้เป็น "เท็จ" หรือไม่ได้ตั้งค่า ผู้ใช้จะไม่ได้รับอนุญาตให้เปลี่ยนเวอร์ชัน การตั้งค่า <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> จะมีผลเฉพาะในกรณีที่ตั้งค่า <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> เป็น "เท็จ"</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index 0b3e843..8c883d2 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -147,6 +147,7 @@ <translation id="1160939557934457296">Vô hiệu hóa khả năng tiếp tục từ trang cảnh báo Duyệt web an toàn</translation> <translation id="1163080558183062209">Vô hiệu hóa các loại máy in trong danh sách từ chối</translation> <translation id="117059611145966538">Máy chủ máy in bên ngoài</translation> +<translation id="117080706484659953">Cho phép phát hiện phạm vi chính sách trên <ph name="MAC_OS_NAME" /></translation> <translation id="1171785618439752042">Nếu bạn đặt chính sách này, hệ thống sẽ chỉ định các loại mã hóa được phép khi yêu cầu vé Kerberos từ một máy chủ <ph name="MS_AD_NAME" />. Nếu bạn đặt chính sách này thành: @@ -947,6 +948,17 @@ <translation id="1962864958436828230">Đặt giới hạn kích thước tối thiểu để ngăn chặn rò rỉ dữ liệu theo quy tắc hạn chế khay nhớ tạm</translation> <translation id="1964634611280150550">Đã tắt chế độ ẩn danh</translation> <translation id="1964802606569741174">Chính sách này không ảnh hưởng đến ứng dụng YouTube trên Android. Nếu bị buộc phải sử dụng Chế độ an toàn trên YouTube thì việc cài đặt ứng dụng YouTube trên Android sẽ không được cho phép.</translation> +<translation id="1965363065727209968">setTimeout(…, 0) thường được dùng để chia nhỏ các tác vụ JavaScript dài. + Khi bạn Bật chính sách này, thì setTimeouts và setIntervals có khoảng thời gian nhỏ hơn 4 mili giây sẽ không được kẹp một cách triệt để. + Điều này giúp cải thiện hiệu suất trong khoảng thời gian ngắn, nhưng setTimeouts của những trang web lạm dụng API này cuối cùng vẫn sẽ bị kẹp. + + Nếu vậy, thứ tự tác vụ trên trang web có thể thay đổi, dẫn đến hành vi không mong muốn trên những trang web phụ thuộc vào một thứ tự nhất định theo một cách nào đó. + Những trang web có nhiều hàm setTimeout() sử dụng thời gian chờ 0 mili giây, ví dụ như tăng tải CPU, cũng sẽ bị ảnh hưởng. + + Đối với người dùng không đặt chính sách này, <ph name="PRODUCT_NAME" /> sẽ ra mắt thay đổi từng bước trên kênh chính thức. + + Đây là một chính sách tạm thời và dự kiến sẽ được loại bỏ trong <ph name="PRODUCT_NAME" /> 107. Thời hạn này có thể được lùi nếu các doanh nghiệp có nhu cầu. + </translation> <translation id="1967334955994230472">Tắt Máy chiếu</translation> <translation id="1969212217917526199">Ghi đè chính sách trên bản dựng Gỡ lỗi của máy chủ truy cập từ xa. @@ -1490,6 +1502,14 @@ <translation id="2496180316473517155">Lịch sử duyệt web</translation> <translation id="2497751676088107779">Tập lệnh người dùng</translation> <translation id="2497965601277442929">Không cho phép người dùng bật chế độ Chỉ giao thức HTTPS</translation> +<translation id="249798396824949930"> Kiểm soát khả năng trình duyệt phát hiện phạm vi chính sách bắt buộc trên <ph name="MAC_OS_NAME" />. + + Nếu bạn đặt chính sách này là Bật hoặc không đặt chính sách này, thì phạm vi của mỗi chính sách sẽ được xác định theo phạm vi của cấu hình <ph name="MAC_OS_NAME" /> được quản lý. + Nếu bạn đặt chính sách này là Tắt, mọi chính sách sẽ được coi là chính sách phạm vi máy. + + Đây là chính sách tạm thời để tạo điều kiện chuyển đổi thuận lợi sang các chính sách có phạm vi phù hợp trên <ph name="MAC_OS_NAME" /> và sẽ bị xoá trong <ph name="PRODUCT_NAME" /> 107. + + </translation> <translation id="2498238926436517902">Luôn tự động ẩn giá</translation> <translation id="250022556568924228">Nếu bạn đặt chính sách này, <ph name="PRODUCT_OS_NAME" /> sẽ tải Điều khoản dịch vụ xuống và hiển thị với người dùng ở bất cứ thời điểm nào phiên truy cập tài khoản trên thiết bị bắt đầu. Người dùng chỉ có thể đăng nhập vào phiên đó sau khi chấp nhận Điều khoản dịch vụ. @@ -2712,6 +2732,7 @@ <translation id="3838094946886335701">Nếu đặt chính sách này (chỉ khi khuyên dùng), thì bạn có thể đăng ký danh sách các trình xử lý giao thức (sẽ hợp nhất với các trình xử lý giao thức mà người dùng đăng ký) để đưa vào sử dụng. Hãy đặt thuộc tính "giao thức" thành lược đồ, chẳng hạn như "mailto", và đặt thuộc tính "URL" thành mẫu URL của ứng dụng xử lý lược đồ được chỉ định trong trường "giao thức". Mẫu này có thể bao gồm trình giữ chỗ "%s" (thay bằng URL đã xử lý). Người dùng không thể xóa trình xử lý giao thức do chính sách đăng ký. Tuy nhiên, họ có thể thay đổi các trình xử lý giao thức do chính sách cài đặt bằng cách cài đặt một trình xử lý mặc định mới.</translation> +<translation id="3851443303439635700">Kiểm soát ngưỡng lồng, là ngưỡng mà trước đó hàm JavaScript setTimeout() bắt đầu bị kẹp</translation> <translation id="3857816702027059082">Bật <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" /> cho một danh sách các URL. Việc đặt chính sách này sẽ chỉ định những URL được phép đưa vào quy trình chứng thực để nhận được loạt tín hiệu từ máy. @@ -3232,6 +3253,7 @@ <translation id="4472740647327683596">Chiều rộng của trang (tính bằng micromet)</translation> <translation id="4474167089968829729">Bật lưu mật khẩu cho trình quản lý mật khẩu</translation> <translation id="4476769083125004742">Nếu chính sách này được đặt thành <ph name="BLOCK_GEOLOCATION_SETTING" />, các ứng dụng Android sẽ không thể truy cập thông tin vị trí. Nếu bạn đặt chính sách này thành một giá trị bất kỳ nào khác hoặc không đặt chính sách này thì người dùng sẽ được yêu cầu đồng ý khi ứng dụng Android muốn truy cập thông tin vị trí.</translation> +<translation id="4478248026668918517">Chặn tính năng Phát hiện phạm vi chính sách.</translation> <translation id="4479671363221255277">Khi đặt chính sách này, bạn có thể tạo danh sách các mẫu URL để chỉ định những trang web được phép yêu cầu người dùng cấp quyền đọc các tệp hoặc thư mục trong hệ thống tệp của hệ điều hành máy chủ qua API Hệ thống tệp. Khi bạn không đặt chính sách này, <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> (nếu được đặt) sẽ áp dụng cho tất cả trang web. Nếu không, các tùy chọn cài đặt cá nhân của người dùng sẽ được áp dụng. @@ -4829,6 +4851,7 @@ <translation id="6282799760374509080">Cho phép hoặc từ chối ghi âm</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Cài đặt cookie</translation> +<translation id="6299147100249359151">Cho phép Phát hiện phạm vi chính sách.</translation> <translation id="6300871921951390976">Người dùng chỉ được phép thay đổi kênh phát hành của thiết bị nếu chính sách này được đặt thành Bật. Nếu bạn đặt thành Tắt hoặc không đặt chính sách này, thì người dùng không được phép thay đổi kênh. Việc đặt <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> chỉ có hiệu lực nếu bạn đặt <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> thành Tắt.</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index 7706c99..0b43da6 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -147,6 +147,7 @@ <translation id="1160939557934457296">停用略過安全瀏覽警告網頁繼續進行</translation> <translation id="1163080558183062209">停用拒絕清單上的印表機類型</translation> <translation id="117059611145966538">外部列印伺服器</translation> +<translation id="117080706484659953">允許 <ph name="MAC_OS_NAME" /> 上的政策範圍偵測</translation> <translation id="1171785618439752042">你可以透過這項政策,指定從 <ph name="MS_AD_NAME" /> 伺服器提出 Kerberos 票證要求時可使用哪些加密類型。 如果將這項政策的值設為: @@ -923,6 +924,17 @@ <translation id="1962864958436828230">設定防止資料外洩的剪貼簿資料大小最低限制</translation> <translation id="1964634611280150550">無痕模式已停用</translation> <translation id="1964802606569741174">這項政策對 Android YouTube 應用程式沒有影響。如要強制採用 YouTube 安全模式,則必須禁止下載 Android YouTube 應用程式。</translation> +<translation id="1965363065727209968">setTimeout(…, 0) 常用來細分長時間的 JavaScript 工作。 + 將這項政策設為啟用時,系統不會主動延遲間隔時間小於 4 毫秒的 setTimeouts 和 setIntervals。 + 這麼做可以提升短期間的執行效能,但濫用 API 的網站最終仍會將 setTimeouts 設為延遲。 + + 這可能會改變網頁上的工作排序,進而導致必須以某種方法透過特定排序完成工作的網站發生異常行為, + 也可能影響將許多 setTimeout() 設為逾時 0 毫秒 (例如增加 CPU 負載) 的網站。 + + 對於未設定這項政策的使用者,<ph name="PRODUCT_NAME" /> 將在穩定版上逐步推出變更。 + + 這項政策是暫時性的,預計會在 <ph name="PRODUCT_NAME" /> 107 中移除。如果有需要的企業眾多,我們將會延長這個期限。 + </translation> <translation id="1967334955994230472">停用 Projector</translation> <translation id="1969212217917526199">覆寫遠端存取主機的偵錯版本政策。 @@ -1453,6 +1465,14 @@ <translation id="2496180316473517155">瀏覽記錄</translation> <translation id="2497751676088107779">使用者指令碼</translation> <translation id="2497965601277442929">禁止使用者啟用僅限 HTTPS 模式</translation> +<translation id="249798396824949930"> 這項政策可控管瀏覽器是否可以偵測 <ph name="MAC_OS_NAME" /> 上的強制政策範圍。 + + 如果將這項政策設為啟用或不設定,系統會根據 <ph name="MAC_OS_NAME" /> 受管理設定檔的範圍,決定每項政策的範圍。 + 如果將這項政策設為停用,則所有政策都將被視為裝置範圍內的政策。 + + 這項政策是暫時性的,目的是協助使用者能順利在 <ph name="MAC_OS_NAME" /> 上轉換至適當範圍的政策,且將於 <ph name="PRODUCT_NAME" /> 107 中移除。 + + </translation> <translation id="2498238926436517902">一律自動隱藏檔案櫃</translation> <translation id="250022556568924228">如果設定這項政策,<ph name="PRODUCT_OS_NAME" />會下載《服務條款》,並在裝置本機帳戶的工作階段啟動時向使用者顯示。使用者必須接受《服務條款》才能登入工作階段。 @@ -2658,6 +2678,7 @@ <translation id="3838094946886335701">你可以透過這項政策 (只能設為「建議」) 註冊通訊協定處理常式的清單,其中的通訊協定處理常式會與使用者所註冊的合併,二種皆可供使用。請將「protocol」(通訊協定) 屬性設為「mailto」等類型的網路通訊協定配置,並將「URL」(網址) 屬性設為處理該網路通訊協定的應用程式所使用的網址模式 (這裡的網路通訊協定指的是「通訊協定」欄位中所指定的網路通訊協定配置)。模式可包含「%s」預留位置,將替換為受處理的網址。 使用者無法移除透過政策註冊的通訊協定處理常式,但可透過安裝新的預設處理常式,變更透過政策安裝的通訊協定處理常式。</translation> +<translation id="3851443303439635700">控制巢狀閾值,系統會在達到此閾值之前延遲啟動 JavaScript setTimeout() 函式</translation> <translation id="3857816702027059082">針對清單中的網址啟用 <ph name="CHROME_ENTERPRISE_PLATFORM_IDENTITY_CONNECTOR" />。 透過這項政策,你可以指定要讓哪些網址加入認證流程,接收裝置傳送的信號。 @@ -3177,6 +3198,7 @@ <translation id="4472740647327683596">頁面的寬度 (以微米為單位)</translation> <translation id="4474167089968829729">允許將密碼儲存到密碼管理員</translation> <translation id="4476769083125004742">如果將這項政策設為 <ph name="BLOCK_GEOLOCATION_SETTING" />,Android 應用程式將無法存取位置資訊。如果將這項政策設為任何其他值或不予設定,當 Android 應用程式要存取位置資訊時,會詢問使用者是否同意。</translation> +<translation id="4478248026668918517">封鎖政策範圍偵測。</translation> <translation id="4479671363221255277">你可以透過這項政策建立網址模式清單,指定哪些網站可以要求使用者授予讀取權限,以透過 File System API 讀取主機作業系統中檔案系統的檔案或目錄。 如果未設定這項政策,系統會針對所有網站套用 <ph name="DEFAULT_FILE_SYSTEM_READ_GUARD_SETTING_POLICY_NAME" /> 政策 (如果已設定)。否則系統會套用使用者的個人設定。 @@ -4740,6 +4762,7 @@ <translation id="6282799760374509080">允許或拒絕擷取音訊</translation> <translation id="6284362063448764300">TLS 1.1</translation> <translation id="6287310684159482272">Cookie 設定</translation> +<translation id="6299147100249359151">允許政策範圍偵測。</translation> <translation id="6300871921951390976">必須將這項政策設為 True,使用者才可變更裝置的發布版本。如果將這項政策設為 False 或不設定,使用者就不可變更版本。 只有將 <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> 設為 False,<ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> 設定才會生效。</translation>
diff --git a/components/services/app_service/public/cpp/preferred_apps_impl.cc b/components/services/app_service/public/cpp/preferred_apps_impl.cc index 4f4ee3b..22c1320 100644 --- a/components/services/app_service/public/cpp/preferred_apps_impl.cc +++ b/components/services/app_service/public/cpp/preferred_apps_impl.cc
@@ -246,12 +246,7 @@ IntentFilterPtr intent_filter, IntentPtr intent, bool from_publisher) { - // TODO(https://crbug.com/853604): Remove this and convert to a DCHECK - // after finding out the root cause. - if (app_id.empty()) { - base::debug::DumpWithoutCrashing(); - return; - } + DCHECK(!app_id.empty()); auto replaced_apps = preferred_apps_list_.AddPreferredApp(app_id, intent_filter);
diff --git a/components/services/font/public/cpp/mapped_font_file.h b/components/services/font/public/cpp/mapped_font_file.h index 48d169a..3a6d840f 100644 --- a/components/services/font/public/cpp/mapped_font_file.h +++ b/components/services/font/public/cpp/mapped_font_file.h
@@ -9,6 +9,7 @@ #include "base/files/file.h" #include "base/files/memory_mapped_file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "third_party/skia/include/core/SkStream.h" @@ -47,7 +48,7 @@ uint32_t font_id_; base::MemoryMappedFile mapped_font_file_; - Observer* observer_; + raw_ptr<Observer> observer_; }; } // namespace internal
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 304d82b..ae17a16 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -602,7 +602,8 @@ <translation id="2544546346215446551">المشرف أعاد تشغيل الجهاز</translation> <translation id="2544644783021658368">مستند واحد</translation> <translation id="254524874071906077">تعيين Chrome كمتصفح تلقائي</translation> -<translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع</translation> +<translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع الإلكترونية +</translation> <translation id="2547466893236767989">تصميم وتطوير مواقع إلكترونية</translation> <translation id="254947805923345898">قيمة السياسة غير صحيحة.</translation> <translation id="255002559098805027">أرسل <ph name="HOST_NAME" /> استجابة غير صالحة.</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 3a50b2f..296f324e 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -1668,7 +1668,7 @@ <translation id="54817484435770891">Thêm địa chỉ hợp lệ</translation> <translation id="5485973315555778056">Thiết bị trên đám mây</translation> <translation id="5487426985799386720">Thực phẩm và đồ uống</translation> -<translation id="5490432419156082418">Địa chỉ và các tùy chọn khác</translation> +<translation id="5490432419156082418">Địa chỉ và các lựa chọn khác</translation> <translation id="5492298309214877701">Trang web trên mạng nội bộ của công ty, tổ chức hoặc trường học này có URL tương tự như trang web bên ngoài. <ph name="LINE_BREAK" /> Hãy thử liên hệ với quản trị viên hệ thống của bạn.</translation> @@ -2717,7 +2717,7 @@ <translation id="8457125768502047971">Vô thời hạn</translation> <translation id="8461694314515752532">Mã hóa dữ liệu đã đồng bộ hóa bằng cụm mật khẩu đồng bộ hóa của riêng bạn</translation> <translation id="8466379296835108687">{COUNT,plural, =1{1 thẻ tín dụng}other{# thẻ tín dụng}}</translation> -<translation id="8473863474539038330">Địa chỉ và các tùy chọn khác</translation> +<translation id="8473863474539038330">Địa chỉ và các lựa chọn khác</translation> <translation id="8474910779563686872">Hiển thị thông tin chi tiết của nhà phát triển</translation> <translation id="8479754468255770962">Dập ghim dưới cùng bên trái</translation> <translation id="8483780878231876732">Để sử dụng thẻ từ Tài khoản Google, hãy đăng nhập vào Chrome</translation>
diff --git a/components/sync/base/model_type.cc b/components/sync/base/model_type.cc index 35d173e..15b8598 100644 --- a/components/sync/base/model_type.cc +++ b/components/sync/base/model_type.cc
@@ -511,9 +511,8 @@ bool NotificationTypeToRealModelType(const std::string& notification_type, ModelType* model_type) { - auto* iter = base::ranges::find( - kModelTypeInfoMap, notification_type, - [](const ModelTypeInfo& info) { return info.notification_type; }); + auto* iter = base::ranges::find(kModelTypeInfoMap, notification_type, + &ModelTypeInfo::notification_type); if (iter == std::end(kModelTypeInfoMap)) { return false; }
diff --git a/components/sync/trusted_vault/download_keys_response_handler.cc b/components/sync/trusted_vault/download_keys_response_handler.cc index 912eb4a..ffef434 100644 --- a/components/sync/trusted_vault/download_keys_response_handler.cc +++ b/components/sync/trusted_vault/download_keys_response_handler.cc
@@ -76,9 +76,9 @@ const std::vector<ExtractedSharedKey>& sorted_keys, int last_known_version) { DCHECK(!sorted_keys.empty()); - auto new_keys_start_it = base::ranges::upper_bound( - sorted_keys, last_known_version, /*comp=*/{}, - [](const ExtractedSharedKey& key) { return key.version; }); + auto new_keys_start_it = + base::ranges::upper_bound(sorted_keys, last_known_version, /*comp=*/{}, + &ExtractedSharedKey::version); return std::vector<ExtractedSharedKey>(new_keys_start_it, sorted_keys.end()); }
diff --git a/components/sync_sessions/synced_session_tracker.cc b/components/sync_sessions/synced_session_tracker.cc index 490a1109..fa1fcd3 100644 --- a/components/sync_sessions/synced_session_tracker.cc +++ b/components/sync_sessions/synced_session_tracker.cc
@@ -482,11 +482,9 @@ // window. for (auto& [existing_window_id, existing_window] : GetSession(session_tag)->windows) { - auto existing_tab_iter = base::ranges::find( - existing_window->wrapped_window.tabs, tab_ptr, - [](const std::unique_ptr<sessions::SessionTab>& tab) { - return tab.get(); - }); + auto existing_tab_iter = + base::ranges::find(existing_window->wrapped_window.tabs, tab_ptr, + &std::unique_ptr<sessions::SessionTab>::get); if (existing_tab_iter != existing_window->wrapped_window.tabs.end()) { tab = std::move(*existing_tab_iter); existing_window->wrapped_window.tabs.erase(existing_tab_iter); @@ -651,11 +649,9 @@ for (auto& [existing_window_id, existing_window] : session->synced_session.windows) { auto& existing_window_tabs = existing_window->wrapped_window.tabs; - auto tab_iter = base::ranges::find( - existing_window_tabs, new_tab_ptr, - [](const std::unique_ptr<sessions::SessionTab>& tab) { - return tab.get(); - }); + auto tab_iter = + base::ranges::find(existing_window_tabs, new_tab_ptr, + &std::unique_ptr<sessions::SessionTab>::get); if (tab_iter != existing_window_tabs.end()) { existing_window_tabs.erase(tab_iter); break;
diff --git a/components/system_media_controls/linux/system_media_controls_linux.h b/components/system_media_controls/linux/system_media_controls_linux.h index b2804f5..623953a 100644 --- a/components/system_media_controls/linux/system_media_controls_linux.h +++ b/components/system_media_controls/linux/system_media_controls_linux.h
@@ -8,6 +8,7 @@ #include <string> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/observer_list.h" #include "base/timer/timer.h" @@ -135,7 +136,7 @@ std::unique_ptr<DbusProperties> properties_; scoped_refptr<dbus::Bus> bus_; - dbus::ExportedObject* exported_object_; + raw_ptr<dbus::ExportedObject> exported_object_; // The generated service name given to |bus_| when requesting ownership. const std::string service_name_;
diff --git a/components/viz/service/display/direct_renderer.cc b/components/viz/service/display/direct_renderer.cc index cd932deb..1510f947 100644 --- a/components/viz/service/display/direct_renderer.cc +++ b/components/viz/service/display/direct_renderer.cc
@@ -909,10 +909,20 @@ last_viewport_resize_time_ = base::TimeTicks::Now(); // Width & height mustn't be more than max texture size. - if (surface_width > output_surface_->capabilities().max_texture_size) + if (surface_width > output_surface_->capabilities().max_texture_size) { + auto old_width = surface_width; surface_width = output_surface_->capabilities().max_texture_size; - if (surface_height > output_surface_->capabilities().max_texture_size) + LOG_IF(ERROR, surface_width < request_width) + << "Reduced surface width from " << old_width << " to " + << surface_width; + } + if (surface_height > output_surface_->capabilities().max_texture_size) { + auto old_height = surface_height; surface_height = output_surface_->capabilities().max_texture_size; + LOG_IF(ERROR, surface_height < request_height) + << "Reduced surface height from " << old_height << " to " + << surface_height; + } device_viewport_size_ = requested_viewport_size; return gfx::Size(surface_width, surface_height);
diff --git a/components/viz/service/display/overlay_processor_ozone.h b/components/viz/service/display/overlay_processor_ozone.h index b0ecacb1b..c72d5ff 100644 --- a/components/viz/service/display/overlay_processor_ozone.h +++ b/components/viz/service/display/overlay_processor_ozone.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "components/viz/service/display/overlay_processor_using_strategy.h" #include "ui/gfx/native_widget_types.h" #include "ui/ozone/public/hardware_capabilities.h" @@ -59,7 +60,7 @@ bool tried_observing_hardware_capabilities_ = false; std::unique_ptr<ui::OverlayCandidatesOzone> overlay_candidates_; const std::vector<OverlayStrategy> available_strategies_; - gpu::SharedImageInterface* const shared_image_interface_; + const raw_ptr<gpu::SharedImageInterface> shared_image_interface_; base::WeakPtrFactory<OverlayProcessorOzone> weak_ptr_factory_{this}; };
diff --git a/components/viz/service/display_embedder/skia_output_device_x11.h b/components/viz/service/display_embedder/skia_output_device_x11.h index 5836a9c4..1dafea3 100644 --- a/components/viz/service/display_embedder/skia_output_device_x11.h +++ b/components/viz/service/display_embedder/skia_output_device_x11.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/types/pass_key.h" #include "components/viz/service/display_embedder/skia_output_device_offscreen.h" #include "ui/gfx/native_widget_types.h" @@ -47,7 +48,7 @@ OutputSurfaceFrame frame) override; private: - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; const x11::Window window_; const x11::VisualId visual_; const x11::GraphicsContext gc_;
diff --git a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc index 2fa34c85..d77bd4f7 100644 --- a/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc +++ b/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "testing/gmock/include/gmock/gmock.h" @@ -68,7 +69,7 @@ std::unique_ptr<SoftwareOutputDeviceOzone> output_device_; bool enable_pixel_output_ = false; - TestSurfaceOzoneCanvas* surface_ozone_ = nullptr; + raw_ptr<TestSurfaceOzoneCanvas> surface_ozone_ = nullptr; }; SoftwareOutputDeviceOzoneTest::SoftwareOutputDeviceOzoneTest() = default;
diff --git a/content/browser/accessibility/accessibility_event_recorder_auralinux.h b/content/browser/accessibility/accessibility_event_recorder_auralinux.h index 5b78738..1965db9 100644 --- a/content/browser/accessibility/accessibility_event_recorder_auralinux.h +++ b/content/browser/accessibility/accessibility_event_recorder_auralinux.h
@@ -64,7 +64,7 @@ void AddATSPIEventListeners(); void RemoveATSPIEventListeners(); - AtspiEventListener* atspi_event_listener_ = nullptr; + raw_ptr<AtspiEventListener> atspi_event_listener_ = nullptr; // TODO: should be either removed or converted to a weakptr. const raw_ptr<BrowserAccessibilityManager> manager_; base::ProcessId pid_;
diff --git a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc index 0dc5356..d34dcaf 100644 --- a/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc +++ b/content/browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc
@@ -2624,8 +2624,16 @@ L"Before frame\nText in iframe\nAfter frame"); } +// TODO(https://crbug.com/1338169): This test is flaky on Win. +#if BUILDFLAG(IS_WIN) +#define MAYBE_AXPlatformNodeTextRangeProviderWinBrowserTest \ + DISABLED_AXPlatformNodeTextRangeProviderWinBrowserTest +#else +#define MAYBE_AXPlatformNodeTextRangeProviderWinBrowserTest \ + AXPlatformNodeTextRangeProviderWinBrowserTest +#endif // BUILDFLAG(IS_WIN) IN_PROC_BROWSER_TEST_F(AXPlatformNodeTextRangeProviderWinBrowserTest, - OutOfProcessIFrameTraversal) { + MAYBE_AXPlatformNodeTextRangeProviderWinBrowserTest) { GURL main_url(embedded_test_server()->GetURL( "a.com", "/accessibility/html/iframe-cross-process.html")); LoadInitialAccessibilityTreeFromUrl(main_url);
diff --git a/content/browser/accessibility/browser_accessibility_auralinux.h b/content/browser/accessibility/browser_accessibility_auralinux.h index 283939c..71f0d48 100644 --- a/content/browser/accessibility/browser_accessibility_auralinux.h +++ b/content/browser/accessibility/browser_accessibility_auralinux.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_AURALINUX_H_ #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_AURALINUX_H_ +#include "base/memory/raw_ptr.h" #include "content/browser/accessibility/browser_accessibility.h" #include "content/common/content_export.h" #include "ui/accessibility/ax_node.h" @@ -43,7 +44,7 @@ private: // TODO(nektar): Rename to platform_node_ to avoid confusion with ui::AXNode. - ui::AXPlatformNodeAuraLinux* node_; + raw_ptr<ui::AXPlatformNodeAuraLinux> node_; }; CONTENT_EXPORT BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux(
diff --git a/content/browser/accessibility/browser_accessibility_manager_auralinux.h b/content/browser/accessibility/browser_accessibility_manager_auralinux.h index d627a16..a668562 100644 --- a/content/browser/accessibility/browser_accessibility_manager_auralinux.h +++ b/content/browser/accessibility/browser_accessibility_manager_auralinux.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "content/browser/accessibility/browser_accessibility_manager.h" #include "content/common/content_export.h" @@ -81,7 +82,7 @@ bool CanEmitChildrenChanged(BrowserAccessibility* node) const; void FireEvent(BrowserAccessibility* node, ax::mojom::Event event); - AtkObject* parent_object_; + raw_ptr<AtkObject> parent_object_; // Give BrowserAccessibilityManager::Create access to our constructor. friend class BrowserAccessibilityManager;
diff --git a/content/browser/attribution_reporting/attributions_browsertest.cc b/content/browser/attribution_reporting/attributions_browsertest.cc index d49b1ad..020e7b4 100644 --- a/content/browser/attribution_reporting/attributions_browsertest.cc +++ b/content/browser/attribution_reporting/attributions_browsertest.cc
@@ -475,10 +475,8 @@ expected_report.WaitForReport(); } -// TODO(https://crbug.com/1301960): Flaky on multiple platforms after switch to -// using attributionsrc. IN_PROC_BROWSER_TEST_F(AttributionsBrowserTest, - DISABLED_ImpressionConversionSameDomain_ReportSent) { + ImpressionConversionSameDomain_ReportSent) { // Expected reports must be registered before the server starts. ExpectedReportWaiter expected_report( GURL("https://d.test/.well-known/attribution-reporting/" @@ -748,10 +746,8 @@ expected_report.WaitForReport(); } -// TODO(crbug.com/1335817): Deflake this test. -IN_PROC_BROWSER_TEST_F( - AttributionsBrowserTest, - DISABLED_AttributionSrcNavigationSourceAndTrigger_ReportSent) { +IN_PROC_BROWSER_TEST_F(AttributionsBrowserTest, + AttributionSrcNavigationSourceAndTrigger_ReportSent) { // Expected reports must be registered before the server starts. ExpectedReportWaiter expected_report( GURL("https://a.test/.well-known/attribution-reporting/" @@ -956,15 +952,8 @@ EXPECT_FALSE(expected_report.HasRequest()); } -#if BUILDFLAG(IS_MAC) -#define MAYBE_ConversionsRegisteredOnActivatedPrerender \ - DISABLED_ConversionsRegisteredOnActivatedPrerender -#else -#define MAYBE_ConversionsRegisteredOnActivatedPrerender \ - ConversionsRegisteredOnActivatedPrerender -#endif IN_PROC_BROWSER_TEST_F(AttributionsPrerenderBrowserTest, - MAYBE_ConversionsRegisteredOnActivatedPrerender) { + ConversionsRegisteredOnActivatedPrerender) { ExpectedReportWaiter expected_report( GURL("https://a.test/.well-known/attribution-reporting/" "report-event-attribution"),
diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc index 22ae91c..9505b0a 100644 --- a/content/browser/background_sync/background_sync_manager.cc +++ b/content/browser/background_sync/background_sync_manager.cc
@@ -545,6 +545,18 @@ StatusAndRegistrationsCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // The renderer should have checked and disallowed the request for fenced + // frames and thrown an exception in blink::SyncManager or + // blink::PeriodicSyncManager. Return a not allowed error if the renderer side + // check didn't happen for some reason. + scoped_refptr<ServiceWorkerRegistration> sw_registration = + service_worker_context_->GetLiveRegistration(sw_registration_id); + if (sw_registration && sw_registration->ancestor_frame_type() == + blink::mojom::AncestorFrameType::kFencedFrame) { + mojo::ReportBadMessage("Background Sync is not allowed in a fenced frame"); + return; + } + if (disabled_) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, @@ -799,6 +811,16 @@ return; } + // The renderer should have checked and disallowed the request for fenced + // frames and thrown an exception in blink::SyncManager or + // blink::PeriodicSyncManager. Return a not allowed error if the renderer side + // check didn't happen for some reason. + if (sw_registration->ancestor_frame_type() == + blink::mojom::AncestorFrameType::kFencedFrame) { + mojo::ReportBadMessage("Background Sync is not allowed in a fenced frame"); + return; + } + HasMainFrameWindowClient( sw_registration->key(), base::BindOnce(&BackgroundSyncManager::RegisterDidCheckIfMainFrame,
diff --git a/content/browser/prerender/prerender_browsertest.cc b/content/browser/prerender/prerender_browsertest.cc index 8b8da75..0079dc8 100644 --- a/content/browser/prerender/prerender_browsertest.cc +++ b/content/browser/prerender/prerender_browsertest.cc
@@ -2030,7 +2030,7 @@ } private: - NavigationRequest* navigation_request_; + raw_ptr<NavigationRequest> navigation_request_; }; // Regression test for https://crbug.com/1323309.
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc index 1c942237..ed5883f 100644 --- a/content/browser/renderer_host/input/input_router_impl_unittest.cc +++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -14,6 +14,7 @@ #include "base/command_line.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/task/single_thread_task_runner.h" @@ -247,7 +248,7 @@ MockInputRouterClient input_router_client_; MockWidgetInputHandler widget_input_handler_; - MockRenderWidgetHostViewForStylusWriting* render_widget_host_view_; + raw_ptr<MockRenderWidgetHostViewForStylusWriting> render_widget_host_view_; bool on_start_stylus_writing_called_ = false; };
diff --git a/content/browser/speech/tts_linux.cc b/content/browser/speech/tts_linux.cc index a6040c4..4a3dda9 100644 --- a/content/browser/speech/tts_linux.cc +++ b/content/browser/speech/tts_linux.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/debug/leak_annotations.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "base/synchronization/lock.h" #include "base/task/sequenced_task_runner.h" @@ -90,7 +91,7 @@ char* index_mark); LibSpeechdLoader libspeechd_loader_; - SPDConnection* conn_ = nullptr; + raw_ptr<SPDConnection> conn_ = nullptr; int msg_uid_ = kInvalidMessageUid; // These apply to the current utterance only that is currently being
diff --git a/content/browser/webid/fedcm_metrics.h b/content/browser/webid/fedcm_metrics.h index 421b494..ce5b296 100644 --- a/content/browser/webid/fedcm_metrics.h +++ b/content/browser/webid/fedcm_metrics.h
@@ -46,8 +46,9 @@ kManifestNotInManifestList, kManifestListTooBig, kDisabledEmbargo, + kUserInterfaceTimedOut, - kMaxValue = kDisabledEmbargo + kMaxValue = kUserInterfaceTimedOut }; // This enum describes the status of a revocation call to the FedCM API.
diff --git a/content/browser/webid/federated_auth_request_impl.cc b/content/browser/webid/federated_auth_request_impl.cc index 6056ea1..468914d 100644 --- a/content/browser/webid/federated_auth_request_impl.cc +++ b/content/browser/webid/federated_auth_request_impl.cc
@@ -1384,6 +1384,18 @@ if (auth_request_callback_) { DCHECK(!revoke_callback_); DCHECK(!logout_callback_); + // If we have completed the request, e.g. when the token is returned or the + // API is aborted, `auth_request_callback_` would be null so we won't double + // count. If the request was failed but we have not yet rejected the + // promise, e.g. when the user has declined the permission or the API is + // disabled etc., we have already report the errors to console. i.e. + // `errors_logged_to_console_` would be true so we won't double count + // either. We record `kUserInterfaceTimedOut` only when the UI is displayed + // and then time out without user interaction. + if (!errors_logged_to_console_) { + RecordRequestIdTokenStatus(IdTokenStatus::kUserInterfaceTimedOut, + render_frame_host_->GetPageUkmSourceId()); + } CompleteRequest(FederatedAuthRequestResult::kError, "", /*should_call_callback=*/true); }
diff --git a/content/browser/webid/federated_auth_request_impl_unittest.cc b/content/browser/webid/federated_auth_request_impl_unittest.cc index a06a87a..e4d48f5c 100644 --- a/content/browser/webid/federated_auth_request_impl_unittest.cc +++ b/content/browser/webid/federated_auth_request_impl_unittest.cc
@@ -1713,6 +1713,11 @@ // Resolve token request. The callback should not be called. test_network_request_manager_->RunDelayedCallbacks(); + + histogram_tester_.ExpectUniqueSample("Blink.FedCm.Status.RequestIdToken", + IdTokenStatus::kUserInterfaceTimedOut, + 1); + ExpectRequestIdTokenStatusUKM(IdTokenStatus::kUserInterfaceTimedOut); } class FederatedAuthRequestImplTestCancelConsistency
diff --git a/content/browser/webui/web_ui_main_frame_observer_unittest.cc b/content/browser/webui/web_ui_main_frame_observer_unittest.cc index d97ed4ec..905faa2 100644 --- a/content/browser/webui/web_ui_main_frame_observer_unittest.cc +++ b/content/browser/webui/web_ui_main_frame_observer_unittest.cc
@@ -8,6 +8,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_params.h" #include "build/build_config.h" #include "components/crash/content/browser/error_reporting/javascript_error_report.h" // nogncheck @@ -67,7 +68,7 @@ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; JavaScriptErrorReport last_error_report_; int error_report_count_ = 0; - BrowserContext* browser_context_ = nullptr; + raw_ptr<BrowserContext> browser_context_ = nullptr; }; class MockWebUIController : public WebUIController {
diff --git a/content/services/auction_worklet/auction_v8_devtools_session.cc b/content/services/auction_worklet/auction_v8_devtools_session.cc index 45d959f..c9e4cab 100644 --- a/content/services/auction_worklet/auction_v8_devtools_session.cc +++ b/content/services/auction_worklet/auction_v8_devtools_session.cc
@@ -171,7 +171,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(v8_sequence_checker_); v8_session_ = v8_helper_->inspector()->connect( context_group_id_, this /* as V8Inspector::Channel */, - v8_inspector::StringView()); + v8_inspector::StringView(), v8_inspector::V8Inspector::kFullyTrusted); IOSession::Create( std::move(io_session_receiver), std::move(io_session_receiver_sequence), debug_command_queue_,
diff --git a/crypto/nss_util_internal.h b/crypto/nss_util_internal.h index 24fa80c..041351c 100644 --- a/crypto/nss_util_internal.h +++ b/crypto/nss_util_internal.h
@@ -10,6 +10,7 @@ #include <string> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "build/chromeos_buildflags.h" #include "crypto/crypto_export.h" #include "crypto/scoped_nss_types.h" @@ -51,7 +52,7 @@ ~AutoSECMODListReadLock(); private: - SECMODListLock* lock_; + raw_ptr<SECMODListLock> lock_; }; #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/dbus/bus.cc b/dbus/bus.cc index 545c209..34fe090 100644 --- a/dbus/bus.cc +++ b/dbus/bus.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/files/file_descriptor_watcher_posix.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/stringprintf.h" #include "base/synchronization/waitable_event.h" @@ -95,7 +96,7 @@ CHECK(dbus_watch_handle(raw_watch_, flags)) << "Unable to allocate memory"; } - DBusWatch* raw_watch_; + raw_ptr<DBusWatch> raw_watch_; std::unique_ptr<base::FileDescriptorWatcher::Controller> read_watcher_; std::unique_ptr<base::FileDescriptorWatcher::Controller> write_watcher_; }; @@ -141,7 +142,7 @@ // Calls DBus to handle the timeout. void HandleTimeout() { CHECK(dbus_timeout_handle(raw_timeout_)); } - DBusTimeout* raw_timeout_; + raw_ptr<DBusTimeout> raw_timeout_; base::WeakPtrFactory<Timeout> weak_ptr_factory_{this}; };
diff --git a/dbus/bus.h b/dbus/bus.h index f172016..cb888cb 100644 --- a/dbus/bus.h +++ b/dbus/bus.h
@@ -15,6 +15,7 @@ #include <vector> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" @@ -728,7 +729,7 @@ const ConnectionType connection_type_; scoped_refptr<base::SequencedTaskRunner> dbus_task_runner_; base::WaitableEvent on_shutdown_; - DBusConnection* connection_; + raw_ptr<DBusConnection> connection_; base::PlatformThreadId origin_thread_id_; scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
diff --git a/dbus/end_to_end_async_unittest.cc b/dbus/end_to_end_async_unittest.cc index aca0e9f..7415ed2 100644 --- a/dbus/end_to_end_async_unittest.cc +++ b/dbus/end_to_end_async_unittest.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -257,8 +258,8 @@ std::vector<std::string> error_names_; std::unique_ptr<base::Thread> dbus_thread_; scoped_refptr<Bus> bus_; - ObjectProxy* object_proxy_; - ObjectProxy* root_object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; + raw_ptr<ObjectProxy> root_object_proxy_; std::unique_ptr<TestService> test_service_; // Text message from "Test" signal. std::string test_signal_string_;
diff --git a/dbus/end_to_end_sync_unittest.cc b/dbus/end_to_end_sync_unittest.cc index 6035968d..fe21469 100644 --- a/dbus/end_to_end_sync_unittest.cc +++ b/dbus/end_to_end_sync_unittest.cc
@@ -4,6 +4,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/task_environment.h" @@ -53,7 +54,7 @@ base::test::SingleThreadTaskEnvironment::MainThreadType::IO}; std::unique_ptr<TestService> test_service_; scoped_refptr<Bus> client_bus_; - ObjectProxy* object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; }; TEST_F(EndToEndSyncTest, Echo) {
diff --git a/dbus/message.h b/dbus/message.h index 9a1cb95..061c339 100644 --- a/dbus/message.h +++ b/dbus/message.h
@@ -14,6 +14,7 @@ #include <vector> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "dbus/dbus_export.h" #include "dbus/object_path.h" @@ -138,7 +139,7 @@ std::string ToStringInternal(const std::string& indent, MessageReader* reader); - DBusMessage* raw_message_; + raw_ptr<DBusMessage> raw_message_; }; // MessageCall is a type of message used for calling a method via D-Bus. @@ -370,7 +371,7 @@ // Helper function used to implement AppendVariantOfByte() etc. void AppendVariantOfBasic(int dbus_type, const void* value); - Message* message_; + raw_ptr<Message> message_; DBusMessageIter raw_message_iter_; bool container_is_open_; }; @@ -512,7 +513,7 @@ // Helper function used to implement PopVariantOfByte() etc. bool PopVariantOfBasic(int dbus_type, void* value); - Message* message_; + raw_ptr<Message> message_; DBusMessageIter raw_message_iter_; };
diff --git a/dbus/object_manager.h b/dbus/object_manager.h index e3435d1e..2cede4c 100644 --- a/dbus/object_manager.h +++ b/dbus/object_manager.h
@@ -9,6 +9,7 @@ #include <map> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "dbus/object_path.h" @@ -327,12 +328,12 @@ // |service_name_owner_|. void UpdateServiceNameOwner(const std::string& new_owner); - Bus* bus_; + raw_ptr<Bus> bus_; std::string service_name_; std::string service_name_owner_; std::string match_rule_; ObjectPath object_path_; - ObjectProxy* object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; bool setup_success_; bool cleanup_called_; @@ -348,7 +349,7 @@ Object(); ~Object(); - ObjectProxy* object_proxy; + raw_ptr<ObjectProxy> object_proxy; // Maps the name of an interface to the specific PropertySet structure // of that interface's properties.
diff --git a/dbus/object_manager_unittest.cc b/dbus/object_manager_unittest.cc index b87a315..7886a1e5 100644 --- a/dbus/object_manager_unittest.cc +++ b/dbus/object_manager_unittest.cc
@@ -12,6 +12,7 @@ #include <vector> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -211,7 +212,7 @@ std::unique_ptr<base::RunLoop> run_loop_; std::unique_ptr<base::Thread> dbus_thread_; scoped_refptr<Bus> bus_; - ObjectManager* object_manager_; + raw_ptr<ObjectManager> object_manager_; std::unique_ptr<TestService> test_service_; std::string last_name_value_;
diff --git a/dbus/property.h b/dbus/property.h index a6ebe25..d4f85dd 100644 --- a/dbus/property.h +++ b/dbus/property.h
@@ -14,6 +14,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "dbus/dbus_export.h" #include "dbus/message.h" #include "dbus/object_proxy.h" @@ -191,7 +192,7 @@ private: // Pointer to the PropertySet instance that this instance is a member of, // no ownership is taken and |property_set_| must outlive this class. - PropertySet* property_set_; + raw_ptr<PropertySet> property_set_; bool is_valid_; @@ -332,7 +333,7 @@ // Pointer to object proxy for making method calls, no ownership is taken // so this must outlive this class. - ObjectProxy* object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; // Interface of property, e.g. "org.chromium.ExampleService", this is // distinct from the interface of the method call itself which is the
diff --git a/dbus/property_unittest.cc b/dbus/property_unittest.cc index 38c8b53..85ea8b66 100644 --- a/dbus/property_unittest.cc +++ b/dbus/property_unittest.cc
@@ -12,6 +12,7 @@ #include <vector> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" @@ -159,7 +160,7 @@ std::unique_ptr<base::RunLoop> run_loop_; std::unique_ptr<base::Thread> dbus_thread_; scoped_refptr<Bus> bus_; - ObjectProxy* object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; std::unique_ptr<Properties> properties_; std::unique_ptr<TestService> test_service_; // Properties updated.
diff --git a/dbus/signal_sender_verification_unittest.cc b/dbus/signal_sender_verification_unittest.cc index 3328608..6d149cb 100644 --- a/dbus/signal_sender_verification_unittest.cc +++ b/dbus/signal_sender_verification_unittest.cc
@@ -5,6 +5,7 @@ #include <memory> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_samples.h" @@ -163,7 +164,7 @@ std::unique_ptr<base::RunLoop> run_loop_; std::unique_ptr<base::Thread> dbus_thread_; scoped_refptr<Bus> bus_; - ObjectProxy* object_proxy_; + raw_ptr<ObjectProxy> object_proxy_; std::unique_ptr<TestService> test_service_; std::unique_ptr<TestService> test_service2_; // Text message from "Test" signal.
diff --git a/dbus/test_service.h b/dbus/test_service.h index 18a7d0f3..ba1adb3 100644 --- a/dbus/test_service.h +++ b/dbus/test_service.h
@@ -6,9 +6,10 @@ #define DBUS_TEST_SERVICE_H_ #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" -#include "base/threading/thread.h" #include "base/synchronization/waitable_event.h" +#include "base/threading/thread.h" #include "dbus/bus.h" #include "dbus/exported_object.h" @@ -223,8 +224,8 @@ bool has_ownership_; scoped_refptr<Bus> bus_; - ExportedObject* exported_object_; - ExportedObject* exported_object_manager_; + raw_ptr<ExportedObject> exported_object_; + raw_ptr<ExportedObject> exported_object_manager_; }; } // namespace dbus
diff --git a/device/bluetooth/bluez/bluetooth_adapter_profile_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_adapter_profile_bluez_unittest.cc index 02c7ca3..46a28fd 100644 --- a/device/bluetooth/bluez/bluetooth_adapter_profile_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_adapter_profile_bluez_unittest.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/task_environment.h" @@ -158,7 +159,7 @@ // unowned pointer as expected to be used by clients of // BluetoothAdapterBlueZ::UseProfile like BluetoothSocketBlueZ - BluetoothAdapterProfileBlueZ* profile_user_ptr_; + raw_ptr<BluetoothAdapterProfileBlueZ> profile_user_ptr_; }; TEST_F(BluetoothAdapterProfileBlueZTest, DelegateCount) {
diff --git a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc index 845ff850..df2c2f85 100644 --- a/device/bluetooth/bluez/bluetooth_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_bluez_unittest.cc
@@ -13,6 +13,7 @@ #include "base/callback_helpers.h" #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/task/current_thread.h" @@ -484,17 +485,18 @@ protected: base::test::SingleThreadTaskEnvironment task_environment_; - bluez::FakeBluetoothAdapterClient* fake_bluetooth_adapter_client_; - bluez::FakeBluetoothAdminPolicyClient* fake_bluetooth_admin_policy_client_; - bluez::FakeBluetoothBatteryClient* fake_bluetooth_battery_client_; - bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_; + raw_ptr<bluez::FakeBluetoothAdapterClient> fake_bluetooth_adapter_client_; + raw_ptr<bluez::FakeBluetoothAdminPolicyClient> + fake_bluetooth_admin_policy_client_; + raw_ptr<bluez::FakeBluetoothBatteryClient> fake_bluetooth_battery_client_; + raw_ptr<bluez::FakeBluetoothDeviceClient> fake_bluetooth_device_client_; scoped_refptr<BluetoothAdapter> adapter_; int callback_count_; int error_callback_count_; std::string last_client_error_; std::vector<std::unique_ptr<BluetoothDiscoverySession>> discovery_sessions_; - BluetoothAdapterProfileBlueZ* adapter_profile_; + raw_ptr<BluetoothAdapterProfileBlueZ> adapter_profile_; #if BUILDFLAG(IS_CHROMEOS) base::HistogramTester histogram_tester_; #endif
diff --git a/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc index db482c95..bfb7a30 100644 --- a/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_gatt_bluez_unittest.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/task_environment.h" @@ -312,11 +313,12 @@ base::test::SingleThreadTaskEnvironment task_environment_; - bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_; - bluez::FakeBluetoothGattServiceClient* fake_bluetooth_gatt_service_client_; - bluez::FakeBluetoothGattCharacteristicClient* + raw_ptr<bluez::FakeBluetoothDeviceClient> fake_bluetooth_device_client_; + raw_ptr<bluez::FakeBluetoothGattServiceClient> + fake_bluetooth_gatt_service_client_; + raw_ptr<bluez::FakeBluetoothGattCharacteristicClient> fake_bluetooth_gatt_characteristic_client_; - bluez::FakeBluetoothGattDescriptorClient* + raw_ptr<bluez::FakeBluetoothGattDescriptorClient> fake_bluetooth_gatt_descriptor_client_; std::unique_ptr<device::BluetoothGattConnection> gatt_conn_; std::vector<std::unique_ptr<BluetoothGattNotifySession>> update_sessions_;
diff --git a/device/bluetooth/bluez/bluetooth_gatt_service_bluez.h b/device/bluetooth/bluez/bluetooth_gatt_service_bluez.h index 9042c11b..5aa694c 100644 --- a/device/bluetooth/bluez/bluetooth_gatt_service_bluez.h +++ b/device/bluetooth/bluez/bluetooth_gatt_service_bluez.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_gatt_service.h" @@ -46,7 +47,7 @@ // The adapter associated with this service. It's ok to store a raw pointer // here since |adapter_| indirectly owns this instance. - BluetoothAdapterBlueZ* adapter_; + raw_ptr<BluetoothAdapterBlueZ> adapter_; // Object path of the GATT service. dbus::ObjectPath object_path_;
diff --git a/device/bluetooth/bluez/bluetooth_local_gatt_characteristic_bluez.h b/device/bluetooth/bluez/bluetooth_local_gatt_characteristic_bluez.h index 7e3de165..1144603 100644 --- a/device/bluetooth/bluez/bluetooth_local_gatt_characteristic_bluez.h +++ b/device/bluetooth/bluez/bluetooth_local_gatt_characteristic_bluez.h
@@ -8,6 +8,7 @@ #include <cstdint> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "device/bluetooth/bluetooth_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_characteristic.h" @@ -72,7 +73,7 @@ Permissions permissions_; // Service that contains this characteristic. - BluetoothLocalGattServiceBlueZ* service_; + raw_ptr<BluetoothLocalGattServiceBlueZ> service_; // Descriptors contained by this characteristic. std::vector<std::unique_ptr<BluetoothLocalGattDescriptorBlueZ>> descriptors_;
diff --git a/device/bluetooth/bluez/bluetooth_local_gatt_descriptor_bluez.h b/device/bluetooth/bluez/bluetooth_local_gatt_descriptor_bluez.h index 7c301f8..e203127 100644 --- a/device/bluetooth/bluez/bluetooth_local_gatt_descriptor_bluez.h +++ b/device/bluetooth/bluez/bluetooth_local_gatt_descriptor_bluez.h
@@ -5,6 +5,7 @@ #ifndef DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_LOCAL_GATT_DESCRIPTOR_BLUEZ_H_ #define DEVICE_BLUETOOTH_BLUEZ_BLUETOOTH_LOCAL_GATT_DESCRIPTOR_BLUEZ_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "device/bluetooth/bluetooth_local_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_descriptor.h" @@ -51,7 +52,7 @@ device::BluetoothGattCharacteristic::Permissions permissions_; // Characteristic that contains this descriptor. - BluetoothLocalGattCharacteristicBlueZ* characteristic_; + raw_ptr<BluetoothLocalGattCharacteristicBlueZ> characteristic_; // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed.
diff --git a/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h b/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h index c12c239..893c885 100644 --- a/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h +++ b/device/bluetooth/bluez/bluetooth_local_gatt_service_bluez.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "device/bluetooth/bluetooth_local_gatt_service.h" #include "device/bluetooth/bluez/bluetooth_gatt_service_bluez.h" @@ -83,7 +84,7 @@ // Delegate to receive read/write requests for attribute values contained // in this service. - device::BluetoothLocalGattService::Delegate* delegate_; + raw_ptr<device::BluetoothLocalGattService::Delegate> delegate_; // Characteristics contained by this service. std::map<dbus::ObjectPath,
diff --git a/device/bluetooth/bluez/bluetooth_pairing_bluez.h b/device/bluetooth/bluez/bluetooth_pairing_bluez.h index 309d20aa..73f9239 100644 --- a/device/bluetooth/bluez/bluetooth_pairing_bluez.h +++ b/device/bluetooth/bluez/bluetooth_pairing_bluez.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_device.h" #include "device/bluetooth/dbus/bluetooth_agent_service_provider.h" @@ -124,11 +125,11 @@ bluez::BluetoothAgentServiceProvider::Delegate::Status status); // The underlying BluetoothDeviceBlueZ that owns this pairing context. - BluetoothDeviceBlueZ* device_; + raw_ptr<BluetoothDeviceBlueZ> device_; // UI Pairing Delegate to make method calls on, this must live as long as // the object capturing the PairingContext. - device::BluetoothDevice::PairingDelegate* pairing_delegate_; + raw_ptr<device::BluetoothDevice::PairingDelegate> pairing_delegate_; // Flag to indicate whether any pairing delegate method has been called // during pairing. Used to determine whether we need to log the
diff --git a/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h b/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h index 87b21a81..ed2966e46 100644 --- a/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h +++ b/device/bluetooth/bluez/bluetooth_remote_gatt_characteristic_bluez.h
@@ -15,6 +15,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" @@ -140,7 +141,7 @@ bool has_notify_session_; // The GATT service this GATT characteristic belongs to. - BluetoothRemoteGattServiceBlueZ* service_; + raw_ptr<BluetoothRemoteGattServiceBlueZ> service_; // Number of gatt read requests in progress. int num_of_characteristic_value_read_in_progress_;
diff --git a/device/bluetooth/bluez/bluetooth_remote_gatt_descriptor_bluez.h b/device/bluetooth/bluez/bluetooth_remote_gatt_descriptor_bluez.h index 4be462a..1470ca5 100644 --- a/device/bluetooth/bluez/bluetooth_remote_gatt_descriptor_bluez.h +++ b/device/bluetooth/bluez/bluetooth_remote_gatt_descriptor_bluez.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" @@ -64,7 +65,7 @@ const std::string& error_message); // The GATT characteristic this descriptor belongs to. - BluetoothRemoteGattCharacteristicBlueZ* characteristic_; + raw_ptr<BluetoothRemoteGattCharacteristicBlueZ> characteristic_; // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed.
diff --git a/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h b/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h index df347f9e..028c50a3 100644 --- a/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h +++ b/device/bluetooth/bluez/bluetooth_remote_gatt_service_bluez.h
@@ -11,6 +11,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_remote_gatt_service.h" @@ -98,7 +99,7 @@ // The device this GATT service belongs to. It's ok to store a raw pointer // here since |device_| owns this instance. - BluetoothDeviceBlueZ* device_; + raw_ptr<BluetoothDeviceBlueZ> device_; // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed.
diff --git a/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc index fa996d6f..ea50d1b 100644 --- a/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/bind.h" @@ -141,7 +142,7 @@ return record; } - BluetoothAdapterBlueZ* adapter_bluez_; + raw_ptr<BluetoothAdapterBlueZ> adapter_bluez_; size_t success_callbacks_; size_t error_callbacks_;
diff --git a/device/bluetooth/bluez/bluetooth_socket_bluez.h b/device/bluetooth/bluez/bluetooth_socket_bluez.h index 72f969f1..096fa8bc 100644 --- a/device/bluetooth/bluez/bluetooth_socket_bluez.h +++ b/device/bluetooth/bluez/bluetooth_socket_bluez.h
@@ -9,6 +9,7 @@ #include <string> #include "base/containers/queue.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_adapter.h" @@ -155,7 +156,7 @@ std::unique_ptr<bluez::BluetoothProfileManagerClient::Options> options_; // The profile registered with the adapter for this socket. - BluetoothAdapterProfileBlueZ* profile_; + raw_ptr<BluetoothAdapterProfileBlueZ> profile_; // Pending request to an Accept() call. struct AcceptRequest {
diff --git a/device/bluetooth/bluez/bluetooth_socket_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_socket_bluez_unittest.cc index 159523f..57d217b 100644 --- a/device/bluetooth/bluez/bluetooth_socket_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_socket_bluez_unittest.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/bind.h" @@ -196,7 +197,7 @@ int last_bytes_received_; scoped_refptr<net::IOBuffer> last_io_buffer_; BluetoothSocket::ErrorReason last_reason_; - const BluetoothDevice* last_device_; + raw_ptr<const BluetoothDevice> last_device_; }; TEST_F(BluetoothSocketBlueZTest, Connect) {
diff --git a/device/bluetooth/dbus/bluetooth_adapter_client.cc b/device/bluetooth/dbus/bluetooth_adapter_client.cc index ae31740..ef9b89e1 100644 --- a/device/bluetooth/dbus/bluetooth_adapter_client.cc +++ b/device/bluetooth/dbus/bluetooth_adapter_client.cc
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/callback_helpers.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/values.h" @@ -601,7 +602,7 @@ OnError(std::move(error_callback), response); } - dbus::ObjectManager* object_manager_ = nullptr; + raw_ptr<dbus::ObjectManager> object_manager_ = nullptr; // List of observers interested in event notifications from us. base::ObserverList<BluetoothAdapterClient::Observer>::Unchecked observers_;
diff --git a/device/bluetooth/dbus/bluetooth_admin_policy_client.cc b/device/bluetooth/dbus/bluetooth_admin_policy_client.cc index e73e51c..f991947 100644 --- a/device/bluetooth/dbus/bluetooth_admin_policy_client.cc +++ b/device/bluetooth/dbus/bluetooth_admin_policy_client.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -169,7 +170,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectManager* object_manager_ = nullptr; + raw_ptr<dbus::ObjectManager> object_manager_ = nullptr; // List of observers interested in event notifications from us. base::ObserverList<BluetoothAdminPolicyClient::Observer>::Unchecked
diff --git a/device/bluetooth/dbus/bluetooth_advertisement_monitor_application_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_advertisement_monitor_application_service_provider_impl.h index 5d1ec15..1771797f 100644 --- a/device/bluetooth/dbus/bluetooth_advertisement_monitor_application_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_advertisement_monitor_application_service_provider_impl.h
@@ -9,6 +9,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -80,7 +81,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluetooth_advertisement_monitor_manager_client.cc b/device/bluetooth/dbus/bluetooth_advertisement_monitor_manager_client.cc index a7615ab..265da4b7 100644 --- a/device/bluetooth/dbus/bluetooth_advertisement_monitor_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_advertisement_monitor_manager_client.cc
@@ -9,6 +9,7 @@ #include "base/check.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -201,7 +202,7 @@ base::ObserverList<Observer> observers_; - dbus::ObjectManager* object_manager_ = nullptr; + raw_ptr<dbus::ObjectManager> object_manager_ = nullptr; base::WeakPtrFactory<BluetoothAdvertisementMonitorManagerClientImpl> weak_ptr_factory_{this};
diff --git a/device/bluetooth/dbus/bluetooth_advertisement_monitor_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_advertisement_monitor_service_provider_impl.h index b3b9b81..e369419 100644 --- a/device/bluetooth/dbus/bluetooth_advertisement_monitor_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_advertisement_monitor_service_provider_impl.h
@@ -8,6 +8,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -85,7 +86,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluetooth_agent_manager_client.cc b/device/bluetooth/dbus/bluetooth_agent_manager_client.cc index d967849..488080c9 100644 --- a/device/bluetooth/dbus/bluetooth_agent_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_agent_manager_client.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -172,9 +173,9 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectProxy* object_proxy_; + raw_ptr<dbus::ObjectProxy> object_proxy_; - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothAgentManagerClient::Observer> observers_;
diff --git a/device/bluetooth/dbus/bluetooth_agent_service_provider.cc b/device/bluetooth/dbus/bluetooth_agent_service_provider.cc index fe7f5782..b058c6e 100644 --- a/device/bluetooth/dbus/bluetooth_agent_service_provider.cc +++ b/device/bluetooth/dbus/bluetooth_agent_service_provider.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/threading/platform_thread.h" #include "dbus/exported_object.h" @@ -425,12 +426,12 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluetooth_battery_client.cc b/device/bluetooth/dbus/bluetooth_battery_client.cc index 28b8e87..f7d75a4 100644 --- a/device/bluetooth/dbus/bluetooth_battery_client.cc +++ b/device/bluetooth/dbus/bluetooth_battery_client.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -111,7 +112,7 @@ observer.BatteryPropertyChanged(object_path, property_name); } - dbus::ObjectManager* object_manager_ = nullptr; + raw_ptr<dbus::ObjectManager> object_manager_ = nullptr; // List of observers interested in event notifications from us. base::ObserverList<BluetoothBatteryClient::Observer>::Unchecked observers_;
diff --git a/device/bluetooth/dbus/bluetooth_debug_manager_client.cc b/device/bluetooth/dbus/bluetooth_debug_manager_client.cc index 85f7800a..07fcd5b3 100644 --- a/device/bluetooth/dbus/bluetooth_debug_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_debug_manager_client.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "dbus/bus.h" #include "dbus/message.h" #include "dbus/object_manager.h" @@ -121,9 +122,9 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectProxy* object_proxy_; + raw_ptr<dbus::ObjectProxy> object_proxy_; - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; base::WeakPtrFactory<BluetoothDebugManagerClientImpl> weak_ptr_factory_{this}; };
diff --git a/device/bluetooth/dbus/bluetooth_device_client.cc b/device/bluetooth/dbus/bluetooth_device_client.cc index a133049..9de95bf 100644 --- a/device/bluetooth/dbus/bluetooth_device_client.cc +++ b/device/bluetooth/dbus/bluetooth_device_client.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "build/chromeos_buildflags.h" #include "dbus/bus.h" @@ -788,7 +789,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothDeviceClient::Observer>::Unchecked observers_;
diff --git a/device/bluetooth/dbus/bluetooth_gatt_application_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_gatt_application_service_provider_impl.h index 4ca9954..db852694 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_application_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_gatt_application_service_provider_impl.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -88,7 +89,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluetooth_gatt_attribute_value_delegate.h b/device/bluetooth/dbus/bluetooth_gatt_attribute_value_delegate.h index 14f3cb1..0081484 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_attribute_value_delegate.h +++ b/device/bluetooth/dbus/bluetooth_gatt_attribute_value_delegate.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_service.h" @@ -98,7 +99,7 @@ const BluetoothLocalGattServiceBlueZ* service() { return service_; } private: - const BluetoothLocalGattServiceBlueZ* service_; + raw_ptr<const BluetoothLocalGattServiceBlueZ> service_; }; } // namespace bluez
diff --git a/device/bluetooth/dbus/bluetooth_gatt_characteristic_client.cc b/device/bluetooth/dbus/bluetooth_gatt_characteristic_client.cc index ed22cb13c..1b4e4d96 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_characteristic_client.cc +++ b/device/bluetooth/dbus/bluetooth_gatt_characteristic_client.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/values.h" @@ -334,7 +335,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothGattCharacteristicClient::Observer>::Unchecked
diff --git a/device/bluetooth/dbus/bluetooth_gatt_characteristic_delegate_wrapper.h b/device/bluetooth/dbus/bluetooth_gatt_characteristic_delegate_wrapper.h index 33ca513d..c6c6904 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_characteristic_delegate_wrapper.h +++ b/device/bluetooth/dbus/bluetooth_gatt_characteristic_delegate_wrapper.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_service.h" #include "device/bluetooth/bluez/bluetooth_gatt_service_bluez.h" @@ -55,7 +56,7 @@ void StopNotifications(const dbus::ObjectPath& device_path) override; private: - BluetoothLocalGattCharacteristicBlueZ* characteristic_; + raw_ptr<BluetoothLocalGattCharacteristicBlueZ> characteristic_; }; } // namespace bluez
diff --git a/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_impl.h index 5434a2e..1215722e 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_gatt_characteristic_service_provider_impl.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -143,7 +144,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // Incoming methods to get and set the "Value" property are passed on to the // delegate and callbacks passed to generate a reply. |delegate_| is generally
diff --git a/device/bluetooth/dbus/bluetooth_gatt_descriptor_client.cc b/device/bluetooth/dbus/bluetooth_gatt_descriptor_client.cc index 35df6a7..349ae53 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_descriptor_client.cc +++ b/device/bluetooth/dbus/bluetooth_gatt_descriptor_client.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/values.h" @@ -244,7 +245,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothGattDescriptorClient::Observer>::Unchecked
diff --git a/device/bluetooth/dbus/bluetooth_gatt_descriptor_delegate_wrapper.h b/device/bluetooth/dbus/bluetooth_gatt_descriptor_delegate_wrapper.h index d57bf7a51..2a03cb2 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_descriptor_delegate_wrapper.h +++ b/device/bluetooth/dbus/bluetooth_gatt_descriptor_delegate_wrapper.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_service.h" #include "device/bluetooth/bluez/bluetooth_gatt_service_bluez.h" @@ -48,7 +49,7 @@ void StopNotifications(const dbus::ObjectPath& device_path) override {} private: - BluetoothLocalGattDescriptorBlueZ* descriptor_; + raw_ptr<BluetoothLocalGattDescriptorBlueZ> descriptor_; }; } // namespace bluez
diff --git a/device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider_impl.h index 831ee58..6087f104 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_gatt_descriptor_service_provider_impl.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -112,7 +113,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // Incoming methods to get and set the "Value" property are passed on to the // delegate and callbacks passed to generate a reply. |delegate_| is generally
diff --git a/device/bluetooth/dbus/bluetooth_gatt_manager_client.cc b/device/bluetooth/dbus/bluetooth_gatt_manager_client.cc index 9b4531c4..ccf5e2c5 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_gatt_manager_client.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/check.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/strcat.h" #include "dbus/bus.h" @@ -151,7 +152,7 @@ } // The proxy to the bluez object manager. - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // Weak pointer factory for generating 'this' pointers that might live longer // than we do.
diff --git a/device/bluetooth/dbus/bluetooth_gatt_service_client.cc b/device/bluetooth/dbus/bluetooth_gatt_service_client.cc index 71d140a..fde202eb 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_service_client.cc +++ b/device/bluetooth/dbus/bluetooth_gatt_service_client.cc
@@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" @@ -120,7 +121,7 @@ observer.GattServicePropertyChanged(object_path, property_name); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothGattServiceClient::Observer>::Unchecked
diff --git a/device/bluetooth/dbus/bluetooth_gatt_service_service_provider_impl.h b/device/bluetooth/dbus/bluetooth_gatt_service_service_provider_impl.h index 0e3932c..9b7e41d 100644 --- a/device/bluetooth/dbus/bluetooth_gatt_service_service_provider_impl.h +++ b/device/bluetooth/dbus/bluetooth_gatt_service_service_provider_impl.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/platform_thread.h" @@ -82,7 +83,7 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluetooth_input_client.cc b/device/bluetooth/dbus/bluetooth_input_client.cc index c25ef46..318b4ae5 100644 --- a/device/bluetooth/dbus/bluetooth_input_client.cc +++ b/device/bluetooth/dbus/bluetooth_input_client.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -107,7 +108,7 @@ observer.InputPropertyChanged(object_path, property_name); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothInputClient::Observer>::Unchecked observers_;
diff --git a/device/bluetooth/dbus/bluetooth_le_advertisement_service_provider.cc b/device/bluetooth/dbus/bluetooth_le_advertisement_service_provider.cc index 8f72a4b..b2063622 100644 --- a/device/bluetooth/dbus/bluetooth_le_advertisement_service_provider.cc +++ b/device/bluetooth/dbus/bluetooth_le_advertisement_service_provider.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/threading/platform_thread.h" #include "dbus/exported_object.h" @@ -423,12 +424,12 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; // Advertisement data that needs to be provided to BlueZ when requested. AdvertisementType type_;
diff --git a/device/bluetooth/dbus/bluetooth_le_advertising_manager_client.cc b/device/bluetooth/dbus/bluetooth_le_advertising_manager_client.cc index 417c446..0a89912 100644 --- a/device/bluetooth/dbus/bluetooth_le_advertising_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_le_advertising_manager_client.cc
@@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -203,7 +204,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectManager* object_manager_; + raw_ptr<dbus::ObjectManager> object_manager_; // List of observers interested in event notifications from us. base::ObserverList<BluetoothLEAdvertisingManagerClient::Observer>::Unchecked
diff --git a/device/bluetooth/dbus/bluetooth_profile_manager_client.cc b/device/bluetooth/dbus/bluetooth_profile_manager_client.cc index e6887b1..ba52a9c 100644 --- a/device/bluetooth/dbus/bluetooth_profile_manager_client.cc +++ b/device/bluetooth/dbus/bluetooth_profile_manager_client.cc
@@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "dbus/bus.h" #include "dbus/message.h" @@ -247,7 +248,7 @@ std::move(error_callback).Run(error_name, error_message); } - dbus::ObjectProxy* object_proxy_; + raw_ptr<dbus::ObjectProxy> object_proxy_; // Weak pointer factory for generating 'this' pointers that might live longer // than we do.
diff --git a/device/bluetooth/dbus/bluetooth_profile_service_provider.cc b/device/bluetooth/dbus/bluetooth_profile_service_provider.cc index 3ca9bf6..2c570c3 100644 --- a/device/bluetooth/dbus/bluetooth_profile_service_provider.cc +++ b/device/bluetooth/dbus/bluetooth_profile_service_provider.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/threading/platform_thread.h" #include "dbus/exported_object.h" @@ -219,12 +220,12 @@ // D-Bus bus object is exported on, not owned by this object and must // outlive it. - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; // D-Bus object path of object we are exporting, kept so we can unregister // again in our destructor.
diff --git a/device/bluetooth/dbus/bluez_dbus_manager.h b/device/bluetooth/dbus/bluez_dbus_manager.h index 129485f..5b9321e 100644 --- a/device/bluetooth/dbus/bluez_dbus_manager.h +++ b/device/bluetooth/dbus/bluez_dbus_manager.h
@@ -9,6 +9,7 @@ #include <string> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "device/bluetooth/bluetooth_export.h" @@ -175,10 +176,10 @@ // performs additional setup. void InitializeClients(); - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // Separate D-Bus connection used by the "Alternate" set of D-Bus clients. See // "Alternate D-Bus Client" note above. - dbus::Bus* alternate_bus_; + raw_ptr<dbus::Bus> alternate_bus_; std::unique_ptr<BluetoothDBusClientBundle> client_bundle_;
diff --git a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_manager_client.h b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_manager_client.h index 98b1f54..b698ba6f 100644 --- a/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_manager_client.h +++ b/device/bluetooth/dbus/fake_bluetooth_advertisement_monitor_manager_client.h
@@ -10,6 +10,7 @@ #include "base/callback_forward.h" #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "dbus/object_path.h" @@ -66,7 +67,7 @@ void OnPropertyChanged(const dbus::ObjectPath& object_path, const std::string& property_name); - FakeBluetoothAdvertisementMonitorApplicationServiceProvider* + raw_ptr<FakeBluetoothAdvertisementMonitorApplicationServiceProvider> application_provider_ = nullptr; std::unique_ptr<Properties> properties_;
diff --git a/device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h b/device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h index 1c03970..d2f6edf 100644 --- a/device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h +++ b/device/bluetooth/dbus/fake_bluetooth_agent_manager_client.h
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "dbus/object_path.h" #include "dbus/property.h" @@ -51,7 +52,7 @@ private: // The single agent service provider we permit, owned by the application // using it. - FakeBluetoothAgentServiceProvider* service_provider_; + raw_ptr<FakeBluetoothAgentServiceProvider> service_provider_; // List of observers interested in event notifications from us. base::ObserverList<Observer>::Unchecked observers_;
diff --git a/device/bluetooth/dbus/fake_bluetooth_agent_service_provider.h b/device/bluetooth/dbus/fake_bluetooth_agent_service_provider.h index 3d97ddb..43dedc0 100644 --- a/device/bluetooth/dbus/fake_bluetooth_agent_service_provider.h +++ b/device/bluetooth/dbus/fake_bluetooth_agent_service_provider.h
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "dbus/object_path.h" #include "dbus/property.h" #include "device/bluetooth/bluetooth_export.h" @@ -59,7 +60,7 @@ // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; }; } // namespace bluez
diff --git a/device/bluetooth/dbus/fake_bluetooth_le_advertisement_service_provider.h b/device/bluetooth/dbus/fake_bluetooth_le_advertisement_service_provider.h index 3871bf4..a03a09d 100644 --- a/device/bluetooth/dbus/fake_bluetooth_le_advertisement_service_provider.h +++ b/device/bluetooth/dbus/fake_bluetooth_le_advertisement_service_provider.h
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_export.h" #include "device/bluetooth/dbus/bluetooth_le_advertisement_service_provider.h" @@ -43,7 +44,7 @@ // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; }; } // namespace bluez
diff --git a/device/bluetooth/dbus/fake_bluetooth_profile_service_provider.h b/device/bluetooth/dbus/fake_bluetooth_profile_service_provider.h index 50a2811..6a2d553 100644 --- a/device/bluetooth/dbus/fake_bluetooth_profile_service_provider.h +++ b/device/bluetooth/dbus/fake_bluetooth_profile_service_provider.h
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "dbus/object_path.h" #include "device/bluetooth/bluetooth_export.h" #include "device/bluetooth/dbus/bluetooth_profile_service_provider.h" @@ -54,7 +55,7 @@ // All incoming method calls are passed on to the Delegate and a callback // passed to generate the reply. |delegate_| is generally the object that // owns this one, and must outlive it. - Delegate* delegate_; + raw_ptr<Delegate> delegate_; }; } // namespace bluez
diff --git a/device/bluetooth/floss/bluetooth_floss_unittest.cc b/device/bluetooth/floss/bluetooth_floss_unittest.cc index ce65875..a4eb545 100644 --- a/device/bluetooth/floss/bluetooth_floss_unittest.cc +++ b/device/bluetooth/floss/bluetooth_floss_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/task_environment.h" @@ -107,8 +108,8 @@ // Holds pointer to FakeFloss*Client's so that we can manipulate the fake // within tests. - FakeFlossManagerClient* fake_floss_manager_client_; - FakeFlossAdapterClient* fake_floss_adapter_client_; + raw_ptr<FakeFlossManagerClient> fake_floss_manager_client_; + raw_ptr<FakeFlossAdapterClient> fake_floss_adapter_client_; std::vector<std::unique_ptr<BluetoothDiscoverySession>> discovery_sessions_;
diff --git a/device/bluetooth/floss/bluetooth_pairing_floss.h b/device/bluetooth/floss/bluetooth_pairing_floss.h index 5181513f..1cbce27 100644 --- a/device/bluetooth/floss/bluetooth_pairing_floss.h +++ b/device/bluetooth/floss/bluetooth_pairing_floss.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_device.h" #include "device/bluetooth/dbus/bluetooth_agent_service_provider.h" @@ -49,7 +50,7 @@ private: // UI Pairing Delegate to make method calls on, this must live as long as // the object capturing the PairingContext. - device::BluetoothDevice::PairingDelegate* pairing_delegate_; + raw_ptr<device::BluetoothDevice::PairingDelegate> pairing_delegate_; // If pending user interaction, what is expected from the user. PairingExpectation pairing_expectation_ = PairingExpectation::kNone;
diff --git a/device/bluetooth/floss/floss_adapter_client.h b/device/bluetooth/floss/floss_adapter_client.h index 164f5b3..840cd03 100644 --- a/device/bluetooth/floss/floss_adapter_client.h +++ b/device/bluetooth/floss/floss_adapter_client.h
@@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "dbus/exported_object.h" @@ -342,7 +343,7 @@ base::ObserverList<Observer> observers_; // Managed by FlossDBusManager - we keep local pointer to access object proxy. - dbus::Bus* bus_ = nullptr; + raw_ptr<dbus::Bus> bus_ = nullptr; // Adapter managed by this client. dbus::ObjectPath adapter_path_;
diff --git a/device/bluetooth/floss/floss_adapter_client_unittest.cc b/device/bluetooth/floss/floss_adapter_client_unittest.cc index 5d6295a8..4052f2c 100644 --- a/device/bluetooth/floss/floss_adapter_client_unittest.cc +++ b/device/bluetooth/floss/floss_adapter_client_unittest.cc
@@ -7,6 +7,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/bind.h" @@ -122,7 +123,7 @@ int ssp_request_count_ = 0; private: - FlossAdapterClient* client_ = nullptr; + raw_ptr<FlossAdapterClient> client_ = nullptr; }; } // namespace
diff --git a/device/bluetooth/floss/floss_dbus_manager.h b/device/bluetooth/floss/floss_dbus_manager.h index 5152bee7..38af736 100644 --- a/device/bluetooth/floss/floss_dbus_manager.h +++ b/device/bluetooth/floss/floss_dbus_manager.h
@@ -9,6 +9,7 @@ #include <string> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "device/bluetooth/bluetooth_export.h" @@ -121,7 +122,7 @@ void InitializeAdapterClients(int adapter); // System bus instance (owned by FlossDBusThreadManager). - dbus::Bus* bus_; + raw_ptr<dbus::Bus> bus_; // Bundle together all Floss clients to be initialized and shutdown in // a specified order.
diff --git a/device/bluetooth/floss/floss_manager_client.h b/device/bluetooth/floss/floss_manager_client.h index 6a96dc61..61cd842b 100644 --- a/device/bluetooth/floss/floss_manager_client.h +++ b/device/bluetooth/floss/floss_manager_client.h
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "dbus/exported_object.h" @@ -188,11 +189,11 @@ const std::string& interface_name) override; // Managed by FlossDBusManager - we keep local pointer to access object proxy. - dbus::Bus* bus_ = nullptr; + raw_ptr<dbus::Bus> bus_ = nullptr; // Keep track of the object manager so we can keep track of when the manager // disappears. Managed by the bus object (do not delete). - dbus::ObjectManager* object_manager_ = nullptr; + raw_ptr<dbus::ObjectManager> object_manager_ = nullptr; // Is there a manager available? bool manager_available_ = false;
diff --git a/device/bluetooth/floss/floss_manager_client_unittest.cc b/device/bluetooth/floss/floss_manager_client_unittest.cc index bb1e7150..b36a2460 100644 --- a/device/bluetooth/floss/floss_manager_client_unittest.cc +++ b/device/bluetooth/floss/floss_manager_client_unittest.cc
@@ -7,6 +7,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/test/task_environment.h" @@ -59,7 +60,7 @@ std::map<int, bool> adapter_enabled_; private: - FlossManagerClient* client_ = nullptr; + raw_ptr<FlossManagerClient> client_ = nullptr; }; } // namespace
diff --git a/device/bluetooth/test/bluetooth_test_bluez.h b/device/bluetooth/test/bluetooth_test_bluez.h index f53796a..9d14854 100644 --- a/device/bluetooth/test/bluetooth_test_bluez.h +++ b/device/bluetooth/test/bluetooth_test_bluez.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "device/bluetooth/bluetooth_device.h" #include "device/bluetooth/bluetooth_local_gatt_characteristic.h" #include "device/bluetooth/bluetooth_local_gatt_descriptor.h" @@ -75,8 +76,8 @@ std::vector<BluetoothLocalGattService*> RegisteredGattServices() override; private: - bluez::FakeBluetoothDeviceClient* fake_bluetooth_device_client_; - bluez::FakeBluetoothAdapterClient* fake_bluetooth_adapter_client_; + raw_ptr<bluez::FakeBluetoothDeviceClient> fake_bluetooth_device_client_; + raw_ptr<bluez::FakeBluetoothAdapterClient> fake_bluetooth_adapter_client_; }; // Defines common test fixture name. Use TEST_F(BluetoothTest, YourTestName).
diff --git a/device/udev_linux/fake_udev_loader.cc b/device/udev_linux/fake_udev_loader.cc index 6feff2c6..e8bbe38 100644 --- a/device/udev_linux/fake_udev_loader.cc +++ b/device/udev_linux/fake_udev_loader.cc
@@ -10,6 +10,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_file.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" struct udev { // empty @@ -21,7 +22,7 @@ udev_list_entry& operator=(const udev_list_entry& other) = delete; const std::string name; - udev_list_entry* next = nullptr; + raw_ptr<udev_list_entry> next = nullptr; }; struct udev_device {
diff --git a/device/udev_linux/udev_watcher.h b/device/udev_linux/udev_watcher.h index c246e71d..50fd5ba 100644 --- a/device/udev_linux/udev_watcher.h +++ b/device/udev_linux/udev_watcher.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/files/file_descriptor_watcher_posix.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/strings/string_piece.h" #include "device/udev_linux/scoped_udev.h" @@ -71,7 +72,7 @@ ScopedUdevPtr udev_; ScopedUdevMonitorPtr udev_monitor_; - Observer* observer_; + raw_ptr<Observer> observer_; const std::vector<Filter> udev_filters_; std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_; base::SequenceChecker sequence_checker_;
diff --git a/docs/android_isolated_splits.md b/docs/android_isolated_splits.md index 48cad9e..f2c90b0 100644 --- a/docs/android_isolated_splits.md +++ b/docs/android_isolated_splits.md
@@ -101,14 +101,15 @@ [preemptively run]: https://source.chromium.org/search?q=symbol:DexFixer.needsDexCompile&ss=chromium [PackageReplacedBroadcastReceiver]: https://source.chromium.org/search?q=symbol:PackageReplacedBroadcastReceiver&ss=chromium -### Conflicting ClassLoaders (Android Pre-S) +### Conflicting ClassLoaders Missing synchronization can cause the parent ClassLoader of split contexts to be different from the Application's ClassLoader. This manifests as odd-looking `ClassCastExceptions` where `"TypeA cannot be cast to TypeA"` (since the two `TypeAs` are from different ClassLoaders). -Fixed in Android S. Bug: [b/172602571] (Googler only). +Tracked by UMA `Android.IsolatedSplits.ClassLoaderReplaced`. Occurs < 0.05% of +the time. **Work-around:**
diff --git a/docs/profiling.md b/docs/profiling.md index c293aa35..c74aee98 100644 --- a/docs/profiling.md +++ b/docs/profiling.md
@@ -16,7 +16,7 @@ * https://www.chromium.org/developers/profiling-chromium-and-webkit * https://www.chromium.org/developers/telemetry/profiling -***promo +***promo CPU profiling is not to be confused with tracing or task profiling: * https://www.chromium.org/developers/how-tos/trace-event-profiling-tool @@ -31,19 +31,20 @@ is_debug = false blink_symbol_level = 2 symbol_level = 2 + dcheck_always_on = false ## Profiling a process or thread for a defined period of time using perf First, make sure you have the `linux-perf` package installed: $ sudo apt-get install linux-perf - + After starting up the browser and loading the page you want to profile, press 'Shift-Escape' to bring up the task manager, and get the Process ID of the process you want to profile. Run the perf tool like this: $ perf record -g -p <Process ID> -o <output file> - + *** promo To adjust the sampling frequency, use the `-F` argument, e.g., `-F 1000`. *** @@ -62,12 +63,12 @@ If you want to limit the profile to a single thread, run: - $ ps -T -p <Process ID> - + $ ps -T -p <Process ID> + From the output, find the Thread ID (column header "SPID") of the thread you want. Now run perf: $ perf record -g -t <Thread ID> -o <output file> - + Use the same `pprof` command as above to view the single-thread results. ## Profiling the renderer process for a period defined in javascript @@ -132,13 +133,13 @@ $ src/out/Release/bin/chrome_public_apk profile Profiler is running; press Enter to stop... - + Once you stop the profiler, the profiling data will be copied off the device to the host machine and post-processed so it can be viewed in `pprof`, as described above. To profile the renderer process, you must have just one tab open in chromium, and use a command like this: $ src/out/Release/bin/chrome_public_apk profile --profile-process=renderer - + To limit the profile to a single thread, use a command like this: $ src/out/Release/bin/chrome_public_apk profile --profile-process=renderer --profile-thread=main @@ -185,7 +186,7 @@ The perf benchmark runner can generate a CPU profile over the course of running a perf test. Currently, this is supported only on Linux and Android. To get info about the relevant options, run: $ src/tools/perf/run_benchmark help run - + ... and look for the `--interval-profiling-*` options. For example, to generate a profile of the main thread of the renderer process during the "page interactions" phase of a perf benchmark, you might run: $ src/tools/perf/run_benchmark run <benchmark name> --interval-profiling-target=renderer:main --interval-profiling-period=interactions --interval-profiling-frequency=2000 @@ -208,13 +209,13 @@ Many of the profiling tools expect you to provide the PID of the process to profile. If the tool used does not support finding the application by name or you would like to run the command for many processes it can be useful to use `pgrep` to find the PIDs. Find the PID for Chromium (browser process): - + $ pgrep -X Chromium Find the PID for all child processes of Chromium: - + $ pgrep -P $CHROMIUM_PID Combine commands to run tool for Chromium and all its children: - + $ cat <(pgrep -x Chromium) <(pgrep -P $(pgrep -x Chromium)) | xargs $MY_TOOL --pid ## Checkout setup
diff --git a/extensions/browser/api/networking_private/networking_private_linux.h b/extensions/browser/api/networking_private/networking_private_linux.h index 2549759..5c2fe96 100644 --- a/extensions/browser/api/networking_private/networking_private_linux.h +++ b/extensions/browser/api/networking_private/networking_private_linux.h
@@ -10,6 +10,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "base/threading/thread.h" #include "components/keyed_service/core/keyed_service.h" @@ -259,7 +260,7 @@ // Task runner used by the |dbus_| object. scoped_refptr<base::SequencedTaskRunner> dbus_task_runner_; // This is owned by |dbus_| object. Only access on |dbus_thread_|. - dbus::ObjectProxy* network_manager_proxy_; + raw_ptr<dbus::ObjectProxy> network_manager_proxy_; // Holds the current mapping of known networks. Only access on |dbus_thread_|. std::unique_ptr<NetworkMap> network_map_; // Observers to Network Events.
diff --git a/extensions/browser/api/system_display/display_info_provider.h b/extensions/browser/api/system_display/display_info_provider.h index d060ff4..2900ec1 100644 --- a/extensions/browser/api/system_display/display_info_provider.h +++ b/extensions/browser/api/system_display/display_info_provider.h
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/display/display_observer.h" @@ -143,7 +144,7 @@ void OnDisplayMetricsChanged(const display::Display& display, uint32_t metrics) override; - display::Screen* const screen_; + const raw_ptr<display::Screen> screen_; absl::optional<display::ScopedDisplayObserver> display_observer_; };
diff --git a/extensions/browser/api/webcam_private/OWNERS b/extensions/browser/api/webcam_private/OWNERS index d710486..e2fc528 100644 --- a/extensions/browser/api/webcam_private/OWNERS +++ b/extensions/browser/api/webcam_private/OWNERS
@@ -1,4 +1,3 @@ -file://chromeos/components/chromebox_for_meetings/OWNERS +file://chromeos/ash/components/chromebox_for_meetings/OWNERS zork@chromium.org -
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index cf584422..c0ce996 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1734,7 +1734,6 @@ ENTERPRISE_REMOTEAPPS_DELETEAPP = 1671, ENTERPRISEREPORTINGPRIVATE_GETAVINFO = 1672, ENTERPRISEREPORTINGPRIVATE_GETHOTFIXES = 1673, - AUTOTESTPRIVATE_GETARCAPPKILLS = 1674, // Last entry: Add new entries above, then run: // tools/metrics/histograms/update_extension_histograms.py ENUM_BOUNDARY
diff --git a/extensions/shell/browser/shell_nacl_browser_delegate.h b/extensions/shell/browser/shell_nacl_browser_delegate.h index d285639..d6b47d1 100644 --- a/extensions/shell/browser/shell_nacl_browser_delegate.h +++ b/extensions/shell/browser/shell_nacl_browser_delegate.h
@@ -6,6 +6,7 @@ #define EXTENSIONS_SHELL_BROWSER_SHELL_NACL_BROWSER_DELEGATE_H_ #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "components/nacl/browser/nacl_browser_delegate.h" namespace content { @@ -44,7 +45,7 @@ bool URLMatchesDebugPatterns(const GURL& manifest_url) override; private: - content::BrowserContext* browser_context_; // Not owned. + raw_ptr<content::BrowserContext> browser_context_; // Not owned. }; } // namespace extensions
diff --git a/gpu/command_buffer/service/shared_image_representation_gl_ozone.h b/gpu/command_buffer/service/shared_image_representation_gl_ozone.h index f98999bf..962451ee 100644 --- a/gpu/command_buffer/service/shared_image_representation_gl_ozone.h +++ b/gpu/command_buffer/service/shared_image_representation_gl_ozone.h
@@ -6,6 +6,7 @@ #define GPU_COMMAND_BUFFER_SERVICE_SHARED_IMAGE_REPRESENTATION_GL_OZONE_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "components/viz/common/resources/resource_format.h" #include "gpu/command_buffer/service/memory_tracking.h" @@ -67,7 +68,7 @@ return static_cast<SharedImageBackingOzone*>(backing()); } - gles2::Texture* texture_; + raw_ptr<gles2::Texture> texture_; GLenum current_access_mode_ = 0; bool need_end_fence_; };
diff --git a/gpu/ipc/service/gpu_watchdog_thread.h b/gpu/ipc/service/gpu_watchdog_thread.h index 1dd01705..039c0e71 100644 --- a/gpu/ipc/service/gpu_watchdog_thread.h +++ b/gpu/ipc/service/gpu_watchdog_thread.h
@@ -6,6 +6,7 @@ #define GPU_IPC_SERVICE_GPU_WATCHDOG_THREAD_H_ #include "base/atomicops.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_macros.h" @@ -270,7 +271,7 @@ #endif #if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CASTOS) - FILE* tty_file_ = nullptr; + raw_ptr<FILE> tty_file_ = nullptr; int host_tty_ = -1; int active_tty_ = -1; int last_active_tty_ = -1;
diff --git a/infra/config/generated/cq-builders.md b/infra/config/generated/cq-builders.md index 8e0a3bc..e0bc670 100644 --- a/infra/config/generated/cq-builders.md +++ b/infra/config/generated/cq-builders.md
@@ -315,7 +315,7 @@ * [linux-cfm-rel](https://ci.chromium.org/p/chromium/builders/try/linux-cfm-rel) ([definition](https://cs.chromium.org/search?q=+file:/try/.*\.star$+""linux-cfm-rel"")) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+""linux-cfm-rel"")) Path regular expressions: - * [`//chromeos/components/chromebox_for_meetings/.+`](https://cs.chromium.org/chromium/src/chromeos/components/chromebox_for_meetings/) + * [`//chromeos/ash/components/chromebox_for_meetings/.+`](https://cs.chromium.org/chromium/src/chromeos/ash/components/chromebox_for_meetings/) * [`//chromeos/ash/components/dbus/chromebox_for_meetings/.+`](https://cs.chromium.org/chromium/src/chromeos/ash/components/dbus/chromebox_for_meetings/) * [`//ash/services/chromebox_for_meetings/.+`](https://cs.chromium.org/chromium/src/ash/services/chromebox_for_meetings/) * [`//chrome/browser/ash/chromebox_for_meetings/.+`](https://cs.chromium.org/chromium/src/chrome/browser/ash/chromebox_for_meetings/)
diff --git a/infra/config/generated/cq-usage/full.cfg b/infra/config/generated/cq-usage/full.cfg index 5b666e0..99d11f7 100644 --- a/infra/config/generated/cq-usage/full.cfg +++ b/infra/config/generated/cq-usage/full.cfg
@@ -358,7 +358,7 @@ } builders { name: "chromium/try/linux-cfm-rel" - location_regexp: ".+/[+]/chromeos/components/chromebox_for_meetings/.+" + location_regexp: ".+/[+]/chromeos/ash/components/chromebox_for_meetings/.+" location_regexp: ".+/[+]/chromeos/ash/components/dbus/chromebox_for_meetings/.+" location_regexp: ".+/[+]/ash/services/chromebox_for_meetings/.+" location_regexp: ".+/[+]/chrome/browser/ash/chromebox_for_meetings/.+"
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg index 5255684..cc22aba06 100644 --- a/infra/config/generated/luci/commit-queue.cfg +++ b/infra/config/generated/luci/commit-queue.cfg
@@ -1247,7 +1247,7 @@ } builders { name: "chromium/try/linux-cfm-rel" - location_regexp: ".+/[+]/chromeos/components/chromebox_for_meetings/.+" + location_regexp: ".+/[+]/chromeos/ash/components/chromebox_for_meetings/.+" location_regexp: ".+/[+]/chromeos/ash/components/dbus/chromebox_for_meetings/.+" location_regexp: ".+/[+]/ash/services/chromebox_for_meetings/.+" location_regexp: ".+/[+]/chrome/browser/ash/chromebox_for_meetings/.+"
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star b/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star index 2842d019..e191931 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.chromiumos.star
@@ -238,7 +238,7 @@ ], tryjob = try_.job( location_regexp = [ - ".+/[+]/chromeos/components/chromebox_for_meetings/.+", + ".+/[+]/chromeos/ash/components/chromebox_for_meetings/.+", ".+/[+]/chromeos/ash/components/dbus/chromebox_for_meetings/.+", ".+/[+]/ash/services/chromebox_for_meetings/.+", ".+/[+]/chrome/browser/ash/chromebox_for_meetings/.+",
diff --git a/ios/chrome/app/application_delegate/metric_kit_subscriber.mm b/ios/chrome/app/application_delegate/metric_kit_subscriber.mm index 0511f86..be7698b5 100644 --- a/ios/chrome/app/application_delegate/metric_kit_subscriber.mm +++ b/ios/chrome/app/application_delegate/metric_kit_subscriber.mm
@@ -334,14 +334,9 @@ } - (void)processPayload:(MXMetricPayload*)payload { - // TODO(crbug.com/1140474): See related bug for why `bundleVersion` comes from - // mainBundle instead of from version_info::GetVersionNumber(). Remove once - // iOS 14.2 reaches mass adoption. - NSString* bundleVersion = - [[NSBundle mainBundle] infoDictionary][(NSString*)kCFBundleVersionKey]; if (payload.includesMultipleApplicationVersions || base::SysNSStringToUTF8(payload.metaData.applicationBuildVersion) != - base::SysNSStringToUTF8(bundleVersion)) { + version_info::GetVersionNumber()) { // The metrics will be reported on the current version of Chrome. // Ignore any report that contains data from another version to avoid // confusion.
diff --git a/ios/chrome/app/application_delegate/mock_metrickit_metric_payload.mm b/ios/chrome/app/application_delegate/mock_metrickit_metric_payload.mm index a3edeb5..eae7ebce7 100644 --- a/ios/chrome/app/application_delegate/mock_metrickit_metric_payload.mm +++ b/ios/chrome/app/application_delegate/mock_metrickit_metric_payload.mm
@@ -17,13 +17,9 @@ #endif id MockMXMetadata() { - // TODO(crbug.com/1140474): See related bug for why `bundleVersion` comes from - // mainBundle instead of from version_info::GetVersionNumber(). Remove once - // iOS 14.2 reaches mass adoption. - NSString* bundleVersion = - [[NSBundle mainBundle] infoDictionary][(NSString*)kCFBundleVersionKey]; id metadata = OCMClassMock([MXMetaData class]); - OCMStub([metadata applicationBuildVersion]).andReturn(bundleVersion); + OCMStub([metadata applicationBuildVersion]) + .andReturn(base::SysUTF8ToNSString(version_info::GetVersionNumber())); return metadata; }
diff --git a/ios/chrome/browser/accessibility/window_accessibility_change_notifier_app_agent.mm b/ios/chrome/browser/accessibility/window_accessibility_change_notifier_app_agent.mm index 956cbb1d7..2675120 100644 --- a/ios/chrome/browser/accessibility/window_accessibility_change_notifier_app_agent.mm +++ b/ios/chrome/browser/accessibility/window_accessibility_change_notifier_app_agent.mm
@@ -32,10 +32,10 @@ @property(nonatomic, assign) NSUInteger visibleWindowCount; -// If an update is pending, |lastUpdateTime| is the last time that an event +// If an update is pending, `lastUpdateTime` is the last time that an event // occurred that might cause the window count to change. If no update is pending -// |lastUpdateTime| is nil. -@property(nonatomic) NSDate* lastUpdateTime; +// `lastUpdateTime` is nil. +@property(nonatomic, strong) NSDate* lastUpdateTime; @end @@ -97,7 +97,7 @@ NSDate* now = [NSDate date]; NSTimeInterval delta = [now timeIntervalSinceDate:self.lastUpdateTime]; if (delta < kWindowNotifcationDelay) { - // Repost with a delay sufficient to be |kWindowNotifcationDelay| after + // Repost with a delay sufficient to be `kWindowNotifcationDelay` after // the last update time. NSTimeInterval newDelta = kWindowNotifcationDelay - delta; [self scheduleWindowCountWithDelay:newDelta]; @@ -136,7 +136,7 @@ } } -// Update |self.viisbleWindowCount| with the total number of foregrounded +// Update `self.visibleWindowCount` with the total number of foregrounded // connected scenes. - (void)updateWindowCount { NSUInteger windowCount = 0;
diff --git a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.h b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.h index 683239a9..3a8ab7a 100644 --- a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.h +++ b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.h
@@ -37,6 +37,7 @@ scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override; PrefService* GetPrefs() const override; PrefService* GetLocalState() override; + std::string GetApplicationLocale() const override; const AutocompleteSchemeClassifier& GetSchemeClassifier() const override; AutocompleteClassifier* GetAutocompleteClassifier() override; history::HistoryService* GetHistoryService() override;
diff --git a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm index 200f15ef..429265d 100644 --- a/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm +++ b/ios/chrome/browser/autocomplete/autocomplete_provider_client_impl.mm
@@ -74,6 +74,10 @@ return GetApplicationContext()->GetLocalState(); } +std::string AutocompleteProviderClientImpl::GetApplicationLocale() const { + return GetApplicationContext()->GetApplicationLocale(); +} + const AutocompleteSchemeClassifier& AutocompleteProviderClientImpl::GetSchemeClassifier() const { return scheme_classifier_;
diff --git a/ios/chrome/browser/autofill/manual_fill/passwords_fetcher.h b/ios/chrome/browser/autofill/manual_fill/passwords_fetcher.h index 4f2a5f2..f638ba6 100644 --- a/ios/chrome/browser/autofill/manual_fill/passwords_fetcher.h +++ b/ios/chrome/browser/autofill/manual_fill/passwords_fetcher.h
@@ -34,8 +34,8 @@ @interface PasswordFetcher : NSObject -// The designated initializer. |passwordStore| must not be nil. The passwords -// will be filtered by the passed |origin|, pass an empty GURL to avoid +// The designated initializer. `passwordStore` must not be nil. The passwords +// will be filtered by the passed `origin`, pass an empty GURL to avoid // filtering. - (instancetype) initWithPasswordStore:
diff --git a/ios/chrome/browser/bookmarks/bookmark_client_impl.cc b/ios/chrome/browser/bookmarks/bookmark_client_impl.cc index b854960..dc89aa2 100644 --- a/ios/chrome/browser/bookmarks/bookmark_client_impl.cc +++ b/ios/chrome/browser/bookmarks/bookmark_client_impl.cc
@@ -59,9 +59,9 @@ history::URLDatabase* url_db = history_service ? history_service->InMemoryDatabase() : nullptr; for (auto& url_typed_count_pair : *url_typed_count_map) { - // If |url_db| is the InMemoryDatabase, it might not cache all URLRows, but - // it guarantees to contain those with |typed_count| > 0. Thus, if fetching - // the URLRow fails, it is safe to assume that its |typed_count| is 0. + // If `url_db` is the InMemoryDatabase, it might not cache all URLRows, but + // it guarantees to contain those with `typed_count` > 0. Thus, if fetching + // the URLRow fails, it is safe to assume that its `typed_count` is 0. int typed_count = 0; history::URLRow url_row; const GURL* url = url_typed_count_pair.first;
diff --git a/ios/chrome/browser/bookmarks/bookmark_remover_helper.h b/ios/chrome/browser/bookmarks/bookmark_remover_helper.h index 5f5c601..478e3f4 100644 --- a/ios/chrome/browser/bookmarks/bookmark_remover_helper.h +++ b/ios/chrome/browser/bookmarks/bookmark_remover_helper.h
@@ -27,7 +27,7 @@ ~BookmarkRemoverHelper() override; - // Removes all bookmarks and asynchronously invoke |completion| with + // Removes all bookmarks and asynchronously invoke `completion` with // boolean indicating success or failure. void RemoveAllUserBookmarksIOS(Callback completion); @@ -41,7 +41,7 @@ private: // Invoked when the bookmark entries have been deleted. Invoke the - // completion callback with |success| (invocation is asynchronous so + // completion callback with `success` (invocation is asynchronous so // the object won't be deleted immediately). void BookmarksRemoved(bool success);
diff --git a/ios/chrome/browser/bookmarks/bookmarks_utils.cc b/ios/chrome/browser/bookmarks/bookmarks_utils.cc index aa1ca31..c670a39 100644 --- a/ios/chrome/browser/bookmarks/bookmarks_utils.cc +++ b/ios/chrome/browser/bookmarks/bookmarks_utils.cc
@@ -69,7 +69,7 @@ const BookmarkNode* RootLevelFolderForNode(const BookmarkNode* node, BookmarkModel* model) { // This helper function doesn't work for managed bookmarks. This checks that - // |node| is editable by the user, which currently covers all the other + // `node` is editable by the user, which currently covers all the other // bookmarks except the managed bookmarks. DCHECK(model->client()->CanBeEditedByUser(node));
diff --git a/ios/chrome/browser/bookmarks/bookmarks_utils.h b/ios/chrome/browser/bookmarks/bookmarks_utils.h index 430cca8..6c4dd34 100644 --- a/ios/chrome/browser/bookmarks/bookmarks_utils.h +++ b/ios/chrome/browser/bookmarks/bookmarks_utils.h
@@ -22,7 +22,7 @@ // Returns the permanent nodes whose url children are considered uncategorized // and whose folder children should be shown in the bookmark menu. -// |model| must be loaded. +// `model` must be loaded. std::vector<const bookmarks::BookmarkNode*> PrimaryPermanentNodes( bookmarks::BookmarkModel* model); @@ -32,8 +32,8 @@ std::vector<const bookmarks::BookmarkNode*> RootLevelFolders( bookmarks::BookmarkModel* model); -// Returns whether |node| is a primary permanent node in the sense of -// |PrimaryPermanentNodes|. +// Returns whether `node` is a primary permanent node in the sense of +// `PrimaryPermanentNodes`. bool IsPrimaryPermanentNode(const bookmarks::BookmarkNode* node, bookmarks::BookmarkModel* model);
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state.h b/ios/chrome/browser/browser_state/chrome_browser_state.h index 46b2944..50db764 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state.h
@@ -63,7 +63,7 @@ virtual scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner(); // Returns the original "recording" ChromeBrowserState. This method returns - // |this| if the ChromeBrowserState is not incognito. + // `this` if the ChromeBrowserState is not incognito. virtual ChromeBrowserState* GetOriginalChromeBrowserState() = 0; // Returns true if the ChromeBrowserState is off-the-record or if the @@ -102,12 +102,12 @@ // a sync_preferences::PrefServiceSyncable. virtual sync_preferences::PrefServiceSyncable* GetSyncablePrefs(); - // Deletes all network related data since |time|. It deletes transport - // security state since |time| and it also deletes HttpServerProperties data. - // Works asynchronously, however if the |completion| callback is non-null, it + // Deletes all network related data since `time`. It deletes transport + // security state since `time` and it also deletes HttpServerProperties data. + // Works asynchronously, however if the `completion` callback is non-null, it // will be posted on the UI thread once the removal process completes. - // Be aware that theoretically it is possible that |completion| will be - // invoked after the Profile instance has been destroyed. + // Be aware that theoretically it is possible that `completion` will be + // invoked after the BrowserState instance has been destroyed. virtual void ClearNetworkingHistorySince(base::Time time, base::OnceClosure completion) = 0;
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_impl.h b/ios/chrome/browser/browser_state/chrome_browser_state_impl.h index 9c12d64e..f04ce7b9 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_impl.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state_impl.h
@@ -67,9 +67,9 @@ base::FilePath state_path_; // The incognito ChromeBrowserState instance that is associated with this - // ChromeBrowserState instance. NULL if |GetOffTheRecordChromeBrowserState()| + // ChromeBrowserState instance. NULL if `GetOffTheRecordChromeBrowserState()` // has never been called or has not been called since - // |DestroyOffTheRecordChromeBrowserState()|. + // `DestroyOffTheRecordChromeBrowserState()`. std::unique_ptr<ChromeBrowserState> otr_state_; base::FilePath otr_state_path_; @@ -79,15 +79,15 @@ // that the declaration occurs AFTER things it depends on as destruction // happens in reverse order of declaration. - // |policy_connector_| and its associated |policy_schema_registry_| must - // outlive |prefs_|. |policy_connector_| depends on the policy provider - // |user_cloud_policy_manager_| which depends on |policy_schema_registry_|. + // `policy_connector_` and its associated `policy_schema_registry_` must + // outlive `prefs_`. `policy_connector_` depends on the policy provider + // `user_cloud_policy_manager_` which depends on `policy_schema_registry_`. std::unique_ptr<policy::SchemaRegistry> policy_schema_registry_; std::unique_ptr<policy::UserCloudPolicyManager> user_cloud_policy_manager_; std::unique_ptr<BrowserStatePolicyConnector> policy_connector_; - // Keep |prefs_| above the rest for destruction order because |io_data_| and - // others store pointers to |prefs_| and shall be destructed first. + // Keep `prefs_` above the rest for destruction order because `io_data_` and + // others store pointers to `prefs_` and shall be destructed first. scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry_; std::unique_ptr<sync_preferences::PrefServiceSyncable> prefs_; std::unique_ptr<ChromeBrowserStateImplIOData::Handle> io_data_;
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_impl.mm b/ios/chrome/browser/browser_state/chrome_browser_state_impl.mm index b77fece..4b346e18 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_impl.mm +++ b/ios/chrome/browser/browser_state/chrome_browser_state_impl.mm
@@ -102,7 +102,7 @@ state_path_, otr_state_path_, base_cache_path); DCHECK(directories_created); - // Bring up the policy system before creating |prefs_|. + // Bring up the policy system before creating `prefs_`. BrowserPolicyConnectorIOS* connector = GetApplicationContext()->GetBrowserPolicyConnector(); DCHECK(connector);
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.h b/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.h index ad72c7f..14858bd 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.h
@@ -51,9 +51,9 @@ ChromeBrowserStateIOData* io_data() const; - // Deletes all network related data since |time|. It deletes transport - // security state since |time| and also deletes HttpServerProperties data. - // Works asynchronously, however if the |completion| callback is non-null, + // Deletes all network related data since `time`. It deletes transport + // security state since `time` and also deletes HttpServerProperties data. + // Works asynchronously, however if the `completion` callback is non-null, // it will be posted on the UI thread once the removal process completes. void ClearNetworkingHistorySince(base::Time time, base::OnceClosure completion); @@ -71,7 +71,7 @@ void LazyInitialize() const; // Collect references to context getters in reverse order, i.e. last item - // will be main request getter. This list is passed to |io_data_| + // will be main request getter. This list is passed to `io_data_` // for invalidation on IO thread. std::unique_ptr<IOSChromeURLRequestContextGetterVector> GetAllContextGetters(); @@ -111,9 +111,9 @@ void InitializeInternal(net::URLRequestContextBuilder* context_builder, ProfileParams* profile_params) const override; - // Deletes all network related data since |time|. It deletes transport - // security state since |time| and also deletes HttpServerProperties data. - // Works asynchronously, however if the |completion| callback is non-null, + // Deletes all network related data since `time`. It deletes transport + // security state since `time` and also deletes HttpServerProperties data. + // Works asynchronously, however if the `completion` callback is non-null, // it will be posted on the UI thread once the removal process completes. void ClearNetworkingHistorySinceOnIOThread(base::Time time, base::OnceClosure completion);
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.h b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.h index 7043e6412..17090ed 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.h
@@ -106,7 +106,7 @@ std::unique_ptr<net::ProxyConfigService> proxy_config_service; // SystemCookieStore should be initialized from the UI thread as it depends - // on the |browser_state|. + // on the `browser_state`. std::unique_ptr<net::SystemCookieStore> system_cookie_store; // The browser state this struct was populated from. It's passed as a void* @@ -118,10 +118,10 @@ void InitializeOnUIThread(ChromeBrowserState* browser_state); - // Called when the ChromeBrowserState is destroyed. |context_getters| must + // Called when the ChromeBrowserState is destroyed. `context_getters` must // include all URLRequestContextGetters that refer to the // ChromeBrowserStateIOData's URLRequestContexts. Triggers destruction of the - // ChromeBrowserStateIOData and shuts down |context_getters| safely on the IO + // ChromeBrowserStateIOData and shuts down `context_getters` safely on the IO // thread. // TODO(mmenke): Passing all those URLRequestContextGetters around like this // is really silly. Can we do something cleaner?
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager.h b/ios/chrome/browser/browser_state/chrome_browser_state_manager.h index 5761ed5..d23f245f 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_manager.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager.h
@@ -31,7 +31,7 @@ // necessary. virtual ChromeBrowserState* GetLastUsedBrowserState() = 0; - // Returns the ChromeBrowserState associated with |path|, creating one if + // Returns the ChromeBrowserState associated with `path`, creating one if // necessary. virtual ChromeBrowserState* GetBrowserState(const base::FilePath& path) = 0;
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.h b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.h index 33f6ae38..b618f4d 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.h +++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.h
@@ -44,7 +44,7 @@ void DoFinalInit(ChromeBrowserState* browser_state); void DoFinalInitForServices(ChromeBrowserState* browser_state); - // Adds |browser_state| to the browser state info cache if it hasn't been + // Adds `browser_state` to the browser state info cache if it hasn't been // added yet. void AddBrowserStateToCache(ChromeBrowserState* browser_state);
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.mm b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.mm index 3e83201..1010556 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.mm +++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.mm
@@ -53,7 +53,7 @@ return running_size; } -// Simple task to log the size of the browser state at |path|. +// Simple task to log the size of the browser state at `path`. void BrowserStateSizeTask(const base::FilePath& path) { const int64_t kBytesInOneMB = 1024 * 1024;
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm b/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm index 194d3e7..0036e6b 100644 --- a/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm +++ b/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm
@@ -40,7 +40,7 @@ const char kGmailDomain[] = "gmail.com"; // Removes from disk the directories used by the browser states in -// |browser_states_paths|. +// `browser_states_paths`. void NukeBrowserStates(const std::vector<base::FilePath>& browser_states_path) { for (const base::FilePath& browser_state_path : browser_states_path) { // Delete both the browser state directory and its corresponding cache. @@ -51,7 +51,7 @@ } } -// Returns the GAIA Id of the given |browser_state_path| using the |info_cache|. +// Returns the GAIA Id of the given `browser_state_path` using the `info_cache`. std::string GetGaiaIdForBrowserState(const std::string& browser_state_path, BrowserStateInfoCache* info_cache) { base::FilePath path = info_cache->GetUserDataDir().Append(browser_state_path); @@ -61,7 +61,7 @@ return info_cache->GetGAIAIdOfBrowserStateAtIndex(index); } -// Returns the email's domain of the identity associated with |gaia_id|. +// Returns the email's domain of the identity associated with `gaia_id`. std::string GetDomainForGaiaId(ChromeBrowserState* browser_state, const std::string& gaia_id) { ChromeAccountManagerService* account_manager_service =
diff --git a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.h b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.h index b86d547..d456cd5e 100644 --- a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.h +++ b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_impl.h
@@ -51,7 +51,7 @@ private: friend class ChromeBrowserStateImpl; - // |original_chrome_browser_state_| is the non-incognito + // `original_chrome_browser_state_` is the non-incognito // ChromeBrowserState instance that owns this instance. OffTheRecordChromeBrowserStateImpl( scoped_refptr<base::SequencedTaskRunner> io_task_runner,
diff --git a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.h b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.h index b5672ba1..c1a0203 100644 --- a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.h +++ b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.h
@@ -59,7 +59,7 @@ void LazyInitialize() const; // Collect references to context getters in reverse order, i.e. last item - // will be main request getter. This list is passed to |io_data_| + // will be main request getter. This list is passed to `io_data_` // for invalidation on IO thread. std::unique_ptr<IOSChromeURLRequestContextGetterVector> GetAllContextGetters();
diff --git a/ios/chrome/browser/browser_state/test_chrome_browser_state.h b/ios/chrome/browser/browser_state/test_chrome_browser_state.h index 53698af..fa8f57a 100644 --- a/ios/chrome/browser/browser_state/test_chrome_browser_state.h +++ b/ios/chrome/browser/browser_state/test_chrome_browser_state.h
@@ -177,8 +177,8 @@ // The path to this browser state. base::FilePath state_path_; - // If non-null, |testing_prefs_| points to |prefs_|. It is there to avoid - // casting as |prefs_| may not be a TestingPrefServiceSyncable. + // If non-null, `testing_prefs_` points to `prefs_`. It is there to avoid + // casting as `prefs_` may not be a TestingPrefServiceSyncable. std::unique_ptr<sync_preferences::PrefServiceSyncable> prefs_; sync_preferences::TestingPrefServiceSyncable* testing_prefs_;
diff --git a/ios/chrome/browser/browser_state/test_chrome_browser_state.mm b/ios/chrome/browser/browser_state/test_chrome_browser_state.mm index 76235763..29e14a79 100644 --- a/ios/chrome/browser/browser_state/test_chrome_browser_state.mm +++ b/ios/chrome/browser/browser_state/test_chrome_browser_state.mm
@@ -143,10 +143,10 @@ EnsureBrowserStateKeyedServiceFactoriesBuilt(); if (prefs_) { - // If user passed a custom PrefServiceSyncable, then leave |testing_prefs_| + // If user passed a custom PrefServiceSyncable, then leave `testing_prefs_` // unset as it is not possible to determine its type. } else if (IsOffTheRecord()) { - // This leaves |testing_prefs_| unset as CreateIncognitoBrowserStatePrefs() + // This leaves `testing_prefs_` unset as CreateIncognitoBrowserStatePrefs() // does not return a TestingPrefServiceSyncable. DCHECK(original_browser_state_); prefs_ =
diff --git a/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.cc b/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.cc index ec2d973..d79e64c 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.cc +++ b/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.cc
@@ -28,7 +28,7 @@ namespace { // Creates a new instance of BrowsingDataCounter that is counting the data -// for |browser_state| related to a given deletion preference |pref_name|. +// for `browser_state` related to a given deletion preference `pref_name`. std::unique_ptr<browsing_data::BrowsingDataCounter> CreateCounterForBrowserStateAndPref(ChromeBrowserState* browser_state, base::StringPiece pref_name) {
diff --git a/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.h b/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.h index 361b1be7..70e59256 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.h +++ b/ios/chrome/browser/browsing_data/browsing_data_counter_wrapper.h
@@ -22,7 +22,7 @@ const browsing_data::BrowsingDataCounter::Result&)>; // This method returns the counter corresponding to the data type specified by - // |pref_name| or null if there is no such counter. + // `pref_name` or null if there is no such counter. static std::unique_ptr<BrowsingDataCounterWrapper> CreateCounterWrapper( base::StringPiece pref_name, ChromeBrowserState* browser_state,
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remove_mask.h b/ios/chrome/browser/browsing_data/browsing_data_remove_mask.h index 36ec0b1e..f93ac65 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remove_mask.h +++ b/ios/chrome/browser/browsing_data/browsing_data_remove_mask.h
@@ -72,7 +72,7 @@ return lhs; } -// Returns whether the |flag| is set in |mask|. +// Returns whether the `flag` is set in `mask`. constexpr bool IsRemoveDataMaskSet(BrowsingDataRemoveMask mask, BrowsingDataRemoveMask flag) { return (mask & flag) == flag;
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover.h b/ios/chrome/browser/browsing_data/browsing_data_remover.h index ecfef0f7..4adbe956 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover.h +++ b/ios/chrome/browser/browsing_data/browsing_data_remover.h
@@ -29,23 +29,23 @@ // Is the service currently in the process of removing data? virtual bool IsRemoving() const = 0; - // Removes browsing data for the given |time_period| with data types specified - // by |remove_mask|. The |callback| is invoked asynchronously when the data + // Removes browsing data for the given `time_period` with data types specified + // by `remove_mask`. The `callback` is invoked asynchronously when the data // has been removed. virtual void Remove(browsing_data::TimePeriod time_period, BrowsingDataRemoveMask remove_mask, base::OnceClosure callback) = 0; - // Removes all persisted data for sessions with |session_ids|. + // Removes all persisted data for sessions with `session_ids`. virtual void RemoveSessionsData(NSArray<NSString*>* session_ids) = 0; - // Adds/removes |observer| from the list of observers notified when data is + // Adds/removes `observer` from the list of observers notified when data is // removed by BrowsingDataRemover. void AddObserver(BrowsingDataRemoverObserver* observer); void RemoveObserver(BrowsingDataRemoverObserver* observer); protected: - // Invokes |OnBrowsingDataRemoved| on all registered observers. + // Invokes `OnBrowsingDataRemoved` on all registered observers. void NotifyBrowsingDataRemoved(BrowsingDataRemoveMask mask); private:
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover_impl.h b/ios/chrome/browser/browsing_data/browsing_data_remover_impl.h index 50afbe5..4f2e0fa 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover_impl.h +++ b/ios/chrome/browser/browsing_data/browsing_data_remover_impl.h
@@ -67,7 +67,7 @@ base::Time task_started; }; - // Setter for |is_removing_|; DCHECKs that we can only start removing if we're + // Setter for `is_removing_`; DCHECKs that we can only start removing if we're // not already removing, and vice-versa. void SetRemoving(bool is_removing);
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover_impl.mm b/ios/chrome/browser/browsing_data/browsing_data_remover_impl.mm index 3f8ad20f..99e31338 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover_impl.mm +++ b/ios/chrome/browser/browsing_data/browsing_data_remover_impl.mm
@@ -275,7 +275,7 @@ base::SequencedTaskRunnerHandle::Get(); // Note: Before adding any method below, make sure that it can finish clearing - // browsing data even if |browser_state)| is destroyed after this method call. + // browsing data even if `browser_state` is destroyed after this method call. if (IsRemoveDataMaskSet(mask, BrowsingDataRemoveMask::REMOVE_HISTORY)) { if (session_service_) { @@ -563,7 +563,7 @@ MAX_CHOICE_VALUE); } -// Removes directories for sessions with |SessionIDs| +// Removes directories for sessions with `session_ids` void BrowsingDataRemoverImpl::RemoveSessionsData( NSArray<NSString*>* session_ids) { [[SessionServiceIOS sharedService]
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.mm b/ios/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.mm index 786bfb9..22a583c 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.mm +++ b/ios/chrome/browser/browsing_data/browsing_data_remover_impl_unittest.mm
@@ -69,7 +69,7 @@ void OnBrowsingDataRemoved(BrowsingDataRemover* remover, BrowsingDataRemoveMask mask) override; - // Returns the |mask| value passed to the last call of OnBrowsingDataRemoved. + // Returns the `mask` value passed to the last call of OnBrowsingDataRemoved. // Returns BrowsingDataRemoveMask::REMOVE_NOTHING if it has not been called. BrowsingDataRemoveMask last_remove_mask() const { return last_remove_mask_; }
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover_observer.h b/ios/chrome/browser/browsing_data/browsing_data_remover_observer.h index b3ec9f62..ddfc62c 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover_observer.h +++ b/ios/chrome/browser/browsing_data/browsing_data_remover_observer.h
@@ -21,7 +21,7 @@ virtual ~BrowsingDataRemoverObserver() = default; - // Invoked when data was successfully removed. The |mask| will represent + // Invoked when data was successfully removed. The `mask` will represent // the type of removed data. See BrowsingDataRemoveMask for details. virtual void OnBrowsingDataRemoved(BrowsingDataRemover* remover, BrowsingDataRemoveMask mask) = 0;
diff --git a/ios/chrome/browser/browsing_data/browsing_data_remover_observer_bridge_unittest.mm b/ios/chrome/browser/browsing_data/browsing_data_remover_observer_bridge_unittest.mm index 746a8fd8..6201934 100644 --- a/ios/chrome/browser/browsing_data/browsing_data_remover_observer_bridge_unittest.mm +++ b/ios/chrome/browser/browsing_data/browsing_data_remover_observer_bridge_unittest.mm
@@ -24,7 +24,7 @@ BrowsingDataRemoverObserverBridge observer_bridge_; }; -// Tests |OnBrowsingDataRemoved| forwarding. +// Tests `OnBrowsingDataRemoved` forwarding. TEST_F(BrowsingDataRemoverObserverBridgeTest, OnBrowsingDataRemoved) { ASSERT_FALSE([observer_ didRemoveBrowsingDataWithMaskInfo]); observer_bridge_.OnBrowsingDataRemoved(remover_.get(),
diff --git a/ios/chrome/browser/browsing_data/fake_browsing_data_remover_observer.h b/ios/chrome/browser/browsing_data/fake_browsing_data_remover_observer.h index aa0d82f..8543088 100644 --- a/ios/chrome/browser/browsing_data/fake_browsing_data_remover_observer.h +++ b/ios/chrome/browser/browsing_data/fake_browsing_data_remover_observer.h
@@ -9,7 +9,7 @@ #import <Foundation/Foundation.h> -// Arguments passed to |browsingDataRemover:didRemoveBrowsingDataWithMask:|. +// Arguments passed to `-browsingDataRemover:didRemoveBrowsingDataWithMask:`. struct TestDidRemoveBrowsingDataWithMaskInfo { BrowsingDataRemover* remover = nullptr; BrowsingDataRemoveMask mask = BrowsingDataRemoveMask::REMOVE_NOTHING; @@ -18,7 +18,7 @@ @interface FakeBrowsingDataRemoverObserver : NSObject <BrowsingDataRemoverObserving> -// Arguments passed to |browsingDataRemover:didRemoveBrowsingDataWithMask:|. +// Arguments passed to `-browsingDataRemover:didRemoveBrowsingDataWithMask:`. @property(nonatomic, readonly) TestDidRemoveBrowsingDataWithMaskInfo* didRemoveBrowsingDataWithMaskInfo;
diff --git a/ios/chrome/browser/browsing_data/session_storage_util_unittest.mm b/ios/chrome/browser/browsing_data/session_storage_util_unittest.mm index 48d0011..c88a0445 100644 --- a/ios/chrome/browser/browsing_data/session_storage_util_unittest.mm +++ b/ios/chrome/browser/browsing_data/session_storage_util_unittest.mm
@@ -13,7 +13,7 @@ // Test fixture for the session storage utility functions. using SessionStorageUtilTest = PlatformTest; -// Tests |MarkSessionsForRemoval| adds to the existing list of sessions that are +// Tests `MarkSessionsForRemoval` adds to the existing list of sessions that are // marked for removal. TEST_F(SessionStorageUtilTest, MarkSessionRemovalTest) { EXPECT_FALSE(sessions_storage_util::GetDiscardedSessions()); @@ -29,7 +29,7 @@ sessions_storage_util::ResetDiscardedSessions(); } -// Makes sure that |ResetDiscardedSessions| removes the list of sessions that +// Makes sure that `ResetDiscardedSessions` removes the list of sessions that // are marked for removal. TEST_F(SessionStorageUtilTest, ResetDiscardedSessionsTest) { EXPECT_FALSE(sessions_storage_util::GetDiscardedSessions());
diff --git a/ios/chrome/browser/browsing_data/sessions_storage_util.h b/ios/chrome/browser/browsing_data/sessions_storage_util.h index e205136..2d06cfe 100644 --- a/ios/chrome/browser/browsing_data/sessions_storage_util.h +++ b/ios/chrome/browser/browsing_data/sessions_storage_util.h
@@ -9,7 +9,7 @@ namespace sessions_storage_util { -// Mark the sessions with |session_ids| for their files to be removed from the +// Mark the sessions with `session_ids` for their files to be removed from the // disk at some point later. void MarkSessionsForRemoval(NSArray<NSString*>* session_ids); // Get the list of session ids for the sessions that was marked for removal.
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm index df00d38d..08b7866 100644 --- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm +++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -8,8 +8,11 @@ #import "base/metrics/histogram_functions.h" #import "base/scoped_observation.h" +#import "components/feature_engagement/public/event_constants.h" +#import "components/feature_engagement/public/tracker.h" #import "components/profile_metrics/browser_profile_type.h" #import "components/safe_browsing/core/common/features.h" +#import "components/translate/core/browser/translate_manager.h" #import "ios/chrome/browser/app_launcher/app_launcher_abuse_detector.h" #import "ios/chrome/browser/app_launcher/app_launcher_tab_helper.h" #import "ios/chrome/browser/autofill/autofill_tab_helper.h" @@ -18,6 +21,8 @@ #import "ios/chrome/browser/download/download_directory_util.h" #import "ios/chrome/browser/download/external_app_util.h" #import "ios/chrome/browser/download/pass_kit_tab_helper.h" +#import "ios/chrome/browser/feature_engagement/tracker_factory.h" +#import "ios/chrome/browser/feature_engagement/tracker_util.h" #import "ios/chrome/browser/find_in_page/find_tab_helper.h" #import "ios/chrome/browser/follow/follow_tab_helper.h" #import "ios/chrome/browser/main/browser.h" @@ -31,6 +36,7 @@ #import "ios/chrome/browser/store_kit/store_kit_tab_helper.h" #import "ios/chrome/browser/sync/sync_error_browser_agent.h" #import "ios/chrome/browser/tabs/tab_title_util.h" +#import "ios/chrome/browser/translate/chrome_ios_translate_client.h" #import "ios/chrome/browser/ui/activity_services/activity_params.h" #import "ios/chrome/browser/ui/activity_services/requirements/activity_service_positioner.h" #import "ios/chrome/browser/ui/alert_coordinator/repost_form_coordinator.h" @@ -101,6 +107,7 @@ #import "ios/chrome/browser/ui/recent_tabs/recent_tabs_coordinator.h" #import "ios/chrome/browser/ui/sad_tab/sad_tab_coordinator.h" #import "ios/chrome/browser/ui/safe_browsing/safe_browsing_coordinator.h" +#import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.h" #import "ios/chrome/browser/ui/settings/autofill/autofill_add_credit_card_coordinator.h" #import "ios/chrome/browser/ui/sharing/sharing_coordinator.h" #import "ios/chrome/browser/ui/side_swipe/side_swipe_controller.h" @@ -324,6 +331,8 @@ TabStripCoordinator* _tabStripCoordinator; TabStripLegacyCoordinator* _legacyTabStripCoordinator; SideSwipeController* _sideSwipeController; + // The coordinator that shows the Send Tab To Self UI. + SendTabToSelfCoordinator* _sendTabToSelfCoordinator; } #pragma mark - ChromeCoordinator @@ -995,10 +1004,41 @@ [self.recentTabsCoordinator start]; } +- (void)showTranslate { + ChromeBrowserState* browserState = self.browser->GetBrowserState(); + + feature_engagement::Tracker* engagement_tracker = + feature_engagement::TrackerFactory::GetForBrowserState(browserState); + engagement_tracker->NotifyEvent( + feature_engagement::events::kTriggeredTranslateInfobar); + + web::WebState* currentWebState = + self.browser->GetWebStateList()->GetActiveWebState(); + DCHECK(currentWebState); + + ChromeIOSTranslateClient* translateClient = + ChromeIOSTranslateClient::FromWebState(currentWebState); + if (translateClient) { + translate::TranslateManager* translateManager = + translateClient->GetTranslateManager(); + DCHECK(translateManager); + translateManager->ShowTranslateUI(/*auto_translate=*/true); + } +} + - (void)showAddCreditCard { [self.addCreditCardCoordinator start]; } +- (void)showSendTabToSelfUI:(const GURL&)url title:(NSString*)title { + _sendTabToSelfCoordinator = [[SendTabToSelfCoordinator alloc] + initWithBaseViewController:self.viewController + browser:self.browser + url:url + title:title]; + [_sendTabToSelfCoordinator start]; +} + - (void)dismissBadgePopupMenu { [self.badgePopupMenuCoordinator stop]; }
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm index e38dedd2..09f7810 100644 --- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -21,7 +21,6 @@ #import "components/sessions/core/tab_restore_service_helper.h" #import "components/signin/ios/browser/active_state_manager.h" #import "components/strings/grit/components_strings.h" -#import "components/translate/core/browser/translate_manager.h" #import "components/ukm/ios/ukm_url_recorder.h" #import "ios/chrome/app/application_delegate/app_state.h" #import "ios/chrome/browser/application_context.h" @@ -29,7 +28,6 @@ #import "ios/chrome/browser/chrome_url_constants.h" #import "ios/chrome/browser/crash_report/crash_keys_helper.h" #import "ios/chrome/browser/discover_feed/feed_constants.h" -#import "ios/chrome/browser/feature_engagement/tracker_factory.h" #import "ios/chrome/browser/feature_engagement/tracker_util.h" #import "ios/chrome/browser/find_in_page/find_tab_helper.h" #import "ios/chrome/browser/infobars/infobar_manager_impl.h" @@ -53,7 +51,6 @@ #import "ios/chrome/browser/ssl/captive_portal_tab_helper.h" #import "ios/chrome/browser/ssl/captive_portal_tab_helper_delegate.h" #import "ios/chrome/browser/tabs/tab_title_util.h" -#import "ios/chrome/browser/translate/chrome_ios_translate_client.h" #import "ios/chrome/browser/ui/authentication/re_signin_infobar_delegate.h" #import "ios/chrome/browser/ui/bookmarks/bookmark_interaction_controller.h" #import "ios/chrome/browser/ui/browser_container/browser_container_view_controller.h" @@ -96,7 +93,6 @@ #import "ios/chrome/browser/ui/ntp/ntp_util.h" #import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_presenter.h" #import "ios/chrome/browser/ui/popup_menu/popup_menu_coordinator.h" -#import "ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_coordinator.h" #import "ios/chrome/browser/ui/settings/sync/utils/sync_util.h" #import "ios/chrome/browser/ui/side_swipe/side_swipe_controller.h" #import "ios/chrome/browser/ui/side_swipe/swipe_view.h" @@ -483,9 +479,6 @@ // The webState of the active tab. @property(nonatomic, readonly) web::WebState* currentWebState; -// The coordinator that shows the Send Tab To Self UI. -@property(nonatomic, strong) SendTabToSelfCoordinator* sendTabToSelfCoordinator; - // Whether the view has been translated for thumb strip usage when smooth // scrolling has been enabled. This allows the correct setup to be done when // displaying a new web state. @@ -3764,24 +3757,6 @@ [_voiceSearchController prepareToAppear]; } -// TODO(crbug.com/1272511): Move `showTranslate` out of the BVC. -- (void)showTranslate { - feature_engagement::Tracker* engagement_tracker = - feature_engagement::TrackerFactory::GetForBrowserState(self.browserState); - engagement_tracker->NotifyEvent( - feature_engagement::events::kTriggeredTranslateInfobar); - - DCHECK(self.currentWebState); - ChromeIOSTranslateClient* translateClient = - ChromeIOSTranslateClient::FromWebState(self.currentWebState); - if (translateClient) { - translate::TranslateManager* translateManager = - translateClient->GetTranslateManager(); - DCHECK(translateManager); - translateManager->ShowTranslateUI(/*auto_translate=*/true); - } -} - // TODO(crbug.com/1329106): Move `showHelpPage` out of the BVC. - (void)showHelpPage { GURL helpUrl(l10n_util::GetStringUTF16(IDS_IOS_TOOLS_MENU_HELP_URL)); @@ -3798,17 +3773,6 @@ [_bookmarkInteractionController presentBookmarks]; } -// TODO(crbug.com/972114) Move showSendTabToSelfUI or reroute to -// browserCoordinator. -- (void)showSendTabToSelfUI:(const GURL&)url title:(NSString*)title { - self.sendTabToSelfCoordinator = - [[SendTabToSelfCoordinator alloc] initWithBaseViewController:self - browser:self.browser - url:url - title:title]; - [self.sendTabToSelfCoordinator start]; -} - // TODO(crbug.com/1272498): Refactor this command away, and add a mediator to // observe the active web state closing and push updates into the BVC for UI // work.
diff --git a/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h b/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h index 2f242cd9..5418dbb 100644 --- a/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h +++ b/ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h
@@ -20,11 +20,11 @@ + (void)cr_clearPreferredHeightForWidthCellCache; // Returns the height this class of cell would need to be to fit within -// |targetWidth|, configured by |item|. The returned height is calculated by +// `targetWidth`, configured by `item`. The returned height is calculated by // Auto Layout so that the contents of the cell could fit within the -// |targetWidth|. +// `targetWidth`. // If the cell contains multi-line labels, make sure to update the -// |preferredMaxLayoutWidth| in -layoutSubviews like so: +// `preferredMaxLayoutWidth` in -layoutSubviews like so: // // @implementation MyCell //
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item_unittest.mm b/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item_unittest.mm index 27856664..feff568 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item_unittest.mm +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_account_item_unittest.mm
@@ -18,7 +18,7 @@ using AccountControlCollectionViewItemTest = PlatformTest; // Tests that the UIImageView and UILabels are set properly after a call to -// |configureCell:|. +// `configureCell:`. TEST_F(AccountControlCollectionViewItemTest, ImageViewAndTextLabels) { CollectionViewAccountItem* item = [[CollectionViewAccountItem alloc] initWithType:0];
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h index 2560fc85..0776f7c1 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h
@@ -36,13 +36,13 @@ // containing a text label and a switch. @interface CollectionViewSwitchCell : MDCCollectionViewCell -// UILabel corresponding to |text| from the item. +// UILabel corresponding to `text` from the item. @property(nonatomic, readonly, strong) UILabel* textLabel; // The switch view. @property(nonatomic, readonly, strong) UISwitch* switchView; -// Returns the default text color used for the given |state|. +// Returns the default text color used for the given `state`. + (UIColor*)defaultTextColorForState:(UIControlState)state; @end
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item_unittest.mm b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item_unittest.mm index 67a46e92..19e27e3 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item_unittest.mm +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item_unittest.mm
@@ -17,7 +17,7 @@ using CollectionViewSwitchItemTest = PlatformTest; // Tests that the label and switch values are set properly after a call to -// |configureCell:|. +// `configureCell:`. TEST_F(CollectionViewSwitchItemTest, ConfigureCell) { CollectionViewSwitchItem* item = [[CollectionViewSwitchItem alloc] initWithType:0]; @@ -40,7 +40,7 @@ } // Tests that the text color and enabled state of the switch are set correctly -// by a call to |configureCell:|. +// by a call to `configureCell:`. TEST_F(CollectionViewSwitchItemTest, EnabledAndDisabled) { CollectionViewSwitchCell* cell = [[CollectionViewSwitchCell alloc] init]; CollectionViewSwitchItem* item =
diff --git a/ios/chrome/browser/ui/collection_view/cells/collection_view_text_cell.h b/ios/chrome/browser/ui/collection_view/cells/collection_view_text_cell.h index c694628f..6ff6791 100644 --- a/ios/chrome/browser/ui/collection_view/cells/collection_view_text_cell.h +++ b/ios/chrome/browser/ui/collection_view/cells/collection_view_text_cell.h
@@ -18,8 +18,8 @@ // The second line of detail text to display. @property(nonatomic, readonly, strong, nullable) UILabel* detailTextLabel; -// Returns the height needed for a cell contained in |width| to display -// |titleLabel| and |detailTextLabel|. +// Returns the height needed for a cell contained in `width` to display +// `titleLabel` and `detailTextLabel`. + (CGFloat)heightForTitleLabel:(nullable UILabel*)titleLabel detailTextLabel:(nullable UILabel*)detailTextLabel width:(CGFloat)width;
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.h b/ios/chrome/browser/ui/collection_view/collection_view_controller.h index 2000c9f..92a0b8b4 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller.h +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.h
@@ -44,12 +44,12 @@ // override this method in order to get a clean collectionViewModel. - (void)loadModel NS_REQUIRES_SUPER; -// Reconfigures the cells corresponding to the given |items| by calling -// |configureCell:| on each cell. +// Reconfigures the cells corresponding to the given `items` by calling +// `configureCell:` on each cell. - (void)reconfigureCellsForItems:(NSArray*)items; -// Reconfigures the cells corresponding to the given |indexPaths| by calling -// |configureCell:| on each cell. +// Reconfigures the cells corresponding to the given `indexPaths` by calling +// `configureCell:` on each cell. - (void)reconfigureCellsAtIndexPaths:(NSArray*)indexPaths; #pragma mark MDCCollectionViewEditingDelegate
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm index 821af54..e227db8 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm
@@ -290,14 +290,14 @@ #pragma mark - Private -// Reconfigures the cell at |indexPath| by calling |configureCell:| with |item|. +// Reconfigures the cell at `indexPath` by calling `configureCell:` with `item`. - (void)reconfigureCellAtIndexPath:(NSIndexPath*)indexPath withItem:(CollectionViewItem*)item { MDCCollectionViewCell* cell = base::mac::ObjCCastStrict<MDCCollectionViewCell>( [self.collectionView cellForItemAtIndexPath:indexPath]); - // |cell| may be nil if the row is not currently on screen. + // `cell` may be nil if the row is not currently on screen. if (cell) { [item configureCell:cell]; }
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller_test.h b/ios/chrome/browser/ui/collection_view/collection_view_controller_test.h index 89906b0..0f6c5150 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller_test.h +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller_test.h
@@ -29,7 +29,7 @@ // Tests should call this function to create their controller for testing. void CreateController(); - // Will call CreateController() if |controller_| is nil. + // Will call CreateController() if `controller_` is nil. CollectionViewController* controller(); // Deletes the controller. @@ -42,79 +42,79 @@ // Returns the number of sections in the collectionView. int NumberOfSections(); - // Returns the number of items in |section|. + // Returns the number of items in `section`. int NumberOfItemsInSection(int section); - // Returns the collection view item at |item| in |section|. + // Returns the collection view item at `item` in `section`. id GetCollectionViewItem(int section, int item); - // Verifies that the title matches |expected_title|. + // Verifies that the title matches `expected_title`. void CheckTitle(NSString* expected_title); - // Verifies that the title matches the l10n string for |expected_title_id|. + // Verifies that the title matches the l10n string for `expected_title_id`. void CheckTitleWithId(int expected_title_id); - // Verifies that the section title at |section| matches the |expected_title|. + // Verifies that the section title at `section` matches the `expected_title`. void CheckSectionHeader(NSString* expected_title, int section); - // Verifies that the section title at |section| matches the l10n string for - // |expected_title_id|. + // Verifies that the section title at `section` matches the l10n string for + // `expected_title_id`. void CheckSectionHeaderWithId(int expected_title_id, int section); - // Verifies that the text cell at |item| in |section| has a text property - // which matches |expected_title|. + // Verifies that the text cell at `item` in `section` has a text property + // which matches `expected_title`. void CheckTextCellText(NSString* expected_text, int section, int item); - // Verifies that the text cell at |item| in |section| has a text property - // which matches the l10n string for |expected_title_id|. + // Verifies that the text cell at `item` in `section` has a text property + // which matches the l10n string for `expected_title_id`. void CheckTextCellTextWithId(int expected_text_id, int section, int item); - // Verifies that the text cell at |item| in |section| has a title which - // matches |expected_title|. + // Verifies that the text cell at `item` in `section` has a title which + // matches `expected_title`. void CheckTextCellTitle(NSString* expected_title, int section, int item); - // Verifies that the text cell at |item| in |section| has a title which - // matches the l10n string for |expected_title_id|. + // Verifies that the text cell at `item` in `section` has a title which + // matches the l10n string for `expected_title_id`. void CheckTextCellTitleWithId(int expected_title_id, int section, int item); - // Verifies that the text cell at |item| in |section| has a title and subtitle - // which match strings for |expected_title| and |expected_subtitle|, + // Verifies that the text cell at `item` in `section` has a title and subtitle + // which match strings for `expected_title` and `expected_subtitle`, // respectively. void CheckTextCellTitleAndSubtitle(NSString* expected_title, NSString* expected_subtitle, int section, int item); - // Verifies that the text cell at |item| in |section| has a title and subtitle - // which match strings for |expected_title| and |expected_subtitle|, + // Verifies that the text cell at `item` in `section` has a title and subtitle + // which match strings for `expected_title` and `expected_subtitle`, // respectively. void CheckDetailItemTextWithIds(int expected_text_id, int expected_detail_text_id, int section_id, int item_id); - // Verifies that the switch cell at |item| in |section| has a title which - // matches |expected_title| and is currently in |state|. + // Verifies that the switch cell at `item` in `section` has a title which + // matches `expected_title` and is currently in `state`. void CheckSwitchCellStateAndTitle(BOOL expected_state, NSString* expected_title, int section, int item); - // Verifies that the switch cell at |item| in |section| has a title which - // matches the l10n string for |expected_title_id| and is currently in - // |state|. + // Verifies that the switch cell at `item` in `section` has a title which + // matches the l10n string for `expected_title_id` and is currently in + // `state`. void CheckSwitchCellStateAndTitleWithId(BOOL expected_state, int expected_title_id, int section, int item); - // Verifies that the cell at |item| in |section| has the given - // |accessory_type|. + // Verifies that the cell at `item` in `section` has the given + // `accessory_type`. void CheckAccessoryType(MDCCollectionViewCellAccessoryType accessory_type, int section, int item); - // For |section|, deletes the item at |item|. |completion_block| is called at + // For `section`, deletes the item at `item`. `completion_block` is called at // the end of the call to -performBatchUpdates:completion:. void DeleteItem(int section, int item, ProceduralBlock completion_block);
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm index ce2e40d3..1be6921 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm
@@ -85,7 +85,7 @@ toSectionWithIdentifier:SectionIdentifierFoo]; // The collection view is not visible on screen, so it has not created any - // of its cells. Swizzle |cellsForItemAtIndexPath:| and inject an + // of its cells. Swizzle `cellsForItemAtIndexPath:` and inject an // implementation for testing that always returns a non-nil cell. MDCCollectionViewCell* dummyCell = [[MDCCollectionViewCell alloc] init]; {
diff --git a/ios/chrome/browser/ui/commands/browser_commands.h b/ios/chrome/browser/ui/commands/browser_commands.h index 2933026..3b04357 100644 --- a/ios/chrome/browser/ui/commands/browser_commands.h +++ b/ios/chrome/browser/ui/commands/browser_commands.h
@@ -17,7 +17,6 @@ #import "ios/chrome/browser/ui/commands/snackbar_commands.h" #import "ios/chrome/browser/ui/commands/whats_new_commands.h" -class GURL; @class ReadingListAddCommand; // Protocol for commands that will generally be handled by the "current tab", @@ -56,19 +55,12 @@ // Closes all tabs. - (void)closeAllTabs; -// Shows the translate infobar. -- (void)showTranslate; - // Shows the online help page in a tab. - (void)showHelpPage; // Shows the bookmarks manager. - (void)showBookmarksManager; -// Shows the dialog for sending the page with |url| and |title| between a user's -// devices. -- (void)showSendTabToSelfUI:(const GURL&)url title:(NSString*)title; - // Prepares the browser to display a popup menu. - (void)prepareForPopupMenuPresentation:(PopupMenuCommandType)type;
diff --git a/ios/chrome/browser/ui/commands/browser_coordinator_commands.h b/ios/chrome/browser/ui/commands/browser_coordinator_commands.h index 9f985c9..6eb9996e 100644 --- a/ios/chrome/browser/ui/commands/browser_coordinator_commands.h +++ b/ios/chrome/browser/ui/commands/browser_coordinator_commands.h
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> @protocol BadgeItem; +class GURL; // Protocol for commands that will be handled by the BrowserCoordinator. // TODO(crbug.com/906662) : Rename this protocol to one that is more descriptive @@ -45,9 +46,16 @@ // Shows recent tabs. - (void)showRecentTabs; +// Shows the translate infobar. +- (void)showTranslate; + // Shows the AddCreditCard UI. - (void)showAddCreditCard; +// Shows the dialog for sending the page with |url| and |title| between a user's +// devices. +- (void)showSendTabToSelfUI:(const GURL&)url title:(NSString*)title; + // Displays the Badge popup menu showing |badgeItems|. - (void)displayPopupMenuWithBadgeItems:(NSArray<id<BadgeItem>>*)badgeItems;
diff --git a/ios/chrome/browser/ui/commerce/price_card/price_card_item.h b/ios/chrome/browser/ui/commerce/price_card/price_card_item.h index e7f16d0..0712a31 100644 --- a/ios/chrome/browser/ui/commerce/price_card/price_card_item.h +++ b/ios/chrome/browser/ui/commerce/price_card/price_card_item.h
@@ -10,7 +10,7 @@ // Model object representing price information for a shopping website. @interface PriceCardItem : NSObject -// Create a price card item with |price|, and |previous price|. +// Create a price card item with `price`, and `previous price`. - (instancetype)initWithPrice:(NSString*)price previousPrice:(NSString*)previousPrice NS_DESIGNATED_INITIALIZER;
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.h b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.h index 9995a9e..81e8f66 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.h +++ b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.h
@@ -18,13 +18,13 @@ // Object creating the configuration (action items...) for the context menu. @interface ContextMenuConfigurationProvider : NSObject -// Instantiates with a |browser|. +// Instantiates with a `browser`. - (instancetype)initWithBrowser:(Browser*)browser baseViewController:(UIViewController*)baseViewController; // Returns a configuration for a context menu, based on its associated -// |webState|, |params| and |baseViewController|. -// |params| is copied in order to be used in blocks. +// `webState`, `params` and `baseViewController`. +// `params` is copied in order to be used in blocks. - (UIContextMenuConfiguration*) contextMenuConfigurationForWebState:(web::WebState*)webState params:(web::ContextMenuParams)params;
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm index 1d78228..0697ff7 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm +++ b/ios/chrome/browser/ui/context_menu/context_menu_configuration_provider.mm
@@ -366,7 +366,7 @@ #pragma mark - Private -// Searches an image with the given |imageURL| and |referrer|, optionally using +// Searches an image with the given `imageURL` and `referrer`, optionally using // Lens. - (void)searchImageWithURL:(GURL)imageURL usingLens:(BOOL)usingLens @@ -384,7 +384,7 @@ }); } -// Starts a reverse image search based on |imageData| and |imageURL| in a new +// Starts a reverse image search based on `imageData` and `imageURL` in a new // tab. - (void)searchByImageData:(NSData*)imageData imageURL:(const GURL&)URL { web::NavigationManager::WebLoadParams webParams = @@ -398,7 +398,7 @@ UrlLoadingBrowserAgent::FromBrowser(self.browser)->Load(params); } -// Searches an image with Lens using the given |imageData|. +// Searches an image with Lens using the given `imageData`. - (void)searchImageUsingLensWithData:(NSData*)imageData { // TODO(crbug.com/1323783): This should be an id<LensCommands> and use // HandlerForProtocol().
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_egtest.mm b/ios/chrome/browser/ui/context_menu/context_menu_egtest.mm index fb94cdf..a84f6bc6 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_egtest.mm +++ b/ios/chrome/browser/ui/context_menu/context_menu_egtest.mm
@@ -44,10 +44,10 @@ using chrome_test_util::WebViewMatcher; namespace { -// Directory containing the |kLogoPagePath| and |kLogoPageImageSourcePath| +// Directory containing the `kLogoPagePath` and `kLogoPageImageSourcePath` // resources. // const char kServerFilesDir[] = "ios/testing/data/http_server_files/"; -// Path to a page containing the chromium logo and the text |kLogoPageText|. +// Path to a page containing the chromium logo and the text `kLogoPageText`. const char kLogoPagePath[] = "/chromium_logo_page.html"; // Path to the chromium logo. const char kLogoPageImageSourcePath[] = "/chromium_logo.png"; @@ -244,7 +244,7 @@ return std::move(http_response); } -// Long presses on |element_id| to trigger context menu. +// Long presses on `element_id` to trigger context menu. void LongPressElement(const char* element_id) { [[EarlGrey selectElementWithMatcher:WebViewMatcher()] performAction:chrome_test_util::LongPressElementForContextMenu( @@ -259,7 +259,7 @@ performAction:grey_tapAtPoint(CGPointMake(0, 0))]; } -// Taps on |context_menu_item_button| context menu item. +// Taps on `context_menu_item_button` context menu item. void TapOnContextMenuButton(id<GREYMatcher> context_menu_item_button) { [[EarlGrey selectElementWithMatcher:context_menu_item_button] assertWithMatcher:grey_notNil()]; @@ -372,7 +372,7 @@ pointOnImage.y = topInset + 25.0; pointOnImage.x = [ChromeEarlGrey webStateWebViewSize].width / 2.0; - // Duration should match |kContextMenuLongPressDuration| as defined in + // Duration should match `kContextMenuLongPressDuration` as defined in // web_view_actions.mm. [[EarlGrey selectElementWithMatcher:WebViewMatcher()] performAction:grey_longPressAtPointWithDuration(pointOnImage, 1.0)]; @@ -480,7 +480,7 @@ assertWithMatcher:grey_notNil()]; // TODO(crbug.com/1233056): Tap to dismiss the system selection callout - // buttons so tearDown doesn't hang when |disabler| goes out of scope. + // buttons so tearDown doesn't hang when `disabler` goes out of scope. [[EarlGrey selectElementWithMatcher:WebViewMatcher()] performAction:grey_tap()]; }
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_utils.h b/ios/chrome/browser/ui/context_menu/context_menu_utils.h index 685060b..405aac2 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_utils.h +++ b/ios/chrome/browser/ui/context_menu/context_menu_utils.h
@@ -11,13 +11,13 @@ struct ContextMenuParams; } -// Returns the title for the context menu |params|. +// Returns the title for the context menu `params`. NSString* GetContextMenuTitle(web::ContextMenuParams params); -// Returns the subtitle for the context menu |params|. +// Returns the subtitle for the context menu `params`. NSString* GetContextMenuSubtitle(web::ContextMenuParams params); -// Returns whether the title for context menu |params| is an image title. +// Returns whether the title for context menu `params` is an image title. bool IsImageTitle(web::ContextMenuParams params); #endif // IOS_CHROME_BROWSER_UI_CONTEXT_MENU_CONTEXT_MENU_UTILS_H_
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_utils.mm b/ios/chrome/browser/ui/context_menu/context_menu_utils.mm index a70b6e97..12aaaf8 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_utils.mm +++ b/ios/chrome/browser/ui/context_menu/context_menu_utils.mm
@@ -27,7 +27,7 @@ typedef std::pair<NSString*, ContextMenuTitleOrigin> TitleAndOrigin; -// Returns the title and origin for |params|. +// Returns the title and origin for `params`. TitleAndOrigin GetContextMenuTitleAndOrigin(web::ContextMenuParams params) { NSString* title = nil; ContextMenuTitleOrigin origin = ContextMenuTitleOrigin::kUnknown;
diff --git a/ios/chrome/browser/ui/context_menu/context_menu_utils_unittest.mm b/ios/chrome/browser/ui/context_menu/context_menu_utils_unittest.mm index 03dd0fc8..8eed56da6 100644 --- a/ios/chrome/browser/ui/context_menu/context_menu_utils_unittest.mm +++ b/ios/chrome/browser/ui/context_menu/context_menu_utils_unittest.mm
@@ -53,7 +53,7 @@ EXPECT_FALSE(IsImageTitle(params)); } -// Tests title is set to |src_url| if there is no title. +// Tests title is set to `src_url` if there is no title. TEST_F(ContextMenuUtilsTest, TitleSrcTitle) { web::ContextMenuParams params; params.src_url = GURL(kSrcUrl);
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_util.mm b/ios/chrome/browser/ui/omnibox/omnibox_util.mm index 153caaf..d8b915f 100644 --- a/ios/chrome/browser/ui/omnibox/omnibox_util.mm +++ b/ios/chrome/browser/ui/omnibox/omnibox_util.mm
@@ -42,13 +42,13 @@ case AutocompleteMatchType::URL_WHAT_YOU_TYPED: case AutocompleteMatchType::DOCUMENT_SUGGESTION: case AutocompleteMatchType::PEDAL_DEPRECATED: - return DEFAULT_FAVICON; case AutocompleteMatchType::HISTORY_BODY: case AutocompleteMatchType::HISTORY_KEYWORD: case AutocompleteMatchType::HISTORY_TITLE: case AutocompleteMatchType::HISTORY_URL: case AutocompleteMatchType::TAB_SEARCH_DEPRECATED: case AutocompleteMatchType::OPEN_TAB: + case AutocompleteMatchType::HISTORY_CLUSTER: return DEFAULT_FAVICON; case AutocompleteMatchType::CONTACT_DEPRECATED: case AutocompleteMatchType::SEARCH_OTHER_ENGINE:
diff --git a/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm b/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm index 29f51806..4df07b2 100644 --- a/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm +++ b/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm
@@ -214,6 +214,7 @@ return _match.type == AutocompleteMatchType::BOOKMARK_TITLE || _match.type == AutocompleteMatchType::CALCULATOR || _match.type == AutocompleteMatchType::HISTORY_BODY || + _match.type == AutocompleteMatchType::HISTORY_CLUSTER || _match.type == AutocompleteMatchType::HISTORY_KEYWORD || _match.type == AutocompleteMatchType::HISTORY_TITLE || _match.type == AutocompleteMatchType::HISTORY_URL ||
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_icon_formatter.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_icon_formatter.mm index a8a9cb9..893eb0d 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_icon_formatter.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_icon_formatter.mm
@@ -65,6 +65,7 @@ case AutocompleteMatchType::HISTORY_URL: case AutocompleteMatchType::TAB_SEARCH_DEPRECATED: case AutocompleteMatchType::OPEN_TAB: + case AutocompleteMatchType::HISTORY_CLUSTER: return DEFAULT_FAVICON; case AutocompleteMatchType::CONTACT_DEPRECATED: case AutocompleteMatchType::SEARCH_OTHER_ENGINE:
diff --git a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm index ef28f4a..393c5f2 100644 --- a/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password/passwords_table_view_controller.mm
@@ -279,10 +279,6 @@ // empty search term. Tapping on the scrim view will dismiss the search bar. @property(nonatomic, strong) UIControl* scrimView; -// Example headers for calculating headers' heights. -@property(nonatomic, strong) - NSMutableDictionary<Class, UITableViewHeaderFooterView*>* exampleHeaders; - // The loading spinner background which appears when loading passwords. @property(nonatomic, strong) HomeWaitingView* spinnerView; @@ -337,8 +333,6 @@ _sharedPasswordAutoFillStatusManager = [PasswordAutoFillStatusManager sharedManager]; - self.exampleHeaders = [[NSMutableDictionary alloc] init]; - int titleStringID = base::FeatureList::IsEnabled( password_manager::features::kIOSEnablePasswordManagerBrandingUpdate) @@ -1221,45 +1215,6 @@ } } -#pragma mark - UITableViewDelegate - -// Uses a group of example headers to calculate the heights. Returning -// UITableViewAutomaticDimension here will cause UITableView to cache the -// heights and reuse them when sections are inserted or removed, which will -// break the UI. For example: -// 1. UITableView is inited with 4 headers; -// 2. "tableView:heightForHeaderInSection" is called and -// UITableViewAutomaticDimension is returned; -// 3. UITableView calculates headers' heights and get [10, 20, 10, 20]; -// 4. UITableView caches these heights; -// 5. The first header is removed from UITableView; -// 6. "tableView:heightForHeaderInSection" is called and -// UITableViewAutomaticDimension is returned; -// 7. UITableView decides to use cached results as [10, 20, 10], while -// expected heights are [20, 10, 20]. -- (CGFloat)tableView:(UITableView*)tableView - heightForHeaderInSection:(NSInteger)section { - if ([self.tableViewModel headerForSectionIndex:section]) { - TableViewHeaderFooterItem* item = - [self.tableViewModel headerForSectionIndex:section]; - Class headerClass = item.cellClass; - if (!self.exampleHeaders[headerClass]) { - UITableViewHeaderFooterView* view = - [[headerClass alloc] initWithReuseIdentifier:@""]; - [item configureHeaderFooterView:view withStyler:self.styler]; - [self.exampleHeaders setObject:view forKey:headerClass]; - } - UITableViewHeaderFooterView* view = self.exampleHeaders[headerClass]; - CGSize size = - [view systemLayoutSizeFittingSize:self.tableView.safeAreaLayoutGuide - .layoutFrame.size - withHorizontalFittingPriority:UILayoutPriorityRequired - verticalFittingPriority:1]; - return size.height; - } - return [super tableView:tableView heightForHeaderInSection:section]; -} - #pragma mark - UISearchControllerDelegate - (void)willPresentSearchController:(UISearchController*)searchController {
diff --git a/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator.mm b/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator.mm index 53c1bf6..7d6e862c 100644 --- a/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator.mm +++ b/ios/chrome/browser/ui/settings/safety_check/safety_check_mediator.mm
@@ -101,7 +101,7 @@ // time if they all end up using their min delays. constexpr double kUpdateRowMinDelay = 2.0; constexpr double kPasswordRowMinDelay = 1.5; -constexpr double kSafeBrowsingRowMinDelay = 1.75; +constexpr double kSafeBrowsingRowMinDelay = 3.0; } // namespace
diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn index bf0142f..010c940 100644 --- a/media/audio/BUILD.gn +++ b/media/audio/BUILD.gn
@@ -137,8 +137,8 @@ "scoped_task_runner_observer.h", "simple_sources.cc", "simple_sources.h", - "system_output_glitch_reporter.cc", - "system_output_glitch_reporter.h", + "system_glitch_reporter.cc", + "system_glitch_reporter.h", "wav_audio_handler.cc", "wav_audio_handler.h", ]
diff --git a/media/audio/alsa/alsa_input.h b/media/audio/alsa/alsa_input.h index c6424f9..591c4ce 100644 --- a/media/audio/alsa/alsa_input.h +++ b/media/audio/alsa/alsa_input.h
@@ -12,6 +12,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread.h" #include "base/time/time.h" @@ -77,17 +78,19 @@ // want circular references. Additionally, stream objects live on the audio // thread, which is owned by the audio manager and we don't want to addref // the manager from that thread. - AudioManagerBase* audio_manager_; + raw_ptr<AudioManagerBase> audio_manager_; std::string device_name_; AudioParameters params_; int bytes_per_buffer_; - AlsaWrapper* wrapper_; + raw_ptr<AlsaWrapper> wrapper_; base::TimeDelta buffer_duration_; // Length of each recorded buffer. - AudioInputCallback* callback_; // Valid during a recording session. + raw_ptr<AudioInputCallback> callback_; // Valid during a recording session. base::TimeTicks next_read_time_; // Scheduled time for next read callback. - snd_pcm_t* device_handle_; // Handle to the ALSA PCM recording device. - snd_mixer_t* mixer_handle_; // Handle to the ALSA microphone mixer. - snd_mixer_elem_t* mixer_element_handle_; // Handle to the capture element. + raw_ptr<snd_pcm_t> + device_handle_; // Handle to the ALSA PCM recording device. + raw_ptr<snd_mixer_t> mixer_handle_; // Handle to the ALSA microphone mixer. + raw_ptr<snd_mixer_elem_t> + mixer_element_handle_; // Handle to the capture element. // Buffer used for reading audio data. std::unique_ptr<uint8_t[]> audio_buffer_; bool read_callback_behind_schedule_;
diff --git a/media/audio/alsa/alsa_output.h b/media/audio/alsa/alsa_output.h index 33d2fea..c674c5c5 100644 --- a/media/audio/alsa/alsa_output.h +++ b/media/audio/alsa/alsa_output.h
@@ -29,6 +29,7 @@ #include "base/compiler_specific.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -188,16 +189,16 @@ bool stop_stream_; // Wrapper class to invoke all the ALSA functions. - AlsaWrapper* wrapper_; + raw_ptr<AlsaWrapper> wrapper_; // Audio manager that created us. Used to report that we've been closed. - AudioManagerBase* manager_; + raw_ptr<AudioManagerBase> manager_; // Task runner to use for polling. const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; // Handle to the actual PCM playback device. - snd_pcm_t* playback_handle_; + raw_ptr<snd_pcm_t> playback_handle_; std::unique_ptr<SeekableBuffer> buffer_; uint32_t frames_per_packet_; @@ -205,7 +206,7 @@ InternalState state_; float volume_; // Volume level from 0.0 to 1.0. - AudioSourceCallback* source_callback_; + raw_ptr<AudioSourceCallback> source_callback_; // Container for retrieving data from AudioSourceCallback::OnMoreData(). std::unique_ptr<AudioBus> audio_bus_; @@ -214,7 +215,7 @@ std::unique_ptr<ChannelMixer> channel_mixer_; std::unique_ptr<AudioBus> mixed_audio_bus_; - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock> tick_clock_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/media/audio/audio_low_latency_input_output_unittest.cc b/media/audio/audio_low_latency_input_output_unittest.cc index fd1032b..9f219dea 100644 --- a/media/audio/audio_low_latency_input_output_unittest.cc +++ b/media/audio/audio_low_latency_input_output_unittest.cc
@@ -12,6 +12,7 @@ #include "base/environment.h" #include "base/files/file_util.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/run_loop.h" #include "base/synchronization/lock.h" @@ -331,7 +332,7 @@ return stream; } - AudioManager* audio_manager_; + raw_ptr<AudioManager> audio_manager_; AudioParameters::Format format_; ChannelLayout channel_layout_; int sample_rate_;
diff --git a/media/audio/mac/audio_auhal_mac.cc b/media/audio/mac/audio_auhal_mac.cc index 0bebb61..86fd0d7 100644 --- a/media/audio/mac/audio_auhal_mac.cc +++ b/media/audio/mac/audio_auhal_mac.cc
@@ -169,6 +169,7 @@ current_lost_frames_(0), last_sample_time_(0.0), last_number_of_frames_(0), + glitch_reporter_(SystemGlitchReporter::StreamType::kRender), log_callback_(log_callback) { // We must have a manager. DCHECK(manager_); @@ -438,7 +439,7 @@ UMA_HISTOGRAM_COUNTS_1M("Media.Audio.Render.FramesRequested", number_of_frames_requested_); - SystemOutputGlitchReporter::Stats stats = + SystemGlitchReporter::Stats stats = glitch_reporter_.GetLongTermStatsAndReset(); std::string log_message = base::StringPrintf(
diff --git a/media/audio/mac/audio_auhal_mac.h b/media/audio/mac/audio_auhal_mac.h index 16f7244..32bf0833 100644 --- a/media/audio/mac/audio_auhal_mac.h +++ b/media/audio/mac/audio_auhal_mac.h
@@ -33,7 +33,7 @@ #include "media/audio/audio_io.h" #include "media/audio/audio_manager.h" #include "media/audio/mac/scoped_audio_unit.h" -#include "media/audio/system_output_glitch_reporter.h" +#include "media/audio/system_glitch_reporter.h" #include "media/base/audio_parameters.h" namespace media { @@ -204,7 +204,7 @@ // Used to aggregate and report glitch metrics to UMA (periodically) and to // text logs (when a stream ends). - SystemOutputGlitchReporter glitch_reporter_ GUARDED_BY(lock_); + SystemGlitchReporter glitch_reporter_ GUARDED_BY(lock_); // Used to defer Start() to workaround http://crbug.com/160920. base::CancelableOnceClosure deferred_start_cb_;
diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc index 0e842caf..de981fa 100644 --- a/media/audio/mac/audio_low_latency_input_mac.cc +++ b/media/audio/mac/audio_low_latency_input_mac.cc
@@ -228,9 +228,7 @@ output_device_id_for_aec_(kAudioObjectUnknown), last_sample_time_(0.0), last_number_of_frames_(0), - total_lost_frames_(0), - largest_glitch_frames_(0), - glitches_detected_(0), + glitch_reporter_(SystemGlitchReporter::StreamType::kCapture), log_callback_(log_callback) { DCHECK(manager_); CHECK(log_callback_ != AudioManager::LogCallback()); @@ -1391,18 +1389,13 @@ if (last_sample_time_) { DCHECK_NE(0U, last_number_of_frames_); - UInt32 diff = + UInt32 sample_time_diff = static_cast<UInt32>(timestamp->mSampleTime - last_sample_time_); - if (diff != last_number_of_frames_) { - DCHECK_GT(diff, last_number_of_frames_); - // We were given samples post what we expected. Update the glitch count - // etc. and keep a record of the largest glitch. - auto lost_frames = diff - last_number_of_frames_; - total_lost_frames_ += lost_frames; - if (lost_frames > largest_glitch_frames_) - largest_glitch_frames_ = lost_frames; - ++glitches_detected_; - } + DCHECK_GE(sample_time_diff, last_number_of_frames_); + UInt32 lost_frames = sample_time_diff - last_number_of_frames_; + base::TimeDelta lost_audio_duration = AudioTimestampHelper::FramesToTime( + lost_frames, input_params_.sample_rate()); + glitch_reporter_.UpdateStats(lost_audio_duration); } // Store the last sample time for use next time we get called back. @@ -1416,33 +1409,24 @@ // A value of 0 indicates that we got the buffer size we asked for. UMA_HISTOGRAM_COUNTS_10000("Media.Audio.Capture.FramesProvided", number_of_frames_provided_); - // Even if there aren't any glitches, we want to record it to get a feel for - // how often we get no glitches vs the alternative. - UMA_HISTOGRAM_COUNTS_1M("Media.Audio.Capture.Glitches", glitches_detected_); - auto lost_frames_ms = (total_lost_frames_ * 1000) / format_.mSampleRate; + SystemGlitchReporter::Stats stats = + glitch_reporter_.GetLongTermStatsAndReset(); + std::string log_message = base::StringPrintf( - "AU in: Total glitches=%d. Total frames lost=%d (%.0lf ms).", - glitches_detected_, total_lost_frames_, lost_frames_ms); - log_callback_.Run(log_message); + "AU in: (num_glitches_detected=[%d], cumulative_audio_lost=[%llu ms], " + "largest_glitch=[%llu ms])", + stats.glitches_detected, stats.total_glitch_duration.InMilliseconds(), + stats.largest_glitch_duration.InMilliseconds()); - if (glitches_detected_ != 0) { - UMA_HISTOGRAM_LONG_TIMES("Media.Audio.Capture.LostFramesInMs", - base::Milliseconds(lost_frames_ms)); - auto largest_glitch_ms = - (largest_glitch_frames_ * 1000) / format_.mSampleRate; - UMA_HISTOGRAM_CUSTOM_TIMES("Media.Audio.Capture.LargestGlitchMs", - base::Milliseconds(largest_glitch_ms), - base::Milliseconds(1), base::Minutes(1), 50); + log_callback_.Run(log_message); + if (stats.glitches_detected != 0) { DLOG(WARNING) << log_message; } number_of_frames_provided_ = 0; - glitches_detected_ = 0; last_sample_time_ = 0; last_number_of_frames_ = 0; - total_lost_frames_ = 0; - largest_glitch_frames_ = 0; } // TODO(ossu): Ideally, we'd just use the mono stream directly. However, since
diff --git a/media/audio/mac/audio_low_latency_input_mac.h b/media/audio/mac/audio_low_latency_input_mac.h index 9e5b3a2..4002c9b 100644 --- a/media/audio/mac/audio_low_latency_input_mac.h +++ b/media/audio/mac/audio_low_latency_input_mac.h
@@ -50,6 +50,7 @@ #include "media/audio/agc_audio_stream.h" #include "media/audio/audio_io.h" #include "media/audio/mac/audio_manager_mac.h" +#include "media/audio/system_glitch_reporter.h" #include "media/base/audio_block_fifo.h" #include "media/base/audio_parameters.h" @@ -268,9 +269,10 @@ // NOTE: Float64 and UInt32 types are used for native API compatibility. Float64 last_sample_time_; UInt32 last_number_of_frames_; - UInt32 total_lost_frames_; - UInt32 largest_glitch_frames_; - int glitches_detected_; + + // Used to aggregate and report glitch metrics to UMA (periodically) and to + // text logs (when a stream ends). + SystemGlitchReporter glitch_reporter_; // Callback to send statistics info. AudioManager::LogCallback log_callback_;
diff --git a/media/audio/pulse/audio_manager_pulse.h b/media/audio/pulse/audio_manager_pulse.h index f8a115bff..78ee188c 100644 --- a/media/audio/pulse/audio_manager_pulse.h +++ b/media/audio/pulse/audio_manager_pulse.h
@@ -11,6 +11,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "media/audio/audio_manager_base.h" @@ -103,9 +104,9 @@ // Updates |native_input_sample_rate_| and |native_channel_count_|. void UpdateNativeAudioHardwareInfo(); - pa_threaded_mainloop* input_mainloop_; - pa_context* input_context_; - AudioDeviceNames* devices_; + raw_ptr<pa_threaded_mainloop> input_mainloop_; + raw_ptr<pa_context> input_context_; + raw_ptr<AudioDeviceNames> devices_; int native_input_sample_rate_; int native_channel_count_; std::string default_source_name_;
diff --git a/media/audio/pulse/pulse_input.h b/media/audio/pulse/pulse_input.h index 269c2a6..4c946df 100644 --- a/media/audio/pulse/pulse_input.h +++ b/media/audio/pulse/pulse_input.h
@@ -9,6 +9,7 @@ #include <stddef.h> #include <string> +#include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "media/audio/agc_audio_stream.h" #include "media/audio/audio_device_name.h" @@ -66,8 +67,8 @@ // Utility method used by GetVolume() and IsMuted(). bool GetSourceInformation(pa_source_info_cb_t callback); - AudioManagerPulse* audio_manager_; - AudioInputCallback* callback_; + raw_ptr<AudioManagerPulse> audio_manager_; + raw_ptr<AudioInputCallback> callback_; std::string device_name_; AudioParameters params_; int channels_; @@ -82,9 +83,9 @@ AudioBlockFifo fifo_; // PulseAudio API structs. - pa_threaded_mainloop* pa_mainloop_; // Weak. + raw_ptr<pa_threaded_mainloop> pa_mainloop_; // Weak. - pa_context* pa_context_; // Weak. + raw_ptr<pa_context> pa_context_; // Weak. // Callback to send log messages to registered clients. AudioManager::LogCallback log_callback_;
diff --git a/media/audio/pulse/pulse_output.cc b/media/audio/pulse/pulse_output.cc index e4e3c38d..6afe011 100644 --- a/media/audio/pulse/pulse_output.cc +++ b/media/audio/pulse/pulse_output.cc
@@ -258,7 +258,7 @@ // Set |source_callback_| to nullptr so all FulfillWriteRequest() calls which // may occur while waiting on the flush and cork exit immediately. - auto* callback = source_callback_; + auto* callback = source_callback_.get(); source_callback_ = nullptr; // Flush the stream prior to cork, doing so after will cause hangs. Write
diff --git a/media/audio/pulse/pulse_output.h b/media/audio/pulse/pulse_output.h index 302ca39..2529bad7 100644 --- a/media/audio/pulse/pulse_output.h +++ b/media/audio/pulse/pulse_output.h
@@ -25,6 +25,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "media/audio/audio_io.h" #include "media/audio/audio_manager.h" @@ -84,7 +85,7 @@ const std::string device_id_; // Audio manager that created us. Used to report that we've closed. - AudioManagerBase* manager_; + raw_ptr<AudioManagerBase> manager_; // Callback to send log messages to registered clients. AudioManager::LogCallback log_callback_; @@ -99,7 +100,7 @@ // Callback to audio data source. Must only be modified while holding a lock // on |pa_mainloop_| via pa_threaded_mainloop_lock(). - AudioSourceCallback* source_callback_; + raw_ptr<AudioSourceCallback> source_callback_; // Container for retrieving data from AudioSourceCallback::OnMoreData(). std::unique_ptr<AudioBus> audio_bus_;
diff --git a/media/audio/pulse/pulse_util.cc b/media/audio/pulse/pulse_util.cc index 37cd749..b6778a2 100644 --- a/media/audio/pulse/pulse_util.cc +++ b/media/audio/pulse/pulse_util.cc
@@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/synchronization/waitable_event.h" #include "build/branding_buildflags.h" @@ -100,14 +101,14 @@ pa_proplist* get() const { return property_list_; } private: - pa_proplist* property_list_; + raw_ptr<pa_proplist> property_list_; }; struct InputBusData { InputBusData(pa_threaded_mainloop* loop, const std::string& name) : loop_(loop), name_(name), bus_() {} - pa_threaded_mainloop* const loop_; + const raw_ptr<pa_threaded_mainloop> loop_; const std::string& name_; std::string bus_; }; @@ -116,7 +117,7 @@ OutputBusData(pa_threaded_mainloop* loop, const std::string& bus) : loop_(loop), name_(), bus_(bus) {} - pa_threaded_mainloop* const loop_; + const raw_ptr<pa_threaded_mainloop> loop_; std::string name_; const std::string& bus_; }; @@ -162,7 +163,7 @@ explicit DefaultDevicesData(pa_threaded_mainloop* loop) : loop_(loop) {} std::string input_; std::string output_; - pa_threaded_mainloop* const loop_; + const raw_ptr<pa_threaded_mainloop> loop_; }; void GetDefaultDeviceIdCallback(pa_context* c, @@ -177,8 +178,8 @@ } struct ContextStartupData { - base::WaitableEvent* context_wait; - pa_threaded_mainloop* pa_mainloop; + raw_ptr<base::WaitableEvent> context_wait; + raw_ptr<pa_threaded_mainloop> pa_mainloop; }; void SignalReadyOrErrorStateCallback(pa_context* context, void* context_data) {
diff --git a/media/audio/pulse/pulse_util.h b/media/audio/pulse/pulse_util.h index 424f1a4..c3c0198 100644 --- a/media/audio/pulse/pulse_util.h +++ b/media/audio/pulse/pulse_util.h
@@ -9,6 +9,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/audio/audio_device_name.h" #include "media/base/audio_parameters.h" @@ -38,7 +39,7 @@ } private: - pa_threaded_mainloop* pa_mainloop_; + raw_ptr<pa_threaded_mainloop> pa_mainloop_; }; bool MEDIA_EXPORT InitPulse(pa_threaded_mainloop** mainloop,
diff --git a/media/audio/system_output_glitch_reporter.cc b/media/audio/system_glitch_reporter.cc similarity index 60% rename from media/audio/system_output_glitch_reporter.cc rename to media/audio/system_glitch_reporter.cc index 5a11dd5..d8b2544 100644 --- a/media/audio/system_output_glitch_reporter.cc +++ b/media/audio/system_glitch_reporter.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 "media/audio/system_output_glitch_reporter.h" +#include "media/audio/system_glitch_reporter.h" #include "base/metrics/histogram_functions.h" @@ -13,8 +13,20 @@ constexpr static int kCallbacksPerLogPeriod = 1000; } // namespace -SystemOutputGlitchReporter::Stats -SystemOutputGlitchReporter::GetLongTermStatsAndReset() { +SystemGlitchReporter::SystemGlitchReporter(StreamType stream_type) + : num_glitches_detected_metric_name_(stream_type == StreamType::kCapture + ? "Media.Audio.Capture.Glitches2" + : "Media.Audio.Render.Glitches2"), + largest_glitch_duration_metric_name_( + stream_type == StreamType::kCapture + ? "Media.Audio.Capture.LostFramesInMs2" + : "Media.Audio.Render.LostFramesInMs2"), + total_glitch_duration_metric_name_( + stream_type == StreamType::kCapture + ? "Media.Audio.Capture.LargestGlitchMs2" + : "Media.Audio.Render.LargestGlitchMs2") {} + +SystemGlitchReporter::Stats SystemGlitchReporter::GetLongTermStatsAndReset() { Stats result = long_term_stats_; callback_count_ = 0; short_term_stats_ = {}; @@ -22,7 +34,7 @@ return result; } -void SystemOutputGlitchReporter::UpdateStats(base::TimeDelta glitch_duration) { +void SystemGlitchReporter::UpdateStats(base::TimeDelta glitch_duration) { ++callback_count_; if (glitch_duration.is_positive()) { @@ -43,15 +55,15 @@ // We record the glitch count even if there aren't any glitches, to get a // feel for how often we get no glitches vs the alternative. - base::UmaHistogramCounts1000("Media.Audio.Render.Glitches2", + base::UmaHistogramCounts1000(num_glitches_detected_metric_name_, short_term_stats_.glitches_detected); if (short_term_stats_.glitches_detected != 0) { base::UmaHistogramCounts1M( - "Media.Audio.Render.LostFramesInMs2", + total_glitch_duration_metric_name_, short_term_stats_.total_glitch_duration.InMilliseconds()); base::UmaHistogramCounts1M( - "Media.Audio.Render.LargestGlitchMs2", + largest_glitch_duration_metric_name_, short_term_stats_.largest_glitch_duration.InMilliseconds()); }
diff --git a/media/audio/system_output_glitch_reporter.h b/media/audio/system_glitch_reporter.h similarity index 69% rename from media/audio/system_output_glitch_reporter.h rename to media/audio/system_glitch_reporter.h index a66e785..72d12da 100644 --- a/media/audio/system_output_glitch_reporter.h +++ b/media/audio/system_glitch_reporter.h
@@ -2,8 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef MEDIA_AUDIO_SYSTEM_OUTPUT_GLITCH_REPORTER_H_ -#define MEDIA_AUDIO_SYSTEM_OUTPUT_GLITCH_REPORTER_H_ +#ifndef MEDIA_AUDIO_SYSTEM_GLITCH_REPORTER_H_ +#define MEDIA_AUDIO_SYSTEM_GLITCH_REPORTER_H_ + +#include <string> #include "base/time/time.h" @@ -13,15 +15,18 @@ // Stats are aggregated and reported to UMA periodically every 1000th call to // UpdateStats(), and longer-term (manually reset) stats are available via // GetLongTermStatsAndReset(). -class SystemOutputGlitchReporter { +class SystemGlitchReporter { public: + // Used to determine which UMA metrics to log. + enum class StreamType { kCapture, kRender }; + struct Stats { int glitches_detected = 0; base::TimeDelta total_glitch_duration; base::TimeDelta largest_glitch_duration; }; - SystemOutputGlitchReporter() {} + SystemGlitchReporter(StreamType stream_type); // Resets all state: both periodic and long-term stats. Stats GetLongTermStatsAndReset(); @@ -31,6 +36,10 @@ void UpdateStats(base::TimeDelta glitch_duration); private: + const std::string num_glitches_detected_metric_name_; + const std::string largest_glitch_duration_metric_name_; + const std::string total_glitch_duration_metric_name_; + int callback_count_ = 0; // Stats reported periodically to UMA. Resets every 1000 callbacks and on @@ -43,4 +52,4 @@ } // namespace media -#endif // MEDIA_AUDIO_SYSTEM_OUTPUT_GLITCH_REPORTER_H_ +#endif // MEDIA_AUDIO_SYSTEM_GLITCH_REPORTER_H_
diff --git a/media/audio/win/audio_low_latency_input_win.cc b/media/audio/win/audio_low_latency_input_win.cc index 8390c811..245a63c 100644 --- a/media/audio/win/audio_low_latency_input_win.cc +++ b/media/audio/win/audio_low_latency_input_win.cc
@@ -251,12 +251,57 @@ } // namespace +// Counts how often an OS capture callback reports a data discontinuity and logs +// it as a UMA histogram. +class WASAPIAudioInputStream::DataDiscontinuityReporter { + public: + // Logs once every 10s, assuming 10ms buffers. + constexpr static int kCallbacksPerLogPeriod = 1000; + + DataDiscontinuityReporter() {} + + int GetLongTermDiscontinuityCountAndReset() { + int long_term_count = data_discontinuity_long_term_count_; + callback_count_ = 0; + data_discontinuity_short_term_count_ = 0; + data_discontinuity_long_term_count_ = 0; + return long_term_count; + } + + void Log(bool observed_data_discontinuity) { + ++callback_count_; + if (observed_data_discontinuity) { + ++data_discontinuity_short_term_count_; + ++data_discontinuity_long_term_count_; + } + + if (callback_count_ % kCallbacksPerLogPeriod) + return; + + // TODO(https://crbug.com/825744): It can be possible to replace + // "Media.Audio.Capture.Glitches2" with this new (simplified) metric + // instead. + base::UmaHistogramCounts1000("Media.Audio.Capture.Win.Glitches2", + data_discontinuity_short_term_count_); + + data_discontinuity_short_term_count_ = 0; + } + + private: + int callback_count_ = 0; + int data_discontinuity_short_term_count_ = 0; + int data_discontinuity_long_term_count_ = 0; +}; + WASAPIAudioInputStream::WASAPIAudioInputStream( AudioManagerWin* manager, const AudioParameters& params, const std::string& device_id, AudioManager::LogCallback log_callback) : manager_(manager), + glitch_reporter_(SystemGlitchReporter::StreamType::kCapture), + data_discontinuity_reporter_( + std::make_unique<DataDiscontinuityReporter>()), device_id_(device_id), log_callback_(std::move(log_callback)) { DCHECK(manager_); @@ -846,16 +891,17 @@ // The data in the packet is not correlated with the previous packet's // device position; this is possibly due to a stream state transition or // timing glitch. Note that, usage of this flag was added after the existing - // glitch detection in UpdateGlitchCount() and it will be used as a - // supplementary scheme initially. + // glitch detection and it will be used as a supplementary scheme initially. // The behavior of the AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY flag is // undefined on the application's first call to GetBuffer after Start and // Windows 7 or later is required for support. - if (device_position > 0 && flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY) { + const bool observed_data_discontinuity = + (device_position > 0 && flags & AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY); + if (observed_data_discontinuity) { LOG(WARNING) << "WAIS::" << __func__ << " => (WARNING: AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY)"; - ++num_data_discontinuity_warnings_; } + data_discontinuity_reporter_->Log(observed_data_discontinuity); // The time at which the device's stream position was recorded is uncertain. // Thus, the client might be unable to accurately set a time stamp for the @@ -881,7 +927,16 @@ // If the device position has not changed we assume this data belongs to the // previous chunk, and only update the expected next device position. if (device_position != last_device_position) { - UpdateGlitchCount(device_position); + if (expected_next_device_position_ != 0) { + base::TimeDelta glitch_duration; + if (device_position > expected_next_device_position_) { + glitch_duration = AudioTimestampHelper::FramesToTime( + device_position - expected_next_device_position_, + input_format_.Format.nSamplesPerSec); + } + glitch_reporter_.UpdateStats(glitch_duration); + } + last_device_position = device_position; expected_next_device_position_ = device_position + num_frames_to_read; } else { @@ -1598,10 +1653,10 @@ ? converter_.get() ? FormatRelatedInitError::kUnsupportedFormatWithFormatConversion : FormatRelatedInitError::kUnsupportedFormat - // Otherwise |hr| == E_INVALIDARG. - : converter_.get() - ? FormatRelatedInitError::kInvalidArgumentWithFormatConversion - : FormatRelatedInitError::kInvalidArgument; + // Otherwise |hr| == E_INVALIDARG. + : converter_.get() + ? FormatRelatedInitError::kInvalidArgumentWithFormatConversion + : FormatRelatedInitError::kInvalidArgument; base::UmaHistogramEnumeration( "Media.Audio.Capture.Win.InitError.FormatRelated", format_related_error, FormatRelatedInitError::kCount); @@ -1613,41 +1668,20 @@ return 1.0; } -void WASAPIAudioInputStream::UpdateGlitchCount(UINT64 device_position) { - if (expected_next_device_position_ != 0) { - if (device_position > expected_next_device_position_) { - ++total_glitches_; - auto lost_frames = device_position - expected_next_device_position_; - total_lost_frames_ += lost_frames; - if (lost_frames > largest_glitch_frames_) - largest_glitch_frames_ = lost_frames; - } - } -} - void WASAPIAudioInputStream::ReportAndResetGlitchStats() { - UMA_HISTOGRAM_COUNTS_1M("Media.Audio.Capture.Glitches", total_glitches_); - double lost_frames_ms = - (total_lost_frames_ * 1000) / input_format_.Format.nSamplesPerSec; + SystemGlitchReporter::Stats stats = + glitch_reporter_.GetLongTermStatsAndReset(); SendLogMessage( - "%s => (total glitches=[%d], total frames lost=[%llu/%.0lf ms])", - __func__, total_glitches_, total_lost_frames_, lost_frames_ms); - if (total_glitches_ != 0) { - UMA_HISTOGRAM_LONG_TIMES("Media.Audio.Capture.LostFramesInMs", - base::Milliseconds(lost_frames_ms)); - int64_t largest_glitch_ms = - (largest_glitch_frames_ * 1000) / input_format_.Format.nSamplesPerSec; - UMA_HISTOGRAM_CUSTOM_TIMES("Media.Audio.Capture.LargestGlitchMs", - base::Milliseconds(largest_glitch_ms), - base::Milliseconds(1), base::Minutes(1), 50); - } + "%s => (num_glitches_detected=[%d], cumulative_audio_lost=[%llu ms], " + "largest_glitch=[%llu ms])", + __func__, stats.glitches_detected, + stats.total_glitch_duration.InMilliseconds(), + stats.largest_glitch_duration.InMilliseconds()); - // TODO(https://crbug.com/825744): It can be possible to replace - // "Media.Audio.Capture.Glitches" with this new (simplified) metric instead. - base::UmaHistogramCounts1M("Media.Audio.Capture.Win.Glitches", - num_data_discontinuity_warnings_); - SendLogMessage("%s => (discontinuity warnings=[%" PRIu64 "])", __func__, - num_data_discontinuity_warnings_); + int num_data_discontinuities = + data_discontinuity_reporter_->GetLongTermDiscontinuityCountAndReset(); + SendLogMessage("%s => (discontinuity warnings=[%d])", __func__, + num_data_discontinuities); SendLogMessage("%s => (timstamp errors=[%" PRIu64 "])", __func__, num_timestamp_errors_); if (num_timestamp_errors_ > 0) { @@ -1657,10 +1691,6 @@ } expected_next_device_position_ = 0; - total_glitches_ = 0; - total_lost_frames_ = 0; - largest_glitch_frames_ = 0; - num_data_discontinuity_warnings_ = 0; num_timestamp_errors_ = 0; }
diff --git a/media/audio/win/audio_low_latency_input_win.h b/media/audio/win/audio_low_latency_input_win.h index 05f5f87..caef8a2 100644 --- a/media/audio/win/audio_low_latency_input_win.h +++ b/media/audio/win/audio_low_latency_input_win.h
@@ -78,6 +78,7 @@ #include "base/win/scoped_com_initializer.h" #include "base/win/scoped_handle.h" #include "media/audio/agc_audio_stream.h" +#include "media/audio/system_glitch_reporter.h" #include "media/audio/win/audio_manager_win.h" #include "media/base/audio_converter.h" #include "media/base/audio_parameters.h" @@ -147,6 +148,8 @@ bool started() const { return started_; } private: + class DataDiscontinuityReporter; + void SendLogMessage(const char* format, ...) PRINTF_FORMAT(2, 3); // DelegateSimpleThread::Delegate implementation. @@ -199,15 +202,20 @@ // AudioConverter::InputCallback implementation. double ProvideInput(AudioBus* audio_bus, uint32_t frames_delayed) override; - // Detects and counts glitches based on |device_position|. - void UpdateGlitchCount(UINT64 device_position); - // Reports glitch stats and resets associated variables. void ReportAndResetGlitchStats(); // Our creator, the audio manager needs to be notified when we close. const raw_ptr<AudioManagerWin> manager_; + // Used to aggregate and report glitch metrics to UMA (periodically) and to + // text logs (when a stream ends). + SystemGlitchReporter glitch_reporter_; + + // Used to track and log data discontinuity warnings from + // IAudioCaptureClient::GetBuffer. + std::unique_ptr<DataDiscontinuityReporter> data_discontinuity_reporter_; + // Capturing is driven by this thread (which has no message loop). // All OnData() callbacks will be called from this thread. std::unique_ptr<base::DelegateSimpleThread> capture_thread_; @@ -313,12 +321,8 @@ // For detecting and reporting glitches. UINT64 expected_next_device_position_ = 0; - int total_glitches_ = 0; - UINT64 total_lost_frames_ = 0; - UINT64 largest_glitch_frames_ = 0; // Tracks error messages from IAudioCaptureClient::GetBuffer. - UINT64 num_data_discontinuity_warnings_ = 0; UINT64 num_timestamp_errors_ = 0; base::TimeTicks record_start_time_; base::TimeDelta time_until_first_timestamp_error_;
diff --git a/media/audio/win/audio_low_latency_output_win.cc b/media/audio/win/audio_low_latency_output_win.cc index c52c92f6..5e22cf8 100644 --- a/media/audio/win/audio_low_latency_output_win.cc +++ b/media/audio/win/audio_low_latency_output_win.cc
@@ -87,6 +87,7 @@ AudioManager::LogCallback log_callback) : creating_thread_id_(base::PlatformThread::CurrentId()), manager_(manager), + glitch_reporter_(SystemGlitchReporter::StreamType::kRender), format_(), opened_(false), volume_(1.0), @@ -490,8 +491,8 @@ // Enable MMCSS to ensure that this thread receives prioritized access to // CPU resources. DWORD task_index = 0; - HANDLE mm_task = avrt::AvSetMmThreadCharacteristics(L"Pro Audio", - &task_index); + HANDLE mm_task = + avrt::AvSetMmThreadCharacteristics(L"Pro Audio", &task_index); bool mmcss_is_ok = (mm_task && avrt::AvSetMmThreadPriority(mm_task, AVRT_PRIORITY_CRITICAL)); if (!mmcss_is_ok) { @@ -507,8 +508,8 @@ bool playing = true; bool error = false; - HANDLE wait_array[] = { stop_render_event_.Get(), - audio_samples_render_event_.Get() }; + HANDLE wait_array[] = {stop_render_event_.Get(), + audio_samples_render_event_.Get()}; UINT64 device_frequency = 0; // The device frequency is the frequency generated by the hardware clock in @@ -582,8 +583,7 @@ // Get the padding value which represents the amount of rendering // data that is queued up to play in the endpoint buffer. hr = audio_client_->GetCurrentPadding(&num_queued_frames); - num_available_frames = - endpoint_buffer_size_frames_ - num_queued_frames; + num_available_frames = endpoint_buffer_size_frames_ - num_queued_frames; if (FAILED(hr)) { RecordAudioFailure(kRenderFailureHistogram, hr); LOG(ERROR) << "WAOS::" << __func__ @@ -628,8 +628,7 @@ for (size_t n = 0; n < num_packets; ++n) { // Grab all available space in the rendering endpoint buffer // into which the client can write a data packet. - hr = audio_render_client_->GetBuffer(packet_size_frames_, - &audio_data); + hr = audio_render_client_->GetBuffer(packet_size_frames_, &audio_data); if (FAILED(hr)) { RecordAudioFailure(kRenderFailureHistogram, hr); LOG(ERROR) << "WAOS::" << __func__ @@ -721,8 +720,9 @@ // Release the buffer space acquired in the GetBuffer() call. // Render silence if we were not able to fill up the buffer totally. - DWORD flags = (num_filled_bytes < packet_size_bytes_) ? - AUDCLNT_BUFFERFLAGS_SILENT : 0; + DWORD flags = (num_filled_bytes < packet_size_bytes_) + ? AUDCLNT_BUFFERFLAGS_SILENT + : 0; audio_render_client_->ReleaseBuffer(packet_size_frames_, flags); num_written_frames_ += packet_size_frames_; @@ -771,8 +771,8 @@ // Calculate new aligned periodicity. Each unit of reference time // is 100 nanoseconds. REFERENCE_TIME aligned_buffer_duration = static_cast<REFERENCE_TIME>( - (10000000.0 * aligned_buffer_size / format_.Format.nSamplesPerSec) - + 0.5); + (10000000.0 * aligned_buffer_size / format_.Format.nSamplesPerSec) + + 0.5); // It is possible to re-activate and re-initialize the audio client // at this stage but we bail out with an error code instead and @@ -828,7 +828,7 @@ } void WASAPIAudioOutputStream::ReportAndResetStats() { - SystemOutputGlitchReporter::Stats stats = + SystemGlitchReporter::Stats stats = glitch_reporter_.GetLongTermStatsAndReset(); SendLogMessage( "%s => (num_glitches_detected=[%d], cumulative_audio_lost=[%llu ms], "
diff --git a/media/audio/win/audio_low_latency_output_win.h b/media/audio/win/audio_low_latency_output_win.h index 96058452..27c9b1ea 100644 --- a/media/audio/win/audio_low_latency_output_win.h +++ b/media/audio/win/audio_low_latency_output_win.h
@@ -112,7 +112,7 @@ #include "base/win/scoped_com_initializer.h" #include "base/win/scoped_handle.h" #include "media/audio/audio_io.h" -#include "media/audio/system_output_glitch_reporter.h" +#include "media/audio/system_glitch_reporter.h" #include "media/audio/win/audio_manager_win.h" #include "media/base/audio_parameters.h" #include "media/base/media_export.h" @@ -196,7 +196,7 @@ // Used to aggregate and report glitch metrics to UMA (periodically) and to // text logs (when a stream ends). - SystemOutputGlitchReporter glitch_reporter_; + SystemGlitchReporter glitch_reporter_; // Rendering is driven by this thread (which has no message loop). // All OnMoreData() callbacks will be called from this thread.
diff --git a/media/base/scoped_async_trace.h b/media/base/scoped_async_trace.h index 256c15b..d6912a7b 100644 --- a/media/base/scoped_async_trace.h +++ b/media/base/scoped_async_trace.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "media/base/media_export.h" namespace media { @@ -50,7 +51,7 @@ TypedScopedAsyncTrace(const char* name, const void* id); const char* name_; - const void* id_; + raw_ptr<const void> id_; std::unique_ptr<TypedScopedAsyncTrace<category>> step_; };
diff --git a/media/base/user_input_monitor_linux.cc b/media/base/user_input_monitor_linux.cc index 3fc670d..238c4f6 100644 --- a/media/base/user_input_monitor_linux.cc +++ b/media/base/user_input_monitor_linux.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "ui/ozone/public/ozone_platform.h" #include "ui/ozone/public/platform_user_input_monitor.h" @@ -96,7 +97,7 @@ void StopKeyboardMonitoring() override; scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; - UserInputMonitorAdapter* core_; + raw_ptr<UserInputMonitorAdapter> core_; }; UserInputMonitorAdapter* CreateUserInputMonitor( @@ -116,7 +117,7 @@ core_(CreateUserInputMonitor(io_task_runner_)) {} UserInputMonitorLinux::~UserInputMonitorLinux() { - if (core_ && !io_task_runner_->DeleteSoon(FROM_HERE, core_)) + if (core_ && !io_task_runner_->DeleteSoon(FROM_HERE, core_.get())) delete core_; }
diff --git a/media/capture/video/linux/scoped_v4l2_device_fd.h b/media/capture/video/linux/scoped_v4l2_device_fd.h index 23d42ce..66aeccc 100644 --- a/media/capture/video/linux/scoped_v4l2_device_fd.h +++ b/media/capture/video/linux/scoped_v4l2_device_fd.h
@@ -5,6 +5,7 @@ #ifndef MEDIA_CAPTURE_VIDEO_LINUX_SCOPED_V4L2_DEVICE_FD_H_ #define MEDIA_CAPTURE_VIDEO_LINUX_SCOPED_V4L2_DEVICE_FD_H_ +#include "base/memory/raw_ptr.h" #include "media/capture/video/linux/v4l2_capture_device.h" namespace media { @@ -21,7 +22,7 @@ private: int device_fd_; - V4L2CaptureDevice* const v4l2_; + const raw_ptr<V4L2CaptureDevice> v4l2_; }; } // namespace media
diff --git a/media/capture/video/linux/v4l2_capture_delegate.cc b/media/capture/video/linux/v4l2_capture_delegate.cc index 5f8e86d..96a29e1 100644 --- a/media/capture/video/linux/v4l2_capture_delegate.cc +++ b/media/capture/video/linux/v4l2_capture_delegate.cc
@@ -14,6 +14,7 @@ #include <utility> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/posix/eintr_wrapper.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" @@ -186,8 +187,8 @@ friend class base::RefCounted<BufferTracker>; virtual ~BufferTracker(); - V4L2CaptureDevice* const v4l2_; - uint8_t* start_; + const raw_ptr<V4L2CaptureDevice> v4l2_; + raw_ptr<uint8_t> start_; size_t length_; size_t payload_size_; };
diff --git a/media/capture/video/linux/v4l2_capture_delegate.h b/media/capture/video/linux/v4l2_capture_delegate.h index d0b6c41ca..0e7c226 100644 --- a/media/capture/video/linux/v4l2_capture_delegate.h +++ b/media/capture/video/linux/v4l2_capture_delegate.h
@@ -14,6 +14,7 @@ #include "base/containers/queue.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "build/build_config.h" #include "media/capture/video/linux/scoped_v4l2_device_fd.h" @@ -112,7 +113,7 @@ const base::Location& from_here, const std::string& reason); - V4L2CaptureDevice* const v4l2_; + const raw_ptr<V4L2CaptureDevice> v4l2_; const scoped_refptr<base::SingleThreadTaskRunner> v4l2_task_runner_; const VideoCaptureDeviceDescriptor device_descriptor_; const int power_line_frequency_;
diff --git a/media/capture/video/linux/video_capture_device_factory_linux_unittest.cc b/media/capture/video/linux/video_capture_device_factory_linux_unittest.cc index 38b9519..c303e7c 100644 --- a/media/capture/video/linux/video_capture_device_factory_linux_unittest.cc +++ b/media/capture/video/linux/video_capture_device_factory_linux_unittest.cc
@@ -4,6 +4,7 @@ #include "media/capture/video/linux/video_capture_device_factory_linux.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/task_environment.h" @@ -38,8 +39,8 @@ void TearDown() override { task_environment_.RunUntilIdle(); } base::test::TaskEnvironment task_environment_; - FakeV4L2Impl* fake_v4l2_; - FakeDeviceProvider* fake_device_provider_; + raw_ptr<FakeV4L2Impl> fake_v4l2_; + raw_ptr<FakeDeviceProvider> fake_device_provider_; std::unique_ptr<VideoCaptureDeviceFactoryLinux> factory_; };
diff --git a/media/cast/test/utility/tap_proxy.cc b/media/cast/test/utility/tap_proxy.cc index de9f220..7abbf64 100644 --- a/media/cast/test/utility/tap_proxy.cc +++ b/media/cast/test/utility/tap_proxy.cc
@@ -27,6 +27,7 @@ #include "base/command_line.h" #include "base/containers/circular_deque.h" #include "base/files/file_descriptor_watcher_posix.h" +#include "base/memory/raw_ptr.h" #include "base/rand_util.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" @@ -177,7 +178,7 @@ pipe_->Send(std::move(packet)); } private: - ByteCounter* counter_; + raw_ptr<ByteCounter> counter_; }; void SetupByteCounters(std::unique_ptr<media::cast::test::PacketPipe>* pipe,
diff --git a/media/filters/h264_bitstream_buffer.h b/media/filters/h264_bitstream_buffer.h index b09adbf6..416495d 100644 --- a/media/filters/h264_bitstream_buffer.h +++ b/media/filters/h264_bitstream_buffer.h
@@ -14,6 +14,7 @@ #include <stdint.h> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/numerics/safe_conversions.h" #include "media/base/media_export.h" @@ -139,7 +140,7 @@ size_t bits_in_buffer_; // Buffer for stream data. - uint8_t* data_; + raw_ptr<uint8_t> data_; }; } // namespace media
diff --git a/media/gpu/chromeos/image_processor_with_pool.h b/media/gpu/chromeos/image_processor_with_pool.h index 5562ad2..71475d43 100644 --- a/media/gpu/chromeos/image_processor_with_pool.h +++ b/media/gpu/chromeos/image_processor_with_pool.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/containers/queue.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" @@ -67,7 +68,7 @@ // The frame pool to allocate output frames of the image processor. // The caller should guarantee the pool alive during the lifetime of this // ImageProcessorWithPool instance. - DmabufVideoFramePool* const frame_pool_; + const raw_ptr<DmabufVideoFramePool> frame_pool_; // The pending input frames that wait for passing to |image_processor_|. base::queue<std::pair<scoped_refptr<VideoFrame>, FrameReadyCB>>
diff --git a/media/gpu/chromeos/vd_video_decode_accelerator.h b/media/gpu/chromeos/vd_video_decode_accelerator.h index 517cd55..264df42 100644 --- a/media/gpu/chromeos/vd_video_decode_accelerator.h +++ b/media/gpu/chromeos/vd_video_decode_accelerator.h
@@ -9,6 +9,7 @@ #include <memory> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -122,7 +123,7 @@ // Callback to generate VideoDecoder. CreateVideoDecoderCb create_vd_cb_; // The client of this VDA. - VideoDecodeAccelerator::Client* client_ = nullptr; + raw_ptr<VideoDecodeAccelerator::Client> client_ = nullptr; // The delegated VideoDecoder instance. std::unique_ptr<VideoDecoder> vd_; // Callback for returning the result after this instance is asked to request
diff --git a/media/gpu/chromeos/video_decoder_pipeline_unittest.cc b/media/gpu/chromeos/video_decoder_pipeline_unittest.cc index a3c0a9c8e..10310af 100644 --- a/media/gpu/chromeos/video_decoder_pipeline_unittest.cc +++ b/media/gpu/chromeos/video_decoder_pipeline_unittest.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "base/task/thread_pool.h" #include "base/test/gmock_callback_support.h" #include "base/test/mock_callback.h" @@ -350,7 +351,7 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) std::unique_ptr<VideoFrameConverter> converter_; std::unique_ptr<VideoDecoderPipeline> decoder_; - MockVideoFramePool* pool_; + raw_ptr<MockVideoFramePool> pool_; }; // Verifies the status code for several typical CreateDecoderFunctionCB cases.
diff --git a/media/gpu/test/video_encoder/video_encoder.h b/media/gpu/test/video_encoder/video_encoder.h index 5beb859..ef7bd92 100644 --- a/media/gpu/test/video_encoder/video_encoder.h +++ b/media/gpu/test/video_encoder/video_encoder.h
@@ -12,6 +12,7 @@ #include <vector> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" @@ -125,7 +126,7 @@ bool NotifyEvent(EncoderEvent event); // The video currently being encoded. - const Video* video_ = nullptr; + raw_ptr<const Video> video_ = nullptr; // The state of the video encoder. std::atomic<EncoderState> video_encoder_state_{EncoderState::kUninitialized}; // The video encoder client communicating between this class and the hardware
diff --git a/media/gpu/test/video_encoder/video_encoder_client.h b/media/gpu/test/video_encoder/video_encoder_client.h index 1e578001..99ee558 100644 --- a/media/gpu/test/video_encoder/video_encoder_client.h +++ b/media/gpu/test/video_encoder/video_encoder_client.h
@@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -240,7 +241,7 @@ VideoEncoderClientState encoder_client_state_; // The video being encoded, owned by the video encoder test environment. - const Video* video_ = nullptr; + raw_ptr<const Video> video_ = nullptr; // Helper used to align data and create frames from the raw video stream. std::unique_ptr<media::test::AlignedDataHelper> aligned_data_helper_;
diff --git a/media/gpu/test/video_player/test_vda_video_decoder.h b/media/gpu/test/video_player/test_vda_video_decoder.h index 3e945ff..2d80bd29 100644 --- a/media/gpu/test/video_player/test_vda_video_decoder.h +++ b/media/gpu/test/video_player/test_vda_video_decoder.h
@@ -10,6 +10,7 @@ #include <memory> #include "base/containers/lru_cache.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/time/time.h" #include "media/base/video_decoder.h" @@ -113,7 +114,7 @@ const gfx::ColorSpace target_color_space_; // Frame renderer used to manage GL context. - FrameRenderer* const frame_renderer_; + const raw_ptr<FrameRenderer> frame_renderer_; #if BUILDFLAG(USE_CHROMEOS_MEDIA_ACCELERATION) // Whether the decoder output buffers should be allocated with a linear
diff --git a/media/gpu/test/video_player/video_decoder_client.h b/media/gpu/test/video_player/video_decoder_client.h index 8f650e34..fbe6fde 100644 --- a/media/gpu/test/video_player/video_decoder_client.h +++ b/media/gpu/test/video_player/video_decoder_client.h
@@ -10,6 +10,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/threading/thread.h" @@ -173,7 +174,7 @@ // TODO(dstaessens@) Replace with StreamParser. std::unique_ptr<media::test::EncodedDataHelper> encoded_data_helper_; // The video being decoded. - const Video* video_ = nullptr; + raw_ptr<const Video> video_ = nullptr; SEQUENCE_CHECKER(video_player_sequence_checker_); SEQUENCE_CHECKER(decoder_client_sequence_checker_);
diff --git a/media/gpu/test/video_player/video_player.h b/media/gpu/test/video_player/video_player.h index 7c5e426f..543bb9198 100644 --- a/media/gpu/test/video_player/video_player.h +++ b/media/gpu/test/video_player/video_player.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" @@ -136,7 +137,7 @@ // whether the decoder client should continue decoding frames. bool NotifyEvent(VideoPlayerEvent event); - const Video* video_ = nullptr; + raw_ptr<const Video> video_ = nullptr; VideoPlayerState video_player_state_ = VideoPlayerState::kUninitialized; std::unique_ptr<VideoDecoderClient> decoder_client_;
diff --git a/media/gpu/test/video_test_helpers.h b/media/gpu/test/video_test_helpers.h index ddff0f2..29ca3f2 100644 --- a/media/gpu/test/video_test_helpers.h +++ b/media/gpu/test/video_test_helpers.h
@@ -12,6 +12,7 @@ #include "base/containers/queue.h" #include "base/containers/span.h" #include "base/files/file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" @@ -265,7 +266,7 @@ const VideoFrameLayout& layout); // |video| and its associated data must outlive this class and VideoFrames // returned by GetFrame(). - Video* const video_; + const raw_ptr<Video> video_; const bool reverse_;
diff --git a/media/gpu/vaapi/vaapi_picture_tfp.h b/media/gpu/vaapi/vaapi_picture_tfp.h index 74b69956..37d6e94 100644 --- a/media/gpu/vaapi/vaapi_picture_tfp.h +++ b/media/gpu/vaapi/vaapi_picture_tfp.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "media/gpu/vaapi/vaapi_picture.h" #include "ui/gfx/geometry/size.h" @@ -50,7 +51,7 @@ private: VaapiStatus Initialize(); - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::Pixmap x_pixmap_; scoped_refptr<gl::GLImageGLX> glx_image_;
diff --git a/media/gpu/vaapi/vaapi_unittest.cc b/media/gpu/vaapi/vaapi_unittest.cc index 49d569a..1df3d34 100644 --- a/media/gpu/vaapi/vaapi_unittest.cc +++ b/media/gpu/vaapi/vaapi_unittest.cc
@@ -539,7 +539,7 @@ VAConfigAttrib attrib{}; attrib.type = VAConfigAttribEncQualityRange; { - base::AutoLockMaybe auto_lock(wrapper->va_lock_); + base::AutoLockMaybe auto_lock(wrapper->va_lock_.get()); VAStatus va_res = vaGetConfigAttributes( wrapper->va_display_, va_profile, entrypoint, &attrib, 1); ASSERT_EQ(va_res, VA_STATUS_SUCCESS); @@ -559,7 +559,7 @@ ASSERT_TRUE(wrapper->CreateContext(gfx::Size(640, 368))); ASSERT_EQ(wrapper->pending_va_buffers_.size(), 1u); { - base::AutoLockMaybe auto_lock(wrapper->va_lock_); + base::AutoLockMaybe auto_lock(wrapper->va_lock_.get()); ScopedVABufferMapping mapping(wrapper->va_lock_, wrapper->va_display_, wrapper->pending_va_buffers_.front()); ASSERT_TRUE(mapping.IsValid()); @@ -813,7 +813,7 @@ // Request the underlying DRM metadata for |scoped_va_surface|. VADRMPRIMESurfaceDescriptor va_descriptor{}; { - base::AutoLockMaybe auto_lock(wrapper->va_lock_); + base::AutoLockMaybe auto_lock(wrapper->va_lock_.get()); VAStatus va_res = vaSyncSurface(wrapper->va_display_, scoped_va_surface->id()); ASSERT_EQ(va_res, VA_STATUS_SUCCESS);
diff --git a/media/gpu/vaapi/vaapi_utils.cc b/media/gpu/vaapi/vaapi_utils.cc index 74cb79f..0e57649 100644 --- a/media/gpu/vaapi/vaapi_utils.cc +++ b/media/gpu/vaapi/vaapi_utils.cc
@@ -127,7 +127,7 @@ if (!va_display_) return; // Don't call VA-API function in test. - base::AutoLockMaybe auto_lock(lock_); + base::AutoLockMaybe auto_lock(lock_.get()); VAStatus va_res = vaDestroyBuffer(va_display_, va_buffer_id_); LOG_IF(ERROR, va_res != VA_STATUS_SUCCESS) << "Failed to destroy a VA buffer: " << vaErrorStr(va_res); @@ -163,7 +163,7 @@ ScopedVAImage::~ScopedVAImage() { CHECK(sequence_checker_.CalledOnValidSequence()); if (image_->image_id != VA_INVALID_ID) { - base::AutoLockMaybe auto_lock(lock_); + base::AutoLockMaybe auto_lock(lock_.get()); // |va_buffer_| has to be deleted before vaDestroyImage(). va_buffer_.reset();
diff --git a/media/gpu/vaapi/vaapi_utils.h b/media/gpu/vaapi/vaapi_utils.h index c0cb8f0..1f0e5ac 100644 --- a/media/gpu/vaapi/vaapi_utils.h +++ b/media/gpu/vaapi/vaapi_utils.h
@@ -9,6 +9,7 @@ #include "base/callback_forward.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/thread_annotations.h" #include "ui/gfx/geometry/size.h" @@ -52,7 +53,7 @@ VAStatus Unmap(); private: - const base::Lock* lock_; // Only for AssertAcquired() calls. + raw_ptr<const base::Lock> lock_; // Only for AssertAcquired() calls. const VADisplay va_display_; const VABufferID buffer_id_; @@ -100,7 +101,7 @@ VABufferType va_buffer_type, size_t size); - base::Lock* const lock_; + const raw_ptr<base::Lock> lock_; const VADisplay va_display_ GUARDED_BY(lock_); base::SequenceCheckerImpl sequence_checker_; @@ -142,7 +143,7 @@ } private: - base::Lock* lock_; + raw_ptr<base::Lock> lock_; const VADisplay va_display_ GUARDED_BY(lock_); std::unique_ptr<VAImage> image_; std::unique_ptr<ScopedVABufferMapping> va_buffer_;
diff --git a/media/gpu/vaapi/vaapi_utils_unittest.cc b/media/gpu/vaapi/vaapi_utils_unittest.cc index e50ea2ae..a06db69 100644 --- a/media/gpu/vaapi/vaapi_utils_unittest.cc +++ b/media/gpu/vaapi/vaapi_utils_unittest.cc
@@ -91,7 +91,7 @@ // surface format. However when context has not been executed the output // image format seems to default to I420. https://crbug.com/828119 VAImageFormat va_image_format = kImageFormatI420; - base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_); + base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_.get()); scoped_image = std::make_unique<ScopedVAImage>( vaapi_wrapper_->va_lock_, vaapi_wrapper_->va_display_, va_surfaces[0], &va_image_format, coded_size); @@ -116,7 +116,7 @@ std::unique_ptr<ScopedVAImage> scoped_image; { VAImageFormat va_image_format = kImageFormatI420; - base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_); + base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_.get()); scoped_image = std::make_unique<ScopedVAImage>( vaapi_wrapper_->va_lock_, vaapi_wrapper_->va_display_, va_surfaces[0], &va_image_format, coded_size); @@ -134,7 +134,7 @@ // This test exercises creation of a ScopedVABufferMapping with bad VABufferIDs. TEST_F(VaapiUtilsTest, BadScopedVABufferMapping) { ::testing::FLAGS_gtest_death_test_style = "threadsafe"; - base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_); + base::AutoLockMaybe auto_lock(vaapi_wrapper_->va_lock_.get()); // A ScopedVABufferMapping with a VA_INVALID_ID VABufferID is DCHECK()ed. EXPECT_DCHECK_DEATH(std::make_unique<ScopedVABufferMapping>(
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.h b/media/gpu/vaapi/vaapi_video_decode_accelerator.h index bc5bc19..3444ebf 100644 --- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h
@@ -19,6 +19,7 @@ #include "base/containers/queue.h" #include "base/containers/small_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" @@ -259,7 +260,7 @@ std::unique_ptr<AcceleratedVideoDecoder> decoder_; // TODO(crbug.com/1022246): Instead of having the raw pointer here, getting // the pointer from AcceleratedVideoDecoder. - VaapiVideoDecoderDelegate* decoder_delegate_ = nullptr; + raw_ptr<VaapiVideoDecoderDelegate> decoder_delegate_ = nullptr; // Filled in during Initialize(). BufferAllocationMode buffer_allocation_mode_;
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc index 0cd77859..b44f2e3 100644 --- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" #include "base/test/task_environment.h" @@ -397,8 +398,8 @@ base::Thread decoder_thread_; // Ownership passed to |vda_|, but we retain a pointer to it for MOCK checks. - MockAcceleratedVideoDecoder* mock_decoder_; - MockVaapiPictureFactory* mock_vaapi_picture_factory_; + raw_ptr<MockAcceleratedVideoDecoder> mock_decoder_; + raw_ptr<MockVaapiPictureFactory> mock_vaapi_picture_factory_; scoped_refptr<MockVaapiWrapper> mock_vaapi_wrapper_; scoped_refptr<MockVaapiWrapper> mock_vpp_vaapi_wrapper_;
diff --git a/media/gpu/vaapi/vaapi_video_decoder.h b/media/gpu/vaapi/vaapi_video_decoder.h index 7c2e40a..a3ecd23 100644 --- a/media/gpu/vaapi/vaapi_video_decoder.h +++ b/media/gpu/vaapi/vaapi_video_decoder.h
@@ -15,6 +15,7 @@ #include "base/containers/lru_cache.h" #include "base/containers/queue.h" #include "base/containers/small_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -268,7 +269,7 @@ scoped_refptr<VaapiWrapper> vaapi_wrapper_; // TODO(crbug.com/1022246): Instead of having the raw pointer here, getting // the pointer from AcceleratedVideoDecoder. - VaapiVideoDecoderDelegate* decoder_delegate_ = nullptr; + raw_ptr<VaapiVideoDecoderDelegate> decoder_delegate_ = nullptr; // This is used on AMD protected content implementations to indicate that the // DecoderBuffers we receive have been transcrypted and need special handling.
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.h b/media/gpu/vaapi/vaapi_video_decoder_delegate.h index 3620551..075ccf2 100644 --- a/media/gpu/vaapi/vaapi_video_decoder_delegate.h +++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.h
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -132,7 +133,7 @@ std::string GetDecryptKeyId() const; // Both owned by caller. - DecodeSurfaceHandler<VASurface>* const vaapi_dec_; + const raw_ptr<DecodeSurfaceHandler<VASurface>> vaapi_dec_; scoped_refptr<VaapiWrapper> vaapi_wrapper_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/media/gpu/vaapi/vaapi_video_encode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_encode_accelerator_unittest.cc index 71a48b7..e73e479 100644 --- a/media/gpu/vaapi/vaapi_video_encode_accelerator_unittest.cc +++ b/media/gpu/vaapi/vaapi_video_encode_accelerator_unittest.cc
@@ -9,6 +9,7 @@ #include <vector> #include "base/bits.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" #include "base/test/task_environment.h" @@ -650,7 +651,7 @@ std::unique_ptr<VideoEncodeAccelerator> encoder_; scoped_refptr<MockVaapiWrapper> mock_vaapi_wrapper_; scoped_refptr<MockVaapiWrapper> mock_vpp_vaapi_wrapper_; - MockVP9VaapiVideoEncoderDelegate* mock_encoder_ = nullptr; + raw_ptr<MockVP9VaapiVideoEncoderDelegate> mock_encoder_ = nullptr; }; struct VaapiVideoEncodeAcceleratorTestParam {
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc index 481b177c..bb551528 100644 --- a/media/gpu/vaapi/vaapi_wrapper.cc +++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -2090,7 +2090,7 @@ const VAProfile va_profile = VAProfileProtected; const VAEntrypoint entrypoint = GetDefaultVaEntryPoint(mode_, va_profile); { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); std::vector<VAConfigAttrib> required_attribs; if (!GetRequiredAttribs(va_lock_, va_display_, mode_, va_profile, entrypoint, &required_attribs)) { @@ -2127,7 +2127,7 @@ std::unique_ptr<ScopedVABuffer> hw_update = CreateVABuffer( VAProtectedSessionExecuteBufferType, sizeof(hw_update_buf)); { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); constexpr size_t kHwIdentifierMaxSize = 64; memset(&hw_update_buf, 0, sizeof(hw_update_buf)); hw_update_buf.function_id = VA_TEE_EXEC_TEE_FUNCID_HW_UPDATE; @@ -2201,7 +2201,7 @@ tee_exec_buf.output.data_size = sizeof(alive); tee_exec_buf.output.data = &alive; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VABufferID buf_id; VAStatus va_res = vaCreateBuffer( va_display_, va_protected_session_id, VAProtectedSessionExecuteBufferType, @@ -2234,7 +2234,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) if (va_protected_session_id_ == VA_INVALID_ID) return; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaDestroyProtectedSession(va_display_, va_protected_session_id_); VA_LOG_ON_ERROR(va_res, VaapiFunctions::kVADestroyProtectedSession); @@ -2257,7 +2257,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); DVLOG(2) << "Creating context"; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); // vaCreateContext() doesn't really need an array of VASurfaceIDs (see // https://lists.01.org/pipermail/intel-vaapi-media/2017-July/000052.html and @@ -2377,7 +2377,7 @@ const gfx::Size size = pixmap->GetBufferSize(); VASurfaceID va_surface_id = VA_INVALID_ID; { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaCreateSurfaces( va_display_, va_format, base::checked_cast<unsigned int>(size.width()), base::checked_cast<unsigned int>(size.height()), &va_surface_id, 1, @@ -2427,7 +2427,7 @@ VASurfaceID va_surface_id = VA_INVALID_ID; const unsigned int va_format = VA_RT_FORMAT_RGBP; { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaCreateSurfaces( va_display_, va_format, base::checked_cast<unsigned int>(size.width()), base::checked_cast<unsigned int>(size.height()), &va_surface_id, 1, @@ -2463,7 +2463,7 @@ DCHECK(!va_surface_size.IsEmpty()); VADRMPRIMESurfaceDescriptor descriptor; { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaSyncSurface(va_display_, va_surface_id); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVASyncSurface, nullptr); va_res = vaExportSurfaceHandle( @@ -2584,7 +2584,7 @@ sequence_checker_.CalledOnValidSequence()); DCHECK_NE(va_surface_id, VA_INVALID_ID); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaSyncSurface(va_display_, va_surface_id); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVASyncSurface, false); @@ -2597,7 +2597,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::SubmitBuffer"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); return SubmitBuffer_Locked({va_buffer_type, size, data}); } @@ -2606,7 +2606,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::SubmitBuffers"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); for (const VABufferDescriptor& va_buffer : va_buffers) { if (!SubmitBuffer_Locked(va_buffer)) return false; @@ -2618,7 +2618,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::DestroyPendingBuffers"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); DestroyPendingBuffers_Locked(); } @@ -2637,7 +2637,7 @@ bool VaapiWrapper::ExecuteAndDestroyPendingBuffers(VASurfaceID va_surface_id) { CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); bool result = Execute_Locked(va_surface_id, pending_va_buffers_); DestroyPendingBuffers_Locked(); return result; @@ -2651,7 +2651,7 @@ DCHECK_NE(va_surface_id, VA_INVALID_SURFACE); TRACE_EVENT0("media,gpu", "VaapiWrapper::MapAndCopyAndExecute"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); std::vector<VABufferID> va_buffer_ids; for (const auto& va_buffer : va_buffers) { @@ -2674,7 +2674,7 @@ gfx::Size dest_size) { CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaSyncSurface(va_display_, va_surface_id); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVASyncSurface, false); @@ -2697,7 +2697,7 @@ sequence_checker_.CalledOnValidSequence()); std::unique_ptr<ScopedVAImage> scoped_image; { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaSyncSurface(va_display_, va_surface_id); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVASyncSurface, nullptr); @@ -2714,7 +2714,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::UploadVideoFrameToSurface"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); TRACE_EVENT0("media,gpu", "VaapiWrapper::UploadVideoFrameToSurfaceLocked"); if (frame.visible_rect().origin() != gfx::Point(0, 0)) { @@ -2804,7 +2804,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::CreateVABuffer"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); TRACE_EVENT2("media,gpu", "VaapiWrapper::CreateVABufferLocked", "type", type, "size", size); #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -2825,7 +2825,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); TRACE_EVENT0("media,gpu", "VaapiWrapper::GetEncodedChunkSize"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); TRACE_EVENT0("media,gpu", "VaapiWrapper::GetEncodedChunkSizeLocked"); // vaSyncSurface() is not necessary on Intel platforms as long as there is a @@ -2863,7 +2863,7 @@ sequence_checker_.CalledOnValidSequence()); DCHECK(target_ptr); TRACE_EVENT0("media,gpu", "VaapiWrapper::DownloadFromVABuffer"); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); TRACE_EVENT0("media,gpu", "VaapiWrapper::DownloadFromVABufferLocked"); // vaSyncSurface() is not necessary on Intel platforms as long as there is a @@ -2921,7 +2921,7 @@ VAConfigAttrib attrib; attrib.type = VAConfigAttribEncMaxRefFrames; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAStatus va_res = vaGetConfigAttributes(va_display_, va_profile, va_entrypoint_, &attrib, 1); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAGetConfigAttributes, false); @@ -2940,7 +2940,7 @@ ProfileToVAProfile(profile, CodecMode::kEncodeConstantBitrate); VAConfigAttrib attrib{}; attrib.type = VAConfigAttribEncPackedHeaders; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); const VAStatus va_res = vaGetConfigAttributes(va_display_, va_profile, va_entrypoint_, &attrib, 1); VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAGetConfigAttributes, false); @@ -2954,7 +2954,7 @@ bool VaapiWrapper::IsRotationSupported() { CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); VAProcPipelineCaps pipeline_caps; memset(&pipeline_caps, 0, sizeof(pipeline_caps)); VAStatus va_res = vaQueryVideoProcPipelineCaps(va_display_, va_context_id_, @@ -2982,7 +2982,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); DCHECK_EQ(mode_, kVideoProcess); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); // Create a buffer for VPP if it has not been created. if (!va_buffer_for_vpp_) { @@ -3163,7 +3163,7 @@ const VAEntrypoint entrypoint = GetDefaultVaEntryPoint(mode_, va_profile); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); std::vector<VAConfigAttrib> required_attribs; if (!GetRequiredAttribs(va_lock_, va_display_, mode_, va_profile, entrypoint, &required_attribs)) { @@ -3199,7 +3199,7 @@ CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); #if BUILDFLAG(IS_CHROMEOS_ASH) if (va_protected_session_id_ != VA_INVALID_ID) { VAStatus va_res = @@ -3240,7 +3240,7 @@ } { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); va_display_ = VADisplayState::Get()->va_display(); DCHECK(va_display_) << "VADisplayState hasn't been properly Initialize()d"; } @@ -3250,7 +3250,7 @@ void VaapiWrapper::DestroyContext() { CHECK(!enforce_sequence_affinity_ || sequence_checker_.CalledOnValidSequence()); - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); DVLOG(2) << "Destroying context"; if (va_context_id_ != VA_INVALID_ID) { @@ -3298,7 +3298,7 @@ VAStatus va_res; { - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); va_res = vaCreateSurfaces( va_display_, va_format, base::checked_cast<unsigned int>(size.width()), base::checked_cast<unsigned int>(size.height()), va_surfaces->data(), @@ -3345,7 +3345,7 @@ attribs[1].value.type = VAGenericValueTypeInteger; attribs[1].value.value.i = base::checked_cast<int32_t>(*va_fourcc); } - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); std::vector<VASurfaceID> va_surface_ids(num_surfaces, VA_INVALID_ID); const VAStatus va_res = vaCreateSurfaces( va_display_, va_rt_format, base::checked_cast<unsigned int>(size.width()), @@ -3381,7 +3381,7 @@ if (va_surfaces.empty()) return; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); const VAStatus va_res = vaDestroySurfaces(va_display_, va_surfaces.data(), va_surfaces.size()); VA_LOG_ON_ERROR(va_res, VaapiFunctions::kVADestroySurfaces); @@ -3393,7 +3393,7 @@ if (va_surface_id == VA_INVALID_SURFACE) return; DVLOG(3) << __func__ << " " << va_surface_id; - base::AutoLockMaybe auto_lock(va_lock_); + base::AutoLockMaybe auto_lock(va_lock_.get()); const VAStatus va_res = vaDestroySurfaces(va_display_, &va_surface_id, 1); VA_LOG_ON_ERROR(va_res, VaapiFunctions::kVADestroySurfaces); }
diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h index 89dd057..c59f979 100644 --- a/media/gpu/vaapi/vaapi_wrapper.h +++ b/media/gpu/vaapi/vaapi_wrapper.h
@@ -21,6 +21,7 @@ #include "base/files/file.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" @@ -626,7 +627,7 @@ // If using global VA lock, this is a pointer to VADisplayState's member // |va_lock_|. Guaranteed to be valid for the lifetime of VaapiWrapper. - base::Lock* va_lock_; + raw_ptr<base::Lock> va_lock_; // VA handles. // All valid after successful Initialize() and until Deinitialize().
diff --git a/media/gpu/vaapi/vp9_vaapi_video_encoder_delegate_unittest.cc b/media/gpu/vaapi/vp9_vaapi_video_encoder_delegate_unittest.cc index 478259a9..423abd5b 100644 --- a/media/gpu/vaapi/vp9_vaapi_video_encoder_delegate_unittest.cc +++ b/media/gpu/vaapi/vp9_vaapi_video_encoder_delegate_unittest.cc
@@ -14,6 +14,7 @@ #include "base/callback_helpers.h" #include "base/cxx17_backports.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" #include "media/filters/vp9_parser.h" #include "media/gpu/gpu_video_encode_accelerator_helpers.h" @@ -296,7 +297,7 @@ std::unique_ptr<VP9VaapiVideoEncoderDelegate> encoder_; scoped_refptr<MockVaapiWrapper> mock_vaapi_wrapper_; - MockVP9RateControl* mock_rate_ctrl_ = nullptr; + raw_ptr<MockVP9RateControl> mock_rate_ctrl_ = nullptr; }; void VP9VaapiVideoEncoderDelegateTest::ResetEncoder() {
diff --git a/media/gpu/video_decode_accelerator_perf_tests.cc b/media/gpu/video_decode_accelerator_perf_tests.cc index fb2a3df..6c093777 100644 --- a/media/gpu/video_decode_accelerator_perf_tests.cc +++ b/media/gpu/video_decode_accelerator_perf_tests.cc
@@ -9,6 +9,7 @@ #include "base/command_line.h" #include "base/files/file_util.h" #include "base/json/json_writer.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "build/build_config.h" #include "media/base/media_switches.h" @@ -173,7 +174,7 @@ // Frame renderer used to get the dropped frame rate, owned by the creator of // the performance evaluator. - const FrameRendererDummy* const frame_renderer_; + const raw_ptr<const FrameRendererDummy> frame_renderer_; }; void PerformanceEvaluator::ProcessVideoFrame( @@ -367,7 +368,7 @@ return video_player; } - PerformanceEvaluator* performance_evaluator_; + raw_ptr<PerformanceEvaluator> performance_evaluator_; }; } // namespace
diff --git a/media/gpu/video_encode_accelerator_perf_tests.cc b/media/gpu/video_encode_accelerator_perf_tests.cc index 7323234..7275b26d 100644 --- a/media/gpu/video_encode_accelerator_perf_tests.cc +++ b/media/gpu/video_encode_accelerator_perf_tests.cc
@@ -12,6 +12,7 @@ #include "base/command_line.h" #include "base/files/file_util.h" #include "base/json/json_writer.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/time/time.h" #include "media/base/bitstream_buffer.h" @@ -545,7 +546,7 @@ } protected: - PerformanceEvaluator* performance_evaluator_; + raw_ptr<PerformanceEvaluator> performance_evaluator_; std::vector<BitstreamQualityMetrics> quality_metrics_; private:
diff --git a/media/gpu/vp8_decoder_unittest.cc b/media/gpu/vp8_decoder_unittest.cc index 9f8128c..25ebc0f 100644 --- a/media/gpu/vp8_decoder_unittest.cc +++ b/media/gpu/vp8_decoder_unittest.cc
@@ -8,6 +8,7 @@ #include "base/command_line.h" #include "base/files/file_util.h" +#include "base/memory/raw_ptr.h" #include "media/base/test_data_util.h" #include "media/gpu/vp8_decoder.h" #include "testing/gmock/include/gmock/gmock.h" @@ -55,7 +56,7 @@ void CompleteToDecodeFirstIFrame(); std::unique_ptr<VP8Decoder> decoder_; - MockVP8Accelerator* accelerator_ = nullptr; + raw_ptr<MockVP8Accelerator> accelerator_ = nullptr; private: void DecodeFirstIFrame();
diff --git a/mojo/public/cpp/bindings/array_data_view.h b/mojo/public/cpp/bindings/array_data_view.h index 0c5b79a..7cc0c46 100644 --- a/mojo/public/cpp/bindings/array_data_view.h +++ b/mojo/public/cpp/bindings/array_data_view.h
@@ -40,10 +40,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -62,10 +62,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -94,10 +94,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -126,10 +126,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -153,10 +153,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -185,10 +185,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; template <typename T> @@ -214,10 +214,10 @@ protected: // `data_` is not a raw_ptr<...> for performance reasons (based on analysis of // sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Data_> data_; + RAW_PTR_EXCLUSION Data_* data_; // `message_` is not a raw_ptr<...> for performance reasons (based on analysis // of sampling profiler data). - RAW_PTR_EXCLUSION raw_ptr<Message> message_; + RAW_PTR_EXCLUSION Message* message_; }; } // namespace internal
diff --git a/net/cert/internal/system_trust_store_nss_unittest.cc b/net/cert/internal/system_trust_store_nss_unittest.cc index efea095d..9c74c72 100644 --- a/net/cert/internal/system_trust_store_nss_unittest.cc +++ b/net/cert/internal/system_trust_store_nss_unittest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "net/cert/internal/system_trust_store.h" #include <cert.h> @@ -89,7 +90,7 @@ crypto::ScopedTestNSSDB test_nssdb_; crypto::ScopedTestNSSDB other_test_nssdb_; - TestRootCerts* test_root_certs_; + raw_ptr<TestRootCerts> test_root_certs_; scoped_refptr<X509Certificate> root_cert_; scoped_refptr<ParsedCertificate> parsed_root_cert_;
diff --git a/net/cert/nss_cert_database.cc b/net/cert/nss_cert_database.cc index 135e0f1..766203d6 100644 --- a/net/cert/nss_cert_database.cc +++ b/net/cert/nss_cert_database.cc
@@ -17,6 +17,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list_threadsafe.h" #include "base/task/thread_pool.h" #include "base/threading/scoped_blocking_call.h" @@ -65,7 +66,7 @@ void OnCertDBChanged() override { cert_db_->NotifyObserversCertDBChanged(); } private: - CertDatabase* cert_db_; + raw_ptr<CertDatabase> cert_db_; }; } // namespace
diff --git a/net/der/parse_values.cc b/net/der/parse_values.cc index caab98e..2609e0e 100644 --- a/net/der/parse_values.cc +++ b/net/der/parse_values.cc
@@ -296,48 +296,6 @@ return !(lhs < rhs); } -// A UTC Time in DER encoding should be YYMMDDHHMMSSZ, but some CAs encode -// the time following BER rules, which allows for YYMMDDHHMMZ. If the length -// is 11, assume it's YYMMDDHHMMZ, and in converting it to a GeneralizedTime, -// add in the seconds (set to 0). -bool ParseUTCTimeRelaxed(const Input& in, GeneralizedTime* value) { - ByteReader reader(in); - GeneralizedTime time; - if (!DecimalStringToUint(reader, 2, &time.year) || - !DecimalStringToUint(reader, 2, &time.month) || - !DecimalStringToUint(reader, 2, &time.day) || - !DecimalStringToUint(reader, 2, &time.hours) || - !DecimalStringToUint(reader, 2, &time.minutes)) { - return false; - } - - // Try to read the 'Z' at the end. If we read something else, then for it to - // be valid the next bytes should be seconds (and then followed by 'Z'). - uint8_t zulu; - ByteReader zulu_reader = reader; - if (!zulu_reader.ReadByte(&zulu)) - return false; - if (zulu == 'Z' && !zulu_reader.HasMore()) { - time.seconds = 0; - *value = time; - } else { - if (!DecimalStringToUint(reader, 2, &time.seconds)) - return false; - if (!reader.ReadByte(&zulu) || zulu != 'Z' || reader.HasMore()) - return false; - } - - if (time.year < 50) { - time.year += 2000; - } else { - time.year += 1900; - } - if (!ValidateGeneralizedTime(time)) - return false; - *value = time; - return true; -} - bool ParseUTCTime(const Input& in, GeneralizedTime* value) { ByteReader reader(in); GeneralizedTime time;
diff --git a/net/der/parse_values.h b/net/der/parse_values.h index e2fa397..12cf455 100644 --- a/net/der/parse_values.h +++ b/net/der/parse_values.h
@@ -109,13 +109,6 @@ [[nodiscard]] NET_EXPORT bool ParseUTCTime(const Input& in, GeneralizedTime* out); -// Like ParseUTCTime, but it is more lenient in what is accepted. DER requires -// a UTCTime to be in the format YYMMDDhhmmssZ; this function will accept both -// that and YYMMDDhhmmZ, which is a valid BER encoding of a UTCTime which -// sometimes incorrectly appears in X.509 certificates. -[[nodiscard]] NET_EXPORT bool ParseUTCTimeRelaxed(const Input& in, - GeneralizedTime* out); - // Reads a DER-encoded ASN.1 GeneralizedTime value from |in| and puts the // resulting value in |out|, returning true if the GeneralizedTime could // be parsed successfully. This function is even more restrictive than the
diff --git a/net/der/parse_values_unittest.cc b/net/der/parse_values_unittest.cc index 7088c88..22e4a4f0 100644 --- a/net/der/parse_values_unittest.cc +++ b/net/der/parse_values_unittest.cc
@@ -63,18 +63,9 @@ // Check that the length is validated. EXPECT_FALSE(ParseUTCTime(FromStringLiteral("140218161200"), &out)); EXPECT_FALSE(ParseUTCTime(FromStringLiteral("140218161200Z0"), &out)); - EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("140218161200"), &out)); - EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("140218161200Z0"), &out)); // Check strictness of UTCTime parsers. EXPECT_FALSE(ParseUTCTime(FromStringLiteral("1402181612Z"), &out)); - EXPECT_TRUE(ParseUTCTimeRelaxed(FromStringLiteral("1402181612Z"), &out)); - - // Check that the time ends in Z. - EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("1402181612Z0"), &out)); - - // Check that ParseUTCTimeRelaxed calls ValidateGeneralizedTime. - EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("1402181662Z"), &out)); // Check format of GeneralizedTime. @@ -159,22 +150,19 @@ GeneralizedTime time1; GeneralizedTime time2; GeneralizedTime time3; - GeneralizedTime time4; ASSERT_TRUE( ParseGeneralizedTime(FromStringLiteral("20140218161200Z"), &time1)); // Test that ParseUTCTime correctly normalizes the year. ASSERT_TRUE(ParseUTCTime(FromStringLiteral("150218161200Z"), &time2)); - ASSERT_TRUE(ParseUTCTimeRelaxed(FromStringLiteral("1503070000Z"), &time3)); ASSERT_TRUE( - ParseGeneralizedTime(FromStringLiteral("20160218161200Z"), &time4)); + ParseGeneralizedTime(FromStringLiteral("20160218161200Z"), &time3)); EXPECT_TRUE(time1 < time2); EXPECT_TRUE(time2 < time3); - EXPECT_TRUE(time3 < time4); EXPECT_TRUE(time2 > time1); EXPECT_TRUE(time2 >= time1); - EXPECT_TRUE(time3 <= time4); + EXPECT_TRUE(time2 <= time3); EXPECT_TRUE(time1 <= time1); EXPECT_TRUE(time1 >= time1); }
diff --git a/net/dns/dns_config_service_linux.cc b/net/dns/dns_config_service_linux.cc index b762a2fc..df795af 100644 --- a/net/dns/dns_config_service_linux.cc +++ b/net/dns/dns_config_service_linux.cc
@@ -24,6 +24,7 @@ #include "base/files/file_path_watcher.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/sequence_checker.h" #include "base/threading/scoped_blocking_call.h" @@ -485,7 +486,7 @@ }; // Raw pointer to owning DnsConfigService. - DnsConfigServiceLinux* const service_; + const raw_ptr<DnsConfigServiceLinux> service_; // Null while the `WorkItem` is running on the `ThreadPool`. std::unique_ptr<WorkItem> work_item_;
diff --git a/net/dns/dns_config_service_linux_unittest.cc b/net/dns/dns_config_service_linux_unittest.cc index 6fd1bda..4324085 100644 --- a/net/dns/dns_config_service_linux_unittest.cc +++ b/net/dns/dns_config_service_linux_unittest.cc
@@ -15,6 +15,7 @@ #include "base/cancelable_callback.h" #include "base/check.h" #include "base/files/file_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/sys_byteorder.h" @@ -310,8 +311,8 @@ protected: internal::DnsConfigServiceLinux service_; - TestResolvReader* resolv_reader_; - TestNsswitchReader* nsswitch_reader_; + raw_ptr<TestResolvReader> resolv_reader_; + raw_ptr<TestNsswitchReader> nsswitch_reader_; }; // Regression test to verify crash does not occur if DnsConfigServiceLinux
diff --git a/net/http/http_auth_gssapi_posix.cc b/net/http/http_auth_gssapi_posix.cc index e4c25d2..59f738f9 100644 --- a/net/http/http_auth_gssapi_posix.cc +++ b/net/http/http_auth_gssapi_posix.cc
@@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/format_macros.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" @@ -79,7 +80,7 @@ private: gss_buffer_t buffer_; - GSSAPILibrary* gssapi_lib_; + raw_ptr<GSSAPILibrary> gssapi_lib_; }; // ScopedName releases a gss_name_t when it goes out of scope. @@ -109,7 +110,7 @@ private: gss_name_t name_; - GSSAPILibrary* gssapi_lib_; + raw_ptr<GSSAPILibrary> gssapi_lib_; }; bool OidEquals(const gss_OID left, const gss_OID right) {
diff --git a/net/http/http_auth_gssapi_posix.h b/net/http/http_auth_gssapi_posix.h index 3e7f3290..33a3b4a 100644 --- a/net/http/http_auth_gssapi_posix.h +++ b/net/http/http_auth_gssapi_posix.h
@@ -8,6 +8,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/native_library.h" #include "base/strings/string_piece_forward.h" #include "base/values.h" @@ -214,7 +215,7 @@ private: gss_ctx_id_t security_context_ = GSS_C_NO_CONTEXT; - GSSAPILibrary* gssapi_lib_; + raw_ptr<GSSAPILibrary> gssapi_lib_; }; @@ -247,7 +248,7 @@ const NetLogWithSource& net_log); gss_OID gss_oid_; - GSSAPILibrary* library_; + raw_ptr<GSSAPILibrary> library_; std::string decoded_server_auth_token_; ScopedSecurityContext scoped_sec_context_; HttpAuth::DelegationType delegation_type_ = HttpAuth::DelegationType::kNone;
diff --git a/net/proxy_resolution/proxy_config_service_linux.cc b/net/proxy_resolution/proxy_config_service_linux.cc index ba86265..dd7759b 100644 --- a/net/proxy_resolution/proxy_config_service_linux.cc +++ b/net/proxy_resolution/proxy_config_service_linux.cc
@@ -20,6 +20,7 @@ #include "base/files/scoped_file.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/nix/xdg_util.h" #include "base/observer_list.h" #include "base/strings/string_number_conversions.h" @@ -314,15 +315,15 @@ // We could watch for the change-event signal instead of changed, but // since we have to watch more than one object, we'd still have to // debounce change notifications. This is conceptually simpler. - g_signal_connect(G_OBJECT(client_), "changed", + g_signal_connect(G_OBJECT(client_.get()), "changed", G_CALLBACK(OnGSettingsChangeNotification), this); - g_signal_connect(G_OBJECT(http_client_), "changed", + g_signal_connect(G_OBJECT(http_client_.get()), "changed", G_CALLBACK(OnGSettingsChangeNotification), this); - g_signal_connect(G_OBJECT(https_client_), "changed", + g_signal_connect(G_OBJECT(https_client_.get()), "changed", G_CALLBACK(OnGSettingsChangeNotification), this); - g_signal_connect(G_OBJECT(ftp_client_), "changed", + g_signal_connect(G_OBJECT(ftp_client_.get()), "changed", G_CALLBACK(OnGSettingsChangeNotification), this); - g_signal_connect(G_OBJECT(socks_client_), "changed", + g_signal_connect(G_OBJECT(socks_client_.get()), "changed", G_CALLBACK(OnGSettingsChangeNotification), this); // Simulate a change to avoid possibly losing updates before this point. OnChangeNotification(); @@ -465,12 +466,12 @@ setting_getter->OnChangeNotification(); } - GSettings* client_ = nullptr; - GSettings* http_client_ = nullptr; - GSettings* https_client_ = nullptr; - GSettings* ftp_client_ = nullptr; - GSettings* socks_client_ = nullptr; - ProxyConfigServiceLinux::Delegate* notify_delegate_ = nullptr; + raw_ptr<GSettings> client_ = nullptr; + raw_ptr<GSettings> http_client_ = nullptr; + raw_ptr<GSettings> https_client_ = nullptr; + raw_ptr<GSettings> ftp_client_ = nullptr; + raw_ptr<GSettings> socks_client_ = nullptr; + raw_ptr<ProxyConfigServiceLinux::Delegate> notify_delegate_ = nullptr; std::unique_ptr<base::OneShotTimer> debounce_timer_; // Task runner for the thread that we make gsettings calls on. It should @@ -1009,7 +1010,7 @@ int inotify_fd_ = -1; std::unique_ptr<base::FileDescriptorWatcher::Controller> inotify_watcher_; - ProxyConfigServiceLinux::Delegate* notify_delegate_ = nullptr; + raw_ptr<ProxyConfigServiceLinux::Delegate> notify_delegate_ = nullptr; std::unique_ptr<base::OneShotTimer> debounce_timer_; std::vector<base::FilePath> kde_config_dirs_; bool indirect_manual_ = false; @@ -1018,7 +1019,7 @@ // We don't own |env_var_getter_|. It's safe to hold a pointer to it, since // both it and us are owned by ProxyConfigServiceLinux::Delegate, and have the // same lifetime. - base::Environment* env_var_getter_; + raw_ptr<base::Environment> env_var_getter_; // We cache these settings whenever we re-read the kioslaverc file. string_map_type string_table_;
diff --git a/net/proxy_resolution/proxy_config_service_linux_unittest.cc b/net/proxy_resolution/proxy_config_service_linux_unittest.cc index c572566c..a290811 100644 --- a/net/proxy_resolution/proxy_config_service_linux_unittest.cc +++ b/net/proxy_resolution/proxy_config_service_linux_unittest.cc
@@ -15,6 +15,7 @@ #include "base/files/file_util.h" #include "base/format_macros.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/strings/string_util.h" @@ -389,7 +390,7 @@ base::WaitableEvent event_; base::Thread main_thread_; - ProxyConfigServiceLinux* config_service_; + raw_ptr<ProxyConfigServiceLinux> config_service_; // The config obtained by |main_thread_| and read back by the main // thread.
diff --git a/printing/backend/cups_helper.h b/printing/backend/cups_helper.h index e28b48c..8563a1a 100644 --- a/printing/backend/cups_helper.h +++ b/printing/backend/cups_helper.h
@@ -8,6 +8,7 @@ #include <cups/cups.h> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" class GURL; @@ -41,7 +42,7 @@ http_t* http(); private: - http_t* http_; + raw_ptr<http_t> http_; }; // Helper function to parse and convert PPD capabilitites to
diff --git a/printing/printing_context_linux.h b/printing/printing_context_linux.h index 653170b..cbd73e4 100644 --- a/printing/printing_context_linux.h +++ b/printing/printing_context_linux.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "printing/mojom/print.mojom.h" #include "printing/printing_context.h" @@ -55,7 +56,7 @@ private: std::u16string document_name_; - PrintDialogGtkInterface* print_dialog_; + raw_ptr<PrintDialogGtkInterface> print_dialog_; }; } // namespace printing
diff --git a/remoting/host/clipboard_x11.cc b/remoting/host/clipboard_x11.cc index b92a44a..822be47 100644 --- a/remoting/host/clipboard_x11.cc +++ b/remoting/host/clipboard_x11.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "remoting/host/linux/x_server_clipboard.h" #include "remoting/proto/event.pb.h" #include "remoting/protocol/clipboard_stub.h" @@ -47,7 +48,7 @@ // Connection to the X server, used by |x_server_clipboard_|. This must only // be accessed on the input thread. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; }; ClipboardX11::ClipboardX11() = default;
diff --git a/remoting/host/desktop_display_info_loader_x11.cc b/remoting/host/desktop_display_info_loader_x11.cc index 26c4fbe..bc7b6cc 100644 --- a/remoting/host/desktop_display_info_loader_x11.cc +++ b/remoting/host/desktop_display_info_loader_x11.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" #include "remoting/base/logging.h" #include "ui/base/x/x11_display_util.h" @@ -47,8 +48,8 @@ // XRANDR version as MAJOR * 100 + MINOR, or 0 if XRANDR is not present. int xrandr_version_ = 0; - x11::Connection* connection_ = nullptr; - x11::RandR* randr_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; + raw_ptr<x11::RandR> randr_ = nullptr; // Selector for root window events. std::unique_ptr<x11::XScopedEventSelector> root_window_events_;
diff --git a/remoting/host/desktop_resizer_x11.h b/remoting/host/desktop_resizer_x11.h index 75b0e2fb..9d29e71 100644 --- a/remoting/host/desktop_resizer_x11.h +++ b/remoting/host/desktop_resizer_x11.h
@@ -9,6 +9,7 @@ #include "base/command_line.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "remoting/base/logging.h" #include "remoting/host/desktop_resizer.h" #include "remoting/host/linux/x11_util.h" @@ -77,9 +78,9 @@ // its resolution. void SwitchToMode(const char* name); - x11::Connection* connection_; - x11::RandR* const randr_ = nullptr; - const x11::Screen* const screen_ = nullptr; + raw_ptr<x11::Connection> connection_; + const raw_ptr<x11::RandR> randr_ = nullptr; + const raw_ptr<const x11::Screen> screen_ = nullptr; x11::Window root_; ScreenResources resources_; bool exact_resize_;
diff --git a/remoting/host/disconnect_window_linux.cc b/remoting/host/disconnect_window_linux.cc index b2104ac..b5ca60fe 100644 --- a/remoting/host/disconnect_window_linux.cc +++ b/remoting/host/disconnect_window_linux.cc
@@ -8,6 +8,7 @@ #include "base/check_op.h" #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/math_constants.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -62,7 +63,7 @@ GtkWidget* disconnect_window_; GtkWidget* message_; - GtkWidget* button_; + raw_ptr<GtkWidget> button_; // Used to distinguish resize events from other types of "configure-event" // notifications.
diff --git a/remoting/host/input_injector_x11.cc b/remoting/host/input_injector_x11.cc index b10a860..a0ce1027 100644 --- a/remoting/host/input_injector_x11.cc +++ b/remoting/host/input_injector_x11.cc
@@ -13,6 +13,7 @@ #include "base/bind.h" #include "base/compiler_specific.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversion_utils.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -168,7 +169,7 @@ ScrollDirection latest_tick_y_direction_ = ScrollDirection::NONE; // X11 graphics context. Must only be accessed on the input thread. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; // Number of buttons we support. // Left, Right, Middle, VScroll Up/Down, HScroll Left/Right, back, forward.
diff --git a/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc b/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc index add0b12..ca5008d 100644 --- a/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc +++ b/remoting/host/input_monitor/local_hotkey_input_monitor_x11.cc
@@ -14,6 +14,7 @@ #include "base/compiler_specific.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/task/single_thread_task_runner.h" #include "remoting/host/input_monitor/local_input_monitor_x11_common.h" @@ -80,7 +81,7 @@ // True when Ctrl is pressed. bool ctrl_pressed_ = false; - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; }; scoped_refptr<Core> core_;
diff --git a/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc b/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc index 968f0a8e..4b0a4632 100644 --- a/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc +++ b/remoting/host/input_monitor/local_mouse_input_monitor_x11.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "remoting/host/input_monitor/local_pointer_input_monitor.h" #include <sys/select.h> @@ -80,7 +81,7 @@ // Used to send mouse event notifications. LocalInputMonitor::PointerMoveCallback on_mouse_move_; - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; }; scoped_refptr<Core> core_;
diff --git a/remoting/host/keyboard_layout_monitor_linux.cc b/remoting/host/keyboard_layout_monitor_linux.cc index b423a2d..118e1fc 100644 --- a/remoting/host/keyboard_layout_monitor_linux.cc +++ b/remoting/host/keyboard_layout_monitor_linux.cc
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/files/file_descriptor_watcher_posix.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/utf_string_conversion_utils.h" #include "base/threading/sequenced_task_runner_handle.h" @@ -64,10 +65,10 @@ GdkKeymap*); scoped_refptr<base::SequencedTaskRunner> task_runner_; base::WeakPtr<KeyboardLayoutMonitorLinux> weak_ptr_; - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; std::unique_ptr<base::FileDescriptorWatcher::Controller> controller_; - GdkDisplay* display_ = nullptr; - GdkKeymap* keymap_ = nullptr; + raw_ptr<GdkDisplay> display_ = nullptr; + raw_ptr<GdkKeymap> keymap_ = nullptr; int current_group_ = 0; gulong handler_id_ = 0; };
diff --git a/remoting/host/linux/x11_character_injector_unittest.cc b/remoting/host/linux/x11_character_injector_unittest.cc index 7da7048..1f48b79 100644 --- a/remoting/host/linux/x11_character_injector_unittest.cc +++ b/remoting/host/linux/x11_character_injector_unittest.cc
@@ -7,6 +7,7 @@ #include <unordered_map> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "base/threading/thread_task_runner_handle.h" @@ -150,14 +151,14 @@ void InjectAndRun(const std::vector<uint32_t>& code_points); std::unique_ptr<X11CharacterInjector> injector_; - FakeX11Keyboard* keyboard_; // Owned by |injector_|. + raw_ptr<FakeX11Keyboard> keyboard_; // Owned by |injector_|. base::test::SingleThreadTaskEnvironment task_environment_; }; void X11CharacterInjectorTest::SetUp() { keyboard_ = new FakeX11Keyboard({55, 54, 53, 52, 51}); - injector_.reset(new X11CharacterInjector(base::WrapUnique(keyboard_))); + injector_.reset(new X11CharacterInjector(base::WrapUnique(keyboard_.get()))); } void X11CharacterInjectorTest::TearDown() {
diff --git a/remoting/host/linux/x11_keyboard_impl.h b/remoting/host/linux/x11_keyboard_impl.h index 8f9e193..c86ba02 100644 --- a/remoting/host/linux/x11_keyboard_impl.h +++ b/remoting/host/linux/x11_keyboard_impl.h
@@ -5,6 +5,7 @@ #ifndef REMOTING_HOST_LINUX_X11_KEYBOARD_IMPL_H_ #define REMOTING_HOST_LINUX_X11_KEYBOARD_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "remoting/host/linux/x11_keyboard.h" #include "ui/gfx/x/connection.h" @@ -37,7 +38,7 @@ private: // X11 graphics context. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; }; } // namespace remoting
diff --git a/remoting/host/linux/x11_util.h b/remoting/host/linux/x11_util.h index a410977..cf73deb 100644 --- a/remoting/host/linux/x11_util.h +++ b/remoting/host/linux/x11_util.h
@@ -12,6 +12,7 @@ // another header. #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/connection.h" namespace remoting { @@ -28,7 +29,7 @@ ~ScopedXGrabServer(); private: - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; }; // Make a connection to the X Server impervious to X Server grabs. Returns
diff --git a/remoting/host/linux/x_server_clipboard.h b/remoting/host/linux/x_server_clipboard.h index 994891c..99ddde7 100644 --- a/remoting/host/linux/x_server_clipboard.h +++ b/remoting/host/linux/x_server_clipboard.h
@@ -11,6 +11,7 @@ #include <string> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "ui/gfx/x/event.h" #include "ui/gfx/x/xfixes.h" @@ -108,7 +109,7 @@ bool IsSelectionOwner(x11::Atom selection); // Stores the connection supplied to Init(). - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; // Window through which clipboard events are received, or BadValue if the // window could not be created.
diff --git a/remoting/host/linux/x_server_clipboard_unittest.cc b/remoting/host/linux/x_server_clipboard_unittest.cc index 7d1382d9..3332c68 100644 --- a/remoting/host/linux/x_server_clipboard_unittest.cc +++ b/remoting/host/linux/x_server_clipboard_unittest.cc
@@ -6,6 +6,7 @@ #include <string> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "remoting/base/constants.h" #include "remoting/host/linux/x_server_clipboard.h" #include "testing/gtest/include/gtest/gtest.h" @@ -65,7 +66,7 @@ private: std::string clipboard_data_; XServerClipboard clipboard_; - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; bool dispatched_event_ = false; };
diff --git a/sandbox/policy/linux/sandbox_linux.h b/sandbox/policy/linux/sandbox_linux.h index 1723c39..89a840a 100644 --- a/sandbox/policy/linux/sandbox_linux.h +++ b/sandbox/policy/linux/sandbox_linux.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "base/posix/global_descriptors.h" #include "sandbox/linux/syscall_broker/broker_command.h" #include "sandbox/linux/syscall_broker/broker_file_permission.h" @@ -299,7 +300,7 @@ #if BUILDFLAG(USING_SANITIZER) std::unique_ptr<__sanitizer_sandbox_arguments> sanitizer_args_; #endif - syscall_broker::BrokerProcess* broker_process_; // Leaked as global. + raw_ptr<syscall_broker::BrokerProcess> broker_process_; // Leaked as global. }; } // namespace policy
diff --git a/sandbox/win/src/eat_resolver.h b/sandbox/win/src/eat_resolver.h index 061ee39..6b047cb 100644 --- a/sandbox/win/src/eat_resolver.h +++ b/sandbox/win/src/eat_resolver.h
@@ -7,7 +7,7 @@ #include <stddef.h> -#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ptr_exclusion.h" #include "sandbox/win/src/nt_internals.h" #include "sandbox/win/src/resolver.h" @@ -43,7 +43,9 @@ private: // The entry to patch. - raw_ptr<DWORD> eat_entry_; + // The field is accessed too early during the process startup to support + // raw_ptr<T>. + RAW_PTR_EXCLUSION DWORD* eat_entry_; }; } // namespace sandbox
diff --git a/sandbox/win/src/interception_agent.h b/sandbox/win/src/interception_agent.h index f3fabe5e..0292194c 100644 --- a/sandbox/win/src/interception_agent.h +++ b/sandbox/win/src/interception_agent.h
@@ -9,7 +9,7 @@ #ifndef SANDBOX_WIN_SRC_INTERCEPTION_AGENT_H_ #define SANDBOX_WIN_SRC_INTERCEPTION_AGENT_H_ -#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ptr_exclusion.h" #include "sandbox/win/src/nt_internals.h" #include "sandbox/win/src/sandbox_types.h" @@ -77,7 +77,9 @@ ResolverThunk* GetResolver(InterceptionType type); // Shared memory containing the list of functions to intercept. - raw_ptr<SharedMemory> interceptions_; + // The field is accessed too early during the process startup to support + // raw_ptr<T>. + RAW_PTR_EXCLUSION SharedMemory* interceptions_; // Array of thunk data buffers for the intercepted dlls. This object singleton // is allocated with a placement new with enough space to hold the complete
diff --git a/sandbox/win/src/resolver.h b/sandbox/win/src/resolver.h index d5a71dc..34080d8 100644 --- a/sandbox/win/src/resolver.h +++ b/sandbox/win/src/resolver.h
@@ -11,7 +11,7 @@ #include <stddef.h> -#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ptr_exclusion.h" #include "sandbox/win/src/nt_internals.h" namespace sandbox { @@ -99,9 +99,13 @@ const void* original_function, const void* interceptor); // Holds the resolved interception target. - void* target_; + // The field is accessed too early during the process startup to support + // raw_ptr<T>. + RAW_PTR_EXCLUSION void* target_; // Holds the resolved interception interceptor. - raw_ptr<const void> interceptor_; + // The field is accessed too early during the process startup to support + // raw_ptr<T>. + RAW_PTR_EXCLUSION const void* interceptor_; }; } // namespace sandbox
diff --git a/services/device/battery/battery_status_manager_linux.cc b/services/device/battery/battery_status_manager_linux.cc index 253bf43..9649381c 100644 --- a/services/device/battery/battery_status_manager_linux.cc +++ b/services/device/battery/battery_status_manager_linux.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread.h" @@ -81,8 +82,8 @@ UPowerProperties* properties() { return properties_.get(); } private: - dbus::Bus* dbus_; // Owned by the BatteryStatusNotificationThread. - dbus::ObjectProxy* proxy_; // Owned by the dbus. + raw_ptr<dbus::Bus> dbus_; // Owned by the BatteryStatusNotificationThread. + raw_ptr<dbus::ObjectProxy> proxy_; // Owned by the dbus. std::unique_ptr<UPowerProperties> properties_; }; @@ -246,8 +247,8 @@ BatteryProperties* properties() { return properties_.get(); } private: - dbus::Bus* dbus_; // Owned by the BatteryStatusNotificationThread, - dbus::ObjectProxy* proxy_; // Owned by the dbus. + raw_ptr<dbus::Bus> dbus_; // Owned by the BatteryStatusNotificationThread, + raw_ptr<dbus::ObjectProxy> proxy_; // Owned by the dbus. std::unique_ptr<BatteryProperties> properties_; };
diff --git a/services/device/battery/battery_status_manager_linux_unittest.cc b/services/device/battery/battery_status_manager_linux_unittest.cc index 7802e05a..d1186941 100644 --- a/services/device/battery/battery_status_manager_linux_unittest.cc +++ b/services/device/battery/battery_status_manager_linux_unittest.cc
@@ -9,6 +9,7 @@ #include <string> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread.h" @@ -191,7 +192,7 @@ void SignalPropertyChanged(const std::string& property_name); scoped_refptr<dbus::MockObjectProxy> proxy; - MockBatteryProperties* properties; + raw_ptr<MockBatteryProperties> properties; dbus::ObjectProxy::SignalCallback signal_callback_changed; dbus::ObjectProxy::SignalCallback signal_callback_properties_changed;
diff --git a/services/device/geolocation/wifi_data_provider_linux.cc b/services/device/geolocation/wifi_data_provider_linux.cc index ecc00cc..8c0a26c 100644 --- a/services/device/geolocation/wifi_data_provider_linux.cc +++ b/services/device/geolocation/wifi_data_provider_linux.cc
@@ -17,6 +17,7 @@ #include <vector> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "dbus/bus.h" @@ -87,7 +88,7 @@ const std::string& property_name); scoped_refptr<dbus::Bus> system_bus_; - dbus::ObjectProxy* network_manager_proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> network_manager_proxy_ = nullptr; }; // Convert a wifi frequency to the corresponding channel. Adapted from
diff --git a/services/device/time_zone_monitor/time_zone_monitor_linux.cc b/services/device/time_zone_monitor/time_zone_monitor_linux.cc index b76f4db..58398d8e 100644 --- a/services/device/time_zone_monitor/time_zone_monitor_linux.cc +++ b/services/device/time_zone_monitor/time_zone_monitor_linux.cc
@@ -13,6 +13,7 @@ #include "base/bind.h" #include "base/files/file_path.h" #include "base/files/file_path_watcher.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/task/sequenced_task_runner.h" #include "base/threading/scoped_blocking_call.h" @@ -171,7 +172,7 @@ scoped_refptr<base::SequencedTaskRunner> main_task_runner_; scoped_refptr<base::SequencedTaskRunner> file_task_runner_; - TimeZoneMonitorLinux* owner_; + raw_ptr<TimeZoneMonitorLinux> owner_; }; } // namespace
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc index db24363..9cc4d06 100644 --- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc +++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
@@ -108,13 +108,17 @@ if (is_started_) { profiler->StartTracing( -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + false /* is_startup_tracing */, +#else producer_->CreateTraceWriter(data_source_config_.target_buffer()), #endif data_source_config_.chrome_config().privacy_filtering_enabled()); } else if (is_startup_tracing_) { profiler->StartTracing( -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + true /* is_startup_tracing */, +#else nullptr, #endif /*should_enable_filtering=*/true); @@ -148,7 +152,9 @@ for (auto* profiler : profilers_) { profiler->StartTracing( -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + false /* is_startup_tracing */, +#else producer->CreateTraceWriter(data_source_config.target_buffer()), #endif should_enable_filtering); @@ -189,7 +195,9 @@ for (auto* profiler : profilers_) { // Enable filtering for startup tracing always to be safe. profiler->StartTracing( -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + true /* is_startup_tracing */, +#else nullptr, #endif /*should_enable_filtering=*/true); @@ -206,6 +214,8 @@ profiler->StartTracing( #if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) nullptr, +#else + true /* is_startup_tracing */, #endif /*should_enable_filtering=*/true); } @@ -390,13 +400,17 @@ TracingSamplerProfiler::TracingProfileBuilder::TracingProfileBuilder( base::PlatformThreadId sampled_thread_id, -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + bool is_startup_tracing, +#else std::unique_ptr<perfetto::TraceWriter> trace_writer, #endif bool should_enable_filtering, const base::RepeatingClosure& sample_callback_for_testing) : sampled_thread_id_(sampled_thread_id), -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + is_startup_tracing_(is_startup_tracing), +#else trace_writer_(std::move(trace_writer)), #endif stack_profile_writer_(should_enable_filtering), @@ -432,9 +446,14 @@ void TracingSamplerProfiler::TracingProfileBuilder::OnSampleCompleted( std::vector<base::Frame> frames, base::TimeTicks sample_timestamp) { -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + bool is_startup_tracing = is_startup_tracing_; +#else base::AutoLock l(trace_writer_lock_); - if (!trace_writer_) { + bool is_startup_tracing = (trace_writer_ == nullptr); +#endif + + if (is_startup_tracing) { if (buffered_samples_.size() < kMaxBufferedSamples) { buffered_samples_.emplace_back( BufferedSample(sample_timestamp, std::move(frames))); @@ -447,7 +466,7 @@ } buffered_samples_.clear(); } -#endif + WriteSampleToTrace(BufferedSample(sample_timestamp, std::move(frames))); if (sample_callback_for_testing_) { sample_callback_for_testing_.Run(); @@ -801,13 +820,19 @@ } void TracingSamplerProfiler::StartTracing( -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + bool is_startup_tracing, +#else std::unique_ptr<perfetto::TraceWriter> trace_writer, #endif bool should_enable_filtering) { base::AutoLock lock(lock_); if (profiler_) { -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + if (!is_startup_tracing) { + profile_builder_->SetIsStartupTracing(is_startup_tracing); + } +#else if (trace_writer) { profile_builder_->SetTraceWriter(std::move(trace_writer)); } @@ -836,7 +861,9 @@ auto profile_builder = std::make_unique<TracingProfileBuilder>( sampled_thread_token_.id, -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + is_startup_tracing, +#else std::move(trace_writer), #endif should_enable_filtering, sample_callback_for_testing_);
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h index 517b9de3..cb5c33a 100644 --- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h +++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h
@@ -96,7 +96,9 @@ public: TracingProfileBuilder( base::PlatformThreadId sampled_thread_id, -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + bool is_startup_tracing, +#else std::unique_ptr<perfetto::TraceWriter> trace_writer, #endif bool should_enable_filtering, @@ -111,7 +113,11 @@ void OnProfileCompleted(base::TimeDelta profile_duration, base::TimeDelta sampling_period) override {} -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + void SetIsStartupTracing(bool is_startup_tracing) { + is_startup_tracing_ = is_startup_tracing; + }; +#else void SetTraceWriter(std::unique_ptr<perfetto::TraceWriter> trace_writer); #endif @@ -148,7 +154,10 @@ base::ModuleCache module_cache_; const base::PlatformThreadId sampled_thread_id_; -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + // In non-SDK build, (trace_writer_ == nullptr) is equivalent of this flag. + bool is_startup_tracing_ = true; +#else base::Lock trace_writer_lock_; std::unique_ptr<perfetto::TraceWriter> trace_writer_; #endif @@ -218,8 +227,11 @@ void StartTracing( #if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) std::unique_ptr<perfetto::TraceWriter> trace_writer, +#else + bool is_startup_tracing, #endif bool should_enable_filtering); + void StopTracing(); private:
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc index ef8fb5c1..9f43f45 100644 --- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc +++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc
@@ -278,11 +278,7 @@ ValidateReceivedEvents(); } -#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) -TEST_F(TracingSampleProfilerTest, DISABLED_TestStartupTracing) { -#else TEST_F(TracingSampleProfilerTest, TestStartupTracing) { -#endif auto profiler = TracingSamplerProfiler::CreateOnMainThread(); TracingSamplerProfiler::SetupStartupTracingForTesting(); base::RunLoop().RunUntilIdle(); @@ -316,11 +312,7 @@ } } -#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) -TEST_F(TracingSampleProfilerTest, DISABLED_JoinStartupTracing) { -#else TEST_F(TracingSampleProfilerTest, JoinStartupTracing) { -#endif TracingSamplerProfiler::SetupStartupTracingForTesting(); base::RunLoop().RunUntilIdle(); auto profiler = TracingSamplerProfiler::CreateOnMainThread(); @@ -500,7 +492,9 @@ base::TestModule module; TracingSamplerProfiler::TracingProfileBuilder profile_builder( base::PlatformThreadId(), -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + false /* is_startup_tracing */, +#else std::make_unique<TestTraceWriter>(producer()), #endif false); @@ -511,7 +505,9 @@ TEST_F(TracingProfileBuilderTest, InvalidModule) { TracingSamplerProfiler::TracingProfileBuilder profile_builder( base::PlatformThreadId(), -#if !BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) +#if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY) + false /* is_startup_tracing */, +#else std::make_unique<TestTraceWriter>(producer()), #endif false);
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index c293a46..42fe6cfa 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -8327,15 +8327,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -8412,15 +8412,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--client-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -8837,15 +8837,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -8922,15 +8922,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--impl-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 38d3bb6..0d1939f 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -46457,15 +46457,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -46542,15 +46542,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--client-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -46967,15 +46967,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47052,15 +47052,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--impl-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47481,15 +47481,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47566,15 +47566,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--client-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47991,15 +47991,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -48076,15 +48076,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--impl-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -48573,15 +48573,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -48658,15 +48658,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--client-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49083,15 +49083,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49168,15 +49168,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--impl-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49665,15 +49665,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49750,15 +49750,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", - "--client-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--client-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--client-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -50175,15 +50175,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -50260,15 +50260,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", - "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--implementation-outdir", - "../../weblayer_instrumentation_test_M104/out/Release", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", + "--webview-apk-path=apks/SystemWebView.apk", + "--implementation-outdir", + "../../weblayer_instrumentation_test_M104/out/Release", "--impl-version=104", "--gs-results-bucket=chromium-result-details", "--recover-devices",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 33570fd5..530e98720 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -493,16 +493,16 @@ }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE': { 'args': [ - '--webview-apk-path=apks/AOSP_SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--implementation-outdir', - '../../weblayer_instrumentation_test_M104/out/Release', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--impl-version=104', + '--webview-apk-path=apks/AOSP_SystemWebView.apk', + '--implementation-outdir', + '../../weblayer_instrumentation_test_M104/out/Release', + '--impl-version=104' ], 'identifier': 'with_impl_from_104', 'swarming': { @@ -510,23 +510,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.18', + 'revision': 'version:104.0.5112.18' } - ], - }, + ] + } }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ - '--webview-apk-path=apks/AOSP_SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--implementation-outdir', - '../../weblayer_instrumentation_test_M103/out/Release', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--impl-version=103', + '--webview-apk-path=apks/AOSP_SystemWebView.apk', + '--implementation-outdir', + '../../weblayer_instrumentation_test_M103/out/Release', + '--impl-version=103' ], 'identifier': 'with_impl_from_103', 'swarming': { @@ -534,10 +534,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.60', + 'revision': 'version:103.0.5060.60' } - ], - }, + ] + } }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [ @@ -637,16 +637,16 @@ }, 'WEBLAYER_IMPL_SKEW_TESTS_NTH_MILESTONE': { 'args': [ - '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--implementation-outdir', - '../../weblayer_instrumentation_test_M104/out/Release', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--impl-version=104', + '--webview-apk-path=apks/SystemWebView.apk', + '--implementation-outdir', + '../../weblayer_instrumentation_test_M104/out/Release', + '--impl-version=104' ], 'identifier': 'with_impl_from_104', 'swarming': { @@ -654,23 +654,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.18', + 'revision': 'version:104.0.5112.18' } - ], - }, + ] + } }, 'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ - '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--implementation-outdir', - '../../weblayer_instrumentation_test_M103/out/Release', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--impl-version=103', + '--webview-apk-path=apks/SystemWebView.apk', + '--implementation-outdir', + '../../weblayer_instrumentation_test_M103/out/Release', + '--impl-version=103' ], 'identifier': 'with_impl_from_103', 'swarming': { @@ -678,10 +678,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.60', + 'revision': 'version:103.0.5060.60' } - ], - }, + ] + } }, 'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [ @@ -781,16 +781,16 @@ }, 'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MILESTONE': { 'args': [ - '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', - '--client-outdir', - '../../weblayer_instrumentation_test_M104/out/Release', '--implementation-outdir', '.', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--client-version=104', + '--webview-apk-path=apks/SystemWebView.apk', + '--client-outdir', + '../../weblayer_instrumentation_test_M104/out/Release', + '--client-version=104' ], 'identifier': 'with_client_from_104', 'swarming': { @@ -798,23 +798,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.18', + 'revision': 'version:104.0.5112.18' } - ], - }, + ] + } }, 'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ - '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', - '--client-outdir', - '../../weblayer_instrumentation_test_M103/out/Release', '--implementation-outdir', '.', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--client-version=103', + '--webview-apk-path=apks/SystemWebView.apk', + '--client-outdir', + '../../weblayer_instrumentation_test_M103/out/Release', + '--client-version=103' ], 'identifier': 'with_client_from_103', 'swarming': { @@ -822,10 +822,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.60', + 'revision': 'version:103.0.5060.60' } - ], - }, + ] + } }, 'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl index 7d9cc56..a420bb1 100644 --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -1444,6 +1444,9 @@ # Cascade layer array. Contains the layer hierarchy that this rule belongs to starting # with the innermost layer and going outwards. experimental optional array of CSSLayer layers + # @scope CSS at-rule array. + # The array enumerates @scope at-rules starting with the innermost one, going outwards. + experimental optional array of CSSScope scopes # CSS coverage information. type RuleUsage extends object @@ -1593,6 +1596,17 @@ # Identifier of the stylesheet containing this object (if exists). optional StyleSheetId styleSheetId + # CSS Scope at-rule descriptor. + experimental type CSSScope extends object + properties + # Scope rule text. + string text + # The associated rule header range in the enclosing stylesheet (if + # available). + optional SourceRange range + # Identifier of the stylesheet containing this object (if exists). + optional StyleSheetId styleSheetId + # CSS Layer at-rule descriptor. experimental type CSSLayer extends object properties
diff --git a/third_party/blink/renderer/bindings/core/v8/js_event_handler_for_content_attribute.cc b/third_party/blink/renderer/bindings/core/v8/js_event_handler_for_content_attribute.cc index 18108a2..aa4d6d46 100644 --- a/third_party/blink/renderer/bindings/core/v8/js_event_handler_for_content_attribute.cc +++ b/third_party/blink/renderer/bindings/core/v8/js_event_handler_for_content_attribute.cc
@@ -213,9 +213,9 @@ v8::TryCatch block(isolate); block.SetVerbose(true); v8::MaybeLocal<v8::Function> maybe_result = - v8::ScriptCompiler::CompileFunctionInContext( - v8_context_of_event_target, &source, parameter_list_size, - parameter_list, scopes_size, scopes); + v8::ScriptCompiler::CompileFunction(v8_context_of_event_target, &source, + parameter_list_size, parameter_list, + scopes_size, scopes); // Step 7. If body is not parsable as FunctionBody or if parsing detects an // early error, then follow these substeps:
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn index f7f3f9a..1f6eb3db 100644 --- a/third_party/blink/renderer/core/BUILD.gn +++ b/third_party/blink/renderer/core/BUILD.gn
@@ -1252,8 +1252,6 @@ source_set("unit_tests") { testonly = true sources = [ - "content_capture/content_capture_test.cc", - "execution_context/execution_context_lifecycle_state_observer_test.cc", "exported/web_document_subresource_filter_test.cc", "exported/web_document_test.cc", "exported/web_drag_data_test.cc", @@ -1271,21 +1269,11 @@ "exported/web_searchable_form_data_test.cc", "exported/web_selector_test.cc", "exported/web_view_test.cc", - "fullscreen/scoped_allow_fullscreen_test.cc", - "geometry/dom_matrix_test.cc", - "imagebitmap/image_bitmap_test.cc", - "intersection_observer/intersection_observer_test.cc", - "mobile_metrics/mobile_friendliness_checker_test.cc", - "navigation_api/navigation_api_test.cc", - "origin_trials/origin_trial_context_test.cc", - "resize_observer/resize_observer_test.cc", "scheduler_integration_tests/frame_scheduler_test.cc", "scheduler_integration_tests/frame_throttling_test.cc", "scheduler_integration_tests/scheduler_affecting_features_test.cc", "scheduler_integration_tests/throttling_test.cc", "scheduler_integration_tests/virtual_time_test.cc", - "trustedtypes/trusted_types_util_test.cc", - "url/url_search_params_test.cc", ] # If you create a new subdirectory 'foo' that contains unit tests, list them in @@ -1295,6 +1283,8 @@ sources += rebase_path(blink_core_tests_animation, "", "animation") sources += rebase_path(blink_core_tests_annotation, "", "annotation") sources += rebase_path(blink_core_tests_clipboard, "", "clipboard") + sources += + rebase_path(blink_core_tests_content_capture, "", "content_capture") sources += rebase_path(blink_core_tests_css, "", "css") sources += rebase_path(blink_core_tests_display_lock, "", "display_lock") sources += rebase_path(blink_core_tests_document_transition, @@ -1303,21 +1293,34 @@ sources += rebase_path(blink_core_tests_dom, "", "dom") sources += rebase_path(blink_core_tests_editing, "", "editing") sources += rebase_path(blink_core_tests_events, "", "events") + sources += + rebase_path(blink_core_tests_execution_context, "", "execution_context") sources += rebase_path(blink_core_tests_fetch, "", "fetch") sources += rebase_path(blink_core_tests_fileapi, "", "fileapi") sources += rebase_path(blink_core_tests_fragment_directive, "", "fragment_directive") sources += rebase_path(blink_core_tests_frame, "", "frame") + sources += rebase_path(blink_core_tests_fullscreen, "", "fullscreen") + sources += rebase_path(blink_core_tests_geometry, "", "geometry") sources += rebase_path(blink_core_tests_html, "", "html") + sources += rebase_path(blink_core_tests_imagebitmap, "", "imagebitmap") sources += rebase_path(blink_core_tests_input, "", "input") sources += rebase_path(blink_core_tests_inspector, "", "inspector") + sources += rebase_path(blink_core_tests_intersection_observer, + "", + "intersection_observer") sources += rebase_path(blink_core_tests_layout, "", "layout") sources += rebase_path(blink_core_tests_loader, "", "loader") sources += rebase_path(blink_core_tests_messaging, "", "messaging") + sources += rebase_path(blink_core_tests_mobile_metrics, "", "mobile_metrics") + sources += rebase_path(blink_core_tests_navigation_api, "", "navigation_api") + sources += rebase_path(blink_core_tests_origin_trials, "", "origin_trials") sources += rebase_path(blink_core_tests_page, "", "page") sources += rebase_path(blink_core_tests_paint, "", "paint") sources += rebase_path(blink_core_tests_permissions_policy, "", "permissions_policy") + sources += + rebase_path(blink_core_tests_resize_observer, "", "resize_observer") sources += rebase_path(blink_core_tests_script, "", "script") sources += rebase_path(blink_core_tests_scroll, "", "scroll") sources += @@ -1326,7 +1329,9 @@ sources += rebase_path(blink_core_tests_style, "", "style") sources += rebase_path(blink_core_tests_svg, "", "svg") sources += rebase_path(blink_core_tests_timing, "", "timing") + sources += rebase_path(blink_core_tests_trustedtypes, "", "trustedtypes") sources += rebase_path(blink_core_tests_typed_arrays, "", "typed_arrays") + sources += rebase_path(blink_core_tests_url, "", "url") sources += rebase_path(blink_core_tests_workers, "", "workers") sources += rebase_path(blink_core_tests_xml, "", "xml")
diff --git a/third_party/blink/renderer/core/content_capture/build.gni b/third_party/blink/renderer/core/content_capture/build.gni index b0e016c0..ebb2d05 100644 --- a/third_party/blink/renderer/core/content_capture/build.gni +++ b/third_party/blink/renderer/core/content_capture/build.gni
@@ -14,3 +14,5 @@ "task_session.cc", "task_session.h", ] + +blink_core_tests_content_capture = [ "content_capture_test.cc" ]
diff --git a/third_party/blink/renderer/core/css/css_scope_rule.cc b/third_party/blink/renderer/core/css/css_scope_rule.cc index ec7943c..052093a 100644 --- a/third_party/blink/renderer/core/css/css_scope_rule.cc +++ b/third_party/blink/renderer/core/css/css_scope_rule.cc
@@ -16,10 +16,8 @@ CSSScopeRule::~CSSScopeRule() = default; -String CSSScopeRule::cssText() const { +String CSSScopeRule::PreludeText() const { StringBuilder result; - result.Append("@scope "); - const StyleScope& scope = To<StyleRuleScope>(*group_rule_.Get()).GetStyleScope(); @@ -33,6 +31,13 @@ result.Append(')'); } + return result.ReleaseString(); +} + +String CSSScopeRule::cssText() const { + StringBuilder result; + result.Append("@scope "); + result.Append(PreludeText()); result.Append(' '); result.Append("{\n"); AppendCSSTextForItems(result);
diff --git a/third_party/blink/renderer/core/css/css_scope_rule.h b/third_party/blink/renderer/core/css/css_scope_rule.h index d1640e7..10aceacb 100644 --- a/third_party/blink/renderer/core/css/css_scope_rule.h +++ b/third_party/blink/renderer/core/css/css_scope_rule.h
@@ -20,6 +20,7 @@ CSSScopeRule(StyleRuleScope*, CSSStyleSheet*); ~CSSScopeRule() override; + String PreludeText() const; String cssText() const override; private:
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc index 7cbd44b..301c705e 100644 --- a/third_party/blink/renderer/core/css/style_engine_test.cc +++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -5877,6 +5877,10 @@ } TEST_F(StyleEngineSimTest, ContainerQueryLegacyConsoleWarning_AddContainer) { + // For the ng-disabled bots: + if (!RuntimeEnabledFeatures::LayoutNGEnabled()) + return; + ScopedLayoutNGTableFragmentationForTest disabled_scope(false); SimRequest main_resource("https://example.com/", "text/html"); @@ -5906,6 +5910,10 @@ } TEST_F(StyleEngineSimTest, ContainerQueryLegacyConsoleWarning_AddTable) { + // For the ng-disabled bots: + if (!RuntimeEnabledFeatures::LayoutNGEnabled()) + return; + ScopedLayoutNGTableFragmentationForTest disabled_scope(false); SimRequest main_resource("https://example.com/", "text/html"); @@ -5935,6 +5943,10 @@ } TEST_F(StyleEngineSimTest, ContainerQueryLegacyConsoleWarning_AddColumns) { + // For the ng-disabled bots: + if (!RuntimeEnabledFeatures::LayoutNGEnabled()) + return; + ScopedLayoutNGTableFragmentationForTest disabled_scope(false); SimRequest main_resource("https://example.com/", "text/html");
diff --git a/third_party/blink/renderer/core/execution_context/build.gni b/third_party/blink/renderer/core/execution_context/build.gni index b8d53c727..41a13e53 100644 --- a/third_party/blink/renderer/core/execution_context/build.gni +++ b/third_party/blink/renderer/core/execution_context/build.gni
@@ -24,3 +24,6 @@ "window_agent_factory.cc", "window_agent_factory.h", ] + +blink_core_tests_execution_context = + [ "execution_context_lifecycle_state_observer_test.cc" ]
diff --git a/third_party/blink/renderer/core/fullscreen/build.gni b/third_party/blink/renderer/core/fullscreen/build.gni index fe0dec58..0bf8b00 100644 --- a/third_party/blink/renderer/core/fullscreen/build.gni +++ b/third_party/blink/renderer/core/fullscreen/build.gni
@@ -14,3 +14,5 @@ "scoped_allow_fullscreen.cc", "scoped_allow_fullscreen.h", ] + +blink_core_tests_fullscreen = [ "scoped_allow_fullscreen_test.cc" ]
diff --git a/third_party/blink/renderer/core/geometry/build.gni b/third_party/blink/renderer/core/geometry/build.gni index fc82d99..f5c4fb0 100644 --- a/third_party/blink/renderer/core/geometry/build.gni +++ b/third_party/blink/renderer/core/geometry/build.gni
@@ -21,3 +21,5 @@ "dom_rect_read_only.h", "geometry_util.h", ] + +blink_core_tests_geometry = [ "dom_matrix_test.cc" ]
diff --git a/third_party/blink/renderer/core/imagebitmap/build.gni b/third_party/blink/renderer/core/imagebitmap/build.gni index befd5f70..e8ef4f6 100644 --- a/third_party/blink/renderer/core/imagebitmap/build.gni +++ b/third_party/blink/renderer/core/imagebitmap/build.gni
@@ -8,3 +8,5 @@ "image_bitmap_source.cc", "image_bitmap_source.h", ] + +blink_core_tests_imagebitmap = [ "image_bitmap_test.cc" ]
diff --git a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc index d837128..88292b54 100644 --- a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc
@@ -49,6 +49,7 @@ #include "third_party/blink/renderer/core/css/css_property_value_set.h" #include "third_party/blink/renderer/core/css/css_rule.h" #include "third_party/blink/renderer/core/css/css_rule_list.h" +#include "third_party/blink/renderer/core/css/css_scope_rule.h" #include "third_party/blink/renderer/core/css/css_style_rule.h" #include "third_party/blink/renderer/core/css/css_style_sheet.h" #include "third_party/blink/renderer/core/css/css_supports_rule.h" @@ -2126,6 +2127,8 @@ std::make_unique<protocol::Array<protocol::CSS::CSSSupports>>(); auto container_queries_list = std::make_unique<protocol::Array<protocol::CSS::CSSContainerQuery>>(); + auto scopes_list = + std::make_unique<protocol::Array<protocol::CSS::CSSScope>>(); CSSRule* parent_rule = rule; while (parent_rule) { @@ -2133,6 +2136,7 @@ CollectMediaQueriesFromRule(parent_rule, media_list.get()); CollectContainerQueriesFromRule(parent_rule, container_queries_list.get()); CollectSupportsFromRule(parent_rule, supports_list.get()); + CollectScopesFromRule(parent_rule, scopes_list.get()); if (parent_rule->parentRule()) { parent_rule = parent_rule->parentRule(); } else { @@ -2148,12 +2152,39 @@ } result->setMedia(std::move(media_list)); result->setSupports(std::move(supports_list)); + result->setScopes(std::move(scopes_list)); std::reverse(layers_list.get()->begin(), layers_list.get()->end()); result->setLayers(std::move(layers_list)); if (RuntimeEnabledFeatures::CSSContainerQueriesEnabled()) result->setContainerQueries(std::move(container_queries_list)); } +std::unique_ptr<protocol::CSS::CSSScope> InspectorCSSAgent::BuildScopeObject( + CSSScopeRule* rule) { + std::unique_ptr<protocol::CSS::CSSScope> scope_object = + protocol::CSS::CSSScope::create().setText(rule->PreludeText()).build(); + + auto it = + css_style_sheet_to_inspector_style_sheet_.find(rule->parentStyleSheet()); + if (it != css_style_sheet_to_inspector_style_sheet_.end()) { + InspectorStyleSheet* inspector_style_sheet = it->value; + scope_object->setStyleSheetId(inspector_style_sheet->Id()); + } + + InspectorStyleSheet* inspector_style_sheet = + BindStyleSheet(rule->parentStyleSheet()); + scope_object->setRange(inspector_style_sheet->RuleHeaderSourceRange(rule)); + + return scope_object; +} + +void InspectorCSSAgent::CollectScopesFromRule( + CSSRule* rule, + protocol::Array<protocol::CSS::CSSScope>* scopes_list) { + if (auto* scope_rule = DynamicTo<CSSScopeRule>(rule)) + scopes_list->emplace_back(BuildScopeObject(scope_rule)); +} + InspectorStyleSheetForInlineStyle* InspectorCSSAgent::AsInspectorStyleSheet( Element* element) { NodeToInspectorStyleSheet::iterator it =
diff --git a/third_party/blink/renderer/core/inspector/inspector_css_agent.h b/third_party/blink/renderer/core/inspector/inspector_css_agent.h index 43b39147..5ad89ca1 100644 --- a/third_party/blink/renderer/core/inspector/inspector_css_agent.h +++ b/third_party/blink/renderer/core/inspector/inspector_css_agent.h
@@ -59,6 +59,7 @@ class CSSStyleRule; class CSSStyleSheet; class CSSSupportsRule; +class CSSScopeRule; class Document; class Element; class FontCustomPlatformData; @@ -372,6 +373,11 @@ void FillAncestorData(CSSRule* rule, protocol::CSS::CSSRule* result); + // Scope at-rule implementation + std::unique_ptr<protocol::CSS::CSSScope> BuildScopeObject(CSSScopeRule*); + void CollectScopesFromRule(CSSRule*, + protocol::Array<protocol::CSS::CSSScope>*); + // InspectorDOMAgent::DOMListener implementation void DidAddDocument(Document*) override; void WillRemoveDOMNode(Node*) override;
diff --git a/third_party/blink/renderer/core/inspector/inspector_style_sheet.cc b/third_party/blink/renderer/core/inspector/inspector_style_sheet.cc index 447c7b7..a2cfa98 100644 --- a/third_party/blink/renderer/core/inspector/inspector_style_sheet.cc +++ b/third_party/blink/renderer/core/inspector/inspector_style_sheet.cc
@@ -38,6 +38,7 @@ #include "third_party/blink/renderer/core/css/css_property_names.h" #include "third_party/blink/renderer/core/css/css_property_value_set.h" #include "third_party/blink/renderer/core/css/css_rule_list.h" +#include "third_party/blink/renderer/core/css/css_scope_rule.h" #include "third_party/blink/renderer/core/css/css_style_rule.h" #include "third_party/blink/renderer/core/css/css_style_sheet.h" #include "third_party/blink/renderer/core/css/css_supports_rule.h" @@ -580,6 +581,7 @@ result->push_back(data); break; case StyleRule::kMedia: + case StyleRule::kScope: case StyleRule::kSupports: case StyleRule::kKeyframes: case StyleRule::kContainer: @@ -600,6 +602,9 @@ if (auto* media_rule = DynamicTo<CSSMediaRule>(rule)) return media_rule->cssRules(); + if (auto* scope_rule = DynamicTo<CSSScopeRule>(rule)) + return scope_rule->cssRules(); + if (auto* supports_rule = DynamicTo<CSSSupportsRule>(rule)) return supports_rule->cssRules(); @@ -636,6 +641,7 @@ result->push_back(rule); break; case CSSRule::kMediaRule: + case CSSRule::kScopeRule: case CSSRule::kSupportsRule: case CSSRule::kKeyframesRule: case CSSRule::kContainerRule:
diff --git a/third_party/blink/renderer/core/intersection_observer/build.gni b/third_party/blink/renderer/core/intersection_observer/build.gni index 2965e03..3893b17 100644 --- a/third_party/blink/renderer/core/intersection_observer/build.gni +++ b/third_party/blink/renderer/core/intersection_observer/build.gni
@@ -16,3 +16,5 @@ "intersection_observer_entry.cc", "intersection_observer_entry.h", ] + +blink_core_tests_intersection_observer = [ "intersection_observer_test.cc" ]
diff --git a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc index f6cc475..3049470 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_column_layout_algorithm.cc
@@ -848,7 +848,11 @@ // inside breaks; see https://www.w3.org/TR/css-break-3/#box-splitting if (!is_constrained_by_outer_fragmentation_context_) break; - new_column_block_size = FragmentainerSpaceAtBfcStart(ConstraintSpace()); + // We'll get properly constrained right below. Rely on that, rather than + // calculating the exact amount here (we could check the available outer + // fragmentainer size and subtract the row offset and stuff, but that's + // duplicated logic). We'll use as much as we're allowed to. + new_column_block_size = LayoutUnit::Max(); } else { new_column_block_size = column_size.block_size + minimal_space_shortage.value_or(LayoutUnit());
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index 0ef3686d..b6d5ee3f 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -2407,7 +2407,9 @@ RecordConsoleMessagesForCommit(); // Clear the user activation state. - frame_->ClearUserActivation(); + // TODO(crbug.com/736415): Clear this bit unconditionally for all frames. + if (frame_->IsMainFrame()) + frame_->ClearUserActivation(); // The DocumentLoader was flagged as activated if it needs to notify the frame // that it was activated before navigation. Update the frame state based on
diff --git a/third_party/blink/renderer/core/mobile_metrics/build.gni b/third_party/blink/renderer/core/mobile_metrics/build.gni index 68fd1cf..926dc45b 100644 --- a/third_party/blink/renderer/core/mobile_metrics/build.gni +++ b/third_party/blink/renderer/core/mobile_metrics/build.gni
@@ -6,3 +6,5 @@ "mobile_friendliness_checker.cc", "mobile_friendliness_checker.h", ] + +blink_core_tests_mobile_metrics = [ "mobile_friendliness_checker_test.cc" ]
diff --git a/third_party/blink/renderer/core/navigation_api/build.gni b/third_party/blink/renderer/core/navigation_api/build.gni index ab401df2..b01e131 100644 --- a/third_party/blink/renderer/core/navigation_api/build.gni +++ b/third_party/blink/renderer/core/navigation_api/build.gni
@@ -17,3 +17,5 @@ "navigation_transition.cc", "navigation_transition.h", ] + +blink_core_tests_navigation_api = [ "navigation_api_test.cc" ]
diff --git a/third_party/blink/renderer/core/origin_trials/build.gni b/third_party/blink/renderer/core/origin_trials/build.gni index a895a1e9..6d2f5dc 100644 --- a/third_party/blink/renderer/core/origin_trials/build.gni +++ b/third_party/blink/renderer/core/origin_trials/build.gni
@@ -6,3 +6,5 @@ "origin_trial_context.cc", "origin_trial_context.h", ] + +blink_core_tests_origin_trials = [ "origin_trial_context_test.cc" ]
diff --git a/third_party/blink/renderer/core/resize_observer/build.gni b/third_party/blink/renderer/core/resize_observer/build.gni index 36436c0..081e99d6 100644 --- a/third_party/blink/renderer/core/resize_observer/build.gni +++ b/third_party/blink/renderer/core/resize_observer/build.gni
@@ -17,3 +17,5 @@ "resize_observer_utilities.cc", "resize_observer_utilities.h", ] + +blink_core_tests_resize_observer = [ "resize_observer_test.cc" ]
diff --git a/third_party/blink/renderer/core/timing/event_timing.cc b/third_party/blink/renderer/core/timing/event_timing.cc index f797b39..e844e72 100644 --- a/third_party/blink/renderer/core/timing/event_timing.cc +++ b/third_party/blink/renderer/core/timing/event_timing.cc
@@ -54,13 +54,14 @@ } // static -void EventTiming::HandleInputDelay(LocalDOMWindow* window, const Event& event) { +void EventTiming::HandleInputDelay(LocalDOMWindow* window, + const Event& event, + base::TimeTicks processing_start) { auto* pointer_event = DynamicTo<PointerEvent>(&event); base::TimeTicks event_timestamp = pointer_event ? pointer_event->OldestPlatformTimeStamp() : event.PlatformTimeStamp(); - base::TimeTicks processing_start = Now(); if (ShouldLogEvent(event) && event.isTrusted()) { InteractiveDetector* interactive_detector = InteractiveDetector::From(*window->document()); @@ -113,8 +114,8 @@ if (!should_report_for_event_timing && !should_log_event) return nullptr; - HandleInputDelay(window, event); base::TimeTicks processing_start = Now(); + HandleInputDelay(window, event, processing_start); return should_report_for_event_timing ? std::make_unique<EventTiming>(processing_start, performance, event)
diff --git a/third_party/blink/renderer/core/timing/event_timing.h b/third_party/blink/renderer/core/timing/event_timing.h index 20da1e4..8b9d2bce 100644 --- a/third_party/blink/renderer/core/timing/event_timing.h +++ b/third_party/blink/renderer/core/timing/event_timing.h
@@ -39,7 +39,9 @@ EventTiming(const EventTiming&) = delete; EventTiming& operator=(const EventTiming&) = delete; - static void HandleInputDelay(LocalDOMWindow* window, const Event& event); + static void HandleInputDelay(LocalDOMWindow* window, + const Event& event, + base::TimeTicks processing_start); // The caller owns the |clock| which must outlive the EventTiming. static void SetTickClockForTesting(const base::TickClock* clock);
diff --git a/third_party/blink/renderer/core/trustedtypes/build.gni b/third_party/blink/renderer/core/trustedtypes/build.gni index 9b746cb..db8ab1aa 100644 --- a/third_party/blink/renderer/core/trustedtypes/build.gni +++ b/third_party/blink/renderer/core/trustedtypes/build.gni
@@ -16,3 +16,5 @@ "trusted_types_util.cc", "trusted_types_util.h", ] + +blink_core_tests_trustedtypes = [ "trusted_types_util_test.cc" ]
diff --git a/third_party/blink/renderer/core/url/build.gni b/third_party/blink/renderer/core/url/build.gni index b1754ee..4950ab2 100644 --- a/third_party/blink/renderer/core/url/build.gni +++ b/third_party/blink/renderer/core/url/build.gni
@@ -12,3 +12,5 @@ "url_search_params.cc", "url_search_params.h", ] + +blink_core_tests_url = [ "url_search_params_test.cc" ]
diff --git a/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.cc b/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.cc index dfd3acc..538f199 100644 --- a/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.cc +++ b/third_party/blink/renderer/modules/background_sync/periodic_sync_manager.cc
@@ -38,6 +38,14 @@ return ScriptPromise(); } + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (execution_context->IsInFencedFrame()) { + exception_state.ThrowDOMException( + DOMExceptionCode::kNotAllowedError, + "Periodic Background Sync is not allowed in fenced frames."); + return ScriptPromise(); + } + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise(); @@ -53,6 +61,15 @@ } ScriptPromise PeriodicSyncManager::getTags(ScriptState* script_state) { + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (execution_context->IsInFencedFrame()) { + return ScriptPromise::RejectWithDOMException( + script_state, + MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotAllowedError, + "Periodic Background Sync is not allowed in fenced frames.")); + } + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise(); @@ -76,6 +93,15 @@ ScriptPromise PeriodicSyncManager::unregister(ScriptState* script_state, const String& tag) { + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (execution_context->IsInFencedFrame()) { + return ScriptPromise::RejectWithDOMException( + script_state, + MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotAllowedError, + "Periodic Background Sync is not allowed in fenced frames.")); + } + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise();
diff --git a/third_party/blink/renderer/modules/background_sync/sync_manager.cc b/third_party/blink/renderer/modules/background_sync/sync_manager.cc index 81e4756..d971ad55 100644 --- a/third_party/blink/renderer/modules/background_sync/sync_manager.cc +++ b/third_party/blink/renderer/modules/background_sync/sync_manager.cc
@@ -40,6 +40,14 @@ return ScriptPromise(); } + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (execution_context->IsInFencedFrame()) { + exception_state.ThrowDOMException( + DOMExceptionCode::kNotAllowedError, + "Background Sync is not allowed in fenced frames."); + return ScriptPromise(); + } + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise(); @@ -56,6 +64,14 @@ } ScriptPromise SyncManager::getTags(ScriptState* script_state) { + ExecutionContext* execution_context = ExecutionContext::From(script_state); + if (execution_context->IsInFencedFrame()) { + return ScriptPromise::RejectWithDOMException( + script_state, MakeGarbageCollected<DOMException>( + DOMExceptionCode::kNotAllowedError, + "Background Sync is not allowed in fenced frames.")); + } + auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state); ScriptPromise promise = resolver->Promise();
diff --git a/third_party/blink/renderer/platform/graphics/compositing/pending_layer.cc b/third_party/blink/renderer/platform/graphics/compositing/pending_layer.cc index b3b6ff1..8584f9e 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/pending_layer.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/pending_layer.cc
@@ -165,6 +165,10 @@ return result; } +std::ostream& operator<<(std::ostream& os, const PendingLayer& layer) { + return os << layer.ToJSON()->ToPrettyJSONString().Utf8(); +} + gfx::RectF PendingLayer::VisualRectForOverlapTesting( const PropertyTreeState& ancestor_state) const { FloatClipRect visual_rect(bounds_);
diff --git a/third_party/blink/renderer/platform/graphics/compositing/pending_layer.h b/third_party/blink/renderer/platform/graphics/compositing/pending_layer.h index 39552c5..dd14a764 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/pending_layer.h +++ b/third_party/blink/renderer/platform/graphics/compositing/pending_layer.h
@@ -197,6 +197,9 @@ // This is set to non-null after layerization if !ChunkRequiresOwnLayer(). std::unique_ptr<ContentLayerClientImpl> content_layer_client_; }; + +PLATFORM_EXPORT std::ostream& operator<<(std::ostream&, const PendingLayer&); + } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PENDING_LAYER_H_
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc index aa09642d..4ebfe058 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -592,7 +592,6 @@ auto queue_priority_pair = resource_loading_task_queue_priorities_.find(task_queue); if (queue_priority_pair != resource_loading_task_queue_priorities_.end()) { - task_queue->SetNetRequestPriority(priority); queue_priority_pair->value = main_thread_scheduler_->scheduling_settings() .net_to_blink_priority[priority]; auto* voter =
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.cc index 066d553..9c8f611 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.cc
@@ -196,21 +196,6 @@ input_handling_per_task_type_duration_reporter_.RecordTask(task_type, duration); } - - // TODO(crbug.com/860545): Consider removing below - if (task_type == TaskType::kNetworking && queue) { - if (queue->net_request_priority()) { - UMA_HISTOGRAM_ENUMERATION( - "RendererScheduler.ResourceLoadingTaskCountPerNetPriority", - queue->net_request_priority().value(), - net::RequestPriority::MAXIMUM_PRIORITY + 1); - } - - UMA_HISTOGRAM_ENUMERATION( - "RendererScheduler.ResourceLoadingTaskCountPerPriority", - queue->GetQueuePriority(), - base::sequence_manager::TaskQueue::QueuePriority::kQueuePriorityCount); - } } void MainThreadMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time,
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc index eaf272c..a446de1 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -2024,18 +2024,6 @@ main_thread_only().have_reported_blocking_intervention_since_navigation = false; UpdatePolicyLocked(UpdateType::kMayEarlyOutIfPolicyUnchanged); - - UMA_HISTOGRAM_COUNTS_100("RendererScheduler.WebViewsPerScheduler", - base::saturated_cast<base::HistogramBase::Sample>( - main_thread_only().page_schedulers.size())); - - size_t frame_count = 0; - for (PageSchedulerImpl* page_scheduler : main_thread_only().page_schedulers) { - frame_count += page_scheduler->FrameCount(); - } - UMA_HISTOGRAM_COUNTS_100( - "RendererScheduler.WebFramesPerScheduler", - base::saturated_cast<base::HistogramBase::Sample>(frame_count)); } void MainThreadSchedulerImpl::SetTopLevelBlameContext(
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc index d19711a..fa58dac7 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc
@@ -259,16 +259,6 @@ frame_scheduler_ = frame_scheduler; } -void MainThreadTaskQueue::SetNetRequestPriority( - net::RequestPriority net_request_priority) { - net_request_priority_ = net_request_priority; -} - -absl::optional<net::RequestPriority> MainThreadTaskQueue::net_request_priority() - const { - return net_request_priority_; -} - void MainThreadTaskQueue::SetWebSchedulingPriority( WebSchedulingPriority priority) { if (web_scheduling_priority_ == priority)
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h index 680bdf9a..181d827 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
@@ -441,9 +441,6 @@ return task_queue_->CreateTaskRunner(static_cast<int>(task_type)); } - void SetNetRequestPriority(net::RequestPriority net_request_priority); - absl::optional<net::RequestPriority> net_request_priority() const; - void SetWebSchedulingPriority(WebSchedulingPriority priority); absl::optional<WebSchedulingPriority> web_scheduling_priority() const; @@ -551,13 +548,6 @@ const QueueType queue_type_; const QueueTraits queue_traits_; - // Warning: net_request_priority is not the same as the priority of the queue. - // It is the priority (at the loading stack level) of the resource associated - // to the queue, if one exists. - // - // Used to track UMA metrics for resource loading tasks split by net priority. - absl::optional<net::RequestPriority> net_request_priority_; - // |web_scheduling_priority_| is the priority of the task queue within the web // scheduling API. This priority is used in conjunction with the frame // scheduling policy to determine the task queue priority.
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/resource_loading_task_runner_handle_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/resource_loading_task_runner_handle_impl.cc index cd13980..7cff2243 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/resource_loading_task_runner_handle_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/resource_loading_task_runner_handle_impl.cc
@@ -34,7 +34,6 @@ void ResourceLoadingTaskRunnerHandleImpl::DidChangeRequestPriority( net::RequestPriority priority) { - task_queue_->SetNetRequestPriority(priority); FrameSchedulerImpl* frame_scheduler = task_queue_->GetFrameScheduler(); if (frame_scheduler) { frame_scheduler->DidChangeResourceLoadingPriority(task_queue_, priority);
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/mac.py b/third_party/blink/tools/blinkpy/web_tests/port/mac.py index 9eb6270..3939cbbb 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/mac.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/mac.py
@@ -120,9 +120,7 @@ def default_smoke_test_only(self): # only run platform specific tests on older mac versions - if self.host.platform.os_version in ['mac10.13', 'mac10.14']: - return True - return False + return self._version in {'mac10.13', 'mac10.14'} def path_to_smoke_tests_file(self): return self._filesystem.join(self.web_tests_dir(), 'SmokeTests',
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/mac_unittest.py b/third_party/blink/tools/blinkpy/web_tests/port/mac_unittest.py index b93e421..683dddc 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/mac_unittest.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/mac_unittest.py
@@ -28,6 +28,7 @@ import optparse +from blinkpy.common.system.platform_info_mock import MockPlatformInfo from blinkpy.web_tests.port import mac from blinkpy.web_tests.port import port_testcase @@ -87,3 +88,20 @@ port.path_to_apache_config_file(), '/mock-checkout/third_party/blink/tools/apache_config/apache2-httpd-2.4-php7.conf' ) + + def test_default_smoke_test_only(self): + """Verify that older Mac versions run only smoke tests by default. + + The smoke test default should not depend on the current host's platform. + """ + port = self.make_port(os_version='mac11') + self.assertFalse(port.default_smoke_test_only()) + all_tests_platform = MockPlatformInfo('mac', 'mac11') + + port = self.make_port(os_version='mac10.13') + port.host.platform = all_tests_platform + self.assertTrue(port.default_smoke_test_only()) + + port = self.make_port(os_version='mac10.14') + port.host.platform = all_tests_platform + self.assertTrue(port.default_smoke_test_only())
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 023a44f..a4e2af8 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1898,6 +1898,8 @@ crbug.com/1068610 external/wpt/css/css-color/a98rgb-004.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/lab-008.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/lch-008.html [ Failure ] +crbug.com/1068610 external/wpt/css/css-color/lch-009.html [ Failure ] +crbug.com/1068610 external/wpt/css/css-color/lch-010.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/prophoto-rgb-001.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/prophoto-rgb-002.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/prophoto-rgb-003.html [ Failure ] @@ -1915,7 +1917,6 @@ crbug.com/1068610 external/wpt/css/css-color/xyz-005.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/color-mix-basic-001.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/color-mix-non-srgb-001.html [ Failure ] -crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/color-mix-basic-001.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/tagged-images-003.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/tagged-images-004.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/color-mix-percents-01.html [ Failure ] @@ -1942,6 +1943,8 @@ crbug.com/1068610 external/wpt/css/css-color/oklch-006.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/oklch-007.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/oklch-008.html [ Failure ] +crbug.com/1068610 external/wpt/css/css-color/oklch-009.html [ Failure ] +crbug.com/1068610 external/wpt/css/css-color/oklch-010.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/srgb-linear-001.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/srgb-linear-002.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/srgb-linear-003.html [ Failure ] @@ -1965,7 +1968,12 @@ crbug.com/1068610 [ Linux ] external/wpt/css/css-color/t425-hsla-onscreen-b.xht [ Failure ] crbug.com/1068610 external/wpt/css/css-color/at-color-profile-001.html [ Failure ] crbug.com/1068610 external/wpt/css/css-color/color-mix-currentcolor-001.html [ Failure ] +crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/color-mix-basic-001.html [ Failure ] crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/color-mix-currentcolor-001.html [ Failure ] +crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] +crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] +crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] +crbug.com/1068610 virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] crbug.com/1299585 [ Mac11 ] external/wpt/css/css-color-adjust/inheritance.html [ Failure ] crbug.com/1299585 external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-iframe-background-mismatch-opaque-cross-origin.sub.html [ Failure Pass ] @@ -3356,62 +3364,6 @@ crbug.com/626703 [ Mac11 ] virtual/conversions-debug-mode/wpt_internal/attribution-reporting/simple-event-level-report-test.sub.https.html [ Timeout ] crbug.com/626703 [ Mac11 ] virtual/conversions-debug-mode/wpt_internal/attribution-reporting/simple-aggregatable-report-test.sub.https.html [ Timeout ] crbug.com/626703 [ Linux ] external/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.worker.html [ Crash Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac11 ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac12 ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac11 ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac12 ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac11 ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac12 ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac11 ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac12 ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Win ] external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac11 ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac12 ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Win ] virtual/system-color-compute/external/wpt/css/css-color/lch-009.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac11 ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac12 ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Win ] virtual/system-color-compute/external/wpt/css/css-color/lch-010.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac11 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac12 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Win ] virtual/system-color-compute/external/wpt/css/css-color/oklch-009.html [ Failure ] -crbug.com/626703 [ Linux ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac10.15 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac11 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac11-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac12 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Mac12-arm64 ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] -crbug.com/626703 [ Win ] virtual/system-color-compute/external/wpt/css/css-color/oklch-010.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/service-workers/cache-storage/crashtests/cache-response-clone.https.html [ Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/service-workers/cache-storage/crashtests/cache-response-clone.https.html [ Timeout ] crbug.com/626703 [ Mac11 ] external/wpt/service-workers/cache-storage/crashtests/cache-response-clone.https.html [ Timeout ] @@ -4667,7 +4619,8 @@ crbug.com/849978 http/tests/devtools/elements/styles-4/stylesheet-source-url-comment.js [ Failure Pass Timeout ] # User Activation -crbug.com/1066190 external/wpt/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html [ Failure Timeout ] +crbug.com/736415 crbug.com/1066190 external/wpt/html/user-activation/navigation-state-reset-crossorigin.sub.tentative.html [ Failure Timeout ] +crbug.com/736415 external/wpt/html/user-activation/navigation-state-reset-sameorigin.tentative.html [ Failure ] # S13N Sheriff 2018-7-11 crbug.com/862643 http/tests/serviceworker/navigation_preload/use-counter.html [ Failure Pass ] @@ -7087,3 +7040,6 @@ # Temporarily disable test to merge DevTools top layer support crbug.com/1313690 http/tests/devtools/elements/iframe-load-event.js [ Skip ] + +# Temporarily disable to land DOMStorage changes +crbug.com/1337796 http/tests/devtools/debugger/stop-on-debugger-from-detached-iframe.js [ Skip ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/crashtests/nested-spanner-with-negative-margin.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/crashtests/nested-spanner-with-negative-margin.html new file mode 100644 index 0000000..3a9b2e3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/crashtests/nested-spanner-with-negative-margin.html
@@ -0,0 +1,10 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1321365"> +<div style="columns:2; column-fill:auto; height:20px;"> + <div style="height:20px;"></div> + <div style="columns:1;"> + <div style="column-span:all; margin-bottom:-3px;"></div> + <div style="height:10px;"></div> + </div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/has-error-recovery.html b/third_party/blink/web_tests/external/wpt/css/selectors/has-error-recovery.html index 143638c..b435d8c 100644 --- a/third_party/blink/web_tests/external/wpt/css/selectors/has-error-recovery.html +++ b/third_party/blink/web_tests/external/wpt/css/selectors/has-error-recovery.html
@@ -35,14 +35,14 @@ ); assert_equals(document.querySelector(emptyList), null, "Should never match, but should parse"); for (let mixedList of [ - `:has(:total-nonsense, #test-descendant)`, - `:has(:total-nonsense and-more-stuff, #test-descendant)`, - `:has(weird-token || and-more-stuff, #test-descendant)`, + `:has(:total-nonsense, > #test-descendant)`, + `:has(:total-nonsense and-more-stuff, > #test-descendant)`, + `:has(weird-token || and-more-stuff, > #test-descendant)`, ]) { rule.selectorText = mixedList; assert_equals( rule.selectorText, - `:has(#test-descendant)`, + `:has(> #test-descendant)`, `${mixedList}: Should ignore invalid selectors`, ); let testDiv = document.getElementById("test-div");
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.tentative.html b/third_party/blink/web_tests/external/wpt/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.tentative.html rename to third_party/blink/web_tests/external/wpt/css/selectors/parsing/parse-has-disallow-nesting-has-inside-has.html
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/selectors/has-error-recovery-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/selectors/has-error-recovery-expected.txt deleted file mode 100644 index 6fba3e49..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/selectors/has-error-recovery-expected.txt +++ /dev/null
@@ -1,6 +0,0 @@ -This is a testharness.js-based test. -FAIL CSS Selectors: :has() error recovery assert_equals: Should correctly match expected Element node <div id="test-div"> - <div id="test-descendant"> - </div>... but got Element node <html><head><title>CSS Selectors: :has() error recovery</... -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/css/selectors/has-error-recovery-expected.txt b/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/css/selectors/has-error-recovery-expected.txt deleted file mode 100644 index 6fba3e49..0000000 --- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/css/selectors/has-error-recovery-expected.txt +++ /dev/null
@@ -1,6 +0,0 @@ -This is a testharness.js-based test. -FAIL CSS Selectors: :has() error recovery assert_equals: Should correctly match expected Element node <div id="test-div"> - <div id="test-descendant"> - </div>... but got Element node <html><head><title>CSS Selectors: :has() error recovery</... -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node.js b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node.js index 5d186ed..3a6c2100 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node.js +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node.js
@@ -3,6 +3,7 @@ <link rel='stylesheet' href='${testRunner.url('resources/set-active-property-value.css')}'/> <div id='parent-div' style='padding-top: 20px;'> <div id='inspected' style='padding-top: 55px; margin-top: 33px !important;'></div> + <div id='child-div'></div> </div>`, 'The test verifies functionality of protocol method CSS.getMatchedStylesForNode and CSS.getInlineStylesForNode.');
diff --git a/third_party/blink/web_tests/inspector-protocol/css/resources/set-active-property-value.css b/third_party/blink/web_tests/inspector-protocol/css/resources/set-active-property-value.css index 134abb03..6f2c6b0 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/resources/set-active-property-value.css +++ b/third_party/blink/web_tests/inspector-protocol/css/resources/set-active-property-value.css
@@ -44,3 +44,16 @@ } } } + + +@scope (html) { + #inspected { + color: red; + } +} + +@scope (html) to (.child-div) { + #inspected { + color: lightcyan; + } + } \ No newline at end of file
diff --git a/third_party/blink/web_tests/inspector-protocol/resources/css-helper.js b/third_party/blink/web_tests/inspector-protocol/resources/css-helper.js index 1538a81..9e44668e 100644 --- a/third_party/blink/web_tests/inspector-protocol/resources/css-helper.js +++ b/third_party/blink/web_tests/inspector-protocol/resources/css-helper.js
@@ -111,6 +111,13 @@ baseIndent += 4; } + const scopes = rule.scopes || []; + const scopesLine = scopes.map(s => s.text).join(' '); + if (scopesLine.length) { + this._indentLog(baseIndent, '@scope ' + scopesLine); + baseIndent += 4; + } + var selectorLine = ''; var selectors = rule.selectorList.selectors; for (var i = 0; i < selectors.length; ++i) {
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/has-error-recovery-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/has-error-recovery-expected.txt deleted file mode 100644 index 6fba3e49..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/css/selectors/has-error-recovery-expected.txt +++ /dev/null
@@ -1,6 +0,0 @@ -This is a testharness.js-based test. -FAIL CSS Selectors: :has() error recovery assert_equals: Should correctly match expected Element node <div id="test-div"> - <div id="test-descendant"> - </div>... but got Element node <html><head><title>CSS Selectors: :has() error recovery</... -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-get-styles-for-node-expected.txt b/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-get-styles-for-node-expected.txt index d5be31a..24e43b3 100644 --- a/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-get-styles-for-node-expected.txt +++ b/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-get-styles-for-node-expected.txt
@@ -60,6 +60,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } Dumping inherited rules: padding-top: 20px; @[0:0-0:18] padding-top: 20px; @[undefined-undefined]
diff --git a/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-set-effective-property-value-expected.txt b/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-set-effective-property-value-expected.txt index 80ca891..7447cbc 100644 --- a/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-set-effective-property-value-expected.txt +++ b/third_party/blink/web_tests/platform/generic/inspector-protocol/css/css-set-effective-property-value-expected.txt
@@ -41,6 +41,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } Dumping inherited rules: @layer base.nested *body* { regular @@ -89,6 +99,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -136,6 +156,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -183,6 +213,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -230,6 +270,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -277,6 +327,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -326,6 +386,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36] @@ -399,6 +469,16 @@ display: grid; @[32:8-32:22] display: grid; @[undefined-undefined] } +@scope (html) + *#inspected* { regular + color: red; @[50:8-50:19] + color: red; @[undefined-undefined] + } +@scope (html) to (.child-div) + *#inspected* { regular + color: lightcyan; @[56:6-56:23] + color: lightcyan; @[undefined-undefined] + } @layer base.nested *body* { regular background-color: green; @[42:12-42:36]
diff --git a/third_party/blink/web_tests/platform/generic/virtual/document-transition/inspector-protocol/css/css-get-styles-for-document-transition-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/document-transition/inspector-protocol/css/css-get-styles-for-document-transition-expected.txt index 8bddc6e4..1213a3a 100644 --- a/third_party/blink/web_tests/platform/generic/virtual/document-transition/inspector-protocol/css/css-get-styles-for-document-transition-expected.txt +++ b/third_party/blink/web_tests/platform/generic/virtual/document-transition/inspector-protocol/css/css-get-styles-for-document-transition-expected.txt
@@ -35,6 +35,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -78,6 +80,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -137,6 +141,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -187,6 +193,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -231,6 +239,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -281,6 +291,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -327,6 +339,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -403,6 +417,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -467,6 +483,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -531,6 +549,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -588,6 +608,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -658,6 +680,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -766,6 +790,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -823,6 +849,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -893,6 +921,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1001,6 +1031,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1058,6 +1090,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1134,6 +1168,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1191,6 +1227,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1261,6 +1299,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1335,6 +1375,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1397,6 +1439,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1447,6 +1491,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1493,6 +1539,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1559,6 +1607,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1616,6 +1666,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1686,6 +1738,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1796,6 +1850,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1853,6 +1909,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1931,6 +1989,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -1981,6 +2041,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2027,6 +2089,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2105,6 +2169,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2171,6 +2237,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2228,6 +2296,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2298,6 +2368,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2408,6 +2480,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2465,6 +2539,8 @@ media : [ ] origin : user-agent + scopes : [ + ] selectorList : { selectors : [ [0] : { @@ -2535,6 +2611,8 @@ media : [ ] origin : regular + scopes : [ + ] selectorList : { selectors : [ [0] : {
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/background-sync.https.html b/third_party/blink/web_tests/wpt_internal/fenced_frame/background-sync.https.html index 3388f08..72eb447 100644 --- a/third_party/blink/web_tests/wpt_internal/fenced_frame/background-sync.https.html +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/background-sync.https.html
@@ -6,32 +6,213 @@ <script src="/common/get-host-info.sub.js"></script> <script src="/common/utils.js"></script> <body> - <script> const background_sync_register_key = token(); +const fenced_frame_url = 'resources/background-sync-inner.https.html'; +const fenced_frame_url_for_service_worker_test = + 'resources/background-sync-sw-inner.https.html'; -async function test(url, message) { +const generateFencedFrameUrl = (params, is_worker_test = false) => { + const searchParams = new URLSearchParams(params); + const frame_url = is_worker_test ? + fenced_frame_url_for_service_worker_test : fenced_frame_url; + + return generateURL(`${frame_url}?${searchParams.toString()}`, + [background_sync_register_key]); +}; + +async function background_sync_test(url, expected_text, message) { attachFencedFrame(url) // Get the result for the top-level fenced frame. const fenced_frame_result = await nextValueFromServer(background_sync_register_key); - assert_equals(fenced_frame_result, 'failed', message); -} + assert_equals(fenced_frame_result, expected_text, message); +}; + +const background_sync_message = + "Background Sync is not allowed in fenced frames."; +const periodic_background_sync_message = + "Periodic Background Sync is not allowed in fenced frames."; promise_test(async (t) => { - const fencedFrameUrl = - generateURL('resources/background-sync-inner.https.html', - [background_sync_register_key]); - await test( - fencedFrameUrl, - 'background sync registration is disallowed inside a same-origin fenced frame'); + const method = 'register'; + const frame_url = generateFencedFrameUrl({method}); + const expected_message = "Failed to execute 'register' on 'SyncManager': " + + background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'register() is disallowed inside a same-origin fenced frame'); - const CROSS_ORIGIN_DESTINATION = getRemoteOriginURL(fencedFrameUrl); - await test( - CROSS_ORIGIN_DESTINATION, - 'background sync registration is disallowed inside a cross-origin fenced frame'); -}, 'navigator.serviceWorker.register'); + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'register() is disallowed inside a cross-origin fenced frame'); +}, 'background sync register'); + +promise_test(async (t) => { + const method = 'getTags'; + const frame_url = generateFencedFrameUrl({method}); + const expected_message = background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'getTags() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'getTags() is disallowed inside a cross-origin fenced frame'); +}, 'background sync getTags'); + +promise_test(async (t) => { + const method = 'register'; + const frame_url = generateFencedFrameUrl({method}, true); + const expected_message = "Failed to execute 'register' on 'SyncManager': " + + background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'register() is disallowed inside a same-origin fenced frame'); + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'register() is disallowed inside a cross-origin fenced frame'); +}, 'background sync register in service worker'); + +promise_test(async (t) => { + const method = 'getTags'; + const frame_url = generateFencedFrameUrl({method}, true); + const expected_message = background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'getTags() is disallowed inside a same-origin fenced frame'); + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'getTags() is disallowed inside a cross-origin fenced frame'); +}, 'background sync getTags in service worker'); + +promise_test(async (t) => { + const params = { + method: 'register', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params) + const expected_message = "Failed to execute 'register' on " + + "'PeriodicSyncManager': " + periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'register() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'register() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync register'); + +promise_test(async (t) => { + const params = { + method: 'getTags', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params) + const expected_message = periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'getTags() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'getTags() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync getTags'); + +promise_test(async (t) => { + const params = { + method: 'unregister', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params) + const expected_message = periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'unregister() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'unregister() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync unregister'); + +promise_test(async (t) => { + const params = { + method: 'register', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params, true) + const expected_message = "Failed to execute 'register' on " + + "'PeriodicSyncManager': " + periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'register() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'register() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync register in service worker'); + +promise_test(async (t) => { + const params = { + method: 'getTags', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params, true) + const expected_message = periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'getTags() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'getTags() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync getTags in service worker'); + +promise_test(async (t) => { + const params = { + method: 'unregister', + periodic: true + }; + const frame_url = generateFencedFrameUrl(params, true) + const expected_message = periodic_background_sync_message; + await background_sync_test( + frame_url, + expected_message, + 'unregister() is disallowed inside a same-origin fenced frame'); + + const cross_origin_frame_url = getRemoteOriginURL(frame_url); + await background_sync_test( + cross_origin_frame_url, + expected_message, + 'unregister() is disallowed inside a cross-origin fenced frame'); +}, 'periodic sync unregister in service worker'); </script> - </body>
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-helper.js b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-helper.js new file mode 100644 index 0000000..78b69f15 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-helper.js
@@ -0,0 +1,23 @@ +const getOneShotSyncPromise = (registration, method) => { + if (method === 'register') { + return registration.sync.register('fencedframe-oneshot'); + } else if (method === 'getTags') { + return registration.sync.getTags(); + } + return Promise.resolve(); +}; + +const getPeriodicSyncPromise = (registration, method) => { + if (method === 'register') { + return registration.periodicSync.register( + 'fencedframe-periodic', {minInterval: 1000}); + } else if (method === 'getTags') { + return registration.periodicSync.getTags(); + } else if (method === 'unregister') { + return registration.periodicSync.unregister('fencedframe-periodic'); + } else { + return Promise.resolve(); + } +}; + +export {getOneShotSyncPromise, getPeriodicSyncPromise}
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-inner.https.html b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-inner.https.html index 0a96e40..81974c80 100644 --- a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-inner.https.html +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-inner.https.html
@@ -5,24 +5,28 @@ <title>Fenced frame content to report the result of background sync's register</title> <body> -<script> -(async function() { +<script type="module"> + import {getOneShotSyncPromise, getPeriodicSyncPromise} from './background-sync-helper.js'; + const [background_sync_register_key] = parseKeylist(); + const searchParams = new URL(location.href).searchParams; + const method = searchParams.get('method'); + const periodic = searchParams.get('periodic'); navigator.serviceWorker.register("empty-worker.js", { scope: location.href }); const registration = await navigator.serviceWorker.ready; - // This test verifies that one-shot syncs can not be registered from a - // fenced frame. - registration.sync.register('fencedframe-oneshot').then(() => { + try { + if (periodic) { + await getPeriodicSyncPromise(registration, method); + } else { + await getOneShotSyncPromise(registration, method); + } writeValueToServer(background_sync_register_key, "unexpectedly registered"); - }) - .catch((e) => { - writeValueToServer(background_sync_register_key, "failed"); - }) - .finally(() => { + } catch (e) { + writeValueToServer(background_sync_register_key, e.message); + } finally { registration.unregister(); - }); -})(); + } </script> </body>
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html new file mode 100644 index 0000000..b9521a4 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="utils.js"></script> +<title>Fenced frame content to report the result of background sync's register in SW</title> + +<body> +<script type="module"> + const [background_sync_register_key] = parseKeylist(); + const searchParams = new URL(location.href).searchParams; + const method = searchParams.get('method'); + const isPeriodic = searchParams.get('periodic'); + + const getController = () => { + if (navigator.serviceWorker.controller) { + return navigator.serviceWorker.controller; + } + return new Promise(resolve => { + navigator.serviceWorker.addEventListener('controllerchange', () => { + resolve(navigator.serviceWorker.controller); + }); + }); + }; + + const sendMessageToServiceWorker = async () => { + const ctrl = await getController(); + return new Promise(resolve => { + ctrl.postMessage({method, isPeriodic}); + navigator.serviceWorker.onmessage = e => { + resolve(e.data); + } + }); + }; + + await navigator.serviceWorker.register( + "background-sync-sw.js", { scope: location.href, type: "module" }); + const data = await sendMessageToServiceWorker(); + + writeValueToServer(background_sync_register_key, data); +</script> +</body>
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html.headers b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html.headers new file mode 100644 index 0000000..6247f6d --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw-inner.https.html.headers
@@ -0,0 +1 @@ +Supports-Loading-Mode: fenced-frame \ No newline at end of file
diff --git a/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw.js b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw.js new file mode 100644 index 0000000..5b0c791 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/fenced_frame/resources/background-sync-sw.js
@@ -0,0 +1,21 @@ +import {getOneShotSyncPromise, getPeriodicSyncPromise} from './background-sync-helper.js'; + +self.addEventListener('install', e => e.waitUntil(skipWaiting())); +self.addEventListener('activate', e => e.waitUntil(clients.claim())); + +self.addEventListener('message', async e => { + const {method, isPeriodic} = e.data; + const promise = isPeriodic ? + getPeriodicSyncPromise(self.registration, method) : + getOneShotSyncPromise(self.registration, method); + const message = + await promise + .then(() => { + return `[background synnc ${method}] Unexpectedly started`; + }) + .catch((e) => { + return e.message; + }); + + e.source.postMessage(message); +});
diff --git a/third_party/closure_compiler/externs/terminal_private.js b/third_party/closure_compiler/externs/terminal_private.js index a216c49..aa89101 100644 --- a/third_party/closure_compiler/externs/terminal_private.js +++ b/third_party/closure_compiler/externs/terminal_private.js
@@ -111,7 +111,6 @@ * Returns an object containing info about ChromeOS settings that affect the * Terminal, e.g. which feature flags are enabled. * @param {function({ - * alternative_renderer: boolean, * multi_profile: boolean, * tmux_integration: boolean * }): void} callback Callback that will be called with the info object.
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index 2d99848..f047d65 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-12-1-28-g47103b2f1 -Revision: 47103b2f195e0f9664c9470182f063cb7d41dc9f +Version: VER-2-12-1-30-g4b6f92e6b +Revision: 4b6f92e6b3d0d99a839448bc897673b849981997 CPEPrefix: cpe:/a:freetype:freetype:2.11.1 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/third_party/protobuf/BUILD.gn b/third_party/protobuf/BUILD.gn index 027ec2b1..3acf4033 100644 --- a/third_party/protobuf/BUILD.gn +++ b/third_party/protobuf/BUILD.gn
@@ -6,6 +6,7 @@ # Includes default args like 'enable_js_protobuf'. import("proto_library.gni") +import("proto_sources.gni") if (enable_js_protobuf) { import("//third_party/closure_compiler/compile_js.gni") } @@ -58,86 +59,6 @@ } } -protobuf_lite_sources = [ - "src/google/protobuf/any_lite.cc", - "src/google/protobuf/arena.cc", - "src/google/protobuf/arena.h", - "src/google/protobuf/arena_impl.h", - "src/google/protobuf/arenastring.cc", - "src/google/protobuf/arenastring.h", - "src/google/protobuf/extension_set.cc", - "src/google/protobuf/extension_set.h", - "src/google/protobuf/generated_enum_util.cc", - "src/google/protobuf/generated_enum_util.h", - "src/google/protobuf/generated_message_table_driven_lite.cc", - "src/google/protobuf/generated_message_table_driven_lite.h", - "src/google/protobuf/generated_message_util.cc", - "src/google/protobuf/generated_message_util.h", - "src/google/protobuf/has_bits.h", - "src/google/protobuf/implicit_weak_message.cc", - "src/google/protobuf/implicit_weak_message.h", - "src/google/protobuf/inlined_string_field.h", - "src/google/protobuf/io/coded_stream.cc", - "src/google/protobuf/io/coded_stream.h", - "src/google/protobuf/io/io_win32.cc", - "src/google/protobuf/io/io_win32.h", - "src/google/protobuf/io/strtod.cc", - "src/google/protobuf/io/strtod.h", - "src/google/protobuf/io/zero_copy_stream.cc", - "src/google/protobuf/io/zero_copy_stream.h", - "src/google/protobuf/io/zero_copy_stream_impl.cc", - "src/google/protobuf/io/zero_copy_stream_impl.h", - "src/google/protobuf/io/zero_copy_stream_impl_lite.cc", - "src/google/protobuf/io/zero_copy_stream_impl_lite.h", - "src/google/protobuf/map.cc", - "src/google/protobuf/map.h", - "src/google/protobuf/map_entry_lite.h", - "src/google/protobuf/map_field_lite.h", - "src/google/protobuf/map_type_handler.h", - "src/google/protobuf/message_lite.cc", - "src/google/protobuf/message_lite.h", - "src/google/protobuf/parse_context.cc", - "src/google/protobuf/parse_context.h", - "src/google/protobuf/repeated_field.cc", - "src/google/protobuf/repeated_field.h", - "src/google/protobuf/stubs/bytestream.cc", - "src/google/protobuf/stubs/bytestream.h", - "src/google/protobuf/stubs/callback.h", - "src/google/protobuf/stubs/casts.h", - "src/google/protobuf/stubs/common.cc", - "src/google/protobuf/stubs/common.h", - "src/google/protobuf/stubs/fastmem.h", - "src/google/protobuf/stubs/hash.h", - "src/google/protobuf/stubs/int128.cc", - "src/google/protobuf/stubs/int128.h", - "src/google/protobuf/stubs/logging.h", - "src/google/protobuf/stubs/macros.h", - "src/google/protobuf/stubs/map_util.h", - "src/google/protobuf/stubs/mutex.h", - "src/google/protobuf/stubs/once.h", - "src/google/protobuf/stubs/platform_macros.h", - "src/google/protobuf/stubs/port.h", - "src/google/protobuf/stubs/status.cc", - "src/google/protobuf/stubs/status.h", - "src/google/protobuf/stubs/status_macros.h", - "src/google/protobuf/stubs/statusor.cc", - "src/google/protobuf/stubs/statusor.h", - "src/google/protobuf/stubs/stl_util.h", - "src/google/protobuf/stubs/stringpiece.cc", - "src/google/protobuf/stubs/stringpiece.h", - "src/google/protobuf/stubs/stringprintf.cc", - "src/google/protobuf/stubs/stringprintf.h", - "src/google/protobuf/stubs/structurally_valid.cc", - "src/google/protobuf/stubs/strutil.cc", - "src/google/protobuf/stubs/strutil.h", - "src/google/protobuf/stubs/template_util.h", - "src/google/protobuf/stubs/time.cc", - "src/google/protobuf/stubs/time.h", - "src/google/protobuf/util/time_util.h", - "src/google/protobuf/wire_format_lite.cc", - "src/google/protobuf/wire_format_lite.h", -] - protobuf_lite_cflags = [] if (is_win) { protobuf_lite_cflags = [ @@ -172,7 +93,7 @@ } component("protobuf_lite") { - sources = protobuf_lite_sources + sources = protobuf_lite_sources + protobuf_headers configs -= [ "//build/config/compiler:chromium_code" ] configs += [ @@ -273,121 +194,9 @@ "//third_party/cast_core/public/src/build/chromium:cast_core_grpc_generator", ] - sources = protobuf_lite_sources + [ - "src/google/protobuf/any.cc", - "src/google/protobuf/any.h", - "src/google/protobuf/any.pb.cc", - "src/google/protobuf/any.pb.h", - "src/google/protobuf/api.pb.cc", - "src/google/protobuf/api.pb.h", - "src/google/protobuf/compiler/importer.cc", - "src/google/protobuf/compiler/importer.h", - "src/google/protobuf/compiler/parser.cc", - "src/google/protobuf/compiler/parser.h", - "src/google/protobuf/descriptor.cc", - "src/google/protobuf/descriptor.h", - "src/google/protobuf/descriptor.pb.cc", - "src/google/protobuf/descriptor.pb.h", - "src/google/protobuf/descriptor_database.cc", - "src/google/protobuf/descriptor_database.h", - "src/google/protobuf/duration.pb.cc", - "src/google/protobuf/duration.pb.h", - "src/google/protobuf/dynamic_message.cc", - "src/google/protobuf/dynamic_message.h", - "src/google/protobuf/empty.pb.cc", - "src/google/protobuf/empty.pb.h", - "src/google/protobuf/extension_set_heavy.cc", - "src/google/protobuf/field_mask.pb.cc", - "src/google/protobuf/field_mask.pb.h", - "src/google/protobuf/generated_enum_reflection.h", - "src/google/protobuf/generated_message_reflection.cc", - "src/google/protobuf/generated_message_reflection.h", - "src/google/protobuf/io/gzip_stream.cc", - "src/google/protobuf/io/gzip_stream.h", - "src/google/protobuf/io/printer.cc", - "src/google/protobuf/io/printer.h", - "src/google/protobuf/io/tokenizer.cc", - "src/google/protobuf/io/tokenizer.h", - "src/google/protobuf/map_entry.h", - "src/google/protobuf/map_field.cc", - "src/google/protobuf/map_field.h", - "src/google/protobuf/map_field_inl.h", - "src/google/protobuf/message.cc", - "src/google/protobuf/message.h", - "src/google/protobuf/metadata.h", - "src/google/protobuf/reflection.h", - "src/google/protobuf/reflection_internal.h", - "src/google/protobuf/reflection_ops.cc", - "src/google/protobuf/reflection_ops.h", - "src/google/protobuf/service.cc", - "src/google/protobuf/service.h", - "src/google/protobuf/source_context.pb.cc", - "src/google/protobuf/source_context.pb.h", - "src/google/protobuf/struct.pb.cc", - "src/google/protobuf/struct.pb.h", - "src/google/protobuf/stubs/mathutil.h", - "src/google/protobuf/stubs/substitute.cc", - "src/google/protobuf/stubs/substitute.h", - "src/google/protobuf/text_format.cc", - "src/google/protobuf/text_format.h", - "src/google/protobuf/timestamp.pb.cc", - "src/google/protobuf/timestamp.pb.h", - "src/google/protobuf/type.pb.cc", - "src/google/protobuf/type.pb.h", - "src/google/protobuf/unknown_field_set.cc", - "src/google/protobuf/unknown_field_set.h", - "src/google/protobuf/util/delimited_message_util.cc", - "src/google/protobuf/util/delimited_message_util.h", - "src/google/protobuf/util/field_comparator.cc", - "src/google/protobuf/util/field_comparator.h", - "src/google/protobuf/util/field_mask_util.cc", - "src/google/protobuf/util/field_mask_util.h", - "src/google/protobuf/util/internal/constants.h", - "src/google/protobuf/util/internal/datapiece.cc", - "src/google/protobuf/util/internal/datapiece.h", - "src/google/protobuf/util/internal/default_value_objectwriter.cc", - "src/google/protobuf/util/internal/default_value_objectwriter.h", - "src/google/protobuf/util/internal/error_listener.cc", - "src/google/protobuf/util/internal/error_listener.h", - "src/google/protobuf/util/internal/field_mask_utility.cc", - "src/google/protobuf/util/internal/field_mask_utility.h", - "src/google/protobuf/util/internal/json_escaping.cc", - "src/google/protobuf/util/internal/json_escaping.h", - "src/google/protobuf/util/internal/json_objectwriter.cc", - "src/google/protobuf/util/internal/json_objectwriter.h", - "src/google/protobuf/util/internal/json_stream_parser.cc", - "src/google/protobuf/util/internal/json_stream_parser.h", - "src/google/protobuf/util/internal/location_tracker.h", - "src/google/protobuf/util/internal/object_location_tracker.h", - "src/google/protobuf/util/internal/object_source.h", - "src/google/protobuf/util/internal/object_writer.cc", - "src/google/protobuf/util/internal/object_writer.h", - "src/google/protobuf/util/internal/proto_writer.cc", - "src/google/protobuf/util/internal/proto_writer.h", - "src/google/protobuf/util/internal/protostream_objectsource.cc", - "src/google/protobuf/util/internal/protostream_objectsource.h", - "src/google/protobuf/util/internal/protostream_objectwriter.cc", - "src/google/protobuf/util/internal/protostream_objectwriter.h", - "src/google/protobuf/util/internal/structured_objectwriter.h", - "src/google/protobuf/util/internal/type_info.cc", - "src/google/protobuf/util/internal/type_info.h", - "src/google/protobuf/util/internal/type_info_test_helper.cc", - "src/google/protobuf/util/internal/type_info_test_helper.h", - "src/google/protobuf/util/internal/utility.cc", - "src/google/protobuf/util/internal/utility.h", - "src/google/protobuf/util/json_util.cc", - "src/google/protobuf/util/json_util.h", - "src/google/protobuf/util/message_differencer.cc", - "src/google/protobuf/util/message_differencer.h", - "src/google/protobuf/util/time_util.cc", - "src/google/protobuf/util/type_resolver.h", - "src/google/protobuf/util/type_resolver_util.cc", - "src/google/protobuf/util/type_resolver_util.h", - "src/google/protobuf/wire_format.cc", - "src/google/protobuf/wire_format.h", - "src/google/protobuf/wrappers.pb.cc", - "src/google/protobuf/wrappers.pb.h", - ] + # TODO(crbug.com/1338164): This ends up linking two copies of + # protobuf_lite_sources in some targets, which is an ODR violation. + sources = protobuf_lite_sources + protobuf_sources + protobuf_headers deps = [ "//third_party/zlib" ] @@ -426,174 +235,7 @@ # support protoc plugins that need to link libprotoc, but not the main() # itself. See src/google/protobuf/compiler/plugin.h static_library("protoc_lib") { - sources = [ - "src/google/protobuf/compiler/code_generator.cc", - "src/google/protobuf/compiler/code_generator.h", - "src/google/protobuf/compiler/command_line_interface.cc", - "src/google/protobuf/compiler/command_line_interface.h", - "src/google/protobuf/compiler/cpp/cpp_enum.cc", - "src/google/protobuf/compiler/cpp/cpp_enum.h", - "src/google/protobuf/compiler/cpp/cpp_enum_field.cc", - "src/google/protobuf/compiler/cpp/cpp_enum_field.h", - "src/google/protobuf/compiler/cpp/cpp_extension.cc", - "src/google/protobuf/compiler/cpp/cpp_extension.h", - "src/google/protobuf/compiler/cpp/cpp_field.cc", - "src/google/protobuf/compiler/cpp/cpp_field.h", - "src/google/protobuf/compiler/cpp/cpp_file.cc", - "src/google/protobuf/compiler/cpp/cpp_file.h", - "src/google/protobuf/compiler/cpp/cpp_generator.cc", - "src/google/protobuf/compiler/cpp/cpp_generator.h", - "src/google/protobuf/compiler/cpp/cpp_helpers.cc", - "src/google/protobuf/compiler/cpp/cpp_helpers.h", - "src/google/protobuf/compiler/cpp/cpp_map_field.cc", - "src/google/protobuf/compiler/cpp/cpp_map_field.h", - "src/google/protobuf/compiler/cpp/cpp_message.cc", - "src/google/protobuf/compiler/cpp/cpp_message.h", - "src/google/protobuf/compiler/cpp/cpp_message_field.cc", - "src/google/protobuf/compiler/cpp/cpp_message_field.h", - "src/google/protobuf/compiler/cpp/cpp_message_layout_helper.h", - "src/google/protobuf/compiler/cpp/cpp_options.h", - "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc", - "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.h", - "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc", - "src/google/protobuf/compiler/cpp/cpp_primitive_field.h", - "src/google/protobuf/compiler/cpp/cpp_service.cc", - "src/google/protobuf/compiler/cpp/cpp_service.h", - "src/google/protobuf/compiler/cpp/cpp_string_field.cc", - "src/google/protobuf/compiler/cpp/cpp_string_field.h", - "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", - "src/google/protobuf/compiler/csharp/csharp_doc_comment.h", - "src/google/protobuf/compiler/csharp/csharp_enum.cc", - "src/google/protobuf/compiler/csharp/csharp_enum.h", - "src/google/protobuf/compiler/csharp/csharp_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_enum_field.h", - "src/google/protobuf/compiler/csharp/csharp_field_base.cc", - "src/google/protobuf/compiler/csharp/csharp_field_base.h", - "src/google/protobuf/compiler/csharp/csharp_generator.cc", - "src/google/protobuf/compiler/csharp/csharp_generator.h", - "src/google/protobuf/compiler/csharp/csharp_helpers.cc", - "src/google/protobuf/compiler/csharp/csharp_helpers.h", - "src/google/protobuf/compiler/csharp/csharp_map_field.cc", - "src/google/protobuf/compiler/csharp/csharp_map_field.h", - "src/google/protobuf/compiler/csharp/csharp_message.cc", - "src/google/protobuf/compiler/csharp/csharp_message.h", - "src/google/protobuf/compiler/csharp/csharp_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_message_field.h", - "src/google/protobuf/compiler/csharp/csharp_options.h", - "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_primitive_field.h", - "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", - "src/google/protobuf/compiler/csharp/csharp_reflection_class.h", - "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h", - "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h", - "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h", - "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", - "src/google/protobuf/compiler/csharp/csharp_source_generator_base.h", - "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", - "src/google/protobuf/compiler/csharp/csharp_wrapper_field.h", - "src/google/protobuf/compiler/java/java_context.cc", - "src/google/protobuf/compiler/java/java_context.h", - "src/google/protobuf/compiler/java/java_doc_comment.cc", - "src/google/protobuf/compiler/java/java_doc_comment.h", - "src/google/protobuf/compiler/java/java_enum.cc", - "src/google/protobuf/compiler/java/java_enum.h", - "src/google/protobuf/compiler/java/java_enum_field.cc", - "src/google/protobuf/compiler/java/java_enum_field.h", - "src/google/protobuf/compiler/java/java_enum_field_lite.cc", - "src/google/protobuf/compiler/java/java_enum_field_lite.h", - "src/google/protobuf/compiler/java/java_enum_lite.cc", - "src/google/protobuf/compiler/java/java_enum_lite.h", - "src/google/protobuf/compiler/java/java_extension.cc", - "src/google/protobuf/compiler/java/java_extension.h", - "src/google/protobuf/compiler/java/java_extension_lite.cc", - "src/google/protobuf/compiler/java/java_extension_lite.h", - "src/google/protobuf/compiler/java/java_field.cc", - "src/google/protobuf/compiler/java/java_field.h", - "src/google/protobuf/compiler/java/java_file.cc", - "src/google/protobuf/compiler/java/java_file.h", - "src/google/protobuf/compiler/java/java_generator.cc", - "src/google/protobuf/compiler/java/java_generator.h", - "src/google/protobuf/compiler/java/java_generator_factory.cc", - "src/google/protobuf/compiler/java/java_generator_factory.h", - "src/google/protobuf/compiler/java/java_helpers.cc", - "src/google/protobuf/compiler/java/java_helpers.h", - "src/google/protobuf/compiler/java/java_map_field.cc", - "src/google/protobuf/compiler/java/java_map_field.h", - "src/google/protobuf/compiler/java/java_map_field_lite.cc", - "src/google/protobuf/compiler/java/java_map_field_lite.h", - "src/google/protobuf/compiler/java/java_message.cc", - "src/google/protobuf/compiler/java/java_message.h", - "src/google/protobuf/compiler/java/java_message_builder.cc", - "src/google/protobuf/compiler/java/java_message_builder.h", - "src/google/protobuf/compiler/java/java_message_builder_lite.cc", - "src/google/protobuf/compiler/java/java_message_builder_lite.h", - "src/google/protobuf/compiler/java/java_message_field.cc", - "src/google/protobuf/compiler/java/java_message_field.h", - "src/google/protobuf/compiler/java/java_message_field_lite.cc", - "src/google/protobuf/compiler/java/java_message_field_lite.h", - "src/google/protobuf/compiler/java/java_message_lite.cc", - "src/google/protobuf/compiler/java/java_message_lite.h", - "src/google/protobuf/compiler/java/java_name_resolver.cc", - "src/google/protobuf/compiler/java/java_name_resolver.h", - "src/google/protobuf/compiler/java/java_options.h", - "src/google/protobuf/compiler/java/java_primitive_field.cc", - "src/google/protobuf/compiler/java/java_primitive_field.h", - "src/google/protobuf/compiler/java/java_primitive_field_lite.cc", - "src/google/protobuf/compiler/java/java_primitive_field_lite.h", - "src/google/protobuf/compiler/java/java_service.cc", - "src/google/protobuf/compiler/java/java_service.h", - "src/google/protobuf/compiler/java/java_shared_code_generator.cc", - "src/google/protobuf/compiler/java/java_shared_code_generator.h", - "src/google/protobuf/compiler/java/java_string_field.cc", - "src/google/protobuf/compiler/java/java_string_field.h", - "src/google/protobuf/compiler/java/java_string_field_lite.cc", - "src/google/protobuf/compiler/java/java_string_field_lite.h", - "src/google/protobuf/compiler/js/js_generator.cc", - "src/google/protobuf/compiler/js/js_generator.h", - "src/google/protobuf/compiler/js/well_known_types_embed.cc", - "src/google/protobuf/compiler/js/well_known_types_embed.h", - "src/google/protobuf/compiler/objectivec/objectivec_enum.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum.h", - "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum_field.h", - "src/google/protobuf/compiler/objectivec/objectivec_extension.cc", - "src/google/protobuf/compiler/objectivec/objectivec_extension.h", - "src/google/protobuf/compiler/objectivec/objectivec_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_field.h", - "src/google/protobuf/compiler/objectivec/objectivec_file.cc", - "src/google/protobuf/compiler/objectivec/objectivec_file.h", - "src/google/protobuf/compiler/objectivec/objectivec_generator.cc", - "src/google/protobuf/compiler/objectivec/objectivec_generator.h", - "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc", - "src/google/protobuf/compiler/objectivec/objectivec_helpers.h", - "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_map_field.h", - "src/google/protobuf/compiler/objectivec/objectivec_message.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message.h", - "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message_field.h", - "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc", - "src/google/protobuf/compiler/objectivec/objectivec_oneof.h", - "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h", - "src/google/protobuf/compiler/php/php_generator.cc", - "src/google/protobuf/compiler/php/php_generator.h", - "src/google/protobuf/compiler/plugin.cc", - "src/google/protobuf/compiler/plugin.h", - "src/google/protobuf/compiler/plugin.pb.cc", - "src/google/protobuf/compiler/plugin.pb.h", - "src/google/protobuf/compiler/python/python_generator.cc", - "src/google/protobuf/compiler/python/python_generator.h", - "src/google/protobuf/compiler/ruby/ruby_generator.cc", - "src/google/protobuf/compiler/ruby/ruby_generator.h", - "src/google/protobuf/compiler/subprocess.cc", - "src/google/protobuf/compiler/subprocess.h", - "src/google/protobuf/compiler/zip_writer.cc", - "src/google/protobuf/compiler/zip_writer.h", - ] + sources = protoc_sources + protoc_headers configs -= [ "//build/config/compiler:chromium_code" ] configs += [ @@ -646,48 +288,17 @@ } copy("copy_google_protobuf") { - sources = [ - "python/google/protobuf/__init__.py", - "python/google/protobuf/descriptor.py", - "python/google/protobuf/descriptor_database.py", - "python/google/protobuf/descriptor_pool.py", - "python/google/protobuf/json_format.py", - "python/google/protobuf/message.py", - "python/google/protobuf/message_factory.py", - "python/google/protobuf/proto_builder.py", - "python/google/protobuf/reflection.py", - "python/google/protobuf/service.py", - "python/google/protobuf/service_reflection.py", - "python/google/protobuf/symbol_database.py", - "python/google/protobuf/text_encoding.py", - "python/google/protobuf/text_format.py", - - # TODO(ncarter): protoc's python generator treats descriptor.proto - # specially, but only when the input path is exactly - # "google/protobuf/descriptor.proto". I'm not sure how to execute a rule - # from a different directory. For now, use a manually-generated copy of - # descriptor_pb2.py. - "python/google/protobuf/descriptor_pb2.py", - ] + # TODO(ncarter): protoc's python generator treats descriptor.proto + # specially, but only when the input path is exactly + # "google/protobuf/descriptor.proto". I'm not sure how to execute a rule + # from a different directory. For now, use a manually-generated copy of + # descriptor_pb2.py. + sources = pyproto_sources + [ "python/google/protobuf/descriptor_pb2.py" ] outputs = [ "$google_python_dir/protobuf/{{source_file_part}}" ] } copy("copy_google_protobuf_internal") { - sources = [ - "python/google/protobuf/internal/__init__.py", - "python/google/protobuf/internal/_parameterized.py", - "python/google/protobuf/internal/api_implementation.py", - "python/google/protobuf/internal/containers.py", - "python/google/protobuf/internal/decoder.py", - "python/google/protobuf/internal/encoder.py", - "python/google/protobuf/internal/enum_type_wrapper.py", - "python/google/protobuf/internal/extension_dict.py", - "python/google/protobuf/internal/message_listener.py", - "python/google/protobuf/internal/python_message.py", - "python/google/protobuf/internal/type_checkers.py", - "python/google/protobuf/internal/well_known_types.py", - "python/google/protobuf/internal/wire_format.py", - ] + sources = pyproto_internal_sources outputs = [ "$google_python_dir/protobuf/internal/{{source_file_part}}" ] }
diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium index 1bb5d59..81278f5 100644 --- a/third_party/protobuf/README.chromium +++ b/third_party/protobuf/README.chromium
@@ -13,15 +13,11 @@ code zip) 2. Add build files (BUILD.gn, proto_library.gni). - Be sure to update the list of source files, as additional .cc files and - headers might have been added -- you need to find the transitive closure of - include files required by targets. - - Other things to care about are defines required by protobuf on various - platforms, warnings generated by compilers, and new dependencies introduced. + As needed, update defines required by protobuf on various platforms, warnings + generated by compilers, and new dependencies introduced. 3. Add DEPS and OWNERS. 4. Add mirclient.cc and mirclient.map. -5. Add gen_extra_chromium_files. +5. Add gen_extra_chromium_files.py and gen_chromium_file_lists.py. 6. Get open-source library six.py from https://pypi.python.org/pypi/six/ and add it to protobuf/third_party/six/six.py. 7. Apply patches in patches/ (see the description below): @@ -33,9 +29,9 @@ them back in place (i.e. in patches directory). 8. Generate descriptor_pb2.py using the script "gen_extra_chromium_files.py" in the same directory as this file. - -9. Add an __init__.py to protobuf/ that adds third_party/six/ to Python path. -10. Update this file (README.chromium). +9. Generate proto_sources.gni using the script "gen_chromium_file_lists.py". +10. Add an __init__.py to protobuf/ that adds third_party/six/ to Python path. +11. Update this file (README.chromium). Note about libmirclient:
diff --git a/third_party/protobuf/gen_chromium_file_lists.py b/third_party/protobuf/gen_chromium_file_lists.py new file mode 100755 index 0000000..e80908b --- /dev/null +++ b/third_party/protobuf/gen_chromium_file_lists.py
@@ -0,0 +1,136 @@ +#!/usr/bin/env python3 +# 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. +"""Generates GN build files for protobuf. See update_file_lists.sh from +protobuf.""" + +import os.path + +PROTO_DIR = os.path.dirname(__file__) +MAKEFILE = os.path.join(PROTO_DIR, 'Makefile.am') +SRC_MAKEFILE = os.path.join(PROTO_DIR, 'src', 'Makefile.am') +PROTO_SOURCES_GNI = os.path.join(PROTO_DIR, 'proto_sources.gni') + + +def read_makefile_lines(f): + # Roughly implement https://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html + # but skip condensing whitespace. That can be handled by the reader. Also + # make no distinction between recipe and non-recipe lines. + cont = [] + while True: + line = f.readline() + if line == '': + if len(cont) != 0: + raise ValueError('Continuation at end of file') + break + line = line.rstrip('\n') + if line.endswith('\\'): + cont.append(line[:-1]) + else: + cont.append(line) + yield ' '.join(cont) + cont = [] + + +def read_makefile_variables(f): + ret = {} + for line in read_makefile_lines(f): + if not line or line[0].isspace(): + continue + # Sometimes there aren't spaces surrounding equals. + line = line.replace('=', ' = ') + # Do a very rough parse. + tokens = line.split() + if len(tokens) >= 2 and tokens[1] == '=': + value = [] + for token in tokens[2:]: + if token.startswith('$(') and token.endswith(')'): + value.extend(ret.get(token[2:-1], [])) + else: + value.append(token) + ret[tokens[0]] = value + return ret + + +def is_protoc_header(path): + if '/compiler/' not in path: + return False + # compiler/importer.h and compiler/parser.h should be part of libprotobuf + # itself. + return not path.endswith("/importer.h") and not path.endswith("/parser.h") + + +def prefix_paths(prefix, paths): + return [f'src/{p}' for p in paths] + + +def write_gn_variable(f, name, value): + f.write(f'\n{name} = [\n') + # Sort and deduplicate the file lists. Protobuf has some duplicate entries. + for path in sorted(set(value)): + f.write(f' "{path}",\n') + f.write(']\n') + + +def main(): + with open(SRC_MAKEFILE) as f: + vars = read_makefile_variables(f) + protobuf_headers = [ + p for p in vars['nobase_include_HEADERS'] if not is_protoc_header(p) + ] + protobuf_lite_sources = vars['libprotobuf_lite_la_SOURCES'] + protobuf_sources = [ + p for p in vars['libprotobuf_la_SOURCES'] + if p not in protobuf_lite_sources + ] + protoc_sources = vars['libprotoc_la_SOURCES'] + protoc_headers = [ + p for p in vars['nobase_include_HEADERS'] if is_protoc_header(p) + ] + + protobuf_headers = prefix_paths('src', protobuf_headers) + protobuf_lite_sources = prefix_paths('src', protobuf_lite_sources) + protobuf_sources = prefix_paths('src', protobuf_sources) + protoc_sources = prefix_paths('src', protoc_sources) + protoc_headers = prefix_paths('src', protoc_headers) + + # Not upstream protobuf, added via Chromium patch. + protobuf_lite_sources.append("src/google/protobuf/arenastring.cc") + + with open(MAKEFILE) as f: + vars = read_makefile_variables(f) + all_python_sources = [ + p for p in vars['python_EXTRA_DIST'] + if p.endswith('.py') and 'test' not in p + ] + # The copy rules in BUILD.gn can only handle files in the same directory, so + # the list must be split into per-directory lists. + pyproto_sources = [ + p for p in all_python_sources + if os.path.dirname(p) == 'python/google/protobuf' + ] + pyproto_internal_sources = [ + p for p in all_python_sources + if os.path.dirname(p) == 'python/google/protobuf/internal' + ] + + with open(PROTO_SOURCES_GNI, 'w') as f: + f.write('''# 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. + +# Generated by gen_chromium_file_lists.py. Do not edit by hand. +''') + write_gn_variable(f, 'protobuf_headers', protobuf_headers) + write_gn_variable(f, 'protobuf_lite_sources', protobuf_lite_sources) + write_gn_variable(f, 'protobuf_sources', protobuf_sources) + write_gn_variable(f, 'protoc_sources', protoc_sources) + write_gn_variable(f, 'protoc_headers', protoc_headers) + write_gn_variable(f, 'pyproto_sources', pyproto_sources) + write_gn_variable(f, 'pyproto_internal_sources', + pyproto_internal_sources) + + +if __name__ == '__main__': + main()
diff --git a/third_party/protobuf/proto_sources.gni b/third_party/protobuf/proto_sources.gni new file mode 100644 index 0000000..4497406 --- /dev/null +++ b/third_party/protobuf/proto_sources.gni
@@ -0,0 +1,427 @@ +# 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. + +# Generated by gen_chromium_file_lists.py. Do not edit by hand. + +protobuf_headers = [ + "src/google/protobuf/any.h", + "src/google/protobuf/any.pb.h", + "src/google/protobuf/api.pb.h", + "src/google/protobuf/arena.h", + "src/google/protobuf/arena_impl.h", + "src/google/protobuf/arenastring.h", + "src/google/protobuf/compiler/importer.h", + "src/google/protobuf/compiler/parser.h", + "src/google/protobuf/descriptor.h", + "src/google/protobuf/descriptor.pb.h", + "src/google/protobuf/descriptor_database.h", + "src/google/protobuf/duration.pb.h", + "src/google/protobuf/dynamic_message.h", + "src/google/protobuf/empty.pb.h", + "src/google/protobuf/extension_set.h", + "src/google/protobuf/extension_set_inl.h", + "src/google/protobuf/field_mask.pb.h", + "src/google/protobuf/generated_enum_reflection.h", + "src/google/protobuf/generated_enum_util.h", + "src/google/protobuf/generated_message_reflection.h", + "src/google/protobuf/generated_message_table_driven.h", + "src/google/protobuf/generated_message_util.h", + "src/google/protobuf/has_bits.h", + "src/google/protobuf/implicit_weak_message.h", + "src/google/protobuf/inlined_string_field.h", + "src/google/protobuf/io/coded_stream.h", + "src/google/protobuf/io/io_win32.h", + "src/google/protobuf/io/printer.h", + "src/google/protobuf/io/strtod.h", + "src/google/protobuf/io/tokenizer.h", + "src/google/protobuf/io/zero_copy_stream.h", + "src/google/protobuf/io/zero_copy_stream_impl.h", + "src/google/protobuf/io/zero_copy_stream_impl_lite.h", + "src/google/protobuf/map.h", + "src/google/protobuf/map_entry.h", + "src/google/protobuf/map_entry_lite.h", + "src/google/protobuf/map_field.h", + "src/google/protobuf/map_field_inl.h", + "src/google/protobuf/map_field_lite.h", + "src/google/protobuf/map_type_handler.h", + "src/google/protobuf/message.h", + "src/google/protobuf/message_lite.h", + "src/google/protobuf/metadata.h", + "src/google/protobuf/metadata_lite.h", + "src/google/protobuf/parse_context.h", + "src/google/protobuf/port.h", + "src/google/protobuf/port_def.inc", + "src/google/protobuf/port_undef.inc", + "src/google/protobuf/reflection.h", + "src/google/protobuf/reflection_ops.h", + "src/google/protobuf/repeated_field.h", + "src/google/protobuf/service.h", + "src/google/protobuf/source_context.pb.h", + "src/google/protobuf/struct.pb.h", + "src/google/protobuf/stubs/bytestream.h", + "src/google/protobuf/stubs/callback.h", + "src/google/protobuf/stubs/casts.h", + "src/google/protobuf/stubs/common.h", + "src/google/protobuf/stubs/fastmem.h", + "src/google/protobuf/stubs/hash.h", + "src/google/protobuf/stubs/logging.h", + "src/google/protobuf/stubs/macros.h", + "src/google/protobuf/stubs/map_util.h", + "src/google/protobuf/stubs/mutex.h", + "src/google/protobuf/stubs/once.h", + "src/google/protobuf/stubs/platform_macros.h", + "src/google/protobuf/stubs/port.h", + "src/google/protobuf/stubs/status.h", + "src/google/protobuf/stubs/stl_util.h", + "src/google/protobuf/stubs/stringpiece.h", + "src/google/protobuf/stubs/strutil.h", + "src/google/protobuf/stubs/template_util.h", + "src/google/protobuf/text_format.h", + "src/google/protobuf/timestamp.pb.h", + "src/google/protobuf/type.pb.h", + "src/google/protobuf/unknown_field_set.h", + "src/google/protobuf/util/delimited_message_util.h", + "src/google/protobuf/util/field_comparator.h", + "src/google/protobuf/util/field_mask_util.h", + "src/google/protobuf/util/json_util.h", + "src/google/protobuf/util/message_differencer.h", + "src/google/protobuf/util/time_util.h", + "src/google/protobuf/util/type_resolver.h", + "src/google/protobuf/util/type_resolver_util.h", + "src/google/protobuf/wire_format.h", + "src/google/protobuf/wire_format_lite.h", + "src/google/protobuf/wrappers.pb.h", +] + +protobuf_lite_sources = [ + "src/google/protobuf/any_lite.cc", + "src/google/protobuf/arena.cc", + "src/google/protobuf/arenastring.cc", + "src/google/protobuf/extension_set.cc", + "src/google/protobuf/generated_enum_util.cc", + "src/google/protobuf/generated_message_table_driven_lite.cc", + "src/google/protobuf/generated_message_table_driven_lite.h", + "src/google/protobuf/generated_message_util.cc", + "src/google/protobuf/implicit_weak_message.cc", + "src/google/protobuf/io/coded_stream.cc", + "src/google/protobuf/io/io_win32.cc", + "src/google/protobuf/io/strtod.cc", + "src/google/protobuf/io/zero_copy_stream.cc", + "src/google/protobuf/io/zero_copy_stream_impl.cc", + "src/google/protobuf/io/zero_copy_stream_impl_lite.cc", + "src/google/protobuf/map.cc", + "src/google/protobuf/message_lite.cc", + "src/google/protobuf/parse_context.cc", + "src/google/protobuf/repeated_field.cc", + "src/google/protobuf/stubs/bytestream.cc", + "src/google/protobuf/stubs/bytestream.h", + "src/google/protobuf/stubs/common.cc", + "src/google/protobuf/stubs/hash.h", + "src/google/protobuf/stubs/int128.cc", + "src/google/protobuf/stubs/int128.h", + "src/google/protobuf/stubs/map_util.h", + "src/google/protobuf/stubs/mathutil.h", + "src/google/protobuf/stubs/status.cc", + "src/google/protobuf/stubs/status.h", + "src/google/protobuf/stubs/status_macros.h", + "src/google/protobuf/stubs/statusor.cc", + "src/google/protobuf/stubs/statusor.h", + "src/google/protobuf/stubs/stringpiece.cc", + "src/google/protobuf/stubs/stringpiece.h", + "src/google/protobuf/stubs/stringprintf.cc", + "src/google/protobuf/stubs/stringprintf.h", + "src/google/protobuf/stubs/structurally_valid.cc", + "src/google/protobuf/stubs/strutil.cc", + "src/google/protobuf/stubs/time.cc", + "src/google/protobuf/stubs/time.h", + "src/google/protobuf/wire_format_lite.cc", +] + +protobuf_sources = [ + "src/google/protobuf/any.cc", + "src/google/protobuf/any.pb.cc", + "src/google/protobuf/api.pb.cc", + "src/google/protobuf/compiler/importer.cc", + "src/google/protobuf/compiler/parser.cc", + "src/google/protobuf/descriptor.cc", + "src/google/protobuf/descriptor.pb.cc", + "src/google/protobuf/descriptor_database.cc", + "src/google/protobuf/duration.pb.cc", + "src/google/protobuf/dynamic_message.cc", + "src/google/protobuf/empty.pb.cc", + "src/google/protobuf/extension_set_heavy.cc", + "src/google/protobuf/field_mask.pb.cc", + "src/google/protobuf/generated_message_reflection.cc", + "src/google/protobuf/generated_message_table_driven.cc", + "src/google/protobuf/io/gzip_stream.cc", + "src/google/protobuf/io/printer.cc", + "src/google/protobuf/io/tokenizer.cc", + "src/google/protobuf/map_field.cc", + "src/google/protobuf/message.cc", + "src/google/protobuf/reflection_internal.h", + "src/google/protobuf/reflection_ops.cc", + "src/google/protobuf/service.cc", + "src/google/protobuf/source_context.pb.cc", + "src/google/protobuf/struct.pb.cc", + "src/google/protobuf/stubs/substitute.cc", + "src/google/protobuf/stubs/substitute.h", + "src/google/protobuf/text_format.cc", + "src/google/protobuf/timestamp.pb.cc", + "src/google/protobuf/type.pb.cc", + "src/google/protobuf/unknown_field_set.cc", + "src/google/protobuf/util/delimited_message_util.cc", + "src/google/protobuf/util/field_comparator.cc", + "src/google/protobuf/util/field_mask_util.cc", + "src/google/protobuf/util/internal/constants.h", + "src/google/protobuf/util/internal/datapiece.cc", + "src/google/protobuf/util/internal/datapiece.h", + "src/google/protobuf/util/internal/default_value_objectwriter.cc", + "src/google/protobuf/util/internal/default_value_objectwriter.h", + "src/google/protobuf/util/internal/error_listener.cc", + "src/google/protobuf/util/internal/error_listener.h", + "src/google/protobuf/util/internal/expecting_objectwriter.h", + "src/google/protobuf/util/internal/field_mask_utility.cc", + "src/google/protobuf/util/internal/field_mask_utility.h", + "src/google/protobuf/util/internal/json_escaping.cc", + "src/google/protobuf/util/internal/json_escaping.h", + "src/google/protobuf/util/internal/json_objectwriter.cc", + "src/google/protobuf/util/internal/json_objectwriter.h", + "src/google/protobuf/util/internal/json_stream_parser.cc", + "src/google/protobuf/util/internal/json_stream_parser.h", + "src/google/protobuf/util/internal/location_tracker.h", + "src/google/protobuf/util/internal/mock_error_listener.h", + "src/google/protobuf/util/internal/object_location_tracker.h", + "src/google/protobuf/util/internal/object_source.h", + "src/google/protobuf/util/internal/object_writer.cc", + "src/google/protobuf/util/internal/object_writer.h", + "src/google/protobuf/util/internal/proto_writer.cc", + "src/google/protobuf/util/internal/proto_writer.h", + "src/google/protobuf/util/internal/protostream_objectsource.cc", + "src/google/protobuf/util/internal/protostream_objectsource.h", + "src/google/protobuf/util/internal/protostream_objectwriter.cc", + "src/google/protobuf/util/internal/protostream_objectwriter.h", + "src/google/protobuf/util/internal/structured_objectwriter.h", + "src/google/protobuf/util/internal/type_info.cc", + "src/google/protobuf/util/internal/type_info.h", + "src/google/protobuf/util/internal/type_info_test_helper.cc", + "src/google/protobuf/util/internal/type_info_test_helper.h", + "src/google/protobuf/util/internal/utility.cc", + "src/google/protobuf/util/internal/utility.h", + "src/google/protobuf/util/json_util.cc", + "src/google/protobuf/util/message_differencer.cc", + "src/google/protobuf/util/time_util.cc", + "src/google/protobuf/util/type_resolver_util.cc", + "src/google/protobuf/wire_format.cc", + "src/google/protobuf/wrappers.pb.cc", +] + +protoc_sources = [ + "src/google/protobuf/compiler/code_generator.cc", + "src/google/protobuf/compiler/command_line_interface.cc", + "src/google/protobuf/compiler/cpp/cpp_enum.cc", + "src/google/protobuf/compiler/cpp/cpp_enum.h", + "src/google/protobuf/compiler/cpp/cpp_enum_field.cc", + "src/google/protobuf/compiler/cpp/cpp_enum_field.h", + "src/google/protobuf/compiler/cpp/cpp_extension.cc", + "src/google/protobuf/compiler/cpp/cpp_extension.h", + "src/google/protobuf/compiler/cpp/cpp_field.cc", + "src/google/protobuf/compiler/cpp/cpp_field.h", + "src/google/protobuf/compiler/cpp/cpp_file.cc", + "src/google/protobuf/compiler/cpp/cpp_file.h", + "src/google/protobuf/compiler/cpp/cpp_generator.cc", + "src/google/protobuf/compiler/cpp/cpp_helpers.cc", + "src/google/protobuf/compiler/cpp/cpp_helpers.h", + "src/google/protobuf/compiler/cpp/cpp_map_field.cc", + "src/google/protobuf/compiler/cpp/cpp_map_field.h", + "src/google/protobuf/compiler/cpp/cpp_message.cc", + "src/google/protobuf/compiler/cpp/cpp_message.h", + "src/google/protobuf/compiler/cpp/cpp_message_field.cc", + "src/google/protobuf/compiler/cpp/cpp_message_field.h", + "src/google/protobuf/compiler/cpp/cpp_message_layout_helper.h", + "src/google/protobuf/compiler/cpp/cpp_options.h", + "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc", + "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.h", + "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc", + "src/google/protobuf/compiler/cpp/cpp_primitive_field.h", + "src/google/protobuf/compiler/cpp/cpp_service.cc", + "src/google/protobuf/compiler/cpp/cpp_service.h", + "src/google/protobuf/compiler/cpp/cpp_string_field.cc", + "src/google/protobuf/compiler/cpp/cpp_string_field.h", + "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", + "src/google/protobuf/compiler/csharp/csharp_doc_comment.h", + "src/google/protobuf/compiler/csharp/csharp_enum.cc", + "src/google/protobuf/compiler/csharp/csharp_enum.h", + "src/google/protobuf/compiler/csharp/csharp_enum_field.cc", + "src/google/protobuf/compiler/csharp/csharp_enum_field.h", + "src/google/protobuf/compiler/csharp/csharp_field_base.cc", + "src/google/protobuf/compiler/csharp/csharp_field_base.h", + "src/google/protobuf/compiler/csharp/csharp_generator.cc", + "src/google/protobuf/compiler/csharp/csharp_helpers.cc", + "src/google/protobuf/compiler/csharp/csharp_helpers.h", + "src/google/protobuf/compiler/csharp/csharp_map_field.cc", + "src/google/protobuf/compiler/csharp/csharp_map_field.h", + "src/google/protobuf/compiler/csharp/csharp_message.cc", + "src/google/protobuf/compiler/csharp/csharp_message.h", + "src/google/protobuf/compiler/csharp/csharp_message_field.cc", + "src/google/protobuf/compiler/csharp/csharp_message_field.h", + "src/google/protobuf/compiler/csharp/csharp_options.h", + "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", + "src/google/protobuf/compiler/csharp/csharp_primitive_field.h", + "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", + "src/google/protobuf/compiler/csharp/csharp_reflection_class.h", + "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", + "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h", + "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", + "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h", + "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", + "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h", + "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", + "src/google/protobuf/compiler/csharp/csharp_source_generator_base.h", + "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", + "src/google/protobuf/compiler/csharp/csharp_wrapper_field.h", + "src/google/protobuf/compiler/java/java_context.cc", + "src/google/protobuf/compiler/java/java_context.h", + "src/google/protobuf/compiler/java/java_doc_comment.cc", + "src/google/protobuf/compiler/java/java_doc_comment.h", + "src/google/protobuf/compiler/java/java_enum.cc", + "src/google/protobuf/compiler/java/java_enum.h", + "src/google/protobuf/compiler/java/java_enum_field.cc", + "src/google/protobuf/compiler/java/java_enum_field.h", + "src/google/protobuf/compiler/java/java_enum_field_lite.cc", + "src/google/protobuf/compiler/java/java_enum_field_lite.h", + "src/google/protobuf/compiler/java/java_enum_lite.cc", + "src/google/protobuf/compiler/java/java_enum_lite.h", + "src/google/protobuf/compiler/java/java_extension.cc", + "src/google/protobuf/compiler/java/java_extension.h", + "src/google/protobuf/compiler/java/java_extension_lite.cc", + "src/google/protobuf/compiler/java/java_extension_lite.h", + "src/google/protobuf/compiler/java/java_field.cc", + "src/google/protobuf/compiler/java/java_field.h", + "src/google/protobuf/compiler/java/java_file.cc", + "src/google/protobuf/compiler/java/java_file.h", + "src/google/protobuf/compiler/java/java_generator.cc", + "src/google/protobuf/compiler/java/java_generator_factory.cc", + "src/google/protobuf/compiler/java/java_generator_factory.h", + "src/google/protobuf/compiler/java/java_helpers.cc", + "src/google/protobuf/compiler/java/java_helpers.h", + "src/google/protobuf/compiler/java/java_map_field.cc", + "src/google/protobuf/compiler/java/java_map_field.h", + "src/google/protobuf/compiler/java/java_map_field_lite.cc", + "src/google/protobuf/compiler/java/java_map_field_lite.h", + "src/google/protobuf/compiler/java/java_message.cc", + "src/google/protobuf/compiler/java/java_message.h", + "src/google/protobuf/compiler/java/java_message_builder.cc", + "src/google/protobuf/compiler/java/java_message_builder.h", + "src/google/protobuf/compiler/java/java_message_builder_lite.cc", + "src/google/protobuf/compiler/java/java_message_builder_lite.h", + "src/google/protobuf/compiler/java/java_message_field.cc", + "src/google/protobuf/compiler/java/java_message_field.h", + "src/google/protobuf/compiler/java/java_message_field_lite.cc", + "src/google/protobuf/compiler/java/java_message_field_lite.h", + "src/google/protobuf/compiler/java/java_message_lite.cc", + "src/google/protobuf/compiler/java/java_message_lite.h", + "src/google/protobuf/compiler/java/java_name_resolver.cc", + "src/google/protobuf/compiler/java/java_name_resolver.h", + "src/google/protobuf/compiler/java/java_options.h", + "src/google/protobuf/compiler/java/java_primitive_field.cc", + "src/google/protobuf/compiler/java/java_primitive_field.h", + "src/google/protobuf/compiler/java/java_primitive_field_lite.cc", + "src/google/protobuf/compiler/java/java_primitive_field_lite.h", + "src/google/protobuf/compiler/java/java_service.cc", + "src/google/protobuf/compiler/java/java_service.h", + "src/google/protobuf/compiler/java/java_shared_code_generator.cc", + "src/google/protobuf/compiler/java/java_shared_code_generator.h", + "src/google/protobuf/compiler/java/java_string_field.cc", + "src/google/protobuf/compiler/java/java_string_field.h", + "src/google/protobuf/compiler/java/java_string_field_lite.cc", + "src/google/protobuf/compiler/java/java_string_field_lite.h", + "src/google/protobuf/compiler/js/js_generator.cc", + "src/google/protobuf/compiler/js/well_known_types_embed.cc", + "src/google/protobuf/compiler/objectivec/objectivec_enum.cc", + "src/google/protobuf/compiler/objectivec/objectivec_enum.h", + "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc", + "src/google/protobuf/compiler/objectivec/objectivec_enum_field.h", + "src/google/protobuf/compiler/objectivec/objectivec_extension.cc", + "src/google/protobuf/compiler/objectivec/objectivec_extension.h", + "src/google/protobuf/compiler/objectivec/objectivec_field.cc", + "src/google/protobuf/compiler/objectivec/objectivec_field.h", + "src/google/protobuf/compiler/objectivec/objectivec_file.cc", + "src/google/protobuf/compiler/objectivec/objectivec_file.h", + "src/google/protobuf/compiler/objectivec/objectivec_generator.cc", + "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc", + "src/google/protobuf/compiler/objectivec/objectivec_helpers.h", + "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc", + "src/google/protobuf/compiler/objectivec/objectivec_map_field.h", + "src/google/protobuf/compiler/objectivec/objectivec_message.cc", + "src/google/protobuf/compiler/objectivec/objectivec_message.h", + "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc", + "src/google/protobuf/compiler/objectivec/objectivec_message_field.h", + "src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h", + "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc", + "src/google/protobuf/compiler/objectivec/objectivec_oneof.h", + "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc", + "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h", + "src/google/protobuf/compiler/php/php_generator.cc", + "src/google/protobuf/compiler/plugin.cc", + "src/google/protobuf/compiler/plugin.pb.cc", + "src/google/protobuf/compiler/python/python_generator.cc", + "src/google/protobuf/compiler/ruby/ruby_generator.cc", + "src/google/protobuf/compiler/scc.h", + "src/google/protobuf/compiler/subprocess.cc", + "src/google/protobuf/compiler/subprocess.h", + "src/google/protobuf/compiler/zip_writer.cc", + "src/google/protobuf/compiler/zip_writer.h", +] + +protoc_headers = [ + "src/google/protobuf/compiler/code_generator.h", + "src/google/protobuf/compiler/command_line_interface.h", + "src/google/protobuf/compiler/cpp/cpp_generator.h", + "src/google/protobuf/compiler/csharp/csharp_generator.h", + "src/google/protobuf/compiler/csharp/csharp_names.h", + "src/google/protobuf/compiler/java/java_generator.h", + "src/google/protobuf/compiler/java/java_names.h", + "src/google/protobuf/compiler/js/js_generator.h", + "src/google/protobuf/compiler/js/well_known_types_embed.h", + "src/google/protobuf/compiler/objectivec/objectivec_generator.h", + "src/google/protobuf/compiler/objectivec/objectivec_helpers.h", + "src/google/protobuf/compiler/php/php_generator.h", + "src/google/protobuf/compiler/plugin.h", + "src/google/protobuf/compiler/plugin.pb.h", + "src/google/protobuf/compiler/python/python_generator.h", + "src/google/protobuf/compiler/ruby/ruby_generator.h", +] + +pyproto_sources = [ + "python/google/protobuf/__init__.py", + "python/google/protobuf/descriptor.py", + "python/google/protobuf/descriptor_database.py", + "python/google/protobuf/descriptor_pool.py", + "python/google/protobuf/json_format.py", + "python/google/protobuf/message.py", + "python/google/protobuf/message_factory.py", + "python/google/protobuf/proto_builder.py", + "python/google/protobuf/reflection.py", + "python/google/protobuf/service.py", + "python/google/protobuf/service_reflection.py", + "python/google/protobuf/symbol_database.py", + "python/google/protobuf/text_encoding.py", + "python/google/protobuf/text_format.py", +] + +pyproto_internal_sources = [ + "python/google/protobuf/internal/__init__.py", + "python/google/protobuf/internal/_parameterized.py", + "python/google/protobuf/internal/api_implementation.py", + "python/google/protobuf/internal/containers.py", + "python/google/protobuf/internal/decoder.py", + "python/google/protobuf/internal/encoder.py", + "python/google/protobuf/internal/enum_type_wrapper.py", + "python/google/protobuf/internal/extension_dict.py", + "python/google/protobuf/internal/message_listener.py", + "python/google/protobuf/internal/python_message.py", + "python/google/protobuf/internal/type_checkers.py", + "python/google/protobuf/internal/well_known_types.py", + "python/google/protobuf/internal/wire_format.py", +]
diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py index 01a884c..feff3f7 100755 --- a/tools/clang/scripts/build.py +++ b/tools/clang/scripts/build.py
@@ -681,8 +681,6 @@ '-DBUG_REPORT_URL=' + BUG_REPORT_URL, # Don't run Go bindings tests; PGO makes them confused. '-DLLVM_INCLUDE_GO_TESTS=OFF', - # TODO(crbug.com/1113475): Update binutils. - '-DENABLE_X86_RELAX_RELOCATIONS=NO', # See crbug.com/1126219: Use native symbolizer instead of DIA '-DLLVM_ENABLE_DIA_SDK=OFF', # The default value differs per platform, force it off everywhere.
diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py index 2688661e..907fc670 100755 --- a/tools/clang/scripts/package.py +++ b/tools/clang/scripts/package.py
@@ -109,7 +109,7 @@ def MaybeUpload(do_upload, filename, gcs_platform, extra_gsutil_args=[]): gsutil_args = ['cp'] + extra_gsutil_args + [ - '-a', 'public-read', filename, + '-n', '-a', 'public-read', filename, 'gs://chromium-browser-clang-staging/%s/%s' % (gcs_platform, filename) ] if do_upload:
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 6499e93..78f911d 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -5798,6 +5798,7 @@ <int value="28" label="TILE_SUGGESTION"/> <int value="29" label="TILE_NAVSUGGEST"/> <int value="30" label="OPEN_TAB"/> + <int value="31" label="HISTORY_CLUSTER"/> </enum> <enum name="AutoDSEPermissionRevertTransition"> @@ -21992,6 +21993,11 @@ <int value="70" label="RESTART_REQUEST_CANCELLED"/> <int value="71" label="CREATE_DISK_IMAGE_NO_RESPONSE"/> <int value="72" label="CREATE_DISK_IMAGE_ALREADY_EXISTS"/> + <int value="73" label="UNINSTALL_TERMINA_FAILED"/> + <int value="74" label="START_LXD_FAILED_SIGNAL"/> + <int value="75" label="CONTAINER_CREATE_FAILED_SIGNAL"/> + <int value="76" label="STOP_VM_NO_RESPONSE"/> + <int value="77" label="SIGNAL_NOT_CONNECTED"/> </enum> <enum name="CrostiniSettingsEvent"> @@ -32532,7 +32538,7 @@ <int value="21" label="APP_WINDOW_ON_RESTORED"/> <int value="22" label="DELETED_AUDIO_MODEM_ON_RECEIVED"/> <int value="23" label="DELETED_AUDIO_MODEM_ON_TRANSMIT_FAIL"/> - <int value="24" label="DELETED_AUDIO_ON_DEVICE_CHANGED"/> + <int value="24" label="AUDIO_ON_DEVICE_CHANGED"/> <int value="25" label="AUDIO_ON_DEVICES_CHANGED"/> <int value="26" label="AUDIO_ON_LEVEL_CHANGED"/> <int value="27" label="AUDIO_ON_MUTE_CHANGED"/> @@ -33031,7 +33037,7 @@ <int value="492" label="LOGIN_ON_REQUEST_EXTERNAL_LOGOUT"/> <int value="493" label="LOGIN_ON_EXTERNAL_LOGOUT_DONE"/> <int value="494" label="ACCESSIBILITY_PRIVATE_ON_PUMPKIN_INSTALLED"/> - <int value="495" label="ENTERPRISE_REMOTE_APPS_ON_REMOTE_APP_LAUNCHED"/> + <int value="495" label="REMOTE_APPS_ON_REMOTE_APP_LAUNCHED"/> </enum> <enum name="ExtensionFileWriteResult"> @@ -33512,7 +33518,7 @@ <int value="454" label="DELETED_BLUETOOTH_REMOVEPROFILE"/> <int value="455" label="DELETED_BLUETOOTH_GETPROFILES"/> <int value="456" label="EXPERIMENTAL_IDENTITY_REMOVECACHEDAUTHTOKEN"/> - <int value="457" label="DELETED_AUDIO_GETINFO"/> + <int value="457" label="AUDIO_GETINFO"/> <int value="458" label="AUDIO_SETACTIVEDEVICES"/> <int value="459" label="AUDIO_SETPROPERTIES"/> <int value="460" label="USB_RESETDEVICE"/> @@ -34783,7 +34789,6 @@ <int value="1671" label="ENTERPRISE_REMOTEAPPS_DELETEAPP"/> <int value="1672" label="ENTERPRISEREPORTINGPRIVATE_GETAVINFO"/> <int value="1673" label="ENTERPRISEREPORTINGPRIVATE_GETHOTFIXES"/> - <int value="1674" label="AUTOTESTPRIVATE_GETARCAPPKILLS"/> </enum> <enum name="ExtensionIconState"> @@ -40631,6 +40636,7 @@ <int value="26" label="ManifestNotInManifestList"/> <int value="27" label="ManifestListTooBig"/> <int value="28" label="DisabledEmbargo"/> + <int value="29" label="UserInterfaceTimedOut"/> </enum> <enum name="FedCmRevokeStatus"> @@ -58258,6 +58264,7 @@ <int value="26875005" label="disable-explicit-dma-fences"/> <int value="26945819" label="EnhancedDeskAnimations:disabled"/> <int value="27507364" label="apps-keep-chrome-alive"/> + <int value="27632363" label="JourneysOmniboxHistoryClusterProvider:enabled"/> <int value="29212695" label="OfflineIndicator:enabled"/> <int value="31776417" label="EnableIkev2Vpn:disabled"/> <int value="31848187" label="ViewsTaskManager:disabled"/> @@ -58482,6 +58489,8 @@ <int value="179871410" label="ui-debug-tools:disabled"/> <int value="180040169" label="OneGroupPerRenderer:disabled"/> <int value="180074362" label="memory-pressure-thresholds"/> + <int value="180414503" + label="JourneysOmniboxHistoryClusterProvider:disabled"/> <int value="181150000" label="CrosVmCupsProxy:enabled"/> <int value="182358203" label="AddToHomescreenIPH:enabled"/> <int value="182788555" label="DecoupleSyncFromAndroidMasterSync:disabled"/> @@ -68972,16 +68981,38 @@ <int value="4" label="kDisabledBecauseOfFailedLaunch"/> </enum> +<enum name="NetworkSecurityDowngrade"> + <summary> + Possible instances of WiFi security downgrades that happen after initial + connection. + </summary> + <int value="0" label="Downgrade to WPA"/> + <int value="1" label="Downgrade to WPA2"/> + <int value="2" label="Downgrade to EAP-WPA"/> + <int value="3" label="Downgrade to EAP-WPA2"/> +</enum> + <enum name="NetworkSecurityType"> <summary>Shill's WiFi security types.</summary> - <int value="0" label="UNKNOWN"/> - <int value="1" label="NONE"/> + <int value="0" label="Unknown"/> + <int value="1" label="None"/> <int value="2" label="WEP"/> <int value="3" label="WPA"/> <int value="4" label="802.11i/RSN"/> - <int value="5" label="802.1x"/> + <int value="5" label="802.1X"/> <int value="6" label="PSK"/> - <int value="7" label="WPA3"/> + <int value="7" label="WPA 3"/> + <int value="8" label="WPA 1/2"/> + <int value="9" label="WPA 2"/> + <int value="10" label="WPA 2/3"/> + <int value="11" label="Enterprise WPA"/> + <int value="12" label="Enterprise WPA 1/2"/> + <int value="13" label="Enterprise WPA 2"/> + <int value="14" label="Enterprise WPA 2/3"/> + <int value="15" label="Enterprise WPA 3"/> + <int value="16" label="WPA 1/2/3"/> + <int value="17" label="Enterprise WPA 1/2/3"/> + <int value="18" label="Enterprise WEP"/> </enum> <enum name="NetworkServiceAvailability">
diff --git a/tools/metrics/histograms/metadata/accessibility/histograms.xml b/tools/metrics/histograms/metadata/accessibility/histograms.xml index f314e4a..914cb2f2 100644 --- a/tools/metrics/histograms/metadata/accessibility/histograms.xml +++ b/tools/metrics/histograms/metadata/accessibility/histograms.xml
@@ -190,7 +190,7 @@ </histogram> <histogram name="Accessibility.Android.OnDemand.OneHundredPercentEventsDropped" - units="count" expires_after="2022-12-11"> + units="count" expires_after="2022-12-18"> <owner>mschillaci@google.com</owner> <owner>abigailbklein@google.com</owner> <summary> @@ -221,7 +221,7 @@ </histogram> <histogram name="Accessibility.Android.OnDemand.PercentageDropped" units="%" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>mschillaci@google.com</owner> <owner>abigailbklein@google.com</owner> <summary> @@ -899,7 +899,7 @@ </histogram> <histogram name="Accessibility.ImageLabels" enum="BooleanEnabled" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>katie@chromium.org</owner> <owner>chrome-a11y-core@google.com</owner> <summary> @@ -1312,7 +1312,7 @@ </histogram> <histogram name="Accessibility.ModeFlag" enum="AccessibilityModeFlagEnum" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>aleventhal@chromium.org</owner> <owner>chrome-a11y-core@google.com</owner> <summary> @@ -1387,7 +1387,7 @@ </histogram> <histogram name="Accessibility.Performance.Tree.Unserialize" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>aleventhal@chromium.org</owner> <owner>janewman@microsoft.com</owner> <owner>chrome-a11y-core@google.com</owner> @@ -1689,7 +1689,7 @@ </histogram> <histogram name="DomDistiller.InfoBarUsage" enum="BooleanUsage" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mdjones@chromium.org</owner> <summary> "Used" is recorded when the user clicks the infobar to enter
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml index c4fb521..7bb1c2e 100644 --- a/tools/metrics/histograms/metadata/android/histograms.xml +++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -201,7 +201,7 @@ </histogram> <histogram name="Android.AdaptiveToolbarButton.Settings.Changed" - enum="AdaptiveToolbarRadioButtonState" expires_after="2022-10-16"> + enum="AdaptiveToolbarRadioButtonState" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>chrome-segmentation-platform@google.com</owner> <summary> @@ -212,7 +212,7 @@ </histogram> <histogram name="Android.AdaptiveToolbarButton.Settings.Startup" - enum="AdaptiveToolbarRadioButtonState" expires_after="2022-10-16"> + enum="AdaptiveToolbarRadioButtonState" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>chrome-segmentation-platform@google.com</owner> <summary> @@ -314,7 +314,7 @@ </histogram> <histogram name="Android.ArmCpuPart" enum="ArmCpuPart" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rsesek@chromium.org</owner> <owner>clank-security@google.com</owner> <summary> @@ -991,7 +991,7 @@ </histogram> <histogram name="Android.DeviceSize.LargestDisplaySize2" units="dp" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>twellington@chromium.org</owner> <owner>shuyng@google.com</owner> <owner>clank-app-team@google.com</owner> @@ -1018,7 +1018,7 @@ </histogram> <histogram name="Android.DeviceSize.SmallestDisplaySize2" units="dp" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>twellington@chromium.org</owner> <owner>shuyng@google.com</owner> <owner>clank-app-team@google.com</owner> @@ -1212,7 +1212,7 @@ </histogram> <histogram name="Android.DownloadManager.OpenSource.Other" - enum="AndroidDownloadOpenSource" expires_after="2022-10-16"> + enum="AndroidDownloadOpenSource" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>clank-downloads@google.com</owner> <summary> @@ -1222,7 +1222,7 @@ </histogram> <histogram name="Android.DownloadManager.OpenSource.Video" - enum="AndroidDownloadOpenSource" expires_after="2022-10-16"> + enum="AndroidDownloadOpenSource" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>clank-downloads@google.com</owner> <summary>Records how users open video download files on Android.</summary> @@ -1574,7 +1574,7 @@ </histogram> <histogram name="Android.FontLookup.Blink.GetTableLatency" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>drott@chromium.org</owner> <owner>cduvall@chromium.org</owner> <owner>layout-dev@chromium.org</owner> @@ -1707,7 +1707,7 @@ </histogram> <histogram name="Android.IncognitoNotification.FileNotDeleted" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>roagarwal@chromium.org</owner> <owner>chrome-incognito@google.com</owner> <summary> @@ -1809,7 +1809,7 @@ </histogram> <histogram name="Android.Intent.BlockedExternalNavLastGestureTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mthiesse@chromium.org</owner> <owner>yfriedman@chromium.org</owner> <summary> @@ -1981,7 +1981,7 @@ </histogram> <histogram name="Android.KernelVersion" enum="AndroidKernelVersion" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rsesek@chromium.org</owner> <summary> Reports the kernel major and minor version from the utsname.release field. @@ -2221,7 +2221,7 @@ </histogram> <histogram name="Android.MultiInstance.MaxInstanceCount" units="instances" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jinsukkim@chromium.org</owner> <owner>twellington@chromium.org</owner> <owner>clank-app-team@google.com</owner> @@ -2412,7 +2412,7 @@ </histogram> <histogram name="Android.Omnibox.InvalidMatch" enum="MatchResult" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ender@chromium.org</owner> <owner>tedchoc@chromium.org</owner> <owner>mpearson@chromium.org</owner> @@ -2705,7 +2705,7 @@ </histogram> <histogram name="Android.OpenHistoryFromMenu.PerProfileType" - enum="BrowserProfileType" expires_after="2022-10-16"> + enum="BrowserProfileType" expires_after="2022-12-18"> <owner>sideyilmaz@chromium.org</owner> <owner>chrome-incognito@google.com</owner> <summary> @@ -3043,7 +3043,7 @@ </histogram> <histogram name="Android.RequestDesktopSite.UseDesktopUserAgent" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gangwu@chromium.org</owner> <owner>fgorski@chromium.org</owner> <summary> @@ -3053,7 +3053,7 @@ </histogram> <histogram name="Android.RequestDesktopSite.UserSwitchToDesktop" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gangwu@chromium.org</owner> <owner>fgorski@chromium.org</owner> <summary> @@ -3063,7 +3063,7 @@ </histogram> <histogram name="Android.RestoreResult" enum="AndroidRestoreResult" - expires_after="M107"> + expires_after="2022-12-18"> <owner>triploblastic@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -3145,7 +3145,7 @@ </histogram> <histogram name="Android.SelectFileDialogContentSelected" - enum="SelectFileDialogContent" expires_after="2022-10-16"> + enum="SelectFileDialogContent" expires_after="2022-12-18"> <owner>finnur@chromium.org</owner> <owner>peter@chromium.org</owner> <summary> @@ -3157,7 +3157,7 @@ </histogram> <histogram name="Android.SelectFileDialogImgCount" units="images" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>finnur@chromium.org</owner> <owner>peter@chromium.org</owner> <summary> @@ -3169,7 +3169,7 @@ </histogram> <histogram name="Android.SelectFileDialogScope" enum="SelectFileDialogScope" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>peter@chromium.org</owner> <owner>finnur@chromium.org</owner> <summary> @@ -3199,7 +3199,7 @@ </histogram> <histogram name="Android.Survey.DownloadAttemptsBeforeAccepted" units="units" - expires_after="2022-10-09"> + expires_after="2022-12-18"> <owner>skym@chromium.org</owner> <owner>wenyufu@chromium.org</owner> <owner>clank-app-team@google.com</owner> @@ -3269,7 +3269,7 @@ </histogram> <histogram name="Android.Survey.ShowSurveyStatus" - enum="SurveyPresentationStatusCode" expires_after="2022-10-09"> + enum="SurveyPresentationStatusCode" expires_after="2022-12-18"> <owner>aishwaryarj@google.com</owner> <owner>twellington@chromium.org</owner> <owner>wenyufu@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/apps/histograms.xml b/tools/metrics/histograms/metadata/apps/histograms.xml index 41d0675..771d64a 100644 --- a/tools/metrics/histograms/metadata/apps/histograms.xml +++ b/tools/metrics/histograms/metadata/apps/histograms.xml
@@ -308,7 +308,7 @@ </histogram> <histogram name="Apps.AppList.AppListSortDiscoveryDurationAfterActivation" - units="ms" expires_after="M107"> + units="ms" expires_after="2022-12-18"> <owner>andrewxu@chromium.org</owner> <owner>tbarzic@chromium.org</owner> <summary> @@ -608,7 +608,7 @@ </histogram> <histogram name="Apps.AppList.ItemSuggestCache.Status" - enum="ItemSuggestCacheStatus" expires_after="2022-10-17"> + enum="ItemSuggestCacheStatus" expires_after="2022-12-18"> <owner>tby@chromium.org</owner> <owner>thanhdng@chromium.org</owner> <owner>wrong@chromium.org</owner> @@ -978,7 +978,7 @@ </histogram> <histogram name="Apps.AppList.SortDiscoveryDurationAfterEducationNudge" - units="ms" expires_after="M107"> + units="ms" expires_after="2022-12-18"> <owner>andrewxu@chromium.org</owner> <owner>tbarzic@chromium.org</owner> <summary> @@ -1377,7 +1377,7 @@ </histogram> <histogram name="Apps.AppListCreationTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tbarzic@chromium.org</owner> <owner>mmourgos@chromium.org</owner> <summary> @@ -2510,7 +2510,7 @@ </summary> </histogram> -<histogram name="Apps.NumberOfPages" units="page(s)" expires_after="2022-10-17"> +<histogram name="Apps.NumberOfPages" units="page(s)" expires_after="2022-12-18"> <owner>mmourgos@chromium.org</owner> <owner>tbarzic@chromium.org</owner> <owner>newcomer@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/arc/histograms.xml b/tools/metrics/histograms/metadata/arc/histograms.xml index d30ca119..5757717 100644 --- a/tools/metrics/histograms/metadata/arc/histograms.xml +++ b/tools/metrics/histograms/metadata/arc/histograms.xml
@@ -291,7 +291,7 @@ </summary> </histogram> -<histogram name="Arc.AppCount" units="units" expires_after="2022-12-11"> +<histogram name="Arc.AppCount" units="units" expires_after="2022-12-18"> <owner>elijahtaylor@google.com</owner> <owner>fahdi@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index 0558398..2e2e9e0 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -130,7 +130,7 @@ </histogram> <histogram name="Ash.Accelerators.WindowSnap" - enum="WindowSnapAcceleratorAction" expires_after="M107"> + enum="WindowSnapAcceleratorAction" expires_after="2022-12-18"> <owner>amusbach@chromium.org</owner> <owner>xdai@chromium.org</owner> <summary>Captures usage of Alt+[ and Alt+].</summary> @@ -3274,7 +3274,7 @@ </histogram> <histogram name="Ash.Overview.TimeInOverview" units="ms" - expires_after="2022-10-08"> + expires_after="2022-12-18"> <owner>nupurjain@chromium.org</owner> <owner>sammiequon@chromium.org</owner> <summary> @@ -4079,7 +4079,7 @@ </histogram> <histogram name="Ash.SplitView.TimeInSplitView" units="ms" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>xdai@chromium.org</owner> <owner>nupurjain@chromim.org</owner> <owner>fanafan@chromium.org</owner> @@ -4220,7 +4220,7 @@ </histogram> <histogram name="Ash.StatusAreaShowBubble.PresentationTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>leandre@chromium.org</owner> <owner>amehfooz@chromium.org</owner> <owner>tbarzic@chromium.org</owner> @@ -4804,7 +4804,7 @@ </histogram> <histogram name="Ash.Window.Snap.DeviceOrientation" enum="DeviceOrientation" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>cattalyya@chromium.org</owner> <owner>afakhry@chromium.org</owner> <owner>nupurjain@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/assistant/histograms.xml b/tools/metrics/histograms/metadata/assistant/histograms.xml index 4b53d22..c5099ac4 100644 --- a/tools/metrics/histograms/metadata/assistant/histograms.xml +++ b/tools/metrics/histograms/metadata/assistant/histograms.xml
@@ -65,7 +65,7 @@ </histogram> <histogram name="Assistant.DspHotwordDetection" - enum="DspHotwordDetectionStatus" expires_after="2022-10-16"> + enum="DspHotwordDetectionStatus" expires_after="2022-12-18"> <owner>xiaohuic@chromium.org</owner> <owner>croissant-eng@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/autofill/histograms.xml b/tools/metrics/histograms/metadata/autofill/histograms.xml index 414678a..e468e4d 100644 --- a/tools/metrics/histograms/metadata/autofill/histograms.xml +++ b/tools/metrics/histograms/metadata/autofill/histograms.xml
@@ -756,7 +756,7 @@ </histogram> <histogram name="Autofill.CardUploadDecisionMetric" - enum="AutofillCardUploadDecisionMetric" expires_after="2022-10-16"> + enum="AutofillCardUploadDecisionMetric" expires_after="2022-12-18"> <owner>jsaul@google.com</owner> <owner>siyua@chromium.org</owner> <owner>payments-autofill-team@google.com</owner> @@ -1453,7 +1453,7 @@ </histogram> <histogram name="Autofill.FormSubmission.PerProfileType" - enum="BrowserProfileType" expires_after="2022-10-16"> + enum="BrowserProfileType" expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <summary> @@ -3294,7 +3294,7 @@ </histogram> <histogram name="Autofill.SuggestionAccepted.OffTheRecord" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml index 2db4e34..b60dc04 100644 --- a/tools/metrics/histograms/metadata/blink/histograms.xml +++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -87,7 +87,7 @@ </histogram> <histogram base="true" name="Blink.Animate.UpdateTime" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePreFCPSuffixes" --> <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePostFCPSuffixes" --> @@ -118,7 +118,7 @@ </histogram> <histogram name="Blink.AutomaticLazyLoadFrame" - enum="AutomaticLazyLoadFrameState" expires_after="2022-10-16"> + enum="AutomaticLazyLoadFrameState" expires_after="2022-12-18"> <owner>sisidovski@google.com</owner> <owner>kouhei@chromium.org</owner> <summary> @@ -184,7 +184,7 @@ </histogram> <histogram name="Blink.Canvas.GPUFallbackToCPU" - enum="CanvasGPUFallbackToCPUScenario" expires_after="2022-10-16"> + enum="CanvasGPUFallbackToCPUScenario" expires_after="2022-12-18"> <owner>fserb@chromium.org</owner> <summary>Logs the occurrences of canvas fallback from GPU to CPU.</summary> </histogram> @@ -640,7 +640,7 @@ </histogram> <histogram name="Blink.ContextMenu.ImageSelection.Outcome" - enum="ImageSelectionOutcome" expires_after="2022-10-16"> + enum="ImageSelectionOutcome" expires_after="2022-12-18"> <owner>benwgold@google.com</owner> <owner>flackr@chromium.org</owner> <summary> @@ -1168,7 +1168,7 @@ </histogram> <histogram name="Blink.Fonts.VariableFontsRatio" - enum="WebFontInstantiationResult" expires_after="2022-10-16"> + enum="WebFontInstantiationResult" expires_after="2022-12-18"> <owner>drott@chromium.org</owner> <owner>layout-dev@chromium.org</owner> <summary> @@ -1248,7 +1248,7 @@ </histogram> <histogram base="true" name="Blink.ForcedStyleAndLayout.UpdateTime" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePreFCPSuffixes" --> <!-- Name completed by histogram_suffixes name="BlinkUpdateTimePostFCPSuffixes" --> @@ -2066,7 +2066,7 @@ </summary> </histogram> -<histogram name="Blink.Plugin.UpdateTime" units="ms" expires_after="2022-10-16"> +<histogram name="Blink.Plugin.UpdateTime" units="ms" expires_after="2022-12-18"> <owner>cduvall@chromium.org</owner> <owner>jam@chromium.org</owner> <summary> @@ -2268,7 +2268,7 @@ </histogram> <histogram name="Blink.Script.SourceTextTime" units="microseconds" - expires_after="2022-10-18"> + expires_after="2022-12-18"> <owner>cduvall@chromium.org</owner> <owner>jam@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/bookmarks/histograms.xml b/tools/metrics/histograms/metadata/bookmarks/histograms.xml index a6c2080..f80a0d33 100644 --- a/tools/metrics/histograms/metadata/bookmarks/histograms.xml +++ b/tools/metrics/histograms/metadata/bookmarks/histograms.xml
@@ -70,7 +70,7 @@ </histogram> <histogram name="Bookmarks.AddedPerProfileType" enum="BrowserProfileType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <component>UI>Browser>Bookmarks</component> @@ -569,7 +569,7 @@ </histogram> <histogram name="Bookmarks.LaunchLocation" enum="BookmarkLaunchLocation" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ianwen@chromium.org</owner> <component>UI>Browser>Bookmarks</component> <summary>Logs a UI location from which a bookmark is launched.</summary> @@ -618,7 +618,7 @@ </histogram> <histogram name="Bookmarks.OpenBookmarkType" enum="BookmarkType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>wychen@chromium.org</owner> <component>UI>Browser>Bookmarks</component> <summary> @@ -628,7 +628,7 @@ </histogram> <histogram name="Bookmarks.ReadingList.NumberOfItems" units="items" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <component>UI>Browser>Bookmarks</component> <component>UI>Browser>Mobile>ReadingList</component> @@ -639,7 +639,7 @@ </histogram> <histogram name="Bookmarks.ReadingList.NumberOfReadItems" units="items" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <component>UI>Browser>Bookmarks</component> <component>UI>Browser>Mobile>ReadingList</component> @@ -701,7 +701,7 @@ </histogram> <histogram name="Bookmarks.UsageCountPerProfileType" enum="BrowserProfileType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <component>UI>Browser>Bookmarks</component>
diff --git a/tools/metrics/histograms/metadata/browser/histograms.xml b/tools/metrics/histograms/metadata/browser/histograms.xml index b3f5556..c0a6b60 100644 --- a/tools/metrics/histograms/metadata/browser/histograms.xml +++ b/tools/metrics/histograms/metadata/browser/histograms.xml
@@ -182,7 +182,7 @@ </histogram> <histogram name="Browser.PaintPreview.Player.LinkClicked" enum="BooleanSuccess" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <owner>chrome-fdt@google.com</owner> @@ -201,7 +201,7 @@ </histogram> <histogram name="Browser.PaintPreview.TabbedPlayer.CompositorFailureReason" - enum="TabbedPaintPreviewCompositorFailureReason" expires_after="2022-10-16"> + enum="TabbedPaintPreviewCompositorFailureReason" expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <owner>chrome-fdt@google.com</owner> @@ -224,7 +224,7 @@ </histogram> <histogram name="Browser.PaintPreview.TabbedPlayer.FirstPaintBeforeTabLoad" - enum="Boolean" expires_after="2022-08-07"> + enum="Boolean" expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <owner>chrome-fdt@google.com</owner> @@ -247,7 +247,7 @@ </histogram> <histogram name="Browser.PaintPreview.TabbedPlayer.SnackbarCount" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <owner>chrome-fdt@google.com</owner> @@ -321,7 +321,7 @@ </histogram> <histogram name="Browser.Responsiveness.IOJankyIntervalsPerMinute" - units="janks" expires_after="2022-10-16"> + units="janks" expires_after="2022-12-18"> <owner>gab@chromium.org</owner> <owner>olivierli@chromium.org</owner> <summary> @@ -576,7 +576,7 @@ </histogram> <histogram name="Browser.ThemeService.BrowserThemeProvider.GetColor" units="ms" - expires_after="2022-06-15"> + expires_after="2022-12-11"> <owner>pkasting@chromium.org</owner> <owner>robliao@chromium.org</owner> <owner>tluk@chromium.org</owner> @@ -587,7 +587,7 @@ <histogram name="Browser.ThemeService.BrowserThemeProvider.GetColor.UsesColorProvider" - enum="Boolean" expires_after="2022-06-15"> + enum="Boolean" expires_after="2022-12-11"> <owner>pkasting@chromium.org</owner> <owner>robliao@chromium.org</owner> <owner>tluk@chromium.org</owner> @@ -829,7 +829,7 @@ </histogram> <histogram name="BrowserServices.ServiceTabResolveInfoQuery" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>peconn@chromium.org</owner> <owner>peter@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml index c9313b34..e305fde1 100644 --- a/tools/metrics/histograms/metadata/chromeos/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -436,7 +436,7 @@ </histogram> <histogram base="true" name="ChromeOS.Camera.Jpeg.Resolution" units="pixels" - expires_after="2022-10-01"> + expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="ChromeOS.Camera.JpegProcessMethod" and name="ChromeOS.Camera.JpegProcessType" --> @@ -956,7 +956,7 @@ </histogram> <histogram name="ChromeOS.Intents.IntentPickerAction" - enum="IntentPickerDialogAction" expires_after="2022-12-11"> + enum="IntentPickerDialogAction" expires_after="2022-12-18"> <owner>tsergeant@chromium.org</owner> <owner>chromeos-apps-foundation-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/commerce/histograms.xml b/tools/metrics/histograms/metadata/commerce/histograms.xml index 9b10a8a..71bec267 100644 --- a/tools/metrics/histograms/metadata/commerce/histograms.xml +++ b/tools/metrics/histograms/metadata/commerce/histograms.xml
@@ -124,7 +124,7 @@ </histogram> <histogram name="Commerce.Heuristics.CartExtractionScriptSource" - enum="CommerceHeuristicsDataSource" expires_after="2022-10-01"> + enum="CommerceHeuristicsDataSource" expires_after="2022-12-18"> <owner>yuezhanggg@chromium.org</owner> <owner>wychen@chromium.org</owner> <owner>chrome-shopping@google.com</owner> @@ -135,7 +135,7 @@ </histogram> <histogram name="Commerce.Heuristics.CheckoutURLGeneralPatternSource" - enum="CommerceHeuristicsDataSource" expires_after="2022-10-01"> + enum="CommerceHeuristicsDataSource" expires_after="2022-12-18"> <owner>yuezhanggg@chromium.org</owner> <owner>wychen@chromium.org</owner> <owner>chrome-shopping@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml index cbdbaa9..319a603e 100644 --- a/tools/metrics/histograms/metadata/compositing/histograms.xml +++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -213,7 +213,7 @@ </histogram> <histogram name="Compositing.Display.Draw.Occlusion.Calculation.Time" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>yiyix@chromium.org</owner> <owner>chromeos-gfx@chromium.org</owner> <summary> @@ -405,7 +405,7 @@ </histogram> <histogram name="Compositing.Display.VizDependencyResolvedToGpuStartedDrawUs" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>vasilyt@chromium.org</owner> <owner>backer@chromium.org</owner> <summary> @@ -418,7 +418,7 @@ </histogram> <histogram name="Compositing.Display.VizScheduledDrawToDependencyResolvedUs" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>vasilyt@chromium.org</owner> <owner>backer@chromium.org</owner> <summary> @@ -432,7 +432,7 @@ </histogram> <histogram name="Compositing.Display.VizScheduledDrawToGpuStartedDrawUs" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>vasilyt@chromium.org</owner> <owner>backer@chromium.org</owner> <summary> @@ -545,7 +545,7 @@ </histogram> <histogram name="Compositing.Renderer.LayersUpdateTime" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>schenney@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -586,7 +586,7 @@ </histogram> <histogram name="Compositing.Renderer.LCDTextDisallowedReasonLayers" - enum="LCDTextDisallowedReason" expires_after="2022-10-16"> + enum="LCDTextDisallowedReason" expires_after="2022-12-18"> <owner>wangxianzhu@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -596,7 +596,7 @@ </histogram> <histogram name="Compositing.Renderer.NumActiveLayers" units="layers" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>schenney@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -606,7 +606,7 @@ </histogram> <histogram name="Compositing.Renderer.NumActivePictureLayers" units="layers" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>schenney@chromium.org</owner> <owner>paint-dev@chromium.org</owner> <summary> @@ -798,7 +798,7 @@ </histogram> <histogram name="CompositorLatency.Type" enum="FrameReportType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary> @@ -1021,7 +1021,7 @@ </histogram> <histogram name="Graphics.Smoothness.MaxPercentDroppedFrames_1sWindow" - units="%" expires_after="2022-10-16"> + units="%" expires_after="2022-12-18"> <owner>behdadb@chromium.org</owner> <owner>sadrul@chromium.org</owner> <summary> @@ -1035,7 +1035,7 @@ </histogram> <histogram name="Graphics.Smoothness.MaxStale" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>mjzhang@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> @@ -1079,7 +1079,7 @@ </histogram> <histogram name="Graphics.Smoothness.PercentDroppedFrames.AllAnimations" - units="%" expires_after="2022-10-16"> + units="%" expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>ericrk@chromium.org</owner> <summary> @@ -1100,7 +1100,7 @@ </histogram> <histogram name="Graphics.Smoothness.PercentDroppedFrames.AllInteractions" - units="%" expires_after="2022-10-16"> + units="%" expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>ericrk@chromium.org</owner> <summary> @@ -1121,7 +1121,7 @@ </histogram> <histogram name="Graphics.Smoothness.PercentDroppedFrames.AllSequences" - units="%" expires_after="2022-10-16"> + units="%" expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>ericrk@chromium.org</owner> <summary> @@ -1403,7 +1403,7 @@ </histogram> <histogram name="Graphics.Smoothness.Stale" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>mjzhang@chromium.org</owner> <owner>graphics-dev@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/content_creation/histograms.xml b/tools/metrics/histograms/metadata/content_creation/histograms.xml index 89b6785..9951910 100644 --- a/tools/metrics/histograms/metadata/content_creation/histograms.xml +++ b/tools/metrics/histograms/metadata/content_creation/histograms.xml
@@ -394,7 +394,7 @@ </histogram> <histogram name="SharedHighlights.LinkGenerated.Error.Requested" - enum="LinkGenerationError" expires_after="2022-10-16"> + enum="LinkGenerationError" expires_after="2022-12-18"> <owner>gayane@chromium.org</owner> <owner>chrome-shared-highlighting@google.com</owner> <summary> @@ -404,7 +404,7 @@ </histogram> <histogram name="SharedHighlights.LinkGenerated.Error.TimeToGenerate" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>gayane@chromium.org</owner> <owner>chrome-shared-highlighting@google.com</owner> <summary> @@ -424,7 +424,7 @@ </histogram> <histogram name="SharedHighlights.LinkGenerated.ParamLength" units="characters" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gayane@chromium.org</owner> <owner>chrome-shared-highlighting@google.com</owner> <summary> @@ -456,7 +456,7 @@ </histogram> <histogram name="SharedHighlights.LinkGenerated.StateAtRequest" - enum="LinkGenerationState" expires_after="2022-10-16"> + enum="LinkGenerationState" expires_after="2022-12-18"> <owner>gayane@chromium.org</owner> <owner>chrome-shared-highlighting@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/cookie/histograms.xml b/tools/metrics/histograms/metadata/cookie/histograms.xml index 16490bb1..eccb167 100644 --- a/tools/metrics/histograms/metadata/cookie/histograms.xml +++ b/tools/metrics/histograms/metadata/cookie/histograms.xml
@@ -126,7 +126,7 @@ </summary> </histogram> -<histogram name="Cookie.Count2" units="units" expires_after="2022-10-16"> +<histogram name="Cookie.Count2" units="units" expires_after="2022-12-18"> <owner>bingler@chromium.org</owner> <owner>morlovich@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/cros_ml/histograms.xml b/tools/metrics/histograms/metadata/cros_ml/histograms.xml index e45b4d3..7c81385a 100644 --- a/tools/metrics/histograms/metadata/cros_ml/histograms.xml +++ b/tools/metrics/histograms/metadata/cros_ml/histograms.xml
@@ -304,7 +304,7 @@ </histogram> <histogram name="MachineLearningService.WorkerProcessAcceptMojoConnectionTime" - units="microseconds" expires_after="2022-10-17"> + units="microseconds" expires_after="2022-12-18"> <owner>alanlxl@chromium.org</owner> <owner>amoylan@chromium.org</owner> <owner>honglinyu@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/crostini/histograms.xml b/tools/metrics/histograms/metadata/crostini/histograms.xml index 8ae2971b..9cd626b 100644 --- a/tools/metrics/histograms/metadata/crostini/histograms.xml +++ b/tools/metrics/histograms/metadata/crostini/histograms.xml
@@ -449,7 +449,7 @@ </histogram> <histogram name="Crostini.Sshfs.Unmount.Result" enum="BooleanSuccess" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>davidmunro@google.com</owner> <owner>clumptini@google.com</owner> <summary> @@ -459,7 +459,7 @@ </histogram> <histogram name="Crostini.Sshfs.Unmount.TimeTaken" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>davidmunro@google.com</owner> <owner>clumptini@google.com</owner> <summary> @@ -554,7 +554,19 @@ <owner>clumptini@google.com</owner> <summary> Recorded each time the user completes the Crostini uninstall UI, recording - the result of the uninstall. + the result of the uninstall. Error cases are broken down more in + Crostini.UninstallResult.Reason. + </summary> +</histogram> + +<histogram name="Crostini.UninstallResult.Reason" enum="CrostiniResult" + expires_after="2023-05-01"> + <owner>timloh@google.com</owner> + <owner>clumptini@google.com</owner> + <summary> + The result of a completed Crostini uninstallation. This is recorded when an + uninstall that the user triggered via the Crostini uninstaller dialog + finishes, either successfully or unsuccessful. </summary> </histogram>
diff --git a/tools/metrics/histograms/metadata/direct/histograms.xml b/tools/metrics/histograms/metadata/direct/histograms.xml index ce10c32..6c2fb967 100644 --- a/tools/metrics/histograms/metadata/direct/histograms.xml +++ b/tools/metrics/histograms/metadata/direct/histograms.xml
@@ -53,7 +53,7 @@ </histogram> <histogram name="DirectWrite.Fonts.Proxy.EmptyFamilyResultsRatio" - units="percentage of empty family results" expires_after="2022-10-15"> + units="percentage of empty family results" expires_after="2022-12-18"> <owner>drott@chromium.org</owner> <owner>layout-dev@chromium.org</owner> <summary> @@ -155,7 +155,7 @@ </histogram> <histogram name="DirectWrite.Fonts.Proxy.LoaderType" - enum="DirectWriteFontLoaderType" expires_after="2022-10-15"> + enum="DirectWriteFontLoaderType" expires_after="2022-12-18"> <owner>drott@chromium.org</owner> <owner>layout-dev@chromium.org</owner> <summary> @@ -177,7 +177,7 @@ </histogram> <histogram name="DirectWrite.Fonts.Proxy.LoadFamilyTime" units="ms" - expires_after="2022-10-15"> + expires_after="2022-12-18"> <owner>drott@chromium.org</owner> <owner>layout-dev@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/download/histograms.xml b/tools/metrics/histograms/metadata/download/histograms.xml index ee203fa6..73c2f88 100644 --- a/tools/metrics/histograms/metadata/download/histograms.xml +++ b/tools/metrics/histograms/metadata/download/histograms.xml
@@ -89,7 +89,7 @@ </histogram> <histogram name="Download.Bubble.PartialToFullViewLatency" units="ms" - expires_after="2022-10-18"> + expires_after="2022-12-18"> <owner>bhatiarohit@google.com</owner> <owner>chrome-safebrowsing-alerts@chromium.org</owner> <summary> @@ -270,7 +270,7 @@ </histogram> <histogram name="Download.DownloadDangerPrompt" - enum="SBClientDownloadExtensions" expires_after="2022-10-16"> + enum="SBClientDownloadExtensions" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -763,7 +763,7 @@ </histogram> <histogram name="Download.Progress.InfoBar.CloseButtonClicked" - enum="DownloadInfoBarState" expires_after="2022-10-16"> + enum="DownloadInfoBarState" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>clank-downloads@google.com</owner> <summary> @@ -773,7 +773,7 @@ </histogram> <histogram name="Download.Progress.InfoBar.Shown" - enum="DownloadInfoBar.ShownState" expires_after="2022-10-16"> + enum="DownloadInfoBar.ShownState" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>clank-downloads@google.com</owner> <summary> @@ -1007,7 +1007,7 @@ </histogram> <histogram name="Download.Service.Finish.Type" - enum="Download.Service.CompletionType" expires_after="2022-10-16"> + enum="Download.Service.CompletionType" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>clank-downloads@google.com</owner> <summary>The completion type for downloads in download service.</summary>
diff --git a/tools/metrics/histograms/metadata/enterprise/histograms.xml b/tools/metrics/histograms/metadata/enterprise/histograms.xml index 6a9a1695..6c023c7 100644 --- a/tools/metrics/histograms/metadata/enterprise/histograms.xml +++ b/tools/metrics/histograms/metadata/enterprise/histograms.xml
@@ -2200,7 +2200,7 @@ </histogram> <histogram name="EnterpriseCheck.InvalidPolicies" enum="EnterprisePolicies" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>pastarmovj@chromium.org</owner> <summary> A set of policy rules that were ignored due to integrity violations while @@ -2210,7 +2210,7 @@ </histogram> <histogram name="EnterpriseCheck.InvalidPoliciesDetected" - units="disabled policies" expires_after="2022-10-16"> + units="disabled policies" expires_after="2022-12-18"> <owner>pastarmovj@chromium.org</owner> <owner>zmin@chomium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/event/histograms.xml b/tools/metrics/histograms/metadata/event/histograms.xml index 9920695..d9133da 100644 --- a/tools/metrics/histograms/metadata/event/histograms.xml +++ b/tools/metrics/histograms/metadata/event/histograms.xml
@@ -1087,7 +1087,7 @@ <histogram name="Event.Latency.ScrollUpdate.Scrollbar.TimeToScrollUpdateSwapBegin4" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>flackr@chromium.org</owner> <owner>arakeri@microsoft.com</owner> <owner>input-dev@chromium.org</owner> @@ -1566,7 +1566,7 @@ </histogram> <histogram name="Event.PassiveListeners" enum="EventResultType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>dtapuska@chromium.org</owner> <summary> The result of handling of MouseWheel, TouchStart, TouchMove, TouchEnd events
diff --git a/tools/metrics/histograms/metadata/extensions/histograms.xml b/tools/metrics/histograms/metadata/extensions/histograms.xml index a6d113b..25faa04 100644 --- a/tools/metrics/histograms/metadata/extensions/histograms.xml +++ b/tools/metrics/histograms/metadata/extensions/histograms.xml
@@ -1503,7 +1503,7 @@ </histogram> <histogram name="Extensions.ForceInstalledFailureReason3" - enum="ExtensionInstallationFailureReason" expires_after="2022-10-16"> + enum="ExtensionInstallationFailureReason" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="ExtensionSource" --> <owner>vkovalova@google.com</owner> @@ -1610,7 +1610,7 @@ </histogram> <histogram name="Extensions.ForceInstalledLoadTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vkovalova@google.com</owner> <owner>burunduk@chromium.org</owner> <owner>managed-devices@google.com</owner> @@ -1646,7 +1646,7 @@ <histogram name="Extensions.ForceInstalledSessionsWithNonMisconfigurationFailureOccured" - enum="Boolean" expires_after="2022-10-16"> + enum="Boolean" expires_after="2022-12-18"> <owner>vkovalova@google.com</owner> <owner>burunduk@chromium.org</owner> <owner>managed-devices@google.com</owner> @@ -1691,7 +1691,7 @@ </histogram> <histogram name="Extensions.ForceInstalledTimedOutCount" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vkovalova@google.com</owner> <owner>burunduk@chromium.org</owner> <owner>managed-devices@google.com</owner> @@ -2528,7 +2528,7 @@ </histogram> <histogram name="Extensions.LoadType" enum="ExtensionType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rdevlin.cronin@chromium.org</owner> <owner>extensions-core@chromium.org</owner> <summary> @@ -2773,7 +2773,7 @@ </histogram> <histogram name="Extensions.NewTabPageOverrides" units="units" - expires_after="2022-09-11"> + expires_after="2022-12-18"> <owner>rdevlin.cronin@chromium.org</owner> <owner>kelvinjiang@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/gcm/histograms.xml b/tools/metrics/histograms/metadata/gcm/histograms.xml index 5f1d01b..2f81fc5 100644 --- a/tools/metrics/histograms/metadata/gcm/histograms.xml +++ b/tools/metrics/histograms/metadata/gcm/histograms.xml
@@ -33,7 +33,7 @@ </histogram> <histogram name="GCM.CheckinRequestStatus" enum="GCMCheckinRequestStatus" - expires_after="2022-08-14"> + expires_after="2022-12-18"> <owner>peter@chromium.org</owner> <owner>knollr@chromium.org</owner> <summary>Status code of the outcome of a GCM checkin request.</summary>
diff --git a/tools/metrics/histograms/metadata/gpu/histograms.xml b/tools/metrics/histograms/metadata/gpu/histograms.xml index 6853fe1..e380d8b 100644 --- a/tools/metrics/histograms/metadata/gpu/histograms.xml +++ b/tools/metrics/histograms/metadata/gpu/histograms.xml
@@ -498,7 +498,7 @@ </histogram> <histogram name="GPU.ContextLost" enum="ContextLostReason" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sievers@chromium.org</owner> <summary> The reason a GPU command buffer context of a given type was lost. @@ -794,7 +794,7 @@ </histogram> <histogram name="GPU.EGLDisplayType" enum="EGLDisplayType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>zmo@chromium.org</owner> <owner>graphics-dev@chromium.org</owner> <summary>The display type used to ask for an EGLDisplay.</summary> @@ -1032,7 +1032,7 @@ </histogram> <histogram name="GPU.IntelGpuGeneration" enum="IntelGpuGeneration" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sadrul@chromium.org</owner> <owner>zmo@chromium.org</owner> <summary> @@ -1042,7 +1042,7 @@ </histogram> <histogram name="GPU.IntelGpuSeriesType" enum="IntelGpuSeriesType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sunnyps@chromium.org</owner> <owner>zmo@chromium.org</owner> <summary> @@ -1509,7 +1509,7 @@ </histogram> <histogram name="GPU.SupportsDX12" enum="BooleanSupported" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>magchen@chromium.org</owner> <owner>zmo@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/history/histograms.xml b/tools/metrics/histograms/metadata/history/histograms.xml index f62074b9..e33845f 100644 --- a/tools/metrics/histograms/metadata/history/histograms.xml +++ b/tools/metrics/histograms/metadata/history/histograms.xml
@@ -488,7 +488,7 @@ </histogram> <histogram name="History.Clusters.Actions.DidMakeQuery" enum="BooleanQueried" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mcrouse@chromium.org</owner> <owner>chrome-journeys@google.com</owner> <component>UI>Browser>History</component> @@ -1374,7 +1374,7 @@ </histogram> <histogram name="History.InMemoryDBItemCount" units="typed URLs" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sky@chromium.org</owner> <owner>mpearson@chromium.org</owner> <component>UI>Browser>History</component> @@ -1484,7 +1484,7 @@ </histogram> <histogram name="History.MonthlyHostCount" units="hosts" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mpearson@chromium.org</owner> <owner>sky@chromium.org</owner> <component>UI>Browser>History</component>
diff --git a/tools/metrics/histograms/metadata/input/histograms.xml b/tools/metrics/histograms/metadata/input/histograms.xml index 10186854..e8e95eb 100644 --- a/tools/metrics/histograms/metadata/input/histograms.xml +++ b/tools/metrics/histograms/metadata/input/histograms.xml
@@ -23,7 +23,7 @@ <histograms> <histogram name="InputMethod.ActiveCount" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>myy@chromium.org</owner> <owner>essential-inputs-team@google.com</owner> <summary> @@ -379,7 +379,7 @@ </histogram> <histogram name="InputMethod.Category" enum="InputMethodCategory" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>shend@chromium.org</owner> <owner>essential-inputs-team@google.com</owner> <summary> @@ -498,7 +498,7 @@ </histogram> <histogram name="InputMethod.Handwriting.CharsEdited5s" units="chars" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>shend@chromium.org</owner> <owner>essential-inputs-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/interstitial/histograms.xml b/tools/metrics/histograms/metadata/interstitial/histograms.xml index 8503a65..ed6f8df 100644 --- a/tools/metrics/histograms/metadata/interstitial/histograms.xml +++ b/tools/metrics/histograms/metadata/interstitial/histograms.xml
@@ -177,7 +177,7 @@ </histogram> <histogram name="TypedNavigationUpgradeThrottle.Event" - enum="TypedNavigationUpgradeThrottleEvent" expires_after="2022-10-16"> + enum="TypedNavigationUpgradeThrottleEvent" expires_after="2022-12-18"> <owner>meacer@chromium.org</owner> <owner>trusty-transport@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml index 407295b..ba706cd 100644 --- a/tools/metrics/histograms/metadata/ios/histograms.xml +++ b/tools/metrics/histograms/metadata/ios/histograms.xml
@@ -23,7 +23,7 @@ <histograms> <histogram name="IOS.Allocator.ShimInstalled" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rohitrao@chromium.org</owner> <owner>justincohen@chromium.org</owner> <summary> @@ -816,7 +816,7 @@ </histogram> <histogram name="IOS.LinkToText.ShouldOfferResult" - enum="LinkToTextShouldOfferResult" expires_after="2022-10-16"> + enum="LinkToTextShouldOfferResult" expires_after="2022-12-18"> <owner>tmartino@chromium.org</owner> <owner>seblalancette@chromium.org</owner> <summary> @@ -1065,7 +1065,7 @@ </histogram> <histogram name="IOS.NTP.Impression" enum="IOSNTPImpression" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gambard@chromium.org</owner> <summary> The type of NTP impressions on iOS, split by type of suggestions shown @@ -1120,7 +1120,7 @@ </histogram> <histogram name="IOS.PageLoadCount.Counts" - enum="IOSPageLoadCountNavigationType" expires_after="2022-10-16"> + enum="IOSPageLoadCountNavigationType" expires_after="2022-12-18"> <owner>gambard@chromium.org</owner> <owner>bling-team@google.com</owner> <summary>The number of navigation started events by navigation type.</summary> @@ -1323,7 +1323,7 @@ </histogram> <histogram name="IOS.RestoreNavigationTime" units="ms" - expires_after="2022-09-12"> + expires_after="2022-12-18"> <owner>gambard@chromium.org</owner> <owner>justincohen@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml index 03e2aceb..227d26a 100644 --- a/tools/metrics/histograms/metadata/media/histograms.xml +++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -95,7 +95,7 @@ </histogram> <histogram name="Media.Android.GetColorSpaceError" enum="BooleanError" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vasilyt@chromium.org</owner> <owner>liberato@chromium.org</owner> <owner>media-dev@chromium.org</owner> @@ -205,7 +205,7 @@ </histogram> <histogram name="Media.Audio.Capture.DetectedMissingCallbacks" - enum="BooleanMissingCallbacks" expires_after="2022-10-16"> + enum="BooleanMissingCallbacks" expires_after="2022-12-18"> <owner>guidou@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -234,7 +234,10 @@ </histogram> <histogram name="Media.Audio.Capture.Glitches" units="glitches" - expires_after="2022-10-16"> + expires_after="2022-12-18"> + <obsolete> + Removed 06/2022, replaced by Media.Audio.Capture.Glitches2. + </obsolete> <owner>guidou@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -266,7 +269,10 @@ </histogram> <histogram name="Media.Audio.Capture.LargestGlitchMs" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> + <obsolete> + Removed 06/2022, replaced by Media.Audio.Capture.LargestGlitchMs2. + </obsolete> <owner>guidou@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -278,6 +284,9 @@ <histogram name="Media.Audio.Capture.LostFramesInMs" units="ms" expires_after="2022-10-23"> + <obsolete> + Removed 06/2022, replaced by Media.Audio.Capture.LostFramesInMs2. + </obsolete> <owner>guidou@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -422,6 +431,9 @@ <histogram name="Media.Audio.Capture.Win.Glitches" units="glitches" expires_after="2022-12-11"> + <obsolete> + Removed 06/2022, replaced by Media.Audio.Render.Win.Glitches2. + </obsolete> <owner>henrika@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -433,6 +445,19 @@ </summary> </histogram> +<histogram name="Media.Audio.Capture.Win.Glitches2" units="glitches" + expires_after="2022-12-11"> + <owner>henrika@chromium.org</owner> + <owner>media-dev@chromium.org</owner> + <summary> + The number of glitches that were detected at the OS level while an audio + input stream was active. A glitch in this case corresponds to a certain + error code from the IAudioCaptureClient::GetBuffer() API: + AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY. This value is logged every 1000 OS + callbacks on Windows. + </summary> +</histogram> + <histogram name="Media.Audio.Capture.Win.InitError" enum="Hresult" expires_after="2022-10-30"> <owner>tommi@chromium.org</owner> @@ -457,7 +482,7 @@ </histogram> <histogram name="Media.Audio.Capture.Win.Open" enum="AudioStreamOpenResult" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gudiou@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -990,20 +1015,6 @@ </summary> </histogram> -<histogram name="Media.Audio.Render.Glitches2" units="glitches" - expires_after="2023-06-10"> - <owner>olka@chromium.org</owner> - <owner>saza@chromium.org</owner> - <summary> - The number of glitches that were detected at the OS level while an audio - output stream was active. A glitch is detected if the OS has to skip - rendering a set of frames. This value is aggregated over a period of 1000 OS - callbacks (every 10 seconds for buffer size 10 ms) and is logged at the end - of each collection interval. Not recorded for streams shorter than 1000 - callbacks. Reported on Windows and Mac. - </summary> -</histogram> - <histogram name="Media.Audio.Render.LargestGlitchMs" units="ms" expires_after="2022-10-16"> <obsolete> @@ -1018,20 +1029,6 @@ </summary> </histogram> -<histogram name="Media.Audio.Render.LargestGlitchMs2" units="ms" - expires_after="2023-06-10"> - <owner>olka@chromium.org</owner> - <owner>saza@chromium.org</owner> - <summary> - The length in milliseconds of the largest glitch that was detected at the OS - level by an audio output stream. This value is aggregated over a period of - 1000 OS callbacks (every 10 seconds for buffer size 10 ms) and is logged at - the end of each collection interval if any glitches were detected. Not - recorded for streams shorter than 1000 callbacks. Reported on Windows and - Mac. - </summary> -</histogram> - <histogram name="Media.Audio.Render.LostFramesInMs" units="ms" expires_after="2022-10-23"> <obsolete> @@ -1047,20 +1044,6 @@ </summary> </histogram> -<histogram name="Media.Audio.Render.LostFramesInMs2" units="ms" - expires_after="2023-06-10"> - <owner>olka@chromium.org</owner> - <owner>saza@chromium.org</owner> - <summary> - The combined length in milliseconds of audio glitches. This is useful to - know in particular for audio processing such as echo cancellation. This - value is aggregated over a period of 1000 OS callbacks (every 10 seconds for - buffer size 10 ms) and is logged at the end of each collection interval if - any glitches were detected. Not recorded for streams shorter than 1000 - callbacks. Reported on Windows and Mac. - </summary> -</histogram> - <histogram name="Media.Audio.Render.OutputDeviceAuthorizationTime" units="ms" expires_after="2023-04-04"> <owner>olka@chromium.org</owner> @@ -1260,6 +1243,62 @@ </summary> </histogram> +<histogram name="Media.Audio.{Type}.Glitches2" units="glitches" + expires_after="2023-06-10"> + <owner>olka@chromium.org</owner> + <owner>saza@chromium.org</owner> + <summary> + The number of glitches that were detected at the OS level while an audio + input (Capture) or output (Render) stream was active. A glitch is detected + if the OS skips providing/requesting any frames of audio. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval. Not + recorded for streams shorter than 1000 callbacks. Reported on Windows and + Mac. + </summary> + <token key="Type"> + <variant name="Capture"/> + <variant name="Render"/> + </token> +</histogram> + +<histogram name="Media.Audio.{Type}.LargestGlitchMs2" units="ms" + expires_after="2023-06-10"> + <owner>olka@chromium.org</owner> + <owner>saza@chromium.org</owner> + <summary> + The length in milliseconds of the largest glitch that was detected at the OS + level by an audio input (Capture) or output (Render) stream. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval if any + glitches were detected. Not recorded for streams shorter than 1000 + callbacks. Reported on Windows and Mac. + </summary> + <token key="Type"> + <variant name="Capture"/> + <variant name="Render"/> + </token> +</histogram> + +<histogram name="Media.Audio.{Type}.LostFramesInMs2" units="ms" + expires_after="2023-06-10"> + <owner>olka@chromium.org</owner> + <owner>saza@chromium.org</owner> + <summary> + The combined length in milliseconds of input (Capture) or output (Render) + audio glitches detected at the OS level. This is useful to know in + particular for audio processing such as echo cancellation. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval if any + glitches were detected. Not recorded for streams shorter than 1000 + callbacks. Reported on Windows and Mac. + </summary> + <token key="Type"> + <variant name="Capture"/> + <variant name="Render"/> + </token> +</histogram> + <histogram name="Media.AudioBitsPerChannel" units="units" expires_after="M85"> <owner>dalecurtis@chromium.org</owner> <summary>Bits per channel of HTML5 audio sample data.</summary> @@ -1276,7 +1315,7 @@ </histogram> <histogram name="Media.AudioCapturerDroppedData" units="%" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>olka@chromium.org</owner> <owner>gustaf@chromium.org</owner> <summary> @@ -1303,7 +1342,7 @@ </histogram> <histogram name="Media.AudioCapturerMissedReadDeadline" units="%" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>olka@chromium.org</owner> <owner>gustaf@chromium.org</owner> <summary> @@ -1541,7 +1580,7 @@ </histogram> <histogram name="Media.AudioRendererAudioGlitches" enum="AudioGlitchResult" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>henrika@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -1584,7 +1623,7 @@ </histogram> <histogram name="Media.AudioRendererMissedDeadline" units="%" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>dalecurtis@chromium.org</owner> <owner>olka@chromium.org</owner> <summary> @@ -1849,7 +1888,7 @@ </histogram> <histogram name="Media.Controls.PlaybackSpeed" - enum="MediaControlsPlaybackSpeed" expires_after="2022-10-16"> + enum="MediaControlsPlaybackSpeed" expires_after="2022-12-18"> <owner>steimel@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -3120,7 +3159,7 @@ </histogram> <histogram name="Media.LowLatencyAudioCaptureStartupSuccess" - enum="AudioCaptureStartupResult" expires_after="2022-10-16"> + enum="AudioCaptureStartupResult" expires_after="2022-12-18"> <owner>armax@chromium.org</owner> <owner>guidou@chromium.org</owner> <owner>olka@chromium.org</owner> @@ -3161,7 +3200,7 @@ </histogram> <histogram name="Media.MediaFoundation.VideoColorSpace.PrimaryID" - enum="VideoColorSpace.PrimaryID" expires_after="2022-08-30"> + enum="VideoColorSpace.PrimaryID" expires_after="2022-12-18"> <owner>dalecurtis@chromium.org</owner> <owner>macrabil@microsoft.com</owner> <owner>media-dev@chromium.org</owner> @@ -3599,7 +3638,7 @@ </histogram> <histogram name="Media.Notification.Count" units="count" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>beccahughes@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -3632,7 +3671,7 @@ </histogram> <histogram name="Media.Notification.UserAction" enum="MediaSessionAction" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>beccahughes@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -4451,7 +4490,7 @@ </histogram> <histogram name="Media.Ui.GetDisplayMedia.UserInteraction" - enum="GetDisplayMediaUserInteraction" expires_after="2022-10-16"> + enum="GetDisplayMediaUserInteraction" expires_after="2022-12-18"> <owner>eladalon@chromium.org</owner> <owner>guidou@chromium.org</owner> <owner>agpalak@chromium.org</owner> @@ -4691,7 +4730,7 @@ </summary> </histogram> -<histogram name="Media.Video.Roughness" units="ms" expires_after="2022-10-16"> +<histogram name="Media.Video.Roughness" units="ms" expires_after="2022-12-18"> <owner>eugene@chromium.org</owner> <owner>videostack-eng@chromium.org</owner> <summary> @@ -4719,7 +4758,7 @@ </histogram> <histogram name="Media.VideoCapture.DelayUntilFirstFrame" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>armax@chromium.org</owner> <owner>video-cmi-mpp@google.com</owner> <summary> @@ -4786,7 +4825,7 @@ </histogram> <histogram name="Media.VideoCapture.FrameRate" units="fps" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mcasas@chromium.org</owner> <owner>guidou@chromium.org</owner> <owner>armax@chromium.org</owner> @@ -5063,7 +5102,7 @@ </histogram> <histogram name="Media.VideoCaptureManager.DeviceSessionLockDuration" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>dalecurtis@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -5074,7 +5113,7 @@ </histogram> <histogram name="Media.VideoCaptureManager.DeviceSessionWasLocked" - enum="Boolean" expires_after="2022-10-16"> + enum="Boolean" expires_after="2022-12-18"> <owner>dalecurtis@chromium.org</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -5666,7 +5705,7 @@ </histogram> <histogram name="MediaRouter.Cast.Discovery.ConnectedDevicesCount" - units="devices" expires_after="2022-10-16"> + units="devices" expires_after="2022-12-18"> <owner>mfoltz@chromium.org</owner> <owner>openscreen-eng@google.com</owner> <summary> @@ -5848,7 +5887,7 @@ </histogram> <histogram name="MediaRouter.CastStreaming.Start.Success" enum="MirrorType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>takumif@chromium.org</owner> <owner>openscreen-eng@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/memory/histograms.xml b/tools/metrics/histograms/metadata/memory/histograms.xml index 42b8e3d..864d190 100644 --- a/tools/metrics/histograms/metadata/memory/histograms.xml +++ b/tools/metrics/histograms/metadata/memory/histograms.xml
@@ -491,7 +491,7 @@ </histogram> <histogram name="Memory.Discardable.FreelistSize.Dirty" units="KiB" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>thiabaud@google.com</owner> <owner>lizeb@chromium.org</owner> <summary> @@ -1829,7 +1829,7 @@ </histogram> <histogram name="Memory.PaintPreviewCompositor.PrivateMemoryFootprint" - units="MB" expires_after="2022-10-16"> + units="MB" expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <summary> @@ -1862,7 +1862,7 @@ </histogram> <histogram name="Memory.PaintPreviewCompositor.ResidentSet" units="MiB" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <summary> @@ -2324,7 +2324,7 @@ </histogram> <histogram name="Memory.PartitionAlloc.PeriodicPurge" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>lizeb@chromium.org</owner> <owner>bartekn@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/mobile/histograms.xml b/tools/metrics/histograms/metadata/mobile/histograms.xml index 4a8b538..a122a3b 100644 --- a/tools/metrics/histograms/metadata/mobile/histograms.xml +++ b/tools/metrics/histograms/metadata/mobile/histograms.xml
@@ -83,7 +83,7 @@ </histogram> <histogram name="Mobile.AppMenu.TimeToTakeAction.SelectedItem" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gangwu@chromium.org</owner> <owner>twellington@chromium.org</owner> <summary> @@ -760,7 +760,7 @@ </histogram> <histogram name="MobileFre.ChildAccountStatusDuration" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>skym@chromium.org</owner> <owner>wenyufu@chromium.org</owner> <summary> @@ -856,7 +856,7 @@ </histogram> <histogram name="MobileFre.NativeInitialized" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>skym@chromium.org</owner> <owner>wenyufu@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/navigation/histograms.xml b/tools/metrics/histograms/metadata/navigation/histograms.xml index 85c65e8..a7b7509 100644 --- a/tools/metrics/histograms/metadata/navigation/histograms.xml +++ b/tools/metrics/histograms/metadata/navigation/histograms.xml
@@ -67,7 +67,7 @@ </histogram> <histogram name="BackForwardCache.AllSites.HistoryNavigationOutcome" - enum="BackForwardCacheHistoryNavigationOutcome" expires_after="2022-10-16"> + enum="BackForwardCacheHistoryNavigationOutcome" expires_after="2022-12-18"> <owner>hajimehoshi@chromium.org</owner> <owner>bfcache-dev@chromium.org</owner> <summary> @@ -164,7 +164,7 @@ <histogram name="BackForwardCache.EvictedAfterDocumentRestoredReason" enum="BackForwardCacheEvictedAfterDocumentRestoredReason" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>hajimehoshi@chromium.org</owner> <owner>bfcache-dev@chromium.org</owner> <summary> @@ -631,7 +631,7 @@ </histogram> <histogram name="Navigation.EngagementTime.HTTPS" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>estark@chromium.org</owner> <owner>security-enamel@chromium.org</owner> <summary> @@ -829,7 +829,7 @@ </histogram> <histogram name="Navigation.MainFrameProfileType2" enum="BrowserProfileType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <summary> @@ -1333,7 +1333,7 @@ </histogram> <histogram name="Navigation.UserAgentStringType" enum="UserAgentStringType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>miketaylr@chromium.org</owner> <owner>potassium-katabolism@google.com</owner> <summary> @@ -1707,7 +1707,7 @@ </histogram> <histogram name="Prerender.PrerenderLoadComplete" enum="BooleanSuccess" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gambard@chromium.org</owner> <owner>justincohen@chromium.org</owner> <summary> @@ -1744,7 +1744,7 @@ </histogram> <histogram name="Prerender.PrerenderTimeSaved" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gambard@chromium.org</owner> <owner>justincohen@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/net/histograms.xml b/tools/metrics/histograms/metadata/net/histograms.xml index ab810fae..5d04f2b 100644 --- a/tools/metrics/histograms/metadata/net/histograms.xml +++ b/tools/metrics/histograms/metadata/net/histograms.xml
@@ -128,7 +128,7 @@ </histogram> <histogram name="Net.AlternateProtocolBrokenLocation" - enum="BrokenAlternateProtocolLocation" expires_after="2022-10-16"> + enum="BrokenAlternateProtocolLocation" expires_after="2022-12-18"> <owner>dschinazi@chromium.org</owner> <owner>src/net/OWNERS</owner> <summary> @@ -542,7 +542,7 @@ </histogram> <histogram name="Net.DNS.DnsConfig.AdditionalDnsQueryTypesEnabled" - enum="BooleanEnabled" expires_after="2022-10-16"> + enum="BooleanEnabled" expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>dmcardle@chromium.org</owner> <owner>src/net/OWNERS</owner> @@ -701,7 +701,7 @@ </histogram> <histogram name="Net.DNS.DnsConfig.Windows.Compatibility" - enum="DNS.WindowsCompatibility" expires_after="2022-10-19"> + enum="DNS.WindowsCompatibility" expires_after="2022-12-18"> <owner>horo@chromium.org</owner> <owner>src/net/OWNERS</owner> <summary> @@ -778,7 +778,7 @@ </histogram> <histogram name="Net.DNS.DnsTransaction.AttemptType" enum="DNS.AttemptType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>src/net/OWNERS</owner> <summary> @@ -1216,7 +1216,7 @@ </histogram> <histogram name="Net.DNS.SecureDnsMode.Automatic.ResolveTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1228,7 +1228,7 @@ </histogram> <histogram name="Net.DNS.SecureDnsMode.Off.ResolveTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1240,7 +1240,7 @@ </histogram> <histogram name="Net.DNS.SecureDnsMode.Secure.ResolveTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1263,7 +1263,7 @@ </histogram> <histogram name="Net.DNS.SecureDnsTask.DnsModeSecure.FailureTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1273,7 +1273,7 @@ </histogram> <histogram base="true" name="Net.DNS.UI.DropdownSelectionEvent" - enum="DohProviderId" expires_after="2022-10-16"> + enum="DohProviderId" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="DnsDropdownSelectionEvent" --> @@ -1296,7 +1296,7 @@ </histogram> <histogram name="Net.DNS.UI.ValidationAttemptSuccess" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1306,7 +1306,7 @@ </histogram> <histogram name="Net.DNS.UpgradeConfig.DotUpgradeSucceeded" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1316,7 +1316,7 @@ </histogram> <histogram name="Net.DNS.UpgradeConfig.HasPublicInsecureNameserver" - enum="Boolean" expires_after="2022-10-16"> + enum="Boolean" expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1327,7 +1327,7 @@ </histogram> <histogram name="Net.DNS.UpgradeConfig.Ineligible.DohSpecified" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1348,7 +1348,7 @@ </histogram> <histogram name="Net.DNS.UpgradeConfig.InsecureUpgradeSucceeded" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ericorth@chromium.org</owner> <owner>doh-core@google.com</owner> <summary> @@ -1449,7 +1449,7 @@ </histogram> <histogram name="Net.ErrorPageCounts" enum="NetErrorPageEvents" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>edwardjung@chromium.org</owner> <owner>src/net/OWNERS</owner> <summary> @@ -1794,7 +1794,7 @@ </histogram> <histogram name="Net.HttpTimeToFirstByte.TLS13.Google" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>davidben@chromium.org</owner> <owner>trusty-transport@chromium.org</owner> <summary> @@ -3161,7 +3161,7 @@ </histogram> <histogram name="Net.QuicSession.NumActiveStreamsOnIdleTimeout" units="streams" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>renjietang@chromium.org</owner> <owner>src/net/quic/OWNERS</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/network/histograms.xml b/tools/metrics/histograms/metadata/network/histograms.xml index 720e00f..0deb258 100644 --- a/tools/metrics/histograms/metadata/network/histograms.xml +++ b/tools/metrics/histograms/metadata/network/histograms.xml
@@ -1147,7 +1147,7 @@ </histogram> <histogram name="Network.Radio.SimpleURLLoaderIsThrottled" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>bashi@chromium.org</owner> <owner>blink-network-stack@google.com</owner> <summary> @@ -1158,7 +1158,7 @@ </histogram> <histogram name="Network.Radio.SimpleURLLoaderThrottledTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>bashi@chromium.org</owner> <owner>blink-network-stack@google.com</owner> <summary> @@ -2420,6 +2420,18 @@ </summary> </histogram> +<histogram name="Network.Shill.Wifi.SecurityDowngrade" + enum="NetworkSecurityDowngrade" expires_after="2022-12-01"> + <owner>andrzejo@google.com</owner> + <owner>cros-network-metrics@google.com</owner> + <summary> + Chrome OS network metric for WiFi security downgrades. It is emitted every + time a new BSSID is being added to a network, this network has already been + connected before and configuration of this new BSSID causes network security + to be lowered. + </summary> +</histogram> + <histogram name="Network.Shill.Wifi.ServiceErrors" enum="NetworkServiceError" expires_after="2022-12-01"> <owner>kuabhs@chromium.org</owner> @@ -2942,7 +2954,7 @@ </histogram> <histogram name="NetworkService.GrantSandboxToCacheResult" - enum="NetworkServiceSandboxGrantResult" expires_after="2022-10-16"> + enum="NetworkServiceSandboxGrantResult" expires_after="2022-12-18"> <owner>wfh@chromium.org</owner> <owner>mmenke@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/new_tab_page/histograms.xml b/tools/metrics/histograms/metadata/new_tab_page/histograms.xml index 2bd21b4..4a96c72 100644 --- a/tools/metrics/histograms/metadata/new_tab_page/histograms.xml +++ b/tools/metrics/histograms/metadata/new_tab_page/histograms.xml
@@ -172,7 +172,7 @@ </histogram> <histogram name="NewTabPage.Carts.DiscountConsentStatusAtLoad" - enum="CartDiscountConsentStatus" expires_after="2022-12-11"> + enum="CartDiscountConsentStatus" expires_after="2022-12-18"> <owner>yuezhanggg@chromium.org</owner> <owner>wychen@chromium.org</owner> <owner>chrome-shopping@google.com</owner> @@ -256,7 +256,7 @@ </summary> </histogram> -<histogram name="NewTabPage.Click" enum="NTPElement" expires_after="2022-10-16"> +<histogram name="NewTabPage.Click" enum="NTPElement" expires_after="2022-12-18"> <owner>tiborg@chromium.org</owner> <owner>yyushkina@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner> @@ -845,7 +845,7 @@ </histogram> <histogram name="NewTabPage.Drive.FileClick" units="index" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tiborg@chromium.org</owner> <owner>aee@chromium.org</owner> <owner>andrevincent@google.com</owner> @@ -1260,7 +1260,7 @@ </histogram> <histogram name="NewTabPage.Modules.Restored" units="count" - expires_after="2022-10-04"> + expires_after="2022-12-18"> <owner>danpeng@google.com</owner> <owner>mahmadi@chromium.org</owner> <owner>tiborg@chromium.org</owner> @@ -1356,7 +1356,7 @@ </histogram> <histogram name="NewTabPage.NumberOfTiles" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tiborg@chromium.org</owner> <owner>yyushkina@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner> @@ -1708,7 +1708,7 @@ </histogram> <histogram name="NewTabPage.SuggestionsImpression" enum="MostVisitedTileIndex" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tiborg@chromium.org</owner> <owner>yyushkina@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner> @@ -1767,7 +1767,7 @@ </histogram> <histogram name="NewTabPage.TileTitle" enum="NTPTileTitleSource" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tiborg@chromium.org</owner> <owner>yyushkina@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner> @@ -1778,7 +1778,7 @@ </histogram> <histogram name="NewTabPage.TileTitleClicked" enum="NTPTileTitleSource" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>danielms@google.com</owner> <owner>tiborg@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/notifications/histograms.xml b/tools/metrics/histograms/metadata/notifications/histograms.xml index 2fbc679..d975c30 100644 --- a/tools/metrics/histograms/metadata/notifications/histograms.xml +++ b/tools/metrics/histograms/metadata/notifications/histograms.xml
@@ -61,7 +61,7 @@ </histogram> <histogram name="Notifications.Android.SitesChannel" enum="BooleanUsage" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>peter@chromium.org</owner> <summary> Recorded when the Sites channel (which we hope to deprecate) is used as a @@ -696,7 +696,7 @@ </histogram> <histogram name="Notifications.PersistentWebNotificationClickResult" - enum="PlatformNotificationStatus" expires_after="2022-10-09"> + enum="PlatformNotificationStatus" expires_after="2022-12-18"> <owner>peter@chromium.org</owner> <owner>deepak.m1@samsung.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/omnibox/histograms.xml b/tools/metrics/histograms/metadata/omnibox/histograms.xml index f202a38..90db48b 100644 --- a/tools/metrics/histograms/metadata/omnibox/histograms.xml +++ b/tools/metrics/histograms/metadata/omnibox/histograms.xml
@@ -331,7 +331,7 @@ </histogram> <histogram name="Omnibox.DocumentSuggest.Requests" - enum="OmniboxDocumentSuggestRequests" expires_after="2022-10-16"> + enum="OmniboxDocumentSuggestRequests" expires_after="2022-12-18"> <owner>manukh@chromium.org</owner> <owner>mpearson@chromium.org</owner> <owner>jdonnelly@chromium.org</owner> @@ -397,7 +397,7 @@ </histogram> <histogram name="Omnibox.DocumentSuggest.ResultCount" units="count" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>manukh@chromium.org</owner> <owner>mpearson@chromium.org</owner> <owner>jdonnelly@chromium.org</owner> @@ -510,7 +510,7 @@ </histogram> <histogram name="Omnibox.FocusResultedInNavigation" enum="BooleanNavigated" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ender@chromium.org</owner> <owner>jdonnelly@chromium.org</owner> <owner>mpearson@chromium.org</owner> @@ -571,7 +571,7 @@ </histogram> <histogram name="Omnibox.InputType" enum="OmniboxInputType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jdonnelly@chromium.org</owner> <owner>mpearson@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> @@ -627,7 +627,7 @@ </histogram> <histogram name="Omnibox.JustDeletedText" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jdonnelly@chromium.org</owner> <owner>mpearson@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> @@ -643,7 +643,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryPrefixSuggest.SearchTermsExtractedCount" - units="counts" expires_after="2022-10-16"> + units="counts" expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -655,7 +655,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryPrefixSuggest.SearchTermsExtractionTime" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -667,7 +667,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryZeroSuggest.AsyncDeleteTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -678,7 +678,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryZeroSuggest.SearchTermsExtractedCount" - units="counts" expires_after="2022-10-16"> + units="counts" expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -689,7 +689,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryZeroSuggest.SearchTermsExtractionTime" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -702,7 +702,7 @@ </histogram> <histogram name="Omnibox.LocalHistoryZeroSuggest.SyncDeleteTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mahmadi@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner> <summary> @@ -1754,7 +1754,7 @@ </histogram> <histogram name="Omnibox.SuggestionUsed.URL.NavigationToFirstContentfulPaint" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>jdonnelly@chromium.org</owner> <owner>mpearson@chromium.org</owner> <owner>chrome-omnibox-team@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/oobe/histograms.xml b/tools/metrics/histograms/metadata/oobe/histograms.xml index 36e9022..e7933297 100644 --- a/tools/metrics/histograms/metadata/oobe/histograms.xml +++ b/tools/metrics/histograms/metadata/oobe/histograms.xml
@@ -51,7 +51,7 @@ </histogram> <histogram name="OOBE.ErrorScreensTime.Enrollment" units="ms" - expires_after="2022-10-01"> + expires_after="2022-12-18"> <owner>raleksandrov@google.com</owner> <owner>cros-oac@google.com</owner> <summary> @@ -61,7 +61,7 @@ </histogram> <histogram name="OOBE.ErrorScreensTime.Signin" units="ms" - expires_after="2022-10-01"> + expires_after="2022-12-18"> <owner>raleksandrov@google.com</owner> <owner>cros-oac@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/optimization/histograms.xml b/tools/metrics/histograms/metadata/optimization/histograms.xml index f9ad6e4..7ef9d43 100644 --- a/tools/metrics/histograms/metadata/optimization/histograms.xml +++ b/tools/metrics/histograms/metadata/optimization/histograms.xml
@@ -709,7 +709,7 @@ <histogram name="OptimizationGuide.PageContentAnnotationsService.ContentAnnotationsStorageStatus" enum="OptimizationGuidePageContentAnnotationsStorageStatus" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>sophiechang@chromium.org</owner> <owner>mcrouse@chromium.org</owner> <summary> @@ -1121,7 +1121,7 @@ <histogram name="OptimizationGuide.PredictionModelFetcher.GetModelsResponse.NetErrorCode" - enum="NetErrorCodes" expires_after="2022-12-11"> + enum="NetErrorCodes" expires_after="2022-12-18"> <owner>mcrouse@chromium.org</owner> <owner>sophiechang@chromium.org</owner> <summary> @@ -1151,7 +1151,7 @@ <histogram name="OptimizationGuide.PredictionModelFetcher.GetModelsResponse.Status" - enum="HttpResponseCode" expires_after="2022-12-11"> + enum="HttpResponseCode" expires_after="2022-12-18"> <owner>mcrouse@chromium.org</owner> <owner>sophiechang@chromium.org</owner> <summary> @@ -1233,7 +1233,7 @@ </histogram> <histogram name="OptimizationGuide.ProcessHintsResult" - enum="OptimizationGuideProcessHintsResult" expires_after="2022-10-16"> + enum="OptimizationGuideProcessHintsResult" expires_after="2022-12-18"> <owner>mcrouse@chromium.org</owner> <owner>sophiechang@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index 842b51d..14e665f 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -2160,7 +2160,7 @@ </histogram> <histogram name="ChildProcess.Launched.UtilityProcessHash" - enum="UtilityProcessNameHash" expires_after="2022-10-16"> + enum="UtilityProcessNameHash" expires_after="2022-12-18"> <owner>wfh@chromium.org</owner> <summary> Count of child utility process launches, bucketed by the hash of their @@ -2758,7 +2758,7 @@ </histogram> <histogram name="ClientHints.FetchLatency" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>miketaylr@chromium.org</owner> <owner>potassium-katabolism@google.com</owner> <summary> @@ -2784,7 +2784,7 @@ </histogram> <histogram name="ClientHints.StoreLatency" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>miketaylr@chromium.org</owner> <owner>potassium-katabolism@google.com</owner> <summary> @@ -3186,7 +3186,7 @@ </histogram> <histogram name="ContextMenu.TimeToSelectShare" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gayane@chromium.org</owner> <owner>chrome-shared-highlighting@google.com</owner> <summary> @@ -3209,7 +3209,7 @@ </histogram> <histogram name="ContextMenu.TimeToTakeAction.SelectedItem" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>twellington@chromium.org</owner> <owner>clank-app-team@google.com</owner> <summary> @@ -5839,7 +5839,7 @@ </histogram> <histogram name="FirstRun.NewUserExperience.NtpBackgroundInteraction" - enum="NuxNtpBackgroundInteractions" expires_after="2022-10-16"> + enum="NuxNtpBackgroundInteractions" expires_after="2022-12-18"> <owner>johntlee@chromium.org</owner> <owner>dpapad@chromium.org</owner> <summary> @@ -5890,7 +5890,7 @@ </histogram> <histogram name="FirstRun.Sentinel.Created" enum="FirstRunSentinelResult" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary>Result of sentinel file has been written.</summary> @@ -5915,7 +5915,7 @@ </histogram> <histogram name="FirstRun.Stage" enum="FirstRunStageResult" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>tinazwang@chromium.org</owner> <owner>bling-get-started@google.com</owner> <summary> @@ -6366,7 +6366,7 @@ </histogram> <histogram name="Hardware.Display.Count.OnChange" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sashamcintosh@chromium.org</owner> <owner>chromeos-gfx@chromium.org</owner> <summary> @@ -6376,7 +6376,7 @@ </histogram> <histogram name="Hardware.Display.Count.OnStartup" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>sashamcintosh@chromium.org</owner> <owner>chromeos-gfx@chromium.org</owner> <summary> @@ -6386,7 +6386,7 @@ </histogram> <histogram name="Hardware.Display.SupportsHDR" enum="BooleanSupported" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>cassew@google.com</owner> <owner>media-dev@chromium.org</owner> <summary> @@ -6468,7 +6468,7 @@ </histogram> <histogram name="Hwsec.Attestation.PrepareDuration" units="ms" - expires_after="2022-10-18"> + expires_after="2022-12-18"> <owner>chingkang@chromium.org</owner> <owner>cros-hwsec-userland-eng+uma@google.com</owner> <summary>The duration of preparation for enrollment in attestation.</summary> @@ -10061,7 +10061,7 @@ </histogram> <histogram name="PushMessaging.DeliveryStatus" enum="PushEventStatus" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>peter@chromium.org</owner> <owner>knollr@chromium.org</owner> <summary> @@ -10372,7 +10372,7 @@ </histogram> <histogram name="ReadingList.Read.AgeOnFirstRead" units="hours" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>thegreenfrog@chromium.org</owner> <owner>olivierrobin@google.com</owner> <summary> @@ -11932,7 +11932,7 @@ </histogram> <histogram name="Shutdown.ShutdownType" enum="ShutdownType" - expires_after="M107"> + expires_after="2022-12-18"> <owner>etienneb@chromium.org</owner> <owner>gab@chromium.org</owner> <summary>The type of the last shutdown.</summary> @@ -11944,7 +11944,8 @@ <summary>Time for shutdown for a silent exit.</summary> </histogram> -<histogram name="Shutdown.WindowClose.Time" units="ms" expires_after="M107"> +<histogram name="Shutdown.WindowClose.Time" units="ms" + expires_after="2022-12-18"> <owner>etienneb@chromium.org</owner> <owner>gab@chromium.org</owner> <summary> @@ -12642,7 +12643,7 @@ </histogram> <histogram name="SubresourceWebBundles.BundleFetchErrorCode" - enum="NetErrorCodes" expires_after="2022-10-16"> + enum="NetErrorCodes" expires_after="2022-12-18"> <owner>ksakamoto@chromium.org</owner> <owner>webpackage-dev@chromium.org</owner> <summary> @@ -14722,7 +14723,7 @@ </histogram> <histogram name="WebUITabStrip.OpenAction" enum="WebUITabStripOpenActions" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>collinbaker@chromium.org</owner> <owner>tluk@chromium.org</owner> <summary> @@ -14744,7 +14745,7 @@ </histogram> <histogram name="WebUITabStrip.TabActivation" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>robliao@chromium.org</owner> <owner>johntlee@chromium.org</owner> <summary> @@ -14990,7 +14991,7 @@ </histogram> <histogram name="WrenchMenu.MenuAction" enum="WrenchMenuAction" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ainslie@chromium.org</owner> <owner>edwardjung@chromium.org</owner> <summary>Number of times that each menu item is clicked.</summary>
diff --git a/tools/metrics/histograms/metadata/page/histograms.xml b/tools/metrics/histograms/metadata/page/histograms.xml index 33cc1dd..b970935 100644 --- a/tools/metrics/histograms/metadata/page/histograms.xml +++ b/tools/metrics/histograms/metadata/page/histograms.xml
@@ -1178,7 +1178,7 @@ </summary> </histogram> -<histogram name="PageLoad.Cpu.TotalUsage" units="ms" expires_after="2022-10-16"> +<histogram name="PageLoad.Cpu.TotalUsage" units="ms" expires_after="2022-12-18"> <owner>alexmt@chromium.org</owner> <owner>johnidel@chromium.org</owner> <summary> @@ -1559,7 +1559,7 @@ <histogram name="PageLoad.Experimental.NavigationTiming.NavigationStartToFinalLoaderCallback" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>nhiroki@chromium.org</owner> <owner>chrome-loading@google.com</owner> <summary> @@ -1581,7 +1581,7 @@ <histogram name="PageLoad.Experimental.NavigationTiming.NavigationStartToFinalResponseStart" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>nhiroki@chromium.org</owner> <owner>chrome-loading@google.com</owner> <summary> @@ -1603,7 +1603,7 @@ <histogram name="PageLoad.Experimental.NavigationTiming.NavigationStartToFirstRequestStart" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>nhiroki@chromium.org</owner> <owner>chrome-loading@google.com</owner> <summary> @@ -2238,7 +2238,7 @@ </histogram> <histogram name="PageLoad.Internal.Prerender2.Event" - enum="PageLoadPrerenderEvent" expires_after="2022-10-16"> + enum="PageLoadPrerenderEvent" expires_after="2022-12-18"> <owner>asamidoi@chromium.org</owner> <owner>src/content/browser/prerender/OWNERS</owner> <summary> @@ -2891,7 +2891,7 @@ </histogram> <histogram name="PageSerialization.MhtmlLoading.LoadResult" - enum="MhtmlLoadResult" expires_after="2022-09-11"> + enum="MhtmlLoadResult" expires_after="2022-12-18"> <owner>sclittle@chromium.org</owner> <owner>offline-dev@chromium.org</owner> <summary>Reports the result of an attempt to load an MHTML archive.</summary>
diff --git a/tools/metrics/histograms/metadata/password/histograms.xml b/tools/metrics/histograms/metadata/password/histograms.xml index a917db9a..0c4b803 100644 --- a/tools/metrics/histograms/metadata/password/histograms.xml +++ b/tools/metrics/histograms/metadata/password/histograms.xml
@@ -286,7 +286,7 @@ </histogram> <histogram name="PasswordGeneration.UserDecision" - enum="PasswordGenerationUserEvent" expires_after="2022-10-16"> + enum="PasswordGenerationUserEvent" expires_after="2022-12-18"> <owner>ioanap@chromium.org</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -603,7 +603,7 @@ </histogram> <histogram name="PasswordManager.AffiliationBackend.FetchSize" units="facets" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -910,7 +910,7 @@ </histogram> <histogram name="PasswordManager.BiometricAuthPwdFill.CanAuthenticate" - enum="BiometricsAvailability" expires_after="2022-10-16"> + enum="BiometricsAvailability" expires_after="2022-12-18"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -1037,7 +1037,7 @@ </histogram> <histogram name="PasswordManager.BulkCheck.PasswordCheckReferrerAndroid" - enum="PasswordCheckReferrerAndroid" expires_after="2022-10-16"> + enum="PasswordCheckReferrerAndroid" expires_after="2022-12-18"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -1189,7 +1189,7 @@ </histogram> <histogram name="PasswordManager.CredentialEditError" - enum="CredentialEditError" expires_after="2022-10-16"> + enum="CredentialEditError" expires_after="2022-12-18"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -1199,7 +1199,7 @@ </histogram> <histogram name="PasswordManager.CredentialEntryActions.{CredentialEntryType}" - enum="CredentialEntryAction" expires_after="M104"> + enum="CredentialEntryAction" expires_after="M108"> <owner>ioanap@chromium.org</owner> <owner>fhorschig@chromium.org</owner> <summary> @@ -1348,7 +1348,7 @@ </histogram> <histogram name="PasswordManager.DefaultPasswordStoreSet" - enum="PasswordManager.Store" expires_after="2022-10-16"> + enum="PasswordManager.Store" expires_after="2022-12-18"> <owner>mamir@chromium.org</owner> <owner>treib@chromium.org</owner> <summary> @@ -1539,7 +1539,7 @@ </histogram> <histogram name="PasswordManager.FormVisited.PerProfileType" - enum="BrowserProfileType" expires_after="2022-10-16"> + enum="BrowserProfileType" expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-privacy-core@google.com</owner> <summary> @@ -1640,7 +1640,7 @@ <histogram name="PasswordManager.IsSyncPasswordHashSavedForAdvancedProtectionUser" - enum="IsSyncPasswordHashSaved" expires_after="2022-10-11"> + enum="IsSyncPasswordHashSaved" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1718,7 +1718,7 @@ </histogram> <histogram name="PasswordManager.LeakDetection.IsPasswordSaved" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vasilii@chromium.org</owner> <owner>vsemeniuk@google.com</owner> <summary> @@ -1727,7 +1727,7 @@ </histogram> <histogram name="PasswordManager.LeakDetection.LookupSingleLeakResponseResult" - enum="PasswordLeakLookupResponseResult" expires_after="2022-10-16"> + enum="PasswordLeakLookupResponseResult" expires_after="2022-12-18"> <owner>vsemeniuk@google.com</owner> <owner>vasilii@chromium.org</owner> <summary> @@ -1910,7 +1910,7 @@ </histogram> <histogram name="PasswordManager.MoveUIDismissalReason" - enum="PasswordManagerUIDismissalReason" expires_after="2022-10-16"> + enum="PasswordManagerUIDismissalReason" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="PasswordAccountStorageUserState" --> <owner>mamir@chromium.org</owner> @@ -2150,7 +2150,7 @@ </histogram> <histogram name="PasswordManager.PasswordReuse.TotalPasswords" - units="credentials" expires_after="2022-10-16"> + units="credentials" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2319,8 +2319,8 @@ <histogram name="PasswordManager.PasswordStoreAndroidBackend.APIError.{SyncErrorStatus}" - enum="PasswordStoreAndroidBackendAPIError" expires_after="2022-06-30"> - <owner>fhorschig@chromium.org</owner> + enum="PasswordStoreAndroidBackendAPIError" expires_after="M108"> + <owner>vsemeniuk@chromium.org</owner> <owner>vasilii@chromium.org</owner> <summary> The error codes returned by the GMS Core ChromeSync 1P API when @@ -2771,7 +2771,7 @@ </histogram> <histogram name="PasswordManager.Settings.ToggleAutoSignIn" - enum="BooleanEnabled" expires_after="2022-10-15"> + enum="BooleanEnabled" expires_after="2022-12-18"> <owner>ioanap@chromium.org</owner> <owner>kazinova@google.com</owner> <summary> @@ -2947,7 +2947,7 @@ </histogram> <histogram name="PasswordManager.SyncMetadataReadError" - enum="PasswordSyncMetadataReadError" expires_after="2022-10-16"> + enum="PasswordSyncMetadataReadError" expires_after="2022-12-18"> <owner>mamir@chromium.org</owner> <owner>mastiz@chromium.org</owner> <summary> @@ -3498,7 +3498,7 @@ </histogram> <histogram name="PasswordProtection.ModalWarningDialogAction" - enum="PasswordProtectionWarningAction" expires_after="2022-10-16"> + enum="PasswordProtectionWarningAction" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/payment/histograms.xml b/tools/metrics/histograms/metadata/payment/histograms.xml index d747cde6..3627288 100644 --- a/tools/metrics/histograms/metadata/payment/histograms.xml +++ b/tools/metrics/histograms/metadata/payment/histograms.xml
@@ -99,7 +99,7 @@ </histogram> <histogram name="PaymentRequest.Events" units="bitfield value" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rouslan@chromium.org</owner> <owner>web-payments-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/pdf/histograms.xml b/tools/metrics/histograms/metadata/pdf/histograms.xml index aadd65fa..3346b28 100644 --- a/tools/metrics/histograms/metadata/pdf/histograms.xml +++ b/tools/metrics/histograms/metadata/pdf/histograms.xml
@@ -36,7 +36,7 @@ </histogram> <histogram name="PDF.AttachmentType" enum="ViewFileType" - expires_after="2022-08-15"> + expires_after="2022-12-18"> <owner>nigi@chromium.org</owner> <owner>thestig@chromium.org</owner> <summary> @@ -59,7 +59,7 @@ </summary> </histogram> -<histogram name="PDF.HasAttachment" enum="Boolean" expires_after="2022-10-16"> +<histogram name="PDF.HasAttachment" enum="Boolean" expires_after="2022-12-18"> <owner>nigi@chromium.org</owner> <owner>thestig@chromium.org</owner> <summary> @@ -96,7 +96,7 @@ </summary> </histogram> -<histogram name="PDF.PageCount" units="pages" expires_after="2022-10-16"> +<histogram name="PDF.PageCount" units="pages" expires_after="2022-12-18"> <owner>hnakashima@chromium.org</owner> <owner>thestig@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/permissions/histograms.xml b/tools/metrics/histograms/metadata/permissions/histograms.xml index f627b31..07688aa 100644 --- a/tools/metrics/histograms/metadata/permissions/histograms.xml +++ b/tools/metrics/histograms/metadata/permissions/histograms.xml
@@ -986,7 +986,7 @@ </histogram> <histogram name="Permissions.WebHid.ChooserClosed" enum="WebHidChooserClosed" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mattreynolds@chromium.org</owner> <owner>deviceapi-team@google.com</owner> <summary> @@ -1131,7 +1131,7 @@ </histogram> <histogram name="WebsiteSettings.AllSitesAction2" - enum="WebSiteSettingsAllSitesAction2" expires_after="2022-10-16"> + enum="WebSiteSettingsAllSitesAction2" expires_after="2022-12-18"> <owner>jarrydg@chromium.org</owner> <owner>mxcai@chromium.org</owner> <summary> @@ -1171,7 +1171,7 @@ </histogram> <histogram name="WebsiteSettings.Discoverability.TimeToOpen" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>eokoyomon@chromium.org</owner> <owner>dullweber@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/platform/histograms.xml b/tools/metrics/histograms/metadata/platform/histograms.xml index f92a81c..dfee1b7 100644 --- a/tools/metrics/histograms/metadata/platform/histograms.xml +++ b/tools/metrics/histograms/metadata/platform/histograms.xml
@@ -118,7 +118,7 @@ </histogram> <histogram name="Platform.Chaps.ReinitializingToken" - enum="ChapsReinitializingToken" expires_after="2022-10-16"> + enum="ChapsReinitializingToken" expires_after="2022-12-18"> <owner>chenyian@google.com</owner> <owner>cros-hwsec-userland-eng+uma@google.com</owner> <summary> @@ -127,7 +127,7 @@ </histogram> <histogram name="Platform.Chaps.TPMAvailability" enum="ChapsTPMAvailability" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>chenyian@google.com</owner> <owner>cros-hwsec-userland-eng+uma@google.com</owner> <summary>Each sample is the TPM Availability status.</summary> @@ -1134,7 +1134,7 @@ </histogram> <histogram name="Platform.TPM.DictionaryAttackResetStatus" - enum="CrosTPMDictionaryAttackResetStatusEnum" expires_after="2022-10-16"> + enum="CrosTPMDictionaryAttackResetStatusEnum" expires_after="2022-12-18"> <owner>cylai@chromium.org</owner> <owner>cros-hwsec-userland-eng+uma@google.com</owner> <summary> @@ -1238,7 +1238,7 @@ </histogram> <histogram name="Platform.Trunks.FirstTimeoutWritingCommand" - enum="TPMCommandCode" expires_after="2022-10-16"> + enum="TPMCommandCode" expires_after="2022-12-18"> <owner>chingkang@chromium.org</owner> <owner>cros-hwsec+uma@chromium.org</owner> <summary>Command code of the first timeout writing TPM command</summary>
diff --git a/tools/metrics/histograms/metadata/power/histograms.xml b/tools/metrics/histograms/metadata/power/histograms.xml index 0e5762de..0cc0434d 100644 --- a/tools/metrics/histograms/metadata/power/histograms.xml +++ b/tools/metrics/histograms/metadata/power/histograms.xml
@@ -717,7 +717,7 @@ </summary> </histogram> -<histogram name="Power.BatteryPercentDrop" units="%" expires_after="2022-10-16"> +<histogram name="Power.BatteryPercentDrop" units="%" expires_after="2022-12-18"> <owner>ryansturm@chromium.org</owner> <owner>tbansal@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/print/histograms.xml b/tools/metrics/histograms/metadata/print/histograms.xml index 365bf32b..87bcba4 100644 --- a/tools/metrics/histograms/metadata/print/histograms.xml +++ b/tools/metrics/histograms/metadata/print/histograms.xml
@@ -33,7 +33,7 @@ </histogram> <histogram name="PrintPreview.InitialDisplayTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>thestig@chromium.org</owner> <owner>dhoss@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/printing/histograms.xml b/tools/metrics/histograms/metadata/printing/histograms.xml index b691166..f51f5ef 100644 --- a/tools/metrics/histograms/metadata/printing/histograms.xml +++ b/tools/metrics/histograms/metadata/printing/histograms.xml
@@ -173,7 +173,7 @@ </histogram> <histogram name="Printing.CUPS.NearbyNetworkPrintersCount" units="printers" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>bmgordon@chromium.org</owner> <owner>project-bolton@google.com</owner> <summary> @@ -184,7 +184,7 @@ </histogram> <histogram name="Printing.CUPS.PrintDocumentSize" units="KB" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>bmgordon@chromium.org</owner> <owner>project-bolton@google.com</owner> <summary> @@ -282,7 +282,7 @@ </histogram> <histogram name="Printing.CUPS.ProtocolUsed" enum="PrinterProtocol" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>bmgordon@chromium.org</owner> <owner>cros-printing-dev@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/profile/histograms.xml b/tools/metrics/histograms/metadata/profile/histograms.xml index 63b46ce..e936076 100644 --- a/tools/metrics/histograms/metadata/profile/histograms.xml +++ b/tools/metrics/histograms/metadata/profile/histograms.xml
@@ -201,7 +201,7 @@ </histogram> <histogram name="Profile.Guest.ForcedByPolicy" enum="BooleanForced" - expires_after="2022-08-14"> + expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-incognito@google.com</owner> <summary> @@ -285,7 +285,7 @@ </histogram> <histogram name="Profile.KeepAliveLeakAtShutdown" enum="ProfileKeepAliveOrigin" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>nicolaso@chromium.org</owner> <owner>cbe-eng@google.com</owner> <summary> @@ -395,7 +395,7 @@ </histogram> <histogram name="Profile.NumberOfAccountsPerProfile" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>msarda@chromium.org</owner> <owner>droger@chromium.org</owner> <summary> @@ -459,7 +459,7 @@ </histogram> <histogram name="Profile.NumberOfSignedInProfiles" units="profiles" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>droger@chromium.org</owner> <owner>jkrcal@chromium.org</owner> <summary> @@ -525,7 +525,7 @@ </histogram> <histogram base="true" name="Profile.State.LastUsed" units="days" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jkrcal@chromium.org</owner> <owner>droger@chromium.org</owner> <summary> @@ -600,7 +600,7 @@ <summary>Total size of all history databases.</summary> </histogram> -<histogram name="Profile.TotalSize" units="MB" expires_after="2022-10-16"> +<histogram name="Profile.TotalSize" units="MB" expires_after="2022-12-18"> <owner>etienneb@chromium.org</owner> <owner>gab@chromium.org</owner> <summary>Total size of the profile data (excluding sub-folders).</summary> @@ -711,7 +711,7 @@ </histogram> <histogram name="ProfilePicker.AskOnStartupChanged" enum="BooleanEnabled" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>msalama@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -844,7 +844,7 @@ </histogram> <histogram name="ProfilePicker.UiVisited" enum="ProfilePickerPages" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>msalama@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/renderer/histograms.xml b/tools/metrics/histograms/metadata/renderer/histograms.xml index 7256e68d..7c15aa0ca 100644 --- a/tools/metrics/histograms/metadata/renderer/histograms.xml +++ b/tools/metrics/histograms/metadata/renderer/histograms.xml
@@ -341,7 +341,7 @@ </histogram> <histogram name="Renderer.Font.SystemFallback.FCP" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>kojii@chromium.org</owner> <owner>tkent@chromium.org</owner> <owner>yosin@chromium.org</owner> @@ -354,7 +354,7 @@ </histogram> <histogram name="Renderer.PaintPreview.Capture.MainFrameBlinkCaptureDuration" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>ckitagawa@chromium.org</owner> <owner>fredmello@chromium.org</owner> <owner>chrome-fdt@google.com</owner> @@ -442,26 +442,6 @@ </summary> </histogram> -<histogram name="RendererScheduler.ResourceLoadingTaskCountPerNetPriority" - enum="NetRequestPriority" expires_after="M77"> - <owner>farahcharab@chromium.org</owner> - <owner>altimin@chromium.org</owner> - <summary> - Used to track the number of resource loading tasks split by net priority. - Recorded each time the resource's request priority is changed. - </summary> -</histogram> - -<histogram name="RendererScheduler.ResourceLoadingTaskCountPerPriority" - enum="TaskQueuePriority" expires_after="M77"> - <owner>farahcharab@chromium.org</owner> - <owner>altimin@chromium.org</owner> - <summary> - Used to track the number of resource loading tasks split by execution - priority. Recorded each time a task is executed. - </summary> -</histogram> - <histogram name="RendererScheduler.TaskCPUDurationPerTaskType2.DedicatedWorker" enum="RendererSchedulerTaskType" expires_after="M85"> <owner>altimin@chromium.org</owner> @@ -575,24 +555,6 @@ </summary> </histogram> -<histogram name="RendererScheduler.WebFramesPerScheduler" units="web frames" - expires_after="M77"> - <owner>altimin@chromium.org</owner> - <summary> - Number of web frame schedulers per renderer scheduler. Recorded once per - navigation. - </summary> -</histogram> - -<histogram name="RendererScheduler.WebViewsPerScheduler" units="web views" - expires_after="M77"> - <owner>altimin@chromium.org</owner> - <summary> - Number of web view schedulers per renderer scheduler. Recorded once per - navigation. - </summary> -</histogram> - <histogram name="RendererSyncIPC.ElapsedTime" units="ms" expires_after="M85"> <owner>ppi@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/renderer4/histograms.xml b/tools/metrics/histograms/metadata/renderer4/histograms.xml index bc72a637..521a3eff 100644 --- a/tools/metrics/histograms/metadata/renderer4/histograms.xml +++ b/tools/metrics/histograms/metadata/renderer4/histograms.xml
@@ -144,7 +144,7 @@ </histogram> <histogram base="true" name="Renderer4.ImageDecodeTaskDurationUs" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="DecodedImageType" --> <!-- Name completed by histogram_suffixes name="OutOfRaster" --> @@ -190,7 +190,7 @@ </histogram> <histogram name="Renderer4.MainThreadGestureScrollReason" - enum="MainThreadScrollingReason" expires_after="2022-10-16"> + enum="MainThreadScrollingReason" expires_after="2022-12-18"> <owner>flackr@chromium.org</owner> <owner>pdr@chromium.org</owner> <owner>input-dev@chromium.org</owner> @@ -257,7 +257,7 @@ </histogram> <histogram name="Renderer4.Renderer.RasterTaskTotalDuration" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>khushalsagar@chromium.org</owner> <owner>chrome-gpu@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml index 92d4387..3494e07 100644 --- a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml +++ b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
@@ -89,7 +89,7 @@ </variants> <histogram name="SafeBrowsing.AdvancedProtection.APTokenFetchStatus" - enum="GoogleServiceAuthError" expires_after="2022-10-16"> + enum="GoogleServiceAuthError" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -173,7 +173,7 @@ </histogram> <histogram name="SafeBrowsing.BrowserThrottle.TotalDelay" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>xinghuilu@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -196,7 +196,7 @@ </histogram> <histogram name="SafeBrowsing.CheckUrl.Timeout" enum="BooleanTimedOut" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -206,7 +206,7 @@ </histogram> <histogram name="SafeBrowsing.ClientSafeBrowsingReport.HasThreatDetailsForTab" - enum="BooleanAvailable" expires_after="2022-10-13"> + enum="BooleanAvailable" expires_after="2022-12-18"> <owner>xinghuilu@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -254,7 +254,7 @@ </histogram> <histogram name="SafeBrowsing.CredentialPhishedStatusChange" - enum="CredentialPhishedStatus" expires_after="2022-10-16"> + enum="CredentialPhishedStatus" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -320,7 +320,7 @@ </histogram> <histogram name="SafeBrowsing.DeepScan.Download.Duration" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>domfc@chromium.org</owner> <owner>webprotect-team@google.com</owner> <summary> @@ -992,7 +992,7 @@ </histogram> <histogram name="SafeBrowsing.EsbDisabled.LastBypassEventType" - enum="SBMetricsCollectorEventType" expires_after="2022-10-16"> + enum="SBMetricsCollectorEventType" expires_after="2022-12-18"> <owner>xinghuilu@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1081,7 +1081,7 @@ </histogram> <histogram name="SafeBrowsing.ExtensionPersister.CacheSize" units="files" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>psarouthakis@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1092,7 +1092,7 @@ </histogram> <histogram name="SafeBrowsing.ExtensionPersister.PersistedFileSize" - units="bytes" expires_after="2022-10-16"> + units="bytes" expires_after="2022-12-18"> <owner>psarouthakis@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1203,7 +1203,7 @@ </histogram> <histogram name="SafeBrowsing.FileTypeUpdate.DynamicUpdateResult" - enum="SBFileTypeUpdateResult" expires_after="2022-10-16"> + enum="SBFileTypeUpdateResult" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1217,7 +1217,7 @@ </histogram> <histogram name="SafeBrowsing.FileTypeUpdate.DynamicUpdateVersion" - units="FileTypePolicies Version" expires_after="2022-10-16"> + units="FileTypePolicies Version" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1231,7 +1231,7 @@ </histogram> <histogram name="SafeBrowsing.FileTypeUpdate.ResourceBundleResult" - enum="SBFileTypeUpdateResult" expires_after="2022-10-16"> + enum="SBFileTypeUpdateResult" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1244,7 +1244,7 @@ </histogram> <histogram name="SafeBrowsing.FileTypeUpdate.ResourceBundleVersion" - units="FileTypePolicies Version" expires_after="2022-10-16"> + units="FileTypePolicies Version" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1689,7 +1689,7 @@ </histogram> <histogram name="SafeBrowsing.RT.HasTokenInRequest" enum="BooleanHasToken" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>xinghuilu@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1775,7 +1775,7 @@ </histogram> <histogram name="SafeBrowsing.RT.Network.Result" - enum="CombinedHttpResponseAndNetErrorCode" expires_after="2022-10-16"> + enum="CombinedHttpResponseAndNetErrorCode" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1802,7 +1802,7 @@ </histogram> <histogram name="SafeBrowsing.RT.Network.Time" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -1835,7 +1835,7 @@ </histogram> <histogram name="SafeBrowsing.RT.Request.UserPopulation" - enum="SafeBrowsingUserPopulation" expires_after="2022-10-16"> + enum="SafeBrowsingUserPopulation" expires_after="2022-12-18"> <owner>xinghuilu@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2074,7 +2074,7 @@ </histogram> <histogram name="SafeBrowsing.V4Database.Size" units="KB" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2150,7 +2150,7 @@ </histogram> <histogram name="SafeBrowsing.V4GetHash.Network.Time" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2174,7 +2174,7 @@ </histogram> <histogram name="SafeBrowsing.V4GetHash.Result" - enum="SafeBrowsingV4OperationResult" expires_after="2022-10-16"> + enum="SafeBrowsingV4OperationResult" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2551,7 +2551,7 @@ </histogram> <histogram name="SafeBrowsingBinaryUploadRequest.Duration" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2562,7 +2562,7 @@ </histogram> <histogram name="SafeBrowsingBinaryUploadRequest.MalwareResult" - enum="BooleanSuccess" expires_after="2022-10-16"> + enum="BooleanSuccess" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -2573,7 +2573,7 @@ </histogram> <histogram name="SafeBrowsingBinaryUploadRequest.Result" - enum="SafeBrowsingBinaryUploadResult" expires_after="2022-10-16"> + enum="SafeBrowsingBinaryUploadResult" expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/sb_client/histograms.xml b/tools/metrics/histograms/metadata/sb_client/histograms.xml index e3b6f85..e912d38 100644 --- a/tools/metrics/histograms/metadata/sb_client/histograms.xml +++ b/tools/metrics/histograms/metadata/sb_client/histograms.xml
@@ -115,7 +115,7 @@ </histogram> <histogram name="SBClientDownload.DocumentAnalysisSuccess" enum="Boolean" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -146,7 +146,7 @@ </histogram> <histogram name="SBClientDownload.DownloadExtensions" - enum="SBClientDownloadExtensions" expires_after="2022-10-16"> + enum="SBClientDownloadExtensions" expires_after="2022-12-18"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <owner>mattm@chromium.org</owner> @@ -742,7 +742,7 @@ <histogram name="SBClientPhishing.PreClassificationCheckResult" enum="SBClientDetectionPreClassificationCheckResult" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -874,7 +874,7 @@ </histogram> <histogram name="SBClientPhishing.VisualFeatureTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>drubery@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/scanning/histograms.xml b/tools/metrics/histograms/metadata/scanning/histograms.xml index 499e7fe..6885526 100644 --- a/tools/metrics/histograms/metadata/scanning/histograms.xml +++ b/tools/metrics/histograms/metadata/scanning/histograms.xml
@@ -115,7 +115,7 @@ </histogram> <histogram name="Scanning.NumDetectedScannersAtLogin" units="scanners" - expires_after="2022-10-17"> + expires_after="2022-12-18"> <owner>gavinwill@chromium.org</owner> <owner>masonwilde@google.com</owner> <owner>cros-peripherals@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/scheduler/histograms.xml b/tools/metrics/histograms/metadata/scheduler/histograms.xml index 047c16d4..e55c4c9 100644 --- a/tools/metrics/histograms/metadata/scheduler/histograms.xml +++ b/tools/metrics/histograms/metadata/scheduler/histograms.xml
@@ -273,7 +273,7 @@ </histogram> <histogram name="Scheduling.Renderer.FrameProduction.TimeOverused" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>behdadb@chromium.org</owner> <owner>chrome-gpu-metrics@chromium.org</owner> <summary> @@ -288,7 +288,7 @@ </histogram> <histogram name="Scheduling.Renderer.FrameProduction.TimeUnused" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>behdadb@chromium.org</owner> <owner>chrome-gpu-metrics@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/security/histograms.xml b/tools/metrics/histograms/metadata/security/histograms.xml index d0a25f2..9089534 100644 --- a/tools/metrics/histograms/metadata/security/histograms.xml +++ b/tools/metrics/histograms/metadata/security/histograms.xml
@@ -39,7 +39,7 @@ </histogram> <histogram name="Security.DataDecoder.Image.DecodingTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>lukasza@chromium.org</owner> <owner>rsesek@chromium.org</owner> <summary> @@ -52,7 +52,7 @@ </histogram> <histogram name="Security.DataDecoder.Image.Isolated.EndToEndTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>lukasza@chromium.org</owner> <owner>rsesek@chromium.org</owner> <summary> @@ -76,7 +76,7 @@ </histogram> <histogram name="Security.DataDecoder.Image.Isolated.ProcessOverhead" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>lukasza@chromium.org</owner> <owner>rsesek@chromium.org</owner> <summary> @@ -99,7 +99,7 @@ </histogram> <histogram name="Security.DataDecoder.Image.Reusable.EndToEndTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>lukasza@chromium.org</owner> <owner>rsesek@chromium.org</owner> <summary> @@ -123,7 +123,7 @@ </histogram> <histogram name="Security.DataDecoder.Image.Reusable.ProcessOverhead" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>lukasza@chromium.org</owner> <owner>rsesek@chromium.org</owner> <summary> @@ -168,7 +168,7 @@ </histogram> <histogram name="Security.HttpsFirstMode.SettingEnabledAtStartup" - enum="BooleanEnabled" expires_after="2022-10-16"> + enum="BooleanEnabled" expires_after="2022-12-18"> <owner>cthomp@chromium.org</owner> <owner>trusty-transport@chromium.org</owner> <summary> @@ -221,7 +221,7 @@ </histogram> <histogram name="Security.PageInfo.AboutThisSiteStatus" - enum="AboutThisSiteStatus" expires_after="M107"> + enum="AboutThisSiteStatus" expires_after="2022-12-18"> <owner>dullweber@chromium.org</owner> <owner>olesiamarukhno@chromium.org</owner> <summary> @@ -251,7 +251,7 @@ </histogram> <histogram name="Security.PageInfo.TimeOpen.Action" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>cthomp@chromium.org</owner> <owner>security-enamel@chromium.org</owner> <summary> @@ -261,7 +261,7 @@ </histogram> <histogram name="Security.PageInfo.TimeOpen.NoAction" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>cthomp@chromium.org</owner> <owner>security-enamel@chromium.org</owner> <summary> @@ -374,7 +374,7 @@ </histogram> <histogram name="Security.SafetyTips.SafetyTipShown" enum="SafetyTipStatus" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jdeblasio@chromium.org</owner> <owner>trusty-transport@chromium.org</owner> <summary> @@ -599,7 +599,7 @@ </histogram> <histogram base="true" name="Security.TimeOnPage2" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>cthomp@chromium.org</owner> <owner>security-enamel@chromium.org</owner> <summary> @@ -926,7 +926,7 @@ <histogram name="SiteIsolation.ReusePendingOrCommittedSite.TimeSinceReusableProcessDestroyed" - units="ms" expires_after="2022-10-16"> + units="ms" expires_after="2022-12-18"> <owner>jessemckenna@google.com</owner> <owner>olivierli@chromium.org</owner> <summary> @@ -977,7 +977,7 @@ </histogram> <histogram name="SiteIsolation.SiteInstancesPerBrowsingInstance" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>alexmos@chromium.org</owner> <owner>creis@chromium.org</owner> <owner>lukasza@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml index 5d26fdd..563150e 100644 --- a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml +++ b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
@@ -103,7 +103,7 @@ </histogram> <histogram name="SegmentationPlatform.AdaptiveToolbar.SegmentSwitched" - enum="AdaptiveToolbarSegmentSwitch" expires_after="2022-10-16"> + enum="AdaptiveToolbarSegmentSwitch" expires_after="2022-12-18"> <owner>shaktisahu@chromium.org</owner> <owner>chrome-segmentation-platform@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/service/histograms.xml b/tools/metrics/histograms/metadata/service/histograms.xml index f8500de..000d593 100644 --- a/tools/metrics/histograms/metadata/service/histograms.xml +++ b/tools/metrics/histograms/metadata/service/histograms.xml
@@ -382,7 +382,7 @@ </histogram> <histogram name="ServiceWorker.InstallEvent.All.FetchCount" units="fetches" - expires_after="2022-06-26"> + expires_after="2023-01-26"> <owner>wanderview@chromium.org</owner> <owner>chrome-worker@google.com</owner> <summary> @@ -391,7 +391,7 @@ </histogram> <histogram name="ServiceWorker.InstallEvent.{type}.Status" - enum="ServiceWorkerStatusCode" expires_after="2022-07-23"> + enum="ServiceWorkerStatusCode" expires_after="2023-01-26"> <owner>wanderview@chromium.org</owner> <owner>asamidoi@chromium.org</owner> <owner>chrome-worker@google.com</owner> @@ -407,7 +407,7 @@ </histogram> <histogram name="ServiceWorker.InstallEvent.{type}.Time" units="ms" - expires_after="2022-07-23"> + expires_after="2023-01-26"> <owner>wanderview@chromium.org</owner> <owner>asamidoi@chromium.org</owner> <owner>chrome-worker@google.com</owner> @@ -573,7 +573,7 @@ <histogram name="ServiceWorker.LoadTiming.Subresource.ForwardServiceWorkerToWorkerReady" - units="ms" expires_after="2022-09-20"> + units="ms" expires_after="2022-12-18"> <owner>bashi@chromium.org</owner> <owner>chrome-worker@google.com</owner> <summary> @@ -588,7 +588,7 @@ <histogram name="ServiceWorker.LoadTiming.Subresource.ResponseReceivedToCompleted2" - units="ms" expires_after="2022-09-20"> + units="ms" expires_after="2022-12-18"> <owner>bashi@chromium.org</owner> <owner>chrome-worker@google.com</owner> <summary> @@ -824,7 +824,7 @@ </histogram> <histogram name="ServiceWorker.StartTiming.StartToReceivedStartWorker" - units="ms" expires_after="2022-09-01"> + units="ms" expires_after="2022-12-18"> <owner>wanderview@chromium.org</owner> <owner>asamidoi@chromium.org</owner> <owner>chrome-worker@google.com</owner> @@ -891,7 +891,7 @@ </histogram> <histogram name="ServiceWorker.StartWorker.Status" - enum="ServiceWorkerStatusCode" expires_after="2022-12-11"> + enum="ServiceWorkerStatusCode" expires_after="2022-12-18"> <owner>wanderview@chromium.org</owner> <owner>asamidoi@chromium.org</owner> <owner>chrome-worker@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/session/histograms.xml b/tools/metrics/histograms/metadata/session/histograms.xml index 6feb147..89212a32 100644 --- a/tools/metrics/histograms/metadata/session/histograms.xml +++ b/tools/metrics/histograms/metadata/session/histograms.xml
@@ -23,7 +23,7 @@ <histograms> <histogram name="Session.Background.TotalDuration" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>asvitkine@chromium.org</owner> <owner>src/base/metrics/OWNERS</owner> <summary> @@ -80,7 +80,7 @@ </histogram> <histogram name="Session.OpenedTabCounts" units="operations" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rohitrao@chromium.org</owner> <owner>marq@chromium.org</owner> <summary> @@ -541,7 +541,7 @@ </histogram> <histogram name="Session.WebStates.NativeRestoreSessionFromCache" - enum="BooleanSuccess" expires_after="2022-10-16"> + enum="BooleanSuccess" expires_after="2022-12-18"> <owner>justincohen@chromium.org</owner> <owner>ajuma@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/settings/histograms.xml b/tools/metrics/histograms/metadata/settings/histograms.xml index 49bc458..4ed569d 100644 --- a/tools/metrics/histograms/metadata/settings/histograms.xml +++ b/tools/metrics/histograms/metadata/settings/histograms.xml
@@ -120,7 +120,7 @@ </histogram> <histogram name="Settings.HomePageEngineType" enum="OmniboxSearchEngineType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mpearson@chromium.org</owner> <owner>csharp@chromium.org</owner> <summary> @@ -192,7 +192,7 @@ </histogram> <histogram name="Settings.PrivacyElementInteractions" - enum="SettingsPrivacyElementInteractions" expires_after="2022-10-16"> + enum="SettingsPrivacyElementInteractions" expires_after="2022-12-18"> <owner>harrisonsean@chromium.org</owner> <owner>msramek@chromium.org</owner> <owner>sauski@chromium.org</owner> @@ -341,7 +341,7 @@ </histogram> <histogram name="Settings.SafetyCheck.PasswordsResult" - enum="SafetyCheckPasswordsStatus" expires_after="2022-10-16"> + enum="SafetyCheckPasswordsStatus" expires_after="2022-12-18"> <owner>andzaytsev@google.com</owner> <owner>msramek@chromium.org</owner> <summary>Resulting state of the safety check password check.</summary> @@ -355,7 +355,7 @@ </histogram> <histogram name="Settings.SafetyCheck.UpdatesResult" - enum="SafetyCheckUpdateStatus" expires_after="2022-10-16"> + enum="SafetyCheckUpdateStatus" expires_after="2022-12-18"> <owner>andzaytsev@google.com</owner> <owner>msramek@chromium.org</owner> <summary>Resulting state of the safety check updates check.</summary> @@ -456,7 +456,7 @@ </histogram> <histogram name="Settings.StartupPageLoadSettings" enum="SessionStartupPref" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mpearson@chromium.org</owner> <owner>tiborg@chromium.org</owner> <owner>chrome-desktop-ntp@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/signin/histograms.xml b/tools/metrics/histograms/metadata/signin/histograms.xml index 2539350..7393920 100644 --- a/tools/metrics/histograms/metadata/signin/histograms.xml +++ b/tools/metrics/histograms/metadata/signin/histograms.xml
@@ -132,7 +132,7 @@ </histogram> <histogram name="Signin.AccountFetcher.AccountUserInfoFetchTime" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>triploblastic@chromium.org</owner> <owner>aliceywang@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> @@ -231,7 +231,7 @@ </histogram> <histogram name="Signin.AndroidGetAccountIdsTime" units="ms" - expires_after="2022-08-28"> + expires_after="2022-12-18"> <owner>alexilin@chromium.org</owner> <owner>bsazonov@chromium.org</owner> <summary> @@ -249,7 +249,7 @@ </histogram> <histogram name="Signin.AndroidNumberOfDeviceAccounts" units="accounts" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>triploblastic@chromium.org</owner> <owner>aliceywang@chromium.org</owner> <summary> @@ -559,7 +559,7 @@ </histogram> <histogram name="Signin.IOSDeviceRestoreSentinelError" - enum="SigninIOSDeviceRestoreSentinelError" expires_after="2022-10-16"> + enum="SigninIOSDeviceRestoreSentinelError" expires_after="2022-12-18"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -569,7 +569,7 @@ </histogram> <histogram name="Signin.IOSDeviceRestoreSentinelPathGenerated" - enum="BooleanSuccess" expires_after="2022-10-16"> + enum="BooleanSuccess" expires_after="2022-12-18"> <owner>jlebel@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -622,7 +622,7 @@ </histogram> <histogram name="Signin.IOSNumberOfDeviceAccounts" units="accounts" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jlebel@chromium.org</owner> <owner>msarda@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> @@ -675,7 +675,7 @@ </histogram> <histogram name="Signin.LoadedIdentities.Count" units="identities" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>jlebel@chromium.org</owner> <owner>msarda@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> @@ -739,7 +739,7 @@ </histogram> <histogram name="Signin.OAuth2MintToken.ApiCallResult" - enum="OAuth2MintTokenApiCallResult" expires_after="2022-10-16"> + enum="OAuth2MintTokenApiCallResult" expires_after="2022-12-18"> <owner>alexilin@chromium.org</owner> <owner>droger@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/stability/histograms.xml b/tools/metrics/histograms/metadata/stability/histograms.xml index 1260e3de..b895b14 100644 --- a/tools/metrics/histograms/metadata/stability/histograms.xml +++ b/tools/metrics/histograms/metadata/stability/histograms.xml
@@ -328,7 +328,7 @@ </histogram> <histogram name="Stability.Experimental.PageLoads" enum="StabilityPageLoadType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>fdoray@chromium.org</owner> <owner>catan-team@chromium.org</owner> <summary> @@ -424,7 +424,7 @@ </histogram> <histogram name="Stability.IOS.UTE.AppWillTerminateWasCalledInForeground" - enum="Boolean" expires_after="2022-08-07"> + enum="Boolean" expires_after="2022-12-18"> <owner>olivierrobin@chromium.org</owner> <owner>ajuma@chromium.org</owner> <summary> @@ -552,7 +552,7 @@ </histogram> <histogram name="Stability.MobileSessionShutdownType" - enum="MobileSessionShutdownType" expires_after="2022-10-16"> + enum="MobileSessionShutdownType" expires_after="2022-12-18"> <owner>michaeldo@chromium.org</owner> <owner>olivierrobin@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/startup/histograms.xml b/tools/metrics/histograms/metadata/startup/histograms.xml index 019b1cf..7ca3fae 100644 --- a/tools/metrics/histograms/metadata/startup/histograms.xml +++ b/tools/metrics/histograms/metadata/startup/histograms.xml
@@ -23,7 +23,7 @@ <histograms> <histogram name="Startup.AfterStartupTaskCount" units="units" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>michaeln@chromium.org</owner> <summary> The number of after-startup tasks that were queued prior to startup @@ -318,7 +318,7 @@ </histogram> <histogram base="true" name="Startup.Android.SingleTabTitleAvailableTime" - units="ms" expires_after="2022-10-09"> + units="ms" expires_after="2022-12-18"> <!-- Name completed by histogram_suffixes name="JavaStartMode" --> <owner>hanxi@chromium.org</owner> @@ -370,7 +370,7 @@ </histogram> <histogram name="Startup.Android.TimeToGTSFirstMeaningfulPaint.Cold" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>yusufo@chromium.org</owner> <owner>yfriedman@chromium.org</owner> <summary> @@ -442,7 +442,7 @@ </histogram> <histogram name="Startup.BrowserMessageLoopFirstIdle" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gab@chromium.org</owner> <owner>etienneb@chromium.org</owner> <summary> @@ -523,7 +523,7 @@ </histogram> <histogram name="Startup.BrowserWindow.FirstPaint" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gab@chromium.org</owner> <owner>mblsha@yandex-team.ru</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/sync/histograms.xml b/tools/metrics/histograms/metadata/sync/histograms.xml index db7fe69..2e78b62 100644 --- a/tools/metrics/histograms/metadata/sync/histograms.xml +++ b/tools/metrics/histograms/metadata/sync/histograms.xml
@@ -138,7 +138,7 @@ </histogram> <histogram name="Sync.BookmarkModelMerger.ValidInputUpdates" units="bookmarks" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>rushans@google.com</owner> <owner>mastiz@chromium.org</owner> <component>Services>Sync</component> @@ -343,7 +343,7 @@ </histogram> <histogram name="Sync.CustomSync3" enum="SyncModelTypes" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>treib@chromium.org</owner> <owner>mastiz@chromium.org</owner> <component>Services>Sync</component> @@ -483,7 +483,7 @@ </histogram> <histogram name="Sync.InvalidBookmarkSpecifics" - enum="InvalidBookmarkSpecificsError" expires_after="2022-10-16"> + enum="InvalidBookmarkSpecificsError" expires_after="2022-12-18"> <owner>mastiz@chromium.org</owner> <owner>rushans@google.com</owner> <component>Services>Sync</component> @@ -504,7 +504,7 @@ </histogram> <histogram name="Sync.Local.Enabled" enum="BooleanEnabled" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>pastarmovj@chromium.org</owner> <component>Services>Sync</component> <summary> @@ -832,7 +832,7 @@ </histogram> <histogram name="Sync.PassphraseType" enum="SyncPassphraseType" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>treib@chromium.org</owner> <owner>mastiz@chromium.org</owner> <component>Services>Sync</component> @@ -955,7 +955,7 @@ </histogram> <histogram name="Sync.RecordedUserEventType" enum="SyncUserEventType" - expires_after="2022-09-11"> + expires_after="2022-12-18"> <owner>mmoskvitin@google.com</owner> <owner>treib@chromium.org</owner> <component>Services>Sync</component>
diff --git a/tools/metrics/histograms/metadata/tab/histograms.xml b/tools/metrics/histograms/metadata/tab/histograms.xml index 778820b9..e040cca 100644 --- a/tools/metrics/histograms/metadata/tab/histograms.xml +++ b/tools/metrics/histograms/metadata/tab/histograms.xml
@@ -111,7 +111,7 @@ </histogram> <histogram name="Discarding.DiscardCandidatesCount" units="tabs" - expires_after="2022-10-09"> + expires_after="2022-12-18"> <owner>chrisha@chromium.org</owner> <owner>catan-team@chromium.org</owner> <summary> @@ -412,7 +412,7 @@ </summary> </histogram> -<histogram name="Tab.Count.Incognito" units="units" expires_after="2022-10-16"> +<histogram name="Tab.Count.Incognito" units="units" expires_after="2022-12-18"> <owner>rhalavati@chromium.org</owner> <owner>chrome-incognito@google.com</owner> <summary> @@ -659,7 +659,7 @@ </histogram> <histogram name="Tab.Screenshot.ScreenshotsPerPage" units="screenshots" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>skare@chromium.org</owner> <summary> Records the number of screenshots taken of a specific page. It is recorded @@ -1670,7 +1670,7 @@ </histogram> <histogram name="Tabs.LiveNTPCountAtResume" units="tabs" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>thegreenfrog@chromium.org</owner> <owner>bling-team@google.com</owner> <summary> @@ -1735,7 +1735,7 @@ <token key="BatteryState" variants="BatteryState"/> </histogram> -<histogram name="Tabs.NTPCountAtResume" units="tabs" expires_after="2022-10-16"> +<histogram name="Tabs.NTPCountAtResume" units="tabs" expires_after="2022-12-18"> <owner>gogerald@chromium.org</owner> <owner>nasims@google.com</owner> <summary> @@ -1744,7 +1744,7 @@ </histogram> <histogram name="Tabs.NTPCountAtStartup" units="tabs" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>gogerald@chromium.org</owner> <owner>nasims@google.com</owner> <summary>[iOS] The number of NTP tabs open at cold launch.</summary> @@ -1819,7 +1819,7 @@ </histogram> <histogram name="Tabs.PersistedTabData.Storage.Exists.File" - enum="BooleanSuccess" expires_after="2022-07-03"> + enum="BooleanSuccess" expires_after="2023-06-19"> <owner>yusufo@chromium.org</owner> <owner>nyquist@chromium.org</owner> <owner>dtrainor@chromium.org</owner> @@ -2308,7 +2308,7 @@ </token> </histogram> -<histogram name="Tabs.TabCountPerLoad" units="tabs" expires_after="2022-10-16"> +<histogram name="Tabs.TabCountPerLoad" units="tabs" expires_after="2022-12-18"> <owner>mpearson@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> <owner>sbirch@google.com</owner> @@ -2324,7 +2324,7 @@ </histogram> <histogram name="Tabs.TabCountPerWindow" units="tabs" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>mpearson@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> <summary> @@ -3160,7 +3160,7 @@ </histogram> <histogram name="TabStrip.TabCountOnPageLoad" units="tabs" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>yusufo@chromium.org</owner> <owner>wychen@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/translate/histograms.xml b/tools/metrics/histograms/metadata/translate/histograms.xml index 0bb1a6b..7f5fa38c 100644 --- a/tools/metrics/histograms/metadata/translate/histograms.xml +++ b/tools/metrics/histograms/metadata/translate/histograms.xml
@@ -169,7 +169,7 @@ </histogram> <histogram name="Translate.CompactInfobar.Language.MoreLanguages" - enum="LocaleCodeISO639" expires_after="2022-09-11"> + enum="LocaleCodeISO639" expires_after="2022-12-18"> <owner>megjablon@google.com</owner> <owner>chrome-language@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/uma/histograms.xml b/tools/metrics/histograms/metadata/uma/histograms.xml index 89a6772..69df974 100644 --- a/tools/metrics/histograms/metadata/uma/histograms.xml +++ b/tools/metrics/histograms/metadata/uma/histograms.xml
@@ -873,7 +873,7 @@ </histogram> <histogram name="UMA.TruncatedEvents.UserAction" units="events" - expires_after="2022-12-11"> + expires_after="2022-12-18"> <owner>rkaplow@chromium.org</owner> <owner>src/base/metrics/OWNERS</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/v8/histograms.xml b/tools/metrics/histograms/metadata/v8/histograms.xml index cadae8aa..40acb1c 100644 --- a/tools/metrics/histograms/metadata/v8/histograms.xml +++ b/tools/metrics/histograms/metadata/v8/histograms.xml
@@ -1341,7 +1341,7 @@ </histogram> <histogram name="V8.LiftoffBailoutReasons" enum="LiftoffBailoutReason" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>clemensb@chromium.org</owner> @@ -1419,7 +1419,7 @@ </histogram> <histogram name="V8.MemoryHeapSampleTotalCommitted" units="KB" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>hpayer@chromium.org</owner> <summary> The total size of committed memory used by V8 after each GC in KB. @@ -1700,7 +1700,7 @@ </histogram> <histogram name="V8.WasmCompileFunctionMicroSeconds" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>clemensb@chromium.org</owner> @@ -1730,7 +1730,7 @@ </histogram> <histogram name="V8.WasmCompileHugeFunctionMilliSeconds" units="ms" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>clemensb@chromium.org</owner> <owner>ecmziegler@chromium.org</owner> <owner>wasm-v8@google.com</owner> @@ -1767,7 +1767,7 @@ </histogram> <histogram name="V8.WasmCompileModuleMicroSeconds" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>clemensb@chromium.org</owner> @@ -1785,7 +1785,7 @@ </histogram> <histogram name="V8.WasmCompileModuleStreamingMicroSeconds" - units="microseconds" expires_after="2022-10-16"> + units="microseconds" expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>clemensb@chromium.org</owner> @@ -1854,7 +1854,7 @@ </histogram> <histogram name="V8.WasmInstantiateModuleMicroSeconds" units="microseconds" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>clemensb@chromium.org</owner> @@ -2010,7 +2010,7 @@ </histogram> <histogram name="V8.WasmModuleSizeBytes" units="bytes" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>ecmziegler@chromium.org</owner> <owner>adamk@chromium.org</owner> <owner>ahaas@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/web_apk/histograms.xml b/tools/metrics/histograms/metadata/web_apk/histograms.xml index 71070014..aa842a16 100644 --- a/tools/metrics/histograms/metadata/web_apk/histograms.xml +++ b/tools/metrics/histograms/metadata/web_apk/histograms.xml
@@ -122,7 +122,7 @@ </histogram> <histogram name="WebApk.Install.PathToInstall" enum="PwaInstallPath" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>finnur@chromium.org</owner> <owner>peter@chromium.org</owner> <owner>
diff --git a/tools/metrics/histograms/metadata/web_rtc/histograms.xml b/tools/metrics/histograms/metadata/web_rtc/histograms.xml index 323e31d0..2708104 100644 --- a/tools/metrics/histograms/metadata/web_rtc/histograms.xml +++ b/tools/metrics/histograms/metadata/web_rtc/histograms.xml
@@ -369,7 +369,7 @@ </histogram> <histogram name="WebRTC.Audio.ApmCaptureInputLevelAverageRms" - units="dBFS (negated)" expires_after="2022-10-16"> + units="dBFS (negated)" expires_after="2022-12-18"> <owner>hlundin@chromium.org</owner> <summary> This histogram reports the average RMS of the signal coming in to WebRTC's @@ -646,7 +646,7 @@ </histogram> <histogram name="WebRTC.Audio.EchoCanceller.FilterDelay" units="Blocks" - expires_after="2022-09-13"> + expires_after="2022-12-18"> <owner>peah@chromium.org</owner> <owner>saza@chromium.org</owner> <summary> @@ -900,7 +900,7 @@ </histogram> <histogram name="WebRTC.AudioOutputSampleRate" enum="AudioSampleRate" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>henrika@chromium.org</owner> <owner>webrtc-audio@google.com</owner> <summary>Audio output sample rate for WebRTC (in Hz).</summary> @@ -1082,7 +1082,7 @@ </histogram> <histogram name="WebRTC.Call.EstimatedSendBitrateInKbps" units="kbps" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>holmer@chromium.org</owner> <summary> Average estimated send bitrate during a call, counted from first packet sent @@ -1120,7 +1120,7 @@ </histogram> <histogram name="WebRTC.Call.TimeReceivingAudioRtpPacketsInSeconds" units="s" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>saza@chromium.org</owner> <summary> The amount of time between the arrival of the first and last audio RTP
diff --git a/tools/metrics/histograms/metadata/webapps/histograms.xml b/tools/metrics/histograms/metadata/webapps/histograms.xml index 7edc0d5..15e0d613 100644 --- a/tools/metrics/histograms/metadata/webapps/histograms.xml +++ b/tools/metrics/histograms/metadata/webapps/histograms.xml
@@ -276,7 +276,7 @@ </histogram> <histogram base="true" name="WebApp.Engagement" - enum="SiteEngagementServiceEngagementType" expires_after="2022-10-16"> + enum="SiteEngagementServiceEngagementType" expires_after="2022-12-18"> <owner>calamity@chromium.org</owner> <owner>mgiuca@chromium.org</owner> <owner>loyso@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/webauthn/histograms.xml b/tools/metrics/histograms/metadata/webauthn/histograms.xml index 59918b6..2f4a9f64 100644 --- a/tools/metrics/histograms/metadata/webauthn/histograms.xml +++ b/tools/metrics/histograms/metadata/webauthn/histograms.xml
@@ -99,7 +99,7 @@ </histogram> <histogram name="WebAuthentication.CableV2.TunnelEvent" - enum="WebAuthenticationCableV2TunnelEvent" expires_after="2022-10-16"> + enum="WebAuthenticationCableV2TunnelEvent" expires_after="2022-12-18"> <owner>agl@chromium.org</owner> <owner>martinkr@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/windows/histograms.xml b/tools/metrics/histograms/metadata/windows/histograms.xml index 9fbb57f..3d8b081 100644 --- a/tools/metrics/histograms/metadata/windows/histograms.xml +++ b/tools/metrics/histograms/metadata/windows/histograms.xml
@@ -68,7 +68,7 @@ </histogram> <histogram name="Windows.FileDeleteRetryCount" units="attempts" - expires_after="2022-10-16"> + expires_after="2022-12-18"> <owner>grt@chromium.org</owner> <owner>davidbienvenu@chromium.org</owner> <summary>
diff --git a/tools/perf/benchmarks/rendering.py b/tools/perf/benchmarks/rendering.py index 75bd5ca6..ddf2140 100644 --- a/tools/perf/benchmarks/rendering.py +++ b/tools/perf/benchmarks/rendering.py
@@ -22,6 +22,10 @@ 'Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin4', 'Event.Latency.ScrollBegin.Wheel.TimeToScrollUpdateSwapBegin4', 'Event.Latency.ScrollUpdate.Wheel.TimeToScrollUpdateSwapBegin4', + 'EventLatency.FirstGestureScrollUpdate.Touchscreen.TotalLatency', + 'EventLatency.FirstGestureScrollUpdate.Wheel.TotalLatency', + 'EventLatency.GestureScrollUpdate.Touchscreen.TotalLatency', + 'EventLatency.GestureScrollUpdate.Wheel.TotalLatency', 'Graphics.Smoothness.Checkerboarding.AllAnimations', 'Graphics.Smoothness.Checkerboarding.AllInteractions', 'Graphics.Smoothness.Checkerboarding.AllSequences',
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 567dd07..bf01e3e 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,24 +5,24 @@ "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm64/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell" }, "win": { - "hash": "df92015f675a0916d55536844478a716f60b6aef", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/b983faf1bf12b3c7a9b23ab845aec30024da795a/trace_processor_shell.exe" + "hash": "53fc881fbd90c7b86c93038753e5a58e8dc280df", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/8f3eeefc3742dbdec0c6c76f17d3d9ca7cc8e6c4/trace_processor_shell.exe" }, "linux_arm": { "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893", "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell" }, "mac": { - "hash": "81754e8eb6f10e3aa872e95f3e44f3f574c23b1b", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/b983faf1bf12b3c7a9b23ab845aec30024da795a/trace_processor_shell" + "hash": "0222c03249c2ac97990c17ff2bf951c16d63c3b8", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/a15b969a82947fe647e30f9aea938a6bf11d3d68/trace_processor_shell" }, "mac_arm64": { "hash": "e1ad4861384b06d911a65f035317914b8cc975c6", "full_remote_path": "perfetto-luci-artifacts/v25.0/mac-arm64/trace_processor_shell" }, "linux": { - "hash": "64aef20cc1e600f42ce493e1efab4d68d32c54c2", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/b983faf1bf12b3c7a9b23ab845aec30024da795a/trace_processor_shell" + "hash": "85fffaf6acd440eb732648f602ff261b5d755b5c", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/a15b969a82947fe647e30f9aea938a6bf11d3d68/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc index fdf9741..b8d5c6f3 100644 --- a/ui/accessibility/platform/ax_platform_node_auralinux.cc +++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/accessibility/platform/ax_platform_node_auralinux.h" +#include "base/memory/raw_ptr.h" #include <dlfcn.h> #include <stdint.h> @@ -125,7 +126,7 @@ struct _AXPlatformNodeAuraLinuxObject { AtkObject parent; - AXPlatformNodeAuraLinux* m_object; + raw_ptr<AXPlatformNodeAuraLinux> m_object; }; struct _AXPlatformNodeAuraLinuxClass {
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc b/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc index cb396dc..d61dcda 100644 --- a/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc +++ b/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc
@@ -7,6 +7,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/platform/atk_util_auralinux.h" @@ -1743,7 +1744,7 @@ g_signal_handler_disconnect(target_, deactivate_id_); } - AtkObject* target_; + raw_ptr<AtkObject> target_; bool saw_activate_ = false; bool saw_deactivate_ = false; gulong activate_id_ = 0;
diff --git a/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java b/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java index 3fc8f81b..1f0aebc 100644 --- a/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java +++ b/ui/android/java/src/org/chromium/ui/base/ResourceBundle.java
@@ -49,6 +49,10 @@ sAvailableLocales = locales; } + public static void clearAvailablePakLocalesForTesting() { + sAvailableLocales = null; + } + /** * Return the list of available locales. * @return The correct locale list for this build.
diff --git a/ui/aura/test/ui_controls_ozone.cc b/ui/aura/test/ui_controls_ozone.cc index 560b407..1baa18b7 100644 --- a/ui/aura/test/ui_controls_ozone.cc +++ b/ui/aura/test/ui_controls_ozone.cc
@@ -252,7 +252,7 @@ base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(closure)); } - WindowTreeHost* host = optional_host ? optional_host : host_; + WindowTreeHost* host = optional_host ? optional_host : host_.get(); ui::EventSourceTestApi event_source_test(host->GetEventSource()); std::ignore = event_source_test.SendEventToSink(event); }
diff --git a/ui/aura/test/ui_controls_ozone.h b/ui/aura/test/ui_controls_ozone.h index 9e64ff1..0cc3978 100644 --- a/ui/aura/test/ui_controls_ozone.h +++ b/ui/aura/test/ui_controls_ozone.h
@@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "build/chromeos_buildflags.h" @@ -120,7 +121,7 @@ // This is the default host used for events that are not scoped to a window. // Events scoped to a window always use the window's host. - WindowTreeHost* const host_; + const raw_ptr<WindowTreeHost> host_; // Mask of the mouse buttons currently down. This is static as it needs to // track the state globally for all displays. A UIControlsOzone instance is
diff --git a/ui/base/clipboard/clipboard_ozone.cc b/ui/base/clipboard/clipboard_ozone.cc index 18c740a..235f253 100644 --- a/ui/base/clipboard/clipboard_ozone.cc +++ b/ui/base/clipboard/clipboard_ozone.cc
@@ -13,6 +13,7 @@ #include "base/containers/contains.h" #include "base/containers/flat_map.h" #include "base/containers/span.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/no_destructor.h" #include "base/notreached.h" @@ -313,7 +314,7 @@ base::flat_map<ClipboardBuffer, PlatformClipboard::DataMap> offered_data_; // Provides communication to a system clipboard under ozone level. - PlatformClipboard* const platform_clipboard_ = nullptr; + const raw_ptr<PlatformClipboard> platform_clipboard_ = nullptr; ClipboardSequenceNumberToken clipboard_sequence_number_; ClipboardSequenceNumberToken selection_sequence_number_;
diff --git a/ui/base/glib/scoped_gobject.h b/ui/base/glib/scoped_gobject.h index 7c5a5ea8..77b845f 100644 --- a/ui/base/glib/scoped_gobject.h +++ b/ui/base/glib/scoped_gobject.h
@@ -8,6 +8,7 @@ #include <glib-object.h> #include "base/check.h" +#include "base/memory/raw_ptr.h" // Similar to a std::shared_ptr for GObject types. template <typename T> @@ -69,7 +70,7 @@ g_object_unref(obj_); } - T* obj_ = nullptr; + raw_ptr<T> obj_ = nullptr; }; // Create a ScopedGObject and do not increase the GObject's reference count.
diff --git a/ui/base/idle/idle_linux.cc b/ui/base/idle/idle_linux.cc index d1f3f058..bd6ff57 100644 --- a/ui/base/idle/idle_linux.cc +++ b/ui/base/idle/idle_linux.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/time/time.h" #include "ui/base/idle/idle.h" @@ -202,7 +203,7 @@ scoped_refptr<dbus::Bus> bus_; scoped_refptr<base::SequencedTaskRunner> task_runner_; - dbus::ObjectProxy* proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> proxy_ = nullptr; base::WeakPtrFactory<DBusScreenSaverWatcher> weak_factory_{this}; };
diff --git a/ui/base/ime/linux/input_method_auralinux_unittest.cc b/ui/base/ime/linux/input_method_auralinux_unittest.cc index 381374e..f26c8eb 100644 --- a/ui/base/ime/linux/input_method_auralinux_unittest.cc +++ b/ui/base/ime/linux/input_method_auralinux_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/base/ime/linux/input_method_auralinux.h" +#include "base/memory/raw_ptr.h" #include <stddef.h> @@ -170,7 +171,7 @@ } private: - LinuxInputMethodContextDelegate* delegate_; + raw_ptr<LinuxInputMethodContextDelegate> delegate_; VirtualKeyboardControllerStub virtual_keyboard_controller_; std::vector<std::u16string> actions_; bool is_sync_mode_; @@ -342,11 +343,11 @@ delegate_ = nullptr; } - LinuxInputMethodContextFactoryForTesting* factory_; - InputMethodAuraLinux* input_method_auralinux_; - InputMethodDelegateForTesting* delegate_; - LinuxInputMethodContextForTesting* context_; - TestResult* test_result_; + raw_ptr<LinuxInputMethodContextFactoryForTesting> factory_; + raw_ptr<InputMethodAuraLinux> input_method_auralinux_; + raw_ptr<InputMethodDelegateForTesting> delegate_; + raw_ptr<LinuxInputMethodContextForTesting> context_; + raw_ptr<TestResult> test_result_; }; TEST_F(InputMethodAuraLinuxTest, BasicSyncModeTest) {
diff --git a/ui/base/x/selection_requestor.h b/ui/base/x/selection_requestor.h index 3d318f6..83dfc03 100644 --- a/ui/base/x/selection_requestor.h +++ b/ui/base/x/selection_requestor.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/time/time.h" #include "ui/gfx/x/connection.h" @@ -114,7 +115,7 @@ const x11::Window x_window_; // Not owned. - XClipboardHelper* const helper_; + const raw_ptr<XClipboardHelper> helper_; // The property on |x_window_| set by the selection owner with the value of // the selection.
diff --git a/ui/base/x/selection_requestor_unittest.cc b/ui/base/x/selection_requestor_unittest.cc index 975301a..7ea30c60 100644 --- a/ui/base/x/selection_requestor_unittest.cc +++ b/ui/base/x/selection_requestor_unittest.cc
@@ -8,6 +8,7 @@ #include <memory> #include "base/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/task/single_thread_task_runner.h" #include "base/test/task_environment.h" @@ -66,13 +67,13 @@ connection_->DestroyWindow({x_window_}); } - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; // |requestor_|'s window. x11::Window x_window_ = x11::Window::None; std::unique_ptr<XClipboardHelper> helper_; - SelectionRequestor* requestor_ = nullptr; + raw_ptr<SelectionRequestor> requestor_ = nullptr; base::test::SingleThreadTaskEnvironment task_environment_{ base::test::SingleThreadTaskEnvironment::MainThreadType::UI};
diff --git a/ui/base/x/test/x11_ui_controls_test_helper.h b/ui/base/x/test/x11_ui_controls_test_helper.h index 62d3d30e..8ab6147 100644 --- a/ui/base/x/test/x11_ui_controls_test_helper.h +++ b/ui/base/x/test/x11_ui_controls_test_helper.h
@@ -5,6 +5,7 @@ #ifndef UI_BASE_X_TEST_X11_UI_CONTROLS_TEST_HELPER_H_ #define UI_BASE_X_TEST_X11_UI_CONTROLS_TEST_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" #include "base/component_export.h" @@ -64,7 +65,7 @@ uint32_t keysym); // Our X11 state. - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; x11::Window x_root_window_; // Input-only window used for events.
diff --git a/ui/base/x/visual_picker_glx.h b/ui/base/x/visual_picker_glx.h index e3880bb..336b7d9 100644 --- a/ui/base/x/visual_picker_glx.h +++ b/ui/base/x/visual_picker_glx.h
@@ -7,6 +7,7 @@ #include "base/component_export.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/x/connection.h" #include "ui/gfx/x/glx.h" @@ -54,7 +55,7 @@ void FillConfigMap(); - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::VisualId system_visual_{}; x11::VisualId rgba_visual_{};
diff --git a/ui/base/x/x11_clipboard_helper.h b/ui/base/x/x11_clipboard_helper.h index 98f5b6e..f08fb2b 100644 --- a/ui/base/x/x11_clipboard_helper.h +++ b/ui/base/x/x11_clipboard_helper.h
@@ -12,6 +12,7 @@ #include "base/callback_forward.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/base/clipboard/clipboard_buffer.h" @@ -116,7 +117,7 @@ const SelectionFormatMap& LookupStorageForAtom(x11::Atom atom); // Our X11 state. - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; const x11::Window x_root_window_; // Input-only window used as a selection owner.
diff --git a/ui/base/x/x11_cursor_loader.h b/ui/base/x/x11_cursor_loader.h index 6b723b8..f154e99 100644 --- a/ui/base/x/x11_cursor_loader.h +++ b/ui/base/x/x11_cursor_loader.h
@@ -8,6 +8,7 @@ #include <unordered_map> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" @@ -63,7 +64,7 @@ bool SupportsCreateCursor() const; bool SupportsCreateAnimCursor() const; - x11::Connection* connection_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; x11::Font cursor_font_ = x11::Font::None;
diff --git a/ui/base/x/x11_desktop_window_move_client.h b/ui/base/x/x11_desktop_window_move_client.h index 9ec14ee..29a57cd 100644 --- a/ui/base/x/x11_desktop_window_move_client.h +++ b/ui/base/x/x11_desktop_window_move_client.h
@@ -7,6 +7,7 @@ #include "base/callback.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/base/x/x11_move_loop_delegate.h" #include "ui/base/x/x11_whole_screen_move_loop.h" #include "ui/gfx/geometry/point.h" @@ -53,7 +54,7 @@ // We need to keep track of this so we can actually move it when reacting to // mouse events. - Delegate* const window_; + const raw_ptr<Delegate> window_; // Our cursor offset from the top left window origin when the drag // started. Used to calculate the window's new bounds relative to the current
diff --git a/ui/base/x/x11_display_manager.h b/ui/base/x/x11_display_manager.h index a0cbd9f4..05e7a644 100644 --- a/ui/base/x/x11_display_manager.h +++ b/ui/base/x/x11_display_manager.h
@@ -10,6 +10,7 @@ #include "base/cancelable_callback.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/base/x/x11_workspace_handler.h" #include "ui/display/display.h" #include "ui/display/display_change_notifier.h" @@ -75,11 +76,11 @@ // X11WorkspaceHandler override: void OnCurrentWorkspaceChanged(const std::string& new_workspace) override; - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; std::vector<display::Display> displays_; display::DisplayChangeNotifier change_notifier_; - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::Window x_root_window_; int64_t primary_display_index_ = 0;
diff --git a/ui/base/x/x11_drag_context.h b/ui/base/x/x11_drag_context.h index ae7cacc1..d30e3bf3 100644 --- a/ui/base/x/x11_drag_context.h +++ b/ui/base/x/x11_drag_context.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/base/x/selection_utils.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/x/event.h" @@ -71,7 +72,7 @@ x11::Window source_window_; // The client we inform once we're done with requesting data. - XDragDropClient* drag_drop_client_ = nullptr; + raw_ptr<XDragDropClient> drag_drop_client_ = nullptr; // Whether we're blocking the handling of an XdndPosition message by waiting // for |unfetched_targets_| to be fetched.
diff --git a/ui/base/x/x11_drag_drop_client.h b/ui/base/x/x11_drag_drop_client.h index 38e6d19..c99a5cd 100644 --- a/ui/base/x/x11_drag_drop_client.h +++ b/ui/base/x/x11_drag_drop_client.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/timer/timer.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-shared.h" #include "ui/base/x/selection_utils.h" @@ -203,7 +204,7 @@ void EndMoveLoop(); - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; const x11::Window xwindow_; @@ -213,7 +214,7 @@ // Source side information. SourceState source_state_ = SourceState::kOther; - const XOSExchangeDataProvider* source_provider_ = nullptr; + raw_ptr<const XOSExchangeDataProvider> source_provider_ = nullptr; // The operation bitfield as requested by StartDragAndDrop. int allowed_operations_ = 0;
diff --git a/ui/base/x/x11_global_shortcut_listener.h b/ui/base/x/x11_global_shortcut_listener.h index 9e472d7..bfb82e3 100644 --- a/ui/base/x/x11_global_shortcut_listener.h +++ b/ui/base/x/x11_global_shortcut_listener.h
@@ -9,6 +9,7 @@ #include <set> +#include "base/memory/raw_ptr.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/events/platform/platform_event_dispatcher.h" #include "ui/gfx/x/xproto.h" @@ -72,7 +73,7 @@ std::set<Accelerator> registered_combinations_; // The x11 default display and the native root window. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; x11::Window x_root_window_; };
diff --git a/ui/base/x/x11_idle_query.h b/ui/base/x/x11_idle_query.h index 1553a3c..70c7862 100644 --- a/ui/base/x/x11_idle_query.h +++ b/ui/base/x/x11_idle_query.h
@@ -6,6 +6,7 @@ #define UI_BASE_X_X11_IDLE_QUERY_H_ #include "base/component_export.h" +#include "base/memory/raw_ptr.h" namespace x11 { class Connection; @@ -25,7 +26,7 @@ int IdleTime(); private: - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; }; } // namespace ui
diff --git a/ui/base/x/x11_keyboard_hook.h b/ui/base/x/x11_keyboard_hook.h index f08b865..b6f0179a 100644 --- a/ui/base/x/x11_keyboard_hook.h +++ b/ui/base/x/x11_keyboard_hook.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/native_widget_types.h" @@ -44,7 +45,7 @@ std::vector<int> grabbed_keys_; // The x11 default connection and the owner's native window. - x11::Connection* const connection_ = nullptr; + const raw_ptr<x11::Connection> connection_ = nullptr; const x11::Window x_window_ = x11::Window::None; };
diff --git a/ui/base/x/x11_os_exchange_data_provider.h b/ui/base/x/x11_os_exchange_data_provider.h index 823dd87..e513aa1 100644 --- a/ui/base/x/x11_os_exchange_data_provider.h +++ b/ui/base/x/x11_os_exchange_data_provider.h
@@ -10,6 +10,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" +#include "base/memory/raw_ptr.h" #include "base/pickle.h" #include "ui/base/dragdrop/os_exchange_data_provider.h" #include "ui/base/x/selection_owner.h" @@ -132,7 +133,7 @@ gfx::Vector2d drag_image_offset_; // Our X11 state. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; x11::Window x_root_window_; // In X11, because the IPC parts of drag operations are implemented by
diff --git a/ui/base/x/x11_shm_image_pool.h b/ui/base/x/x11_shm_image_pool.h index 5dd062f..7b4b893 100644 --- a/ui/base/x/x11_shm_image_pool.h +++ b/ui/base/x/x11_shm_image_pool.h
@@ -11,6 +11,7 @@ #include "base/callback_forward.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/sequence_checker.h" #include "third_party/skia/include/core/SkBitmap.h" @@ -64,7 +65,7 @@ x11::Shm::Seg shmseg{}; int shmid = 0; - void* shmaddr = nullptr; + raw_ptr<void> shmaddr = nullptr; bool shmem_attached_to_server = false; SkBitmap bitmap; std::unique_ptr<SkCanvas> canvas; @@ -83,7 +84,7 @@ void Cleanup(); - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; const x11::Drawable drawable_; const x11::VisualId visual_; const int depth_;
diff --git a/ui/base/x/x11_software_bitmap_presenter.cc b/ui/base/x/x11_software_bitmap_presenter.cc index ab101728..b47438ba 100644 --- a/ui/base/x/x11_software_bitmap_presenter.cc +++ b/ui/base/x/x11_software_bitmap_presenter.cc
@@ -14,6 +14,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "skia/ext/legacy_display_globals.h" #include "third_party/skia/include/core/SkCanvas.h" @@ -48,7 +49,7 @@ } private: - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::Pixmap pixmap_; };
diff --git a/ui/base/x/x11_software_bitmap_presenter.h b/ui/base/x/x11_software_bitmap_presenter.h index 35f35a0..367749f 100644 --- a/ui/base/x/x11_software_bitmap_presenter.h +++ b/ui/base/x/x11_software_bitmap_presenter.h
@@ -6,6 +6,7 @@ #define UI_BASE_X_X11_SOFTWARE_BITMAP_PRESENTER_H_ #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" @@ -59,7 +60,7 @@ bool ShmPoolReady() const; x11::Window widget_; - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; x11::GraphicsContext gc_{}; x11::VisualId visual_{}; int depth_ = 0;
diff --git a/ui/base/x/x11_util.h b/ui/base/x/x11_util.h index bf36efe1..62a265eb 100644 --- a/ui/base/x/x11_util.h +++ b/ui/base/x/x11_util.h
@@ -16,6 +16,7 @@ #include "base/component_export.h" #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" @@ -415,7 +416,7 @@ x11::ColorMap GetColormap(); const uint8_t depth; - const x11::VisualType* const info; + const raw_ptr<const x11::VisualType> info; private: x11::ColorMap colormap_{};
diff --git a/ui/base/x/x11_whole_screen_move_loop.h b/ui/base/x/x11_whole_screen_move_loop.h index 0ae70b2a..5058b4a 100644 --- a/ui/base/x/x11_whole_screen_move_loop.h +++ b/ui/base/x/x11_whole_screen_move_loop.h
@@ -11,6 +11,7 @@ #include "base/callback.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/base/x/x11_move_loop.h" #include "ui/base/x/x11_move_loop_delegate.h" @@ -64,7 +65,7 @@ void PostDispatchIfNeeded(const ui::MouseEvent& event); - X11MoveLoopDelegate* delegate_; + raw_ptr<X11MoveLoopDelegate> delegate_; // Are we running a nested run loop from RunMoveLoop()? bool in_move_loop_;
diff --git a/ui/base/x/x11_workspace_handler.h b/ui/base/x/x11_workspace_handler.h index 2a4e793..ba76680 100644 --- a/ui/base/x/x11_workspace_handler.h +++ b/ui/base/x/x11_workspace_handler.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/x/connection.h" #include "ui/gfx/x/event.h" @@ -54,7 +55,7 @@ std::string workspace_; - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; base::WeakPtrFactory<X11WorkspaceHandler> weak_factory_{this}; };
diff --git a/ui/chromeos/translations/ui_chromeos_strings_be.xtb b/ui/chromeos/translations/ui_chromeos_strings_be.xtb index b0ab62bf..a97215c5 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_be.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_be.xtb
@@ -617,6 +617,7 @@ <translation id="6296410173147755564">Няправільны PUK-код</translation> <translation id="6312403991423642364">Невядомая памылка сеткі</translation> <translation id="6317608858038767920">Адмысловы сервер даменных імён: <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Архіў <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Маханне</translation> <translation id="6327785803543103246">Аўтаматычная наладка проксі-сервера</translation> <translation id="6339145975392024142">ЗША, міжнародная (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb index 56667895..dce24e1 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Превключване към списъчен изглед</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> папки са споделени с Linux</translation> <translation id="2378075407703503998">Избрани са <ph name="SELCTED_FILE_COUNT" /> файла</translation> +<translation id="2387120140441437063">Файловете в кошчето не могат да се отворят. Моля, възстановете ги, преди да ги отворите.</translation> <translation id="2387458720915042159">Тип на връзката през прокси сървър</translation> <translation id="2389832672041313158">Бирмански</translation> <translation id="2392369802118427583">Активиране</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb index 7822ab5d..a716c8a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_cs.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_cs.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Přepnout na zobrazení seznamu</translation> <translation id="2377590462528165447">Počet složek sdílených s Linuxem: <ph name="NUMBER_OF_ITEMS" /></translation> <translation id="2378075407703503998">Vybrané soubory: <ph name="SELCTED_FILE_COUNT" /></translation> +<translation id="2387120140441437063">Soubory v koši nelze otevřít. Před otevřením soubory obnovte.</translation> <translation id="2387458720915042159">Typ připojení k proxy serveru</translation> <translation id="2389832672041313158">barmština/myanmarština</translation> <translation id="2392369802118427583">Aktivovat</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb index 28ea448..b39c006 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_en-GB.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Switch to list view</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> folders shared with Linux</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> files selected</translation> +<translation id="2387120140441437063">Cannot open binned files. Please restore the files before opening.</translation> <translation id="2387458720915042159">Proxy connection type</translation> <translation id="2389832672041313158">Burmese/Myanmar</translation> <translation id="2392369802118427583">Activate</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb index cb4dfb7..7e3b22dd 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_es-419.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">La PUK no es válida.</translation> <translation id="6312403991423642364">Error de red desconocido</translation> <translation id="6317608858038767920">Nameserver personalizado <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Archivo <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Saludo</translation> <translation id="6327785803543103246">Detección automática de proxy web</translation> <translation id="6339145975392024142">Internacional de EE.UU. (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb index e81acf16..07633d8 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">PUK نامعتبر است</translation> <translation id="6312403991423642364">خطای شبکه ناشناس</translation> <translation id="6317608858038767920">اسم سرور سفارشی <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">بایگانی <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">دست تکان دادن</translation> <translation id="6327785803543103246">کشف خودکار پراکسی وب</translation> <translation id="6339145975392024142">بینالمللی آمریکایی (رایانه شخصی)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb index 3c5ba94..278036d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">Väärä PUK-koodi</translation> <translation id="6312403991423642364">Tuntematon verkkovirhe</translation> <translation id="6317608858038767920">Oma nimipalvelin <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" />-arkisto</translation> <translation id="6321303798550928047">Vilkuttaa</translation> <translation id="6327785803543103246">Verkkovälityspalvelimen automaattinen tunnistaminen</translation> <translation id="6339145975392024142">US, kansainvälinen (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb index 3064ceb..cf00459 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -619,6 +619,7 @@ <translation id="6296410173147755564">Clé personnelle de déblocage incorrecte</translation> <translation id="6312403991423642364">Erreur réseau inconnue</translation> <translation id="6317608858038767920">Serveur de nom de domaine personnalisé <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Archive <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Signe de la main</translation> <translation id="6327785803543103246">Découverte automatique de mandataire Web</translation> <translation id="6339145975392024142">Américain international (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb index e25fbd1..2df0fd2 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">અમાન્ય PUK</translation> <translation id="6312403991423642364">અજ્ઞાત નેટવર્ક ભૂલ</translation> <translation id="6317608858038767920">કસ્ટમ નેમસર્વર <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" /> આર્કાઇવ</translation> <translation id="6321303798550928047">હાથ હલાવતું ચિહ્ન</translation> <translation id="6327785803543103246">વેબ પ્રૉક્સીની ઑટોમૅટિક ખોજ</translation> <translation id="6339145975392024142">US આંતરરાષ્ટ્રીય (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb index 616b683e..ea827a47 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -617,6 +617,7 @@ <translation id="6296410173147755564">PUK կոդն անվավեր է</translation> <translation id="6312403991423642364">Ցանցի անհայտ սխալ</translation> <translation id="6317608858038767920">Հատուկ DNS սերվեր <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" /> արխիվ</translation> <translation id="6321303798550928047">Ձեռքով ողջույն</translation> <translation id="6327785803543103246">Պրոքսի սերվերի ինքնահայտնաբերում</translation> <translation id="6339145975392024142">ԱՄՆ միջազգային (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb index 5141286..cf123b7 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Passa alla visualizzazione elenco</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> cartelle condivise con Linux</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> file selezionati</translation> +<translation id="2387120140441437063">Impossibile aprire i file nel cestino. Ripristina i file prima di aprirli.</translation> <translation id="2387458720915042159">Tipo di connessione proxy</translation> <translation id="2389832672041313158">Birmano/Myanmar</translation> <translation id="2392369802118427583">Attiva</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb index fe2a7cb..bed3abb 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -617,6 +617,7 @@ <translation id="6296410173147755564">PUK коды жарамсыз.</translation> <translation id="6312403991423642364">Белгісіз желі қатесі</translation> <translation id="6317608858038767920"><ph name="INPUT_INDEX" /> арнаулы атаулар сервері</translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" /> мұрағаты</translation> <translation id="6321303798550928047">Қол бұлғау</translation> <translation id="6327785803543103246">Вебпрокси-серверді автоматты анықтау</translation> <translation id="6339145975392024142">АҚШ халықаралық (ДК)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb index bb25df7..64af89c 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_lv.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_lv.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">PUK kods nav derīgs</translation> <translation id="6312403991423642364">Nezināma tīkla kļūda</translation> <translation id="6317608858038767920">Pielāgots nosaukuma serveris <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" /> arhīvs</translation> <translation id="6321303798550928047">Mājoša roka</translation> <translation id="6327785803543103246">Tīmekļa starpniekservera automātiskā atklāšana</translation> <translation id="6339145975392024142">ASV starptautiskā (PC) tastatūra</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb index a66d35e..ed4fe2d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Префрли на режим за преглед во список</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> папки се споделени со Linux</translation> <translation id="2378075407703503998">Избрани се <ph name="SELCTED_FILE_COUNT" /> датотеки</translation> +<translation id="2387120140441437063">Не може да се отворат датотеки од корпата. Вратете ги датотеките пред да ги отворите.</translation> <translation id="2387458720915042159">Тип на врска прокси</translation> <translation id="2389832672041313158">бурмански (Мјанмар)</translation> <translation id="2392369802118427583">Активирај</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb index 0e9d225..94928c6 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Жагсаалтаар харах горим руу сэлгэх</translation> <translation id="2377590462528165447">Linux-тэй <ph name="NUMBER_OF_ITEMS" /> фолдер хуваалцсан байна</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> файлууд сонгогдлоо</translation> +<translation id="2387120140441437063">Хогийн саванд хийсэн файлуудыг нээх боломжгүй. Файлуудыг нээхээс өмнө сэргээнэ үү.</translation> <translation id="2387458720915042159">Прокси холболтын төрөл</translation> <translation id="2389832672041313158">Бирм/Мьянмар</translation> <translation id="2392369802118427583">Идэвхжүүлэх</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb index 000ac7b..8ae9245f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ne.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ne.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">सूची दृश्यमा बदल्नुहोस्</translation> <translation id="2377590462528165447">Linux सँग <ph name="NUMBER_OF_ITEMS" /> फोल्डरहरू आदान प्रदान गरिए</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> फाइलहरू चयन भए</translation> +<translation id="2387120140441437063">ट्र्यासमा सारिएका फाइलहरू खोल्न मिल्दैन। कृपया ती फाइलहरू रिस्टोर गरेपछि मात्र खोल्नुहोस्।</translation> <translation id="2387458720915042159">प्रोक्सी जडानको प्रकार</translation> <translation id="2389832672041313158">बर्मेली/म्यान्मार</translation> <translation id="2392369802118427583">सक्रिय</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb index fb08982..11b3545 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Overschakelen naar lijstweergave</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> mappen gedeeld met Linux</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> bestanden geselecteerd</translation> +<translation id="2387120140441437063">Kan bestanden in de prullenbak niet openen. Herstel de bestanden voordat je ze opent.</translation> <translation id="2387458720915042159">Proxyverbindingstype</translation> <translation id="2389832672041313158">Birmaans/Myanmar</translation> <translation id="2392369802118427583">Activeren</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb index cc844e6..dc752e9 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">ਸੂਚੀ ਦ੍ਰਿਸ਼ 'ਤੇ ਸਵਿੱਚ ਕਰੋ</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> ਫੋਲਡਰ Linux ਨਾਲ ਸਾਂਝੇ ਕੀਤੇ ਗਏ</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ਫਾਈਲਾਂ ਚੁਣੀਆਂ</translation> +<translation id="2387120140441437063">ਰੱਦੀ ਵਿੱਚ ਭੇਜੀਆਂ ਗਈਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਖੋਲ੍ਹਣ ਤੋਂ ਪਹਿਲਾਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰੋ।</translation> <translation id="2387458720915042159">ਪ੍ਰੌਕਸੀ ਕਨੈਕਸ਼ਨ ਕਿਸਮ</translation> <translation id="2389832672041313158">ਬਰਮੀ (ਮਿਆਂਮਾਰ)</translation> <translation id="2392369802118427583">ਸਕਿਰਿਆ ਬਣਾਓ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb index e7d84ea..fe70a20b 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Przełącz na widok listy</translation> <translation id="2377590462528165447">Foldery (<ph name="NUMBER_OF_ITEMS" />) zostały udostępnione na Linuksie</translation> <translation id="2378075407703503998">Wybrano <ph name="SELCTED_FILE_COUNT" /> pliki(ów)</translation> +<translation id="2387120140441437063">Nie można otworzyć plików znajdujących się w koszu. Najpierw je przywróć.</translation> <translation id="2387458720915042159">Typ połączenia z serwerem proxy</translation> <translation id="2389832672041313158">Birmański/myanmarski</translation> <translation id="2392369802118427583">Aktywuj</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb index a92a89a..54542e3a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ro.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ro.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">Comută la afișarea listă</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> dosare cu acces permis pentru Linux</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> fișiere selectate</translation> +<translation id="2387120140441437063">Nu se pot deschide fișierele din coșul de gunoi. Restabilește fișierele înainte de a le deschide.</translation> <translation id="2387458720915042159">Tip de conexiune prin proxy</translation> <translation id="2389832672041313158">Birmană/Myanmar</translation> <translation id="2392369802118427583">Activează</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb index 184c698..3c8161c 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ru.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ru.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">Недействительный PUK-код.</translation> <translation id="6312403991423642364">Неизвестная ошибка сети</translation> <translation id="6317608858038767920">Пользовательский DNS-сервер <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Архив <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Приветствие</translation> <translation id="6327785803543103246">Автоматическое определение настроек прокси-сервера</translation> <translation id="6339145975392024142">Американская международная (ПК)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb index d733cd9..477c1ca 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -617,6 +617,7 @@ <translation id="6296410173147755564">Kodi PUK i pavlefshëm</translation> <translation id="6312403991423642364">Gabim i panjohur në rrjet</translation> <translation id="6317608858038767920">Serveri i personalizuar i emrave <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Arkiv <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Përshëndetje me dorë</translation> <translation id="6327785803543103246">Zbulimi automatik i përfaqësuesit të uebit</translation> <translation id="6339145975392024142">Amerikane ndërkombëtare (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb index 33ac0abc..66564e0 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">Ogiltig PUK-kod</translation> <translation id="6312403991423642364">Okänt nätverksfel</translation> <translation id="6317608858038767920">Anpassad namnserver <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" />-arkiv</translation> <translation id="6321303798550928047">Vinkar</translation> <translation id="6327785803543103246">Automatisk identifiering av webbproxy</translation> <translation id="6339145975392024142">Internationellt för USA (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb index 74d53cc..2ee9aa3 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sw.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sw.xtb
@@ -618,6 +618,7 @@ <translation id="6296410173147755564">PUK si sahihi</translation> <translation id="6312403991423642364">Hitilafu isiyojulikana ya mtandao</translation> <translation id="6317608858038767920">Nameserver maalum ya <ph name="INPUT_INDEX" /></translation> +<translation id="6320212353742551423">Faili ya kumbukumbu ya <ph name="ARCHIVE_TYPE" /></translation> <translation id="6321303798550928047">Kupunga mkono</translation> <translation id="6327785803543103246">Ugunduzi wa seva mbadala za wavuti kiotomatiki</translation> <translation id="6339145975392024142">Kibodi ya Kimataifa ya Marekani (PC)</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb index 1e61c4b2..355f189 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">เปลี่ยนเป็นมุมมองรายการ</translation> <translation id="2377590462528165447">แชร์กับ Linux แล้ว <ph name="NUMBER_OF_ITEMS" /> โฟลเดอร์</translation> <translation id="2378075407703503998">เลือก <ph name="SELCTED_FILE_COUNT" /> ไฟล์</translation> +<translation id="2387120140441437063">ไม่สามารถเปิดไฟล์ที่อยู่ในถังขยะได้ โปรดกู้คืนไฟล์ก่อนเปิด</translation> <translation id="2387458720915042159">ประเภทการเชื่อมต่อพร็อกซี</translation> <translation id="2389832672041313158">พม่า/เมียนมา</translation> <translation id="2392369802118427583">เปิดใช้งาน</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb index 165c3de8..78a243e6 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zh-HK.xtb
@@ -159,6 +159,7 @@ <translation id="2377319039870049694">切換至清單檢視</translation> <translation id="2377590462528165447">已與 Linux 共用 <ph name="NUMBER_OF_ITEMS" /> 個資料夾</translation> <translation id="2378075407703503998">已選取 <ph name="SELCTED_FILE_COUNT" /> 個檔案</translation> +<translation id="2387120140441437063">無法開啟已移至垃圾桶的檔案。請先還原檔案,然後才開啟。</translation> <translation id="2387458720915042159">Proxy 連接類型</translation> <translation id="2389832672041313158">緬甸文</translation> <translation id="2392369802118427583">啟用</translation>
diff --git a/ui/display/screen.h b/ui/display/screen.h index a86c5b6..6bbc3de 100644 --- a/ui/display/screen.h +++ b/ui/display/screen.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "build/build_config.h" #include "ui/display/display.h" @@ -146,7 +147,7 @@ explicit ScreenSaverSuspender(Screen* screen) : screen_(screen) {} - Screen* screen_; + raw_ptr<Screen> screen_; }; // Suspends the platform-specific screensaver until the returned
diff --git a/ui/events/ozone/evdev/event_converter_evdev_impl.h b/ui/events/ozone/evdev/event_converter_evdev_impl.h index 12c4e37..55561e8f 100644 --- a/ui/events/ozone/evdev/event_converter_evdev_impl.h +++ b/ui/events/ozone/evdev/event_converter_evdev_impl.h
@@ -10,6 +10,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_libevent.h" #include "ui/events/devices/input_device.h" #include "ui/events/devices/stylus_state.h" @@ -121,10 +122,10 @@ std::bitset<kMouseButtonCount> mouse_button_state_; // Shared cursor state. - CursorDelegateEvdev* const cursor_; + const raw_ptr<CursorDelegateEvdev> cursor_; // Callbacks for dispatching events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; // Callback to update keyboard devices when valid input is received. ReceivedValidInputCallback received_valid_input_callback_;
diff --git a/ui/events/ozone/evdev/event_converter_test_util.cc b/ui/events/ozone/evdev/event_converter_test_util.cc index 604e07d..081a189 100644 --- a/ui/events/ozone/evdev/event_converter_test_util.cc +++ b/ui/events/ozone/evdev/event_converter_test_util.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/events/ozone/evdev/event_converter_test_util.h" +#include "base/memory/raw_ptr.h" #include <stdint.h> @@ -110,7 +111,7 @@ } private: - EventFactoryEvdev* event_factory_evdev_; + raw_ptr<EventFactoryEvdev> event_factory_evdev_; }; class TestEventFactoryEvdev : public EventFactoryEvdev {
diff --git a/ui/events/ozone/evdev/event_factory_evdev.h b/ui/events/ozone/evdev/event_factory_evdev.h index f3980da..1d993977 100644 --- a/ui/events/ozone/evdev/event_factory_evdev.h +++ b/ui/events/ozone/evdev/event_factory_evdev.h
@@ -8,6 +8,7 @@ #include "base/callback.h" #include "base/component_export.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/task/task_runner.h" #include "ui/events/event_modifiers.h" @@ -127,10 +128,10 @@ int last_device_id_ = 0; // Interface for scanning & monitoring input devices. - DeviceManager* const device_manager_; // Not owned. + const raw_ptr<DeviceManager> device_manager_; // Not owned. // Gamepad provider to dispatch gamepad events. - GamepadProviderOzone* const gamepad_provider_; + const raw_ptr<GamepadProviderOzone> gamepad_provider_; // Proxy for input device factory (manages device I/O objects). // The real object lives on a different thread. @@ -149,7 +150,7 @@ KeyboardEvdev keyboard_; // Cursor movement. - CursorDelegateEvdev* const cursor_; + const raw_ptr<CursorDelegateEvdev> cursor_; // Object for controlling input devices. InputControllerEvdev input_controller_;
diff --git a/ui/events/ozone/evdev/event_thread_evdev.cc b/ui/events/ozone/evdev/event_thread_evdev.cc index 591b071c..ea90532 100644 --- a/ui/events/ozone/evdev/event_thread_evdev.cc +++ b/ui/events/ozone/evdev/event_thread_evdev.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" @@ -62,12 +63,12 @@ private: // Initialization bits passed from main thread. std::unique_ptr<DeviceEventDispatcherEvdev> dispatcher_; - CursorDelegateEvdev* cursor_; + raw_ptr<CursorDelegateEvdev> cursor_; EventThreadStartCallback init_callback_; scoped_refptr<base::SingleThreadTaskRunner> init_runner_; // Thread-internal state. - InputDeviceFactoryEvdev* input_device_factory_ = nullptr; + raw_ptr<InputDeviceFactoryEvdev> input_device_factory_ = nullptr; }; } // namespace
diff --git a/ui/events/ozone/evdev/gamepad_event_converter_evdev.h b/ui/events/ozone/evdev/gamepad_event_converter_evdev.h index 9270c33..72180efa 100644 --- a/ui/events/ozone/evdev/gamepad_event_converter_evdev.h +++ b/ui/events/ozone/evdev/gamepad_event_converter_evdev.h
@@ -11,6 +11,7 @@ #include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/events/devices/input_device.h" #include "ui/events/event.h" #include "ui/events/ozone/evdev/event_converter_evdev.h" @@ -120,7 +121,7 @@ const base::ScopedFD input_device_fd_; // Callbacks for dispatching events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; // The effect id is needed to keep track of effects that are uploaded and // stored in the gamepad device.
diff --git a/ui/events/ozone/evdev/input_controller_evdev.h b/ui/events/ozone/evdev/input_controller_evdev.h index 6aa1b8bd..89c5ff94 100644 --- a/ui/events/ozone/evdev/input_controller_evdev.h +++ b/ui/events/ozone/evdev/input_controller_evdev.h
@@ -9,6 +9,7 @@ #include "base/component_export.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "ui/events/devices/haptic_touchpad_effects.h" @@ -147,19 +148,19 @@ bool settings_update_pending_ = false; // Factory for devices. Needed to update device config. - InputDeviceFactoryEvdevProxy* input_device_factory_ = nullptr; + raw_ptr<InputDeviceFactoryEvdevProxy> input_device_factory_ = nullptr; // Keyboard state. - KeyboardEvdev* const keyboard_; + const raw_ptr<KeyboardEvdev> keyboard_; // Keyboard keybits. base::flat_map<int, std::vector<uint64_t>> keyboard_key_bits_mapping_; // Mouse button map. - MouseButtonMapEvdev* const mouse_button_map_; + const raw_ptr<MouseButtonMapEvdev> mouse_button_map_; // Pointing stick button map. - MouseButtonMapEvdev* const pointing_stick_button_map_; + const raw_ptr<MouseButtonMapEvdev> pointing_stick_button_map_; // Gamepad keybits. base::flat_map<int, std::vector<uint64_t>> gamepad_key_bits_mapping_;
diff --git a/ui/events/ozone/evdev/input_device_factory_evdev.h b/ui/events/ozone/evdev/input_device_factory_evdev.h index c425653..5ee0b65 100644 --- a/ui/events/ozone/evdev/input_device_factory_evdev.h +++ b/ui/events/ozone/evdev/input_device_factory_evdev.h
@@ -13,6 +13,7 @@ #include "base/callback.h" #include "base/component_export.h" #include "base/files/file_path.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" @@ -144,7 +145,7 @@ const scoped_refptr<base::SequencedTaskRunner> task_runner_; // Cursor movement. - CursorDelegateEvdev* const cursor_; + const raw_ptr<CursorDelegateEvdev> cursor_; // Shared Palm state. const std::unique_ptr<SharedPalmDetectionFilterState> shared_palm_state_;
diff --git a/ui/events/ozone/evdev/input_device_opener.h b/ui/events/ozone/evdev/input_device_opener.h index 0bf94b45..d0d2200f4 100644 --- a/ui/events/ozone/evdev/input_device_opener.h +++ b/ui/events/ozone/evdev/input_device_opener.h
@@ -5,6 +5,7 @@ #ifndef UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_OPENER_H_ #define UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_OPENER_H_ +#include "base/memory/raw_ptr.h" #include "ui/events/ozone/evdev/event_converter_evdev.h" #include "ui/events/ozone/evdev/touch_filter/shared_palm_detection_filter_state.h" @@ -25,14 +26,14 @@ base::FilePath path; // Dispatcher for events. - DeviceEventDispatcherEvdev* dispatcher; + raw_ptr<DeviceEventDispatcherEvdev> dispatcher; // State shared between devices. - CursorDelegateEvdev* cursor; + raw_ptr<CursorDelegateEvdev> cursor; #if defined(USE_EVDEV_GESTURES) GesturePropertyProvider* gesture_property_provider; #endif - SharedPalmDetectionFilterState* shared_palm_state; + raw_ptr<SharedPalmDetectionFilterState> shared_palm_state; }; class COMPONENT_EXPORT(EVDEV) InputDeviceOpener {
diff --git a/ui/events/ozone/evdev/input_injector_evdev.h b/ui/events/ozone/evdev/input_injector_evdev.h index d733fb9d..7b70f51e 100644 --- a/ui/events/ozone/evdev/input_injector_evdev.h +++ b/ui/events/ozone/evdev/input_injector_evdev.h
@@ -6,6 +6,7 @@ #define UI_EVENTS_OZONE_EVDEV_INPUT_INJECTOR_EVDEV_H_ #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/events/event_constants.h" #include "ui/events/ozone/evdev/event_dispatch_callback.h" #include "ui/ozone/public/system_input_injector.h" @@ -36,7 +37,7 @@ private: // Shared cursor state. - CursorDelegateEvdev* const cursor_; + const raw_ptr<CursorDelegateEvdev> cursor_; int device_id_ = ED_UNKNOWN_DEVICE;
diff --git a/ui/events/ozone/evdev/keyboard_evdev.h b/ui/events/ozone/evdev/keyboard_evdev.h index c7e0768..3fdd8622 100644 --- a/ui/events/ozone/evdev/keyboard_evdev.h +++ b/ui/events/ozone/evdev/keyboard_evdev.h
@@ -10,6 +10,7 @@ #include <bitset> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "ui/events/ozone/evdev/event_device_util.h" @@ -98,10 +99,10 @@ const EventDispatchCallback callback_; // Shared modifier state. - EventModifiers* const modifiers_; + const raw_ptr<EventModifiers> modifiers_; // Shared layout engine. - KeyboardLayoutEngine* const keyboard_layout_engine_; + const raw_ptr<KeyboardLayoutEngine> keyboard_layout_engine_; // Key repeat handler. EventAutoRepeatHandler auto_repeat_handler_;
diff --git a/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.h b/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.h index c7b2d08d..abeb22e 100644 --- a/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.h +++ b/ui/events/ozone/evdev/microphone_mute_switch_event_converter_evdev.h
@@ -8,6 +8,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/events/ozone/evdev/event_converter_evdev.h" #include "ui/events/ozone/evdev/event_device_info.h" @@ -42,7 +43,7 @@ const base::ScopedFD input_device_fd_; // Callbacks for dispatching events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; }; } // namespace ui
diff --git a/ui/events/ozone/evdev/stylus_button_event_converter_evdev.h b/ui/events/ozone/evdev/stylus_button_event_converter_evdev.h index 700c1c4..e37d61a 100644 --- a/ui/events/ozone/evdev/stylus_button_event_converter_evdev.h +++ b/ui/events/ozone/evdev/stylus_button_event_converter_evdev.h
@@ -8,6 +8,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/events/ozone/evdev/event_converter_evdev.h" #include "ui/events/ozone/evdev/event_device_info.h" @@ -43,7 +44,7 @@ const base::ScopedFD input_device_fd_; // Callbacks for dispatching events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; }; } // namespace ui
diff --git a/ui/events/ozone/evdev/tablet_event_converter_evdev.h b/ui/events/ozone/evdev/tablet_event_converter_evdev.h index 4a817d50..b37cdd36 100644 --- a/ui/events/ozone/evdev/tablet_event_converter_evdev.h +++ b/ui/events/ozone/evdev/tablet_event_converter_evdev.h
@@ -8,6 +8,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_libevent.h" #include "ui/events/event.h" #include "ui/events/event_modifiers.h" @@ -60,10 +61,10 @@ base::MessagePumpLibevent::FdWatchController controller_; // Shared cursor state. - CursorDelegateEvdev* const cursor_; + const raw_ptr<CursorDelegateEvdev> cursor_; // Dispatcher for events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; int y_abs_location_ = 0; int x_abs_location_ = 0;
diff --git a/ui/events/ozone/evdev/touch_event_converter_evdev.h b/ui/events/ozone/evdev/touch_event_converter_evdev.h index 93b81eb..76a0569 100644 --- a/ui/events/ozone/evdev/touch_event_converter_evdev.h +++ b/ui/events/ozone/evdev/touch_event_converter_evdev.h
@@ -14,6 +14,8 @@ #include <queue> // See if we compile against new enough headers and add missing definition // if the headers are too old. +#include "base/memory/raw_ptr.h" + #ifndef MT_TOOL_PALM #define MT_TOOL_PALM 2 #endif @@ -138,7 +140,7 @@ const base::ScopedFD input_device_fd_; // Dispatcher for events. - DeviceEventDispatcherEvdev* const dispatcher_; + const raw_ptr<DeviceEventDispatcherEvdev> dispatcher_; // Set if we drop events in kernel (SYN_DROPPED) or in process. bool dropped_events_ = false;
diff --git a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc index 9bbfdf8..11e2fed 100644 --- a/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc +++ b/ui/events/ozone/evdev/touch_filter/neural_stylus_palm_detection_filter_unittest.cc
@@ -8,6 +8,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/test/gtest_util.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -64,7 +65,7 @@ std::unique_ptr<SharedPalmDetectionFilterState> shared_palm_state; EventDeviceInfo nocturne_touchscreen_; // Owned by the filter. - MockNeuralModel* model_; + raw_ptr<MockNeuralModel> model_; NeuralStylusPalmDetectionFilterModelConfig model_config_; std::unique_ptr<PalmDetectionFilter> palm_detection_filter_; };
diff --git a/ui/events/ozone/evdev/touch_filter/palm_detection_filter.h b/ui/events/ozone/evdev/touch_filter/palm_detection_filter.h index d9f98de2..3becec0f 100644 --- a/ui/events/ozone/evdev/touch_filter/palm_detection_filter.h +++ b/ui/events/ozone/evdev/touch_filter/palm_detection_filter.h
@@ -8,6 +8,7 @@ #include <bitset> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "ui/events/ozone/evdev/touch_evdev_types.h" #include "ui/events/ozone/evdev/touch_filter/shared_palm_detection_filter_state.h" @@ -46,7 +47,7 @@ protected: // Not owned! - SharedPalmDetectionFilterState* const shared_palm_state_; + const raw_ptr<SharedPalmDetectionFilterState> shared_palm_state_; }; } // namespace ui
diff --git a/ui/events/ozone/keyboard/event_auto_repeat_handler.h b/ui/events/ozone/keyboard/event_auto_repeat_handler.h index c17e9e1a..6843d3e 100644 --- a/ui/events/ozone/keyboard/event_auto_repeat_handler.h +++ b/ui/events/ozone/keyboard/event_auto_repeat_handler.h
@@ -7,6 +7,7 @@ #include "base/callback.h" #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" @@ -67,7 +68,7 @@ base::TimeDelta repeat_delay_; base::TimeDelta repeat_interval_; - Delegate* delegate_ = nullptr; + raw_ptr<Delegate> delegate_ = nullptr; base::WeakPtrFactory<EventAutoRepeatHandler> weak_ptr_factory_{this}; };
diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h index 5fba198..6895fbb 100644 --- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h
@@ -16,6 +16,7 @@ #include "base/component_export.h" #include "base/containers/flat_map.h" #include "base/memory/free_deleter.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_piece.h" @@ -127,7 +128,7 @@ private: struct XkbKeymapEntry { std::string layout_name; - xkb_keymap* keymap; + raw_ptr<xkb_keymap> keymap; }; std::vector<XkbKeymapEntry> xkb_keymaps_;
diff --git a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc index 0194a86..0b138b04 100644 --- a/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc +++ b/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc
@@ -10,6 +10,7 @@ #include <tuple> +#include "base/memory/raw_ptr.h" #include "build/chromeos_buildflags.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/events/event_constants.h" @@ -146,8 +147,8 @@ private: EntryType entry_type_; - const PrintableEntry* printable_entry_; - const KeysymEntry* keysym_entry_; + raw_ptr<const PrintableEntry> printable_entry_; + raw_ptr<const KeysymEntry> keysym_entry_; }; } // anonymous namespace
diff --git a/ui/events/platform/x11/x11_event_source.h b/ui/events/platform/x11/x11_event_source.h index a632187..170c9e3 100644 --- a/ui/events/platform/x11/x11_event_source.h +++ b/ui/events/platform/x11/x11_event_source.h
@@ -11,6 +11,7 @@ #include "base/auto_reset.h" #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/events/events_export.h" #include "ui/events/platform/platform_event_source.h" @@ -90,7 +91,7 @@ std::unique_ptr<X11EventWatcher> watcher_; // The connection to the X11 server used to receive the events. - x11::Connection* connection_; + raw_ptr<x11::Connection> connection_; // State necessary for UpdateLastSeenServerTime bool dummy_initialized_;
diff --git a/ui/events/platform/x11/x11_event_watcher_glib.cc b/ui/events/platform/x11/x11_event_watcher_glib.cc index e4099f72..d690367c 100644 --- a/ui/events/platform/x11/x11_event_watcher_glib.cc +++ b/ui/events/platform/x11/x11_event_watcher_glib.cc
@@ -6,6 +6,8 @@ #include <glib.h> +#include "base/memory/raw_ptr.h" + namespace ui { namespace { @@ -13,8 +15,8 @@ struct GLibX11Source : public GSource { // Note: The GLibX11Source is created and destroyed by GLib. So its // constructor/destructor may or may not get called. - x11::Connection* connection; - GPollFD* poll_fd; + raw_ptr<x11::Connection> connection; + raw_ptr<GPollFD> poll_fd; }; gboolean XSourcePrepare(GSource* source, gint* timeout_ms) { @@ -27,7 +29,7 @@ // requests. // 2. A request was made after XSourceDispatch() when running tasks from // the task queue. - auto* connection = static_cast<GLibX11Source*>(source)->connection; + auto* connection = static_cast<GLibX11Source*>(source)->connection.get(); connection->Flush(); // Read a pre-buffered response if available to prevent a deadlock where we @@ -51,7 +53,7 @@ gboolean XSourceDispatch(GSource* source, GSourceFunc unused_func, gpointer data) { - auto* connection = static_cast<GLibX11Source*>(source)->connection; + auto* connection = static_cast<GLibX11Source*>(source)->connection.get(); connection->Dispatch(); // Flushing here is not strictly required, but when this function returns,
diff --git a/ui/events/platform/x11/x11_event_watcher_glib.h b/ui/events/platform/x11/x11_event_watcher_glib.h index 1196bc6b0..12a6858 100644 --- a/ui/events/platform/x11/x11_event_watcher_glib.h +++ b/ui/events/platform/x11/x11_event_watcher_glib.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/events/platform/x11/x11_event_source.h" using GPollFD = struct _GPollFD; @@ -31,10 +32,10 @@ void StopWatching() override; private: - X11EventSource* event_source_; + raw_ptr<X11EventSource> event_source_; // The GLib event source for X events. - GSource* x_source_ = nullptr; + raw_ptr<GSource> x_source_ = nullptr; // The poll attached to |x_source_|. std::unique_ptr<GPollFD> x_poll_;
diff --git a/ui/gfx/font_fallback_linux.cc b/ui/gfx/font_fallback_linux.cc index a172655..5fcad63 100644 --- a/ui/gfx/font_fallback_linux.cc +++ b/ui/gfx/font_fallback_linux.cc
@@ -14,6 +14,7 @@ #include "base/files/file_path.h" #include "base/lazy_instance.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "base/strings/string_piece.h" #include "base/trace_event/trace_event.h" @@ -176,7 +177,7 @@ FontRenderParams font_params_; // Font code points coverage. - FcCharSet* charset_; + raw_ptr<FcCharSet> charset_; }; using FallbackFontEntries = std::vector<FallbackFontEntry>; @@ -415,7 +416,7 @@ FallbackFontData fallback_font_; // supported_characters_ is owned by the parent // FcFontSet and should never be freed. - FcCharSet* supported_characters_; + raw_ptr<FcCharSet> supported_characters_; }; class CachedFontSet { @@ -502,7 +503,7 @@ } } - FcFontSet* font_set_; // Owned by this object. + raw_ptr<FcFontSet> font_set_; // Owned by this object. // CachedFont has a FcCharset* which points into the FcFontSet. // If the FcFontSet is ever destroyed, the fallback list // must be cleared first.
diff --git a/ui/gfx/font_render_params_linux_unittest.cc b/ui/gfx/font_render_params_linux_unittest.cc index bd81696b..57314f8 100644 --- a/ui/gfx/font_render_params_linux_unittest.cc +++ b/ui/gfx/font_render_params_linux_unittest.cc
@@ -9,6 +9,7 @@ #include "base/check_op.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/strings/stringprintf.h" #include "build/build_config.h" @@ -137,15 +138,15 @@ FcConfigDestroy(override_config_); SkiaFontDelegate::SetInstance( - const_cast<SkiaFontDelegate*>(original_font_delegate_)); + const_cast<SkiaFontDelegate*>(original_font_delegate_.get())); } protected: - const SkiaFontDelegate* original_font_delegate_; + raw_ptr<const SkiaFontDelegate> original_font_delegate_; TestFontDelegate test_font_delegate_; - FcConfig* override_config_ = nullptr; - FcConfig* original_config_ = nullptr; + raw_ptr<FcConfig> override_config_ = nullptr; + raw_ptr<FcConfig> original_config_ = nullptr; }; TEST_F(FontRenderParamsTest, Default) {
diff --git a/ui/gfx/linux/client_native_pixmap_dmabuf.h b/ui/gfx/linux/client_native_pixmap_dmabuf.h index b7e1cb05..6154b29 100644 --- a/ui/gfx/linux/client_native_pixmap_dmabuf.h +++ b/ui/gfx/linux/client_native_pixmap_dmabuf.h
@@ -11,6 +11,7 @@ #include <memory> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/client_native_pixmap.h" #include "ui/gfx/geometry/size.h" @@ -51,7 +52,7 @@ PlaneInfo(PlaneInfo&& plane_info); ~PlaneInfo(); - void* data = nullptr; + raw_ptr<void> data = nullptr; size_t offset = 0; size_t size = 0; };
diff --git a/ui/gfx/linux/fontconfig_util.cc b/ui/gfx/linux/fontconfig_util.cc index 6f877d8..25022a1 100644 --- a/ui/gfx/linux/fontconfig_util.cc +++ b/ui/gfx/linux/fontconfig_util.cc
@@ -6,6 +6,7 @@ #include <fontconfig/fontconfig.h> +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "ui/gfx/font_render_params.h" @@ -65,7 +66,7 @@ } private: - FcConfig* fc_config_ = nullptr; + raw_ptr<FcConfig> fc_config_ = nullptr; }; // Converts Fontconfig FC_HINT_STYLE to FontRenderParams::Hinting.
diff --git a/ui/gfx/linux/gbm_wrapper.cc b/ui/gfx/linux/gbm_wrapper.cc index 4be43d55..7546a332 100644 --- a/ui/gfx/linux/gbm_wrapper.cc +++ b/ui/gfx/linux/gbm_wrapper.cc
@@ -9,6 +9,7 @@ #include <utility> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/posix/eintr_wrapper.h" #include "skia/ext/legacy_display_globals.h" #include "third_party/skia/include/core/SkSurface.h" @@ -256,7 +257,7 @@ buffer->mmap_data_ = nullptr; } - gbm_bo* const bo_; + const raw_ptr<gbm_bo> bo_; void* mmap_data_ = nullptr; const uint32_t format_; @@ -399,7 +400,7 @@ } private: - gbm_device* const device_; + const raw_ptr<gbm_device> device_; }; } // namespace gbm_wrapper
diff --git a/ui/gfx/render_text_api_fuzzer.cc b/ui/gfx/render_text_api_fuzzer.cc index ae8e1855..9c67451b 100644 --- a/ui/gfx/render_text_api_fuzzer.cc +++ b/ui/gfx/render_text_api_fuzzer.cc
@@ -16,8 +16,13 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "ui/gfx/canvas.h" +#include "ui/gfx/font_util.h" #include "ui/gfx/render_text.h" +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +#include "third_party/test_fonts/fontconfig/fontconfig_util_linux.h" +#endif + // TODO(crbug.com/1052397): Revisit once build flag switch of lacros-chrome is // complete. #if BUILDFLAG(IS_ANDROID) || \ @@ -50,6 +55,11 @@ &discardable_memory_allocator); #endif CHECK(base::i18n::InitializeICU()); + +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + test_fonts::SetUpFontconfig(); +#endif + gfx::InitializeFonts(); gfx::FontList::SetDefaultFontDescription(kFontDescription); }
diff --git a/ui/gfx/render_text_fuzzer.cc b/ui/gfx/render_text_fuzzer.cc index dc2a26c..de1d7ae 100644 --- a/ui/gfx/render_text_fuzzer.cc +++ b/ui/gfx/render_text_fuzzer.cc
@@ -11,8 +11,13 @@ #include "base/test/test_timeouts.h" #include "build/build_config.h" #include "ui/gfx/canvas.h" +#include "ui/gfx/font_util.h" #include "ui/gfx/render_text.h" +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) +#include "third_party/test_fonts/fontconfig/fontconfig_util_linux.h" +#endif + namespace { #if BUILDFLAG(IS_WIN) @@ -31,6 +36,11 @@ logging::SetMinLogLevel(logging::LOG_FATAL); CHECK(base::i18n::InitializeICU()); + +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + test_fonts::SetUpFontconfig(); +#endif + gfx::InitializeFonts(); gfx::FontList::SetDefaultFontDescription(kFontDescription); }
diff --git a/ui/gfx/x/connection.h b/ui/gfx/x/connection.h index 57c14b3d..2004fee 100644 --- a/ui/gfx/x/connection.h +++ b/ui/gfx/x/connection.h
@@ -9,6 +9,7 @@ #include "base/component_export.h" #include "base/containers/circular_deque.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "base/sequence_checker.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -261,7 +262,7 @@ // The response must already have been obtained using WaitForResponse(). void TakeResponse(RawReply* reply, std::unique_ptr<Error>* error); - Connection* connection = nullptr; + raw_ptr<Connection> connection = nullptr; SequenceType sequence = 0; bool generates_reply = false; const char* request_name_for_tracing = nullptr; @@ -325,7 +326,7 @@ uint32_t GenerateIdImpl(); - xcb_connection_t* connection_ = nullptr; + raw_ptr<xcb_connection_t> connection_ = nullptr; std::unique_ptr<XlibDisplay> xlib_display_; bool synchronous_ = false; @@ -336,9 +337,9 @@ std::string display_string_; int default_screen_id_ = 0; Setup setup_; - Screen* default_screen_ = nullptr; - Depth* default_root_depth_ = nullptr; - VisualType* default_root_visual_ = nullptr; + raw_ptr<Screen> default_screen_ = nullptr; + raw_ptr<Depth> default_root_depth_ = nullptr; + raw_ptr<VisualType> default_root_visual_ = nullptr; base::flat_map<VisualId, VisualInfo> default_screen_visuals_; @@ -349,7 +350,7 @@ base::ObserverList<EventObserver>::Unchecked event_observers_; // The Event currently being dispatched, or nullptr if there is none. - const Event* dispatching_event_ = nullptr; + raw_ptr<const Event> dispatching_event_ = nullptr; base::circular_deque<Request> requests_; // The sequence ID of requests_.front(), or if |requests_| is empty, then the
diff --git a/ui/gfx/x/event.h b/ui/gfx/x/event.h index dd233514..9f7dc4c 100644 --- a/ui/gfx/x/event.h +++ b/ui/gfx/x/event.h
@@ -9,6 +9,7 @@ #include <utility> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" #include "ui/gfx/x/xproto.h" @@ -54,7 +55,7 @@ template <typename T> T* As() { if (type_id_ == T::type_id) - return reinterpret_cast<T*>(event_); + return reinterpret_cast<T*>(event_.get()); return nullptr; } @@ -90,11 +91,11 @@ // XProto event state. int type_id_ = 0; void (*deleter_)(void*) = nullptr; - void* event_ = nullptr; + raw_ptr<void> event_ = nullptr; // This member points to a field in |event_|, or may be nullptr if there's no // associated window for the event. It's owned by |event_|, not us. - Window* window_ = nullptr; + raw_ptr<Window> window_ = nullptr; }; } // namespace x11
diff --git a/ui/gfx/x/keyboard_state.cc b/ui/gfx/x/keyboard_state.cc index 147b6c0..7c7162e 100644 --- a/ui/gfx/x/keyboard_state.cc +++ b/ui/gfx/x/keyboard_state.cc
@@ -5,6 +5,7 @@ #include "ui/gfx/x/keyboard_state.h" #include "base/i18n/case_conversion.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/connection.h" #include "ui/gfx/x/future.h" #include "ui/gfx/x/keysyms/keysyms.h" @@ -84,7 +85,7 @@ &mode_switch_, &num_lock_); } - Connection* const connection_; + const raw_ptr<Connection> connection_; GetKeyboardMappingReply keyboard_mapping_; uint16_t lock_meaning_ = 0; uint8_t mode_switch_ = 0; @@ -124,7 +125,7 @@ map_ = std::move(*response.reply); } - Connection* const connection_; + const raw_ptr<Connection> connection_; Xkb::GetMapReply map_; };
diff --git a/ui/gfx/x/property_cache.h b/ui/gfx/x/property_cache.h index 1004b07..90be1739 100644 --- a/ui/gfx/x/property_cache.h +++ b/ui/gfx/x/property_cache.h
@@ -9,6 +9,7 @@ #include "base/component_export.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/weak_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -72,7 +73,7 @@ void OnGetPropertyResponse(PropertyValue* value, GetPropertyResponse response); - Connection* connection_; + raw_ptr<Connection> connection_; Window window_; XScopedEventSelector event_selector_; base::flat_map<Atom, PropertyValue> properties_;
diff --git a/ui/gfx/x/property_cache_unittest.cc b/ui/gfx/x/property_cache_unittest.cc index ffc39d6..a464cde6 100644 --- a/ui/gfx/x/property_cache_unittest.cc +++ b/ui/gfx/x/property_cache_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/x/x11_atom_cache.h" #include "ui/gfx/x/xproto.h" @@ -39,7 +40,7 @@ connection_ = nullptr; } - Connection* connection_ = nullptr; + raw_ptr<Connection> connection_ = nullptr; Window window_ = Window::None; };
diff --git a/ui/gfx/x/scoped_ignore_errors.h b/ui/gfx/x/scoped_ignore_errors.h index baa48b5..96fc78a 100644 --- a/ui/gfx/x/scoped_ignore_errors.h +++ b/ui/gfx/x/scoped_ignore_errors.h
@@ -6,6 +6,7 @@ #define UI_GFX_X_SCOPED_IGNORE_ERRORS_H_ #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/connection.h" namespace x11 { @@ -17,7 +18,7 @@ ~ScopedIgnoreErrors(); private: - Connection* const connection_; + const raw_ptr<Connection> connection_; Connection::ErrorHandler old_error_handler_; };
diff --git a/ui/gfx/x/window_cache.h b/ui/gfx/x/window_cache.h index 2d11968..fa6c0bd 100644 --- a/ui/gfx/x/window_cache.h +++ b/ui/gfx/x/window_cache.h
@@ -12,6 +12,7 @@ #include "base/component_export.h" #include "base/containers/circular_deque.h" #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/geometry/insets.h" @@ -36,7 +37,7 @@ ~ScopedShapeEventSelector(); private: - Connection* const connection_; + const raw_ptr<Connection> connection_; const Window window_; }; @@ -150,7 +151,7 @@ static WindowCache* instance_; - Connection* const connection_; + const raw_ptr<Connection> connection_; const Window root_; const Atom gtk_frame_extents_; std::unique_ptr<XScopedEventSelector> root_events_;
diff --git a/ui/gfx/x/window_cache_unittest.cc b/ui/gfx/x/window_cache_unittest.cc index c88dbfd5..0fbd304 100644 --- a/ui/gfx/x/window_cache_unittest.cc +++ b/ui/gfx/x/window_cache_unittest.cc
@@ -4,6 +4,7 @@ #include "ui/gfx/x/window_cache.h" +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/x/connection.h" @@ -61,7 +62,7 @@ connection_ = nullptr; } - Connection* connection_; + raw_ptr<Connection> connection_; Window root_container_ = Window::None; Window root_ = Window::None; std::unique_ptr<WindowCache> cache_;
diff --git a/ui/gfx/x/x11_atom_cache.h b/ui/gfx/x/x11_atom_cache.h index 3035f42..14bd3fa 100644 --- a/ui/gfx/x/x11_atom_cache.h +++ b/ui/gfx/x/x11_atom_cache.h
@@ -9,6 +9,7 @@ #include <string> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/xproto.h" namespace base { @@ -47,7 +48,7 @@ // On failure, None is returned. Atom GetAtom(const std::string&) const; - Connection* connection_; + raw_ptr<Connection> connection_; // Using std::map, as it is possible for thousands of atoms to be registered. mutable std::map<std::string, Atom> cached_atoms_;
diff --git a/ui/gfx/x/xlib_support.h b/ui/gfx/x/xlib_support.h index 26accef..91edc32 100644 --- a/ui/gfx/x/xlib_support.h +++ b/ui/gfx/x/xlib_support.h
@@ -9,6 +9,7 @@ #include <string> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" struct _XDisplay; struct xcb_connection_t; @@ -47,7 +48,7 @@ explicit XlibDisplay(const std::string& address); - struct _XDisplay* display_ = nullptr; + raw_ptr<struct _XDisplay> display_ = nullptr; }; // A temporary wrapper around an unowned Xlib display that adds behavior @@ -71,7 +72,7 @@ friend class Connection; - struct _XDisplay* display_; + raw_ptr<struct _XDisplay> display_; XlibDisplayType type_; };
diff --git a/ui/gfx/x/xproto_internal.h b/ui/gfx/x/xproto_internal.h index 6bf0f51..8c98ebd2 100644 --- a/ui/gfx/x/xproto_internal.h +++ b/ui/gfx/x/xproto_internal.h
@@ -5,6 +5,8 @@ #ifndef UI_GFX_X_XPROTO_INTERNAL_H_ #define UI_GFX_X_XPROTO_INTERNAL_H_ +#include "base/memory/raw_ptr.h" + #ifndef IS_X11_IMPL #error "This file should only be included by //ui/gfx/x:xprotos" #endif @@ -55,7 +57,7 @@ private: ~MallocedRefCountedMemory() override; - uint8_t* const data_; + const raw_ptr<uint8_t> data_; }; // Wraps another RefCountedMemory, giving a view into it. Similar to
diff --git a/ui/gfx/x/xproto_types.h b/ui/gfx/x/xproto_types.h index e670fcec..488e98d 100644 --- a/ui/gfx/x/xproto_types.h +++ b/ui/gfx/x/xproto_types.h
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/component_export.h" #include "base/memory/free_deleter.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" @@ -49,7 +50,7 @@ scoped_refptr<base::RefCountedMemory> data; size_t offset = 0; - const int* fds = nullptr; + raw_ptr<const int> fds = nullptr; }; // Wraps data to write to the connection.
diff --git a/ui/gl/gl_context_glx.h b/ui/gl/gl_context_glx.h index 0f3a6a3..5b89e161 100644 --- a/ui/gl/gl_context_glx.h +++ b/ui/gl/gl_context_glx.h
@@ -5,6 +5,7 @@ #ifndef UI_GL_GL_CONTEXT_GLX_H_ #define UI_GL_GL_CONTEXT_GLX_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/connection.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_export.h" @@ -36,8 +37,8 @@ private: void Destroy(); - void* context_ = nullptr; - x11::Connection* connection_ = nullptr; + raw_ptr<void> context_ = nullptr; + raw_ptr<x11::Connection> connection_ = nullptr; unsigned int graphics_reset_status_ = 0; // GL_NO_ERROR };
diff --git a/ui/gl/gl_glx_api_implementation.h b/ui/gl/gl_glx_api_implementation.h index 97a21ee6..14fe802 100644 --- a/ui/gl/gl_glx_api_implementation.h +++ b/ui/gl/gl_glx_api_implementation.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "gl_bindings.h" #include "ui/gl/gl_export.h" @@ -35,7 +36,7 @@ ~GLXApiBase() override; void InitializeBase(DriverGLX* driver); - DriverGLX* driver_; + raw_ptr<DriverGLX> driver_; }; class GL_EXPORT RealGLXApi : public GLXApiBase { @@ -66,7 +67,7 @@ #include "gl_bindings_api_autogen_glx.h" private: - GLXApi* glx_api_; + raw_ptr<GLXApi> glx_api_; }; // Inserts a TRACE for every GLX call. @@ -83,7 +84,7 @@ #include "gl_bindings_api_autogen_glx.h" private: - GLXApi* glx_api_; + raw_ptr<GLXApi> glx_api_; }; } // namespace gl
diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc index aad5e86c..6dbbf7c 100644 --- a/ui/gl/gl_surface_glx.cc +++ b/ui/gl/gl_surface_glx.cc
@@ -10,6 +10,7 @@ #include "base/command_line.h" #include "base/lazy_instance.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/no_destructor.h" #include "base/synchronization/atomic_flag.h" @@ -329,7 +330,7 @@ private: gfx::AcceleratedWidget parent_window_; - SGIVideoSyncThread* vsync_thread_; + raw_ptr<SGIVideoSyncThread> vsync_thread_; x11::Window window_ = x11::Window::None; GLXWindow glx_window_; @@ -409,8 +410,8 @@ // Raw pointers to sync primitives owned by the shim_. // These will only be referenced before we post a task to destroy // the shim_, so they are safe to access. - base::AtomicFlag* cancel_vsync_flag_; - base::Lock* vsync_lock_; + raw_ptr<base::AtomicFlag> cancel_vsync_flag_; + raw_ptr<base::Lock> vsync_lock_; }; SGIVideoSyncThread* SGIVideoSyncThread::g_video_sync_thread = nullptr;
diff --git a/ui/gl/gl_surface_glx.h b/ui/gl/gl_surface_glx.h index 6101d821..67dea271 100644 --- a/ui/gl/gl_surface_glx.h +++ b/ui/gl/gl_surface_glx.h
@@ -10,6 +10,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/native_widget_types.h" #include "ui/gfx/x/event.h" @@ -66,7 +67,7 @@ private: static bool initialized_; - GLDisplayX11* display_; + raw_ptr<GLDisplayX11> display_; }; // A surface used to render to a view.
diff --git a/ui/gtk/gtk_key_bindings_handler.h b/ui/gtk/gtk_key_bindings_handler.h index f3c3831..7abca24 100644 --- a/ui/gtk/gtk_key_bindings_handler.h +++ b/ui/gtk/gtk_key_bindings_handler.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/base/ime/linux/text_edit_command_auralinux.h" #include "ui/events/platform_event.h" #include "ui/gtk/gtk_compat.h" @@ -56,9 +57,9 @@ // with Gtk4 headers. To facilitate this, we manually copy the class // hierarchy up to GtkWidget. GtkWidget widget; - void* container_private; - void* text_view_private; - GtkKeyBindingsHandler* owner; + raw_ptr<void> container_private; + raw_ptr<void> text_view_private; + raw_ptr<GtkKeyBindingsHandler> owner; }; // Class structure of Handler class.
diff --git a/ui/gtk/gtk_ui.h b/ui/gtk/gtk_ui.h index cc5f513..d2a482e7 100644 --- a/ui/gtk/gtk_ui.h +++ b/ui/gtk/gtk_ui.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/containers/fixed_flat_map.h" +#include "base/memory/raw_ptr.h" #include "ui/base/glib/glib_signal.h" #include "ui/gfx/color_utils.h" #include "ui/gtk/gtk_ui_platform.h" @@ -140,7 +141,7 @@ std::unique_ptr<GtkUiPlatform> platform_; - NativeThemeGtk* native_theme_; + raw_ptr<NativeThemeGtk> native_theme_; // Colors calculated by LoadGtkValues() that are given to the // caller while |use_gtk_| is true.
diff --git a/ui/gtk/gtk_util.h b/ui/gtk/gtk_util.h index d72d96f2..f4709e4 100644 --- a/ui/gtk/gtk_util.h +++ b/ui/gtk/gtk_util.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/base/glib/scoped_gobject.h" #include "ui/color/color_id.h" #include "ui/gtk/gtk_compat.h" @@ -70,8 +71,8 @@ SkColor GetAveragePixelValue(bool frame); private: - cairo_surface_t* surface_; - cairo_t* cairo_; + raw_ptr<cairo_surface_t> surface_; + raw_ptr<cairo_t> cairo_; }; class GtkCssContext { @@ -107,7 +108,7 @@ // GTK4 state. // GTK widgets own their children, so instead of keeping a reference to the // widget directly, keep a reference to the root widget. - GtkWidget* widget_ = nullptr; + raw_ptr<GtkWidget> widget_ = nullptr; ScopedGObject<GtkWidget> root_; };
diff --git a/ui/gtk/input_method_context_impl_gtk.h b/ui/gtk/input_method_context_impl_gtk.h index 53d82e1..f287cdb 100644 --- a/ui/gtk/input_method_context_impl_gtk.h +++ b/ui/gtk/input_method_context_impl_gtk.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "ui/base/glib/glib_integers.h" #include "ui/base/glib/glib_signal.h" #include "ui/base/ime/linux/linux_input_method_context.h" @@ -77,7 +78,7 @@ void SetContextClientWindow(GdkWindow* window); // A set of callback functions. Must not be nullptr. - ui::LinuxInputMethodContextDelegate* const delegate_; + const raw_ptr<ui::LinuxInputMethodContextDelegate> delegate_; // Input method context type flag. // - true if it supports table-based input methods @@ -88,7 +89,7 @@ bool has_focus_ = false; // IME's input GTK context. - GtkIMContext* gtk_context_ = nullptr; + raw_ptr<GtkIMContext> gtk_context_ = nullptr; // Only used on GTK3. gpointer gdk_last_set_client_window_ = nullptr;
diff --git a/ui/gtk/printing/print_dialog_gtk.cc b/ui/gtk/printing/print_dialog_gtk.cc index 8ff9cf6..7bcec45 100644 --- a/ui/gtk/printing/print_dialog_gtk.cc +++ b/ui/gtk/printing/print_dialog_gtk.cc
@@ -14,6 +14,7 @@ #include "base/bind.h" #include "base/files/file_util.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "base/sequence_checker.h" #include "base/strings/utf_string_conversions.h" @@ -116,7 +117,7 @@ } private: - GtkPrintSettings* last_used_settings_; + raw_ptr<GtkPrintSettings> last_used_settings_; }; StickyPrintSettingGtk& GetLastUsedSettings() { @@ -167,7 +168,7 @@ } std::vector<GtkPrinter*> printers_; - GtkPrinter* default_printer_ = nullptr; + raw_ptr<GtkPrinter> default_printer_ = nullptr; }; } // namespace
diff --git a/ui/gtk/printing/print_dialog_gtk.h b/ui/gtk/printing/print_dialog_gtk.h index 2e7e45d..d9fb3b3 100644 --- a/ui/gtk/printing/print_dialog_gtk.h +++ b/ui/gtk/printing/print_dialog_gtk.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/files/file_path.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_delete_on_sequence.h" #include "printing/print_dialog_gtk_interface.h" #include "printing/printing_context_linux.h" @@ -71,14 +72,14 @@ // Printing dialog callback. PrintingContextLinux::PrintSettingsCallback callback_; - PrintingContextLinux* context_; + raw_ptr<PrintingContextLinux> context_; // Print dialog settings. PrintDialogGtk owns |dialog_| and holds references // to the other objects. GtkWidget* dialog_ = nullptr; - GtkPrintSettings* gtk_settings_ = nullptr; - GtkPageSetup* page_setup_ = nullptr; - GtkPrinter* printer_ = nullptr; + raw_ptr<GtkPrintSettings> gtk_settings_ = nullptr; + raw_ptr<GtkPageSetup> page_setup_ = nullptr; + raw_ptr<GtkPrinter> printer_ = nullptr; base::FilePath path_to_pdf_; };
diff --git a/ui/gtk/settings_provider_gsettings.h b/ui/gtk/settings_provider_gsettings.h index 67e4c2a3..6bab35c 100644 --- a/ui/gtk/settings_provider_gsettings.h +++ b/ui/gtk/settings_provider_gsettings.h
@@ -9,6 +9,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "ui/base/glib/glib_signal.h" #include "ui/base/glib/scoped_gobject.h" #include "ui/gtk/settings_provider.h" @@ -47,7 +48,7 @@ void ParseAndStoreMiddleClickValue(const std::string&); - GtkUi* delegate_; + raw_ptr<GtkUi> delegate_; ScopedGObject<GSettings> button_settings_; ScopedGObject<GSettings> click_settings_;
diff --git a/ui/gtk/settings_provider_gtk.h b/ui/gtk/settings_provider_gtk.h index 66446c1..34639c2 100644 --- a/ui/gtk/settings_provider_gtk.h +++ b/ui/gtk/settings_provider_gtk.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/base/glib/glib_signal.h" #include "ui/gtk/settings_provider.h" #include "ui/views/linux_ui/linux_ui.h" @@ -51,7 +52,7 @@ GParamSpec*); private: - SettingsProviderGtk* settings_provider_; + raw_ptr<SettingsProviderGtk> settings_provider_; std::string setting_name_; views::LinuxUI::WindowFrameActionSource action_type_; views::LinuxUI::WindowFrameAction default_action_; @@ -72,7 +73,7 @@ GtkSettings*, GParamSpec*); - GtkUi* delegate_; + raw_ptr<GtkUi> delegate_; unsigned long signal_id_decoration_layout_;
diff --git a/ui/gtk/wayland/gtk_ui_platform_wayland.h b/ui/gtk/wayland/gtk_ui_platform_wayland.h index 06b1434..7a88990 100644 --- a/ui/gtk/wayland/gtk_ui_platform_wayland.h +++ b/ui/gtk/wayland/gtk_ui_platform_wayland.h
@@ -8,6 +8,7 @@ #include <string> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gtk/gtk_ui_platform.h" @@ -38,7 +39,7 @@ // SetGtkWidgetTransientFor. void OnHandleSetTransient(GtkWidget* widget, const std::string& handle); - GdkDisplay* default_display_ = nullptr; + raw_ptr<GdkDisplay> default_display_ = nullptr; base::WeakPtrFactory<GtkUiPlatformWayland> weak_factory_{this}; };
diff --git a/ui/gtk/x/gtk_event_loop_x11.h b/ui/gtk/x/gtk_event_loop_x11.h index a6e9251..46e6ff8 100644 --- a/ui/gtk/x/gtk_event_loop_x11.h +++ b/ui/gtk/x/gtk_event_loop_x11.h
@@ -5,6 +5,7 @@ #ifndef UI_GTK_X_GTK_EVENT_LOOP_X11_H_ #define UI_GTK_X_GTK_EVENT_LOOP_X11_H_ +#include "base/memory/raw_ptr.h" #include "ui/base/glib/glib_integers.h" #include "ui/base/glib/glib_signal.h" #include "ui/gtk/gtk_compat.h" @@ -21,7 +22,7 @@ private: // This state is only used on GTK4. - GdkSurface* surface_ = nullptr; + raw_ptr<GdkSurface> surface_ = nullptr; gulong signal_id_ = 0; // Only called on GTK3.
diff --git a/ui/gtk/x/gtk_ui_platform_x11.h b/ui/gtk/x/gtk_ui_platform_x11.h index eb5b5ceb..c47f8fe3 100644 --- a/ui/gtk/x/gtk_ui_platform_x11.h +++ b/ui/gtk/x/gtk_ui_platform_x11.h
@@ -5,6 +5,7 @@ #ifndef UI_GTK_X_GTK_UI_PLATFORM_X11_H_ #define UI_GTK_X_GTK_UI_PLATFORM_X11_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" #include "ui/gfx/x/connection.h" #include "ui/gtk/gtk_ui_platform.h" @@ -38,8 +39,8 @@ private: GdkDisplay* GetGdkDisplay(); - x11::Connection* const connection_; - GdkDisplay* display_ = nullptr; + const raw_ptr<x11::Connection> connection_; + raw_ptr<GdkDisplay> display_ = nullptr; std::unique_ptr<GtkEventLoopX11> event_loop_; };
diff --git a/ui/ozone/common/bitmap_cursor.h b/ui/ozone/common/bitmap_cursor.h index a610c951..391dfba7 100644 --- a/ui/ozone/common/bitmap_cursor.h +++ b/ui/ozone/common/bitmap_cursor.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "third_party/skia/include/core/SkBitmap.h" @@ -71,7 +72,7 @@ // Platform cursor data. Having this non-nullptr means that this cursor // is supplied by the platform. - void* const platform_data_ = nullptr; + const raw_ptr<void> platform_data_ = nullptr; float cursor_image_scale_factor_ = 1.f; };
diff --git a/ui/ozone/demo/demo_window.h b/ui/ozone/demo/demo_window.h index 9371492..dd9fd75 100644 --- a/ui/ozone/demo/demo_window.h +++ b/ui/ozone/demo/demo_window.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -58,8 +59,8 @@ // initialize the GPU resources via a posted task. void StartRendererIfNecessary(); - WindowManager* window_manager_; // Not owned. - RendererFactory* renderer_factory_; // Not owned. + raw_ptr<WindowManager> window_manager_; // Not owned. + raw_ptr<RendererFactory> renderer_factory_; // Not owned. std::unique_ptr<Renderer> renderer_;
diff --git a/ui/ozone/demo/vulkan_overlay_renderer.h b/ui/ozone/demo/vulkan_overlay_renderer.h index 86e5e1b..3fec3ae 100644 --- a/ui/ozone/demo/vulkan_overlay_renderer.h +++ b/ui/ozone/demo/vulkan_overlay_renderer.h
@@ -8,6 +8,7 @@ #include <vulkan/vulkan_core.h> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/buffer_types.h" @@ -114,8 +115,8 @@ std::unique_ptr<PlatformWindowSurface> window_surface_; - SurfaceFactoryOzone* const surface_factory_ozone_; - gpu::VulkanImplementation* const vulkan_implementation_; + const raw_ptr<SurfaceFactoryOzone> surface_factory_ozone_; + const raw_ptr<gpu::VulkanImplementation> vulkan_implementation_; std::unique_ptr<gpu::VulkanDeviceQueue> device_queue_; std::unique_ptr<gpu::VulkanCommandPool> command_pool_; std::unique_ptr<OverlaySurface> overlay_surface_;
diff --git a/ui/ozone/demo/vulkan_renderer.h b/ui/ozone/demo/vulkan_renderer.h index dfc362b..4133f3a 100644 --- a/ui/ozone/demo/vulkan_renderer.h +++ b/ui/ozone/demo/vulkan_renderer.h
@@ -10,6 +10,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/buffer_types.h" @@ -81,7 +82,7 @@ std::vector<std::unique_ptr<Framebuffer>> framebuffers_; - gpu::VulkanImplementation* const vulkan_implementation_; + const raw_ptr<gpu::VulkanImplementation> vulkan_implementation_; std::unique_ptr<gpu::VulkanDeviceQueue> device_queue_; std::unique_ptr<gpu::VulkanCommandPool> command_pool_; std::unique_ptr<gpu::VulkanSurface> vulkan_surface_;
diff --git a/ui/ozone/platform/headless/headless_window.h b/ui/ozone/platform/headless/headless_window.h index b723e8e..ef3d778 100644 --- a/ui/ozone/platform/headless/headless_window.h +++ b/ui/ozone/platform/headless/headless_window.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_HEADLESS_HEADLESS_WINDOW_H_ #define UI_OZONE_PLATFORM_HEADLESS_HEADLESS_WINDOW_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/native_widget_types.h" #include "ui/platform_window/platform_window_delegate.h" @@ -26,7 +27,7 @@ ~HeadlessWindow() override; private: - HeadlessWindowManager* manager_; + raw_ptr<HeadlessWindowManager> manager_; gfx::AcceleratedWidget widget_; };
diff --git a/ui/ozone/platform/wayland/emulate/wayland_input_emulate.cc b/ui/ozone/platform/wayland/emulate/wayland_input_emulate.cc index cecdf9b0..1c968ff6 100644 --- a/ui/ozone/platform/wayland/emulate/wayland_input_emulate.cc +++ b/ui/ozone/platform/wayland/emulate/wayland_input_emulate.cc
@@ -358,7 +358,7 @@ auto event = std::move(window->pending_events.front()); window->pending_events.pop_front(); - auto* input_emulate = window->emulate; + auto* input_emulate = window->emulate.get(); DCHECK(input_emulate); switch (event->type) {
diff --git a/ui/ozone/platform/wayland/emulate/wayland_input_emulate.h b/ui/ozone/platform/wayland/emulate/wayland_input_emulate.h index 77a5ec6..7e0c7824 100644 --- a/ui/ozone/platform/wayland/emulate/wayland_input_emulate.h +++ b/ui/ozone/platform/wayland/emulate/wayland_input_emulate.h
@@ -12,6 +12,7 @@ #include "base/component_export.h" #include "base/containers/circular_deque.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "ui/events/keycodes/dom/dom_code.h" #include "ui/events/types/event_type.h" @@ -94,7 +95,7 @@ gfx::AcceleratedWidget widget; // Non-owned pointer to input emulation. - WaylandInputEmulate* emulate = nullptr; + raw_ptr<WaylandInputEmulate> emulate = nullptr; // Control flag that says if the buffer has been attached and a consequent // frame callback has been received. This is required to be able to know @@ -109,10 +110,10 @@ base::circular_deque<std::unique_ptr<PendingEvent>> pending_events; // Frame callback that invokes WaylandInputEmulate::FrameCallbackHandler. - struct wl_callback* frame_callback = nullptr; + raw_ptr<struct wl_callback> frame_callback = nullptr; // The attached buffer. - wl_buffer* buffer = nullptr; + raw_ptr<wl_buffer> buffer = nullptr; }; // WaylandProxy::Delegate. @@ -157,8 +158,8 @@ // Owned raw pointers. wl::Object is not used because the component this // class belongs to cannot depend on the "wayland" target in the // //ui/ozone/platform/wayland/BUILD.gn - struct wl_registry* registry_ = nullptr; - struct weston_test* weston_test_ = nullptr; + raw_ptr<struct wl_registry> registry_ = nullptr; + raw_ptr<struct weston_test> weston_test_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h index 06d02905..9e8b2fa 100644 --- a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h +++ b/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/linux/gbm_buffer.h" @@ -78,7 +79,7 @@ std::unique_ptr<GbmBuffer> gbm_bo_; // Represents a connection to Wayland. - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; // Represents widget this pixmap backs. gfx::AcceleratedWidget widget_ = gfx::kNullAcceleratedWidget;
diff --git a/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h b/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h index ba10a39b..d35b5de 100644 --- a/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h +++ b/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/native_widget_types.h" #include "ui/gl/gl_surface_egl.h" @@ -163,7 +164,7 @@ // Sets a flag that skips glFlush step in unittests. void SetNoGLFlushForTests(); - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; // The native surface. Deleting this is allowed to free the EGLNativeWindow. gfx::AcceleratedWidget widget_;
diff --git a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h index 8d8f9153..6a48c48 100644 --- a/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h +++ b/ui/ozone/platform/wayland/gpu/gl_surface_egl_readback_wayland.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_WAYLAND_GPU_GL_SURFACE_EGL_READBACK_WAYLAND_H_ #include "base/containers/circular_deque.h" +#include "base/memory/raw_ptr.h" #include "base/memory/shared_memory_mapping.h" #include "ui/ozone/common/gl_surface_egl_readback.h" #include "ui/ozone/platform/wayland/gpu/wayland_surface_gpu.h" @@ -82,7 +83,7 @@ // Widget of the window that this readback writes pixels to. const gfx::AcceleratedWidget widget_; - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; // Size of the buffer. gfx::Size size_;
diff --git a/ui/ozone/platform/wayland/gpu/gl_surface_wayland.h b/ui/ozone/platform/wayland/gpu/gl_surface_wayland.h index 21c6541..b7c3a1d 100644 --- a/ui/ozone/platform/wayland/gpu/gl_surface_wayland.h +++ b/ui/ozone/platform/wayland/gpu/gl_surface_wayland.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/size.h" #include "ui/gl/gl_surface_egl.h" @@ -55,7 +56,7 @@ void UpdateVisualSize(); WaylandEglWindowPtr egl_window_; - WaylandWindow* const window_; + const raw_ptr<WaylandWindow> window_; float scale_factor_ = 1.f; };
diff --git a/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.cc b/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.cc index a58e342..81e9acd 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/numerics/checked_math.h" @@ -151,7 +152,7 @@ const gfx::AcceleratedWidget widget_; // Non-owned pointer to the buffer manager on the gpu process/thread side. - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; // Shared memory for the buffer. base::WritableSharedMemoryMapping shm_mapping_;
diff --git a/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.h b/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.h index cbf4414..d8ab7aa 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.h +++ b/ui/ozone/platform/wayland/gpu/wayland_canvas_surface.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "third_party/skia/include/core/SkRefCnt.h" @@ -83,7 +84,7 @@ sk_sp<SkSurface> GetNextSurface(); std::unique_ptr<SharedMemoryBuffer> CreateSharedMemoryBuffer(); - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; const gfx::AcceleratedWidget widget_; gfx::Size size_; @@ -95,14 +96,14 @@ // Pending buffer that is to be placed into the |unsubmitted_buffers_| to be // processed. - SharedMemoryBuffer* pending_buffer_ = nullptr; + raw_ptr<SharedMemoryBuffer> pending_buffer_ = nullptr; // Currently used buffer. Set on PresentCanvas() and released on // OnSubmission() call. - SharedMemoryBuffer* current_buffer_ = nullptr; + raw_ptr<SharedMemoryBuffer> current_buffer_ = nullptr; // Previously used buffer. Set on OnSubmission(). - SharedMemoryBuffer* previous_buffer_ = nullptr; + raw_ptr<SharedMemoryBuffer> previous_buffer_ = nullptr; // Used by the internal VSyncProvider implementation. Set on OnPresentation(). base::TimeTicks last_timestamp_;
diff --git a/ui/ozone/platform/wayland/gpu/wayland_overlay_candidates.h b/ui/ozone/platform/wayland/gpu/wayland_overlay_candidates.h index 67efe20..9223273 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_overlay_candidates.h +++ b/ui/ozone/platform/wayland/gpu/wayland_overlay_candidates.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" #include "ui/ozone/public/overlay_candidates_ozone.h" @@ -29,7 +30,7 @@ std::vector<OverlaySurfaceCandidate>* candidates) override; private: - WaylandOverlayManager* const overlay_manager_; // Not owned. + const raw_ptr<WaylandOverlayManager> overlay_manager_; // Not owned. const gfx::AcceleratedWidget widget_; };
diff --git a/ui/ozone/platform/wayland/gpu/wayland_overlay_manager.h b/ui/ozone/platform/wayland/gpu/wayland_overlay_manager.h index ad9f1e31..2224902 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_overlay_manager.h +++ b/ui/ozone/platform/wayland/gpu/wayland_overlay_manager.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_GPU_WAYLAND_OVERLAY_MANAGER_H_ #define UI_OZONE_PLATFORM_WAYLAND_GPU_WAYLAND_OVERLAY_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" #include "ui/ozone/public/overlay_candidates_ozone.h" #include "ui/ozone/public/overlay_manager_ozone.h" @@ -39,7 +40,7 @@ bool CanHandleCandidate(const OverlaySurfaceCandidate& candidate, gfx::AcceleratedWidget widget) const; - WaylandBufferManagerGpu* const manager_gpu_; + const raw_ptr<WaylandBufferManagerGpu> manager_gpu_; // Same as features::IsDelegatedCompositingEnabled. bool is_delegated_context_ = false;
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc index 907de8b..5ba93b8 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/linux/client_native_pixmap_dmabuf.h" #include "ui/ozone/common/egl_util.h" #include "ui/ozone/common/gl_ozone_egl.h" @@ -58,8 +59,8 @@ bool LoadGLES2Bindings(const gl::GLImplementationParts& impl) override; private: - WaylandConnection* const connection_; - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; }; scoped_refptr<gl::GLSurface> GLOzoneEGLWayland::CreateViewGLSurface(
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h index 6166683..c1daea1 100644 --- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h +++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/sequenced_task_runner_handle.h" @@ -61,8 +62,8 @@ bool SupportsNativePixmaps() const; private: - WaylandConnection* const connection_; - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; std::unique_ptr<GLOzone> egl_implementation_; };
diff --git a/ui/ozone/platform/wayland/host/gtk_primary_selection_device_manager.h b/ui/ozone/platform/wayland/host/gtk_primary_selection_device_manager.h index e358408..bbbc198 100644 --- a/ui/ozone/platform/wayland/host/gtk_primary_selection_device_manager.h +++ b/ui/ozone/platform/wayland/host/gtk_primary_selection_device_manager.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_data_source.h" @@ -46,7 +47,7 @@ private: wl::Object<gtk_primary_selection_device_manager> device_manager_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; std::unique_ptr<GtkPrimarySelectionDevice> device_; };
diff --git a/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.h b/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.h index d0f3a68d..91d927e 100644 --- a/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.h +++ b/ui/ozone/platform/wayland/host/linux_ui_delegate_wayland.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_LINUX_UI_DELEGATE_WAYLAND_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_LINUX_UI_DELEGATE_WAYLAND_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/base/linux/linux_ui_delegate.h" #include "ui/gfx/native_widget_types.h" @@ -31,7 +32,7 @@ void OnHandleForward(base::OnceCallback<void(std::string)> callback, const std::string& handle); - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; base::WeakPtrFactory<LinuxUiDelegateWayland> weak_factory_{this}; };
diff --git a/ui/ozone/platform/wayland/host/org_gnome_mutter_idle_monitor.h b/ui/ozone/platform/wayland/host/org_gnome_mutter_idle_monitor.h index 087efe4f..f8a68af4 100644 --- a/ui/ozone/platform/wayland/host/org_gnome_mutter_idle_monitor.h +++ b/ui/ozone/platform/wayland/host/org_gnome_mutter_idle_monitor.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_ORG_GNOME_MUTTER_IDLE_MONITOR_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_ORG_GNOME_MUTTER_IDLE_MONITOR_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" @@ -74,7 +75,7 @@ scoped_refptr<dbus::Bus> bus_; scoped_refptr<base::SequencedTaskRunner> task_runner_; - dbus::ObjectProxy* proxy_ = nullptr; + raw_ptr<dbus::ObjectProxy> proxy_ = nullptr; THREAD_CHECKER(main_thread_checker_);
diff --git a/ui/ozone/platform/wayland/host/org_kde_kwin_idle.h b/ui/ozone/platform/wayland/host/org_kde_kwin_idle.h index 7be8c268..1b3e67c6 100644 --- a/ui/ozone/platform/wayland/host/org_kde_kwin_idle.h +++ b/ui/ozone/platform/wayland/host/org_kde_kwin_idle.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -43,7 +44,7 @@ // The actual idle timeout connection point. mutable std::unique_ptr<Timeout> idle_timeout_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.h b/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.h index cf5ee8b5..4bb91c8 100644 --- a/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.h +++ b/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/proxy/wayland_proxy.h" #include "ui/ozone/platform/wayland/host/wayland_window_observer.h" @@ -43,9 +44,9 @@ void OnWindowRemoved(ui::WaylandWindow* window) override; void OnWindowConfigured(ui::WaylandWindow* window) override; - ui::WaylandConnection* const connection_; + const raw_ptr<ui::WaylandConnection> connection_; - WaylandProxy::Delegate* delegate_ = nullptr; + raw_ptr<WaylandProxy::Delegate> delegate_ = nullptr; std::vector<ui::WaylandShmBuffer> shm_buffers_; };
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_backing.h b/ui/ozone/platform/wayland/host/wayland_buffer_backing.h index 59cfd26..0dd0eb62 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_backing.h +++ b/ui/ozone/platform/wayland/host/wayland_buffer_backing.h
@@ -7,6 +7,7 @@ #include "base/callback_forward.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/native_widget_types.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -50,7 +51,7 @@ protected: // Non-owned pointer to the main connection. - const WaylandConnection* connection_; + raw_ptr<const WaylandConnection> connection_; private: // Requests a new wl_buffer. |callback| will be run with the created wl_buffer
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_handle.h b/ui/ozone/platform/wayland/host/wayland_buffer_handle.h index f85c2ea3..bfdc42d 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_handle.h +++ b/ui/ozone/platform/wayland/host/wayland_buffer_handle.h
@@ -7,6 +7,7 @@ #include "base/callback.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/gpu_fence_handle.h" #include "ui/gfx/native_widget_types.h" @@ -65,7 +66,7 @@ // wl_buffer_listener: static void BufferRelease(void* data, struct wl_buffer* wl_buffer); - const WaylandBufferBacking* backing_; + raw_ptr<const WaylandBufferBacking> backing_; // A wl_buffer backed by the dmabuf/shm |backing_| created on the GPU side. wl::Object<struct wl_buffer> wl_buffer_;
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.h b/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.h index a08e874..469d1e9 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.h +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_BUFFER_MANAGER_CONNECTOR_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_BUFFER_MANAGER_CONNECTOR_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/public/gpu_platform_support_host.h" #include "base/threading/thread_checker.h" @@ -41,7 +42,7 @@ // Non-owned pointer, which is used to bind a mojo pointer to the // WaylandBufferManagerHost. - WaylandBufferManagerHost* const buffer_manager_host_; + const raw_ptr<WaylandBufferManagerHost> buffer_manager_host_; GpuHostBindInterfaceCallback binder_; GpuHostTerminateCallback terminate_callback_;
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h index 3243f26..fbc1e1b 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h
@@ -13,6 +13,7 @@ #include "base/containers/flat_map.h" #include "base/files/scoped_file.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/associated_remote.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" @@ -158,7 +159,7 @@ std::string error_message_; // Non-owned pointer to the main connection. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; mojo::AssociatedRemote<ozone::mojom::WaylandBufferManagerGpu> buffer_manager_gpu_associated_;
diff --git a/ui/ozone/platform/wayland/host/wayland_clipboard.cc b/ui/ozone/platform/wayland/host/wayland_clipboard.cc index b7fa2877..855d8526 100644 --- a/ui/ozone/platform/wayland/host/wayland_clipboard.cc +++ b/ui/ozone/platform/wayland/host/wayland_clipboard.cc
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/check.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/notreached.h" @@ -189,7 +190,7 @@ } // The device manager used to access data device and create data sources. - Manager* const manager_; + const raw_ptr<Manager> manager_; // The clipboard buffer managed by this |this|. const ui::ClipboardBuffer buffer_; @@ -203,7 +204,7 @@ // Notifies when clipboard data changes. Can be empty if not set. ClipboardDataChangedCallback clipboard_changed_callback_; - ui::WaylandConnection* const connection_; + const raw_ptr<ui::WaylandConnection> connection_; base::WeakPtrFactory<ClipboardImpl> weak_factory_{this}; };
diff --git a/ui/ozone/platform/wayland/host/wayland_clipboard.h b/ui/ozone/platform/wayland/host/wayland_clipboard.h index 3471f9a..fe68fc03 100644 --- a/ui/ozone/platform/wayland/host/wayland_clipboard.h +++ b/ui/ozone/platform/wayland/host/wayland_clipboard.h
@@ -10,6 +10,7 @@ #include "base/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "ui/base/clipboard/clipboard_buffer.h" #include "ui/ozone/platform/wayland/host/wayland_data_device.h" #include "ui/ozone/public/platform_clipboard.h" @@ -65,7 +66,7 @@ // WaylandConnection providing optional data device managers, e.g: gtk // primary selection. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; const std::unique_ptr<wl::Clipboard> copypaste_clipboard_; std::unique_ptr<wl::Clipboard> primary_selection_clipboard_;
diff --git a/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc b/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc index 21fcd9b4..2c27d665 100644 --- a/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_clipboard_unittest.cc
@@ -14,6 +14,7 @@ #include "base/callback_forward.h" #include "base/containers/flat_set.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/task/thread_pool/thread_pool_instance.h" @@ -146,11 +147,11 @@ } /* Server objects */ - wl::MockPointer* pointer_; - wl::TestTouch* touch_; - wl::TestKeyboard* keyboard_; + raw_ptr<wl::MockPointer> pointer_; + raw_ptr<wl::TestTouch> touch_; + raw_ptr<wl::TestKeyboard> keyboard_; - WaylandClipboard* clipboard_ = nullptr; + raw_ptr<WaylandClipboard> clipboard_ = nullptr; uint32_t serial_ = 0; uint32_t timestamp_ = 0;
diff --git a/ui/ozone/platform/wayland/host/wayland_connection.h b/ui/ozone/platform/wayland/host/wayland_connection.h index 1afbe25..6410a3ac 100644 --- a/ui/ozone/platform/wayland/host/wayland_connection.h +++ b/ui/ozone/platform/wayland/host/wayland_connection.h
@@ -12,6 +12,7 @@ #include "base/callback_forward.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/display/tablet_state.h" @@ -432,7 +433,7 @@ // created when platform window test config is set. std::unique_ptr<wl::WaylandProxy> wayland_proxy_; - WaylandCursorBufferListener* listener_ = nullptr; + raw_ptr<WaylandCursorBufferListener> listener_ = nullptr; // The current window table mode layout state. display::TabletState tablet_layout_state_ =
diff --git a/ui/ozone/platform/wayland/host/wayland_connection_test_api.h b/ui/ozone/platform/wayland/host/wayland_connection_test_api.h index 1013067..8c53b70 100644 --- a/ui/ozone/platform/wayland/host/wayland_connection_test_api.h +++ b/ui/ozone/platform/wayland/host/wayland_connection_test_api.h
@@ -8,6 +8,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/wayland_connection.h" #include "ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.h" @@ -32,7 +33,7 @@ } private: - WaylandConnection* const impl_; + const raw_ptr<WaylandConnection> impl_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_cursor.h b/ui/ozone/platform/wayland/host/wayland_cursor.h index b07751f..862b0a29 100644 --- a/ui/ozone/platform/wayland/host/wayland_cursor.h +++ b/ui/ozone/platform/wayland/host/wayland_cursor.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/timer/timer.h" #include "third_party/skia/include/core/SkSurface.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -88,16 +89,16 @@ uint32_t hotspot_x_dip, uint32_t hotspot_y_dip); - WaylandPointer* const pointer_; - WaylandConnection* const connection_; + const raw_ptr<WaylandPointer> pointer_; + const raw_ptr<WaylandConnection> connection_; const wl::Object<wl_surface> pointer_surface_; // Holds the buffers and their memory until the compositor releases them. base::flat_map<wl_buffer*, WaylandShmBuffer> buffers_; - WaylandCursorBufferListener* listener_ = nullptr; + raw_ptr<WaylandCursorBufferListener> listener_ = nullptr; // Current platform cursor. - wl_cursor* cursor_data_ = nullptr; + raw_ptr<wl_cursor> cursor_data_ = nullptr; size_t current_image_index_ = 0; int buffer_scale_ = 1; base::RepeatingTimer animation_timer_;
diff --git a/ui/ozone/platform/wayland/host/wayland_cursor_factory.h b/ui/ozone/platform/wayland/host/wayland_cursor_factory.h index 8e4a97a..bbd2a98 100644 --- a/ui/ozone/platform/wayland/host/wayland_cursor_factory.h +++ b/ui/ozone/platform/wayland/host/wayland_cursor_factory.h
@@ -9,6 +9,7 @@ #include "base/containers/flat_map.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/scoped_observation.h" #include "ui/base/cursor/cursor_theme_manager.h" @@ -70,7 +71,7 @@ int loaded_theme_size, wl_cursor_theme* loaded_theme); - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; base::ScopedObservation<CursorThemeManager, CursorThemeManagerObserver> cursor_theme_observer_{this};
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device.h b/ui/ozone/platform/wayland/host/wayland_data_device.h index 5f32a76..8186611a 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_device.h +++ b/ui/ozone/platform/wayland/host/wayland_data_device.h
@@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/files/scoped_file.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_data_device_base.h" #include "ui/ozone/platform/wayland/host/wayland_data_source.h" @@ -124,7 +125,7 @@ // The wl_data_device wrapped by this WaylandDataDevice. wl::Object<wl_data_device> data_device_; - DragDelegate* drag_delegate_ = nullptr; + raw_ptr<DragDelegate> drag_delegate_ = nullptr; // There are two separate data offers at a time, the drag offer and the // selection offer, each with independent lifetimes. When we receive a new
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device_base.h b/ui/ozone/platform/wayland/host/wayland_data_device_base.h index eac004d..f59b679 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_device_base.h +++ b/ui/ozone/platform/wayland/host/wayland_data_device_base.h
@@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_data_offer_base.h" #include "ui/ozone/public/platform_clipboard.h" @@ -78,7 +79,7 @@ // Used to call out to WaylandConnection once clipboard data has been // successfully read. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Offer that holds the most-recent clipboard selection, or null if no // clipboard data is available.
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device_manager.h b/ui/ozone/platform/wayland/host/wayland_data_device_manager.h index fa6899c6a..fdabde5 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_device_manager.h +++ b/ui/ozone/platform/wayland/host/wayland_data_device_manager.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_data_source.h" @@ -42,7 +43,7 @@ private: wl::Object<wl_data_device_manager> device_manager_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; std::unique_ptr<WaylandDataDevice> device_; };
diff --git a/ui/ozone/platform/wayland/host/wayland_data_drag_controller.h b/ui/ozone/platform/wayland/host/wayland_data_drag_controller.h index c0f8249..a341650 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_drag_controller.h +++ b/ui/ozone/platform/wayland/host/wayland_data_drag_controller.h
@@ -10,6 +10,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h" @@ -177,12 +178,12 @@ struct wl_callback* callback, uint32_t time); - WaylandConnection* const connection_; - WaylandDataDeviceManager* const data_device_manager_; - WaylandDataDevice* const data_device_; - WaylandWindowManager* const window_manager_; - WaylandPointer::Delegate* const pointer_delegate_; - WaylandTouch::Delegate* const touch_delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<WaylandDataDeviceManager> data_device_manager_; + const raw_ptr<WaylandDataDevice> data_device_; + const raw_ptr<WaylandWindowManager> window_manager_; + const raw_ptr<WaylandPointer::Delegate> pointer_delegate_; + const raw_ptr<WaylandTouch::Delegate> touch_delegate_; State state_ = State::kIdle; absl::optional<DragSource> drag_source_; @@ -207,10 +208,10 @@ // The window that initiated the drag session. Can be null when the session // has been started by an external Wayland client. - WaylandWindow* origin_window_ = nullptr; + raw_ptr<WaylandWindow> origin_window_ = nullptr; // Current window under pointer. - WaylandWindow* window_ = nullptr; + raw_ptr<WaylandWindow> window_ = nullptr; // The most recent location received while dragging the data. gfx::PointF last_drag_location_; @@ -224,13 +225,13 @@ // Drag icon related variables. std::unique_ptr<WaylandSurface> icon_surface_; std::unique_ptr<WaylandShmBuffer> icon_buffer_; - const SkBitmap* icon_bitmap_ = nullptr; + raw_ptr<const SkBitmap> icon_bitmap_ = nullptr; gfx::Point icon_offset_; wl::Object<wl_callback> icon_frame_callback_; // Keeps track of the window that holds the pointer grab, i.e. the window that // will receive the mouse release event from DispatchPointerRelease(). - WaylandWindow* pointer_grabber_for_window_drag_ = nullptr; + raw_ptr<WaylandWindow> pointer_grabber_for_window_drag_ = nullptr; std::unique_ptr<ScopedEventDispatcher> nested_dispatcher_;
diff --git a/ui/ozone/platform/wayland/host/wayland_data_source.h b/ui/ozone/platform/wayland/host/wayland_data_source.h index 0311b369..ef6e5e9 100644 --- a/ui/ozone/platform/wayland/host/wayland_data_source.h +++ b/ui/ozone/platform/wayland/host/wayland_data_source.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -89,9 +90,9 @@ wl::Object<T> data_source_; - ui::WaylandConnection* const connection_; + const raw_ptr<ui::WaylandConnection> connection_; - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; // Action selected by the compositor uint32_t dnd_action_ = 0;
diff --git a/ui/ozone/platform/wayland/host/wayland_drm.h b/ui/ozone/platform/wayland/host/wayland_drm.h index d292e12..df4f195 100644 --- a/ui/ozone/platform/wayland/host/wayland_drm.h +++ b/ui/ozone/platform/wayland/host/wayland_drm.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" @@ -92,7 +93,7 @@ wl::Object<wl_drm> wl_drm_; // Non-owned. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Holds supported DRM formats translated to gfx::BufferFormat. Note that // |wl_drm| neither announces modifiers nor allows to create buffers with
diff --git a/ui/ozone/platform/wayland/host/wayland_event_source.cc b/ui/ozone/platform/wayland/host/wayland_event_source.cc index a619b69..84fdca8c 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_source.cc +++ b/ui/ozone/platform/wayland/host/wayland_event_source.cc
@@ -11,6 +11,7 @@ #include "base/check.h" #include "base/containers/cxx20_erase.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "build/chromeos_buildflags.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -60,7 +61,7 @@ TouchPoint(gfx::PointF location, WaylandWindow* current_window); ~TouchPoint() = default; - WaylandWindow* window; + raw_ptr<WaylandWindow> window; gfx::PointF last_known_location; }; @@ -457,7 +458,7 @@ void WaylandEventSource::OnTouchFrame() { while (!touch_frames_.empty()) { - // It is OK/safe to pop the first queued event for processing. + // It is safe to pop the first queued event for processing. auto touch_frame = std::move(touch_frames_.front()); touch_frames_.pop_front(); @@ -482,11 +483,30 @@ PointerId pointer_id, EventPointerType pointer_type) { last_touch_stylus_tool_[pointer_id] = pointer_type; + + // Update in-transit touch frames. + for (auto& touch_frame : touch_frames_) { + const auto& old_pointer_details = touch_frame->event.pointer_details(); + if (old_pointer_details.id != pointer_id) + continue; + + if (old_pointer_details.pointer_type == pointer_type) + break; + + // Override the previous 'event' instance, given that PointerDetails + // is 'const'. + auto old_event = touch_frame->event; + touch_frame->event = + TouchEvent(old_event.type(), old_event.location_f(), + old_event.root_location_f(), old_event.time_stamp(), + PointerDetailsForDispatching(pointer_id), old_event.flags()); + break; + } } const WaylandWindow* WaylandEventSource::GetTouchTarget(PointerId id) const { const auto it = touch_points_.find(id); - return it == touch_points_.end() ? nullptr : it->second->window; + return it == touch_points_.end() ? nullptr : it->second->window.get(); } void WaylandEventSource::OnPinchEvent(EventType event_type,
diff --git a/ui/ozone/platform/wayland/host/wayland_event_source.h b/ui/ozone/platform/wayland/host/wayland_event_source.h index 9f6f40d..63e0733 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_source.h +++ b/ui/ozone/platform/wayland/host/wayland_event_source.h
@@ -9,6 +9,7 @@ #include <memory> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/events/event.h" @@ -202,9 +203,9 @@ // Wrap up method to support async touch release processing. void OnTouchReleaseInternal(PointerId id); - WaylandWindowManager* const window_manager_; + const raw_ptr<WaylandWindowManager> window_manager_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Bitmask of EventFlags used to keep track of the the pointer state. int pointer_flags_ = 0;
diff --git a/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc b/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc index 77994d52..e9e5a5d 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_event_source_unittest.cc
@@ -4,6 +4,7 @@ #include <linux/input.h> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/ozone/platform/wayland/host/wayland_event_source.h" #include "ui/ozone/platform/wayland/test/mock_pointer.h" @@ -52,7 +53,7 @@ return window; } - WaylandPointer::Delegate* pointer_delegate_ = nullptr; + raw_ptr<WaylandPointer::Delegate> pointer_delegate_ = nullptr; }; // Verify WaylandEventSource properly manages its internal state as pointer
diff --git a/ui/ozone/platform/wayland/host/wayland_event_watcher.h b/ui/ozone/platform/wayland/host/wayland_event_watcher.h index 9b06d48c..d8e10d1 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_watcher.h +++ b/ui/ozone/platform/wayland/host/wayland_event_watcher.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_EVENT_WATCHER_H_ #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_for_ui.h" struct wl_display; @@ -81,8 +82,8 @@ // and false is returned. void WlDisplayCheckForErrors(); - wl_display* const display_; // Owned by WaylandConnection. - wl_event_queue* const event_queue_; // Owned by WaylandConnection. + const raw_ptr<wl_display> display_; // Owned by WaylandConnection. + const raw_ptr<wl_event_queue> event_queue_; // Owned by WaylandConnection. bool watching_ = false; bool prepared_ = false;
diff --git a/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.cc b/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.cc index 25cca1d..be78e0b 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.cc +++ b/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.cc
@@ -6,6 +6,8 @@ #include <glib.h> +#include "base/memory/raw_ptr.h" + namespace ui { namespace { @@ -13,8 +15,8 @@ struct GLibWaylandSource : public GSource { // Note: The GLibWaylandSource is created and destroyed by GLib. So its // constructor/destructor may or may not get called. - WaylandEventWatcherGlib* event_watcher; - GPollFD* poll_fd; + raw_ptr<WaylandEventWatcherGlib> event_watcher; + raw_ptr<GPollFD> poll_fd; }; gboolean WatchSourcePrepare(GSource* source, gint* timeout_ms) { @@ -22,7 +24,7 @@ *timeout_ms = -1; auto* event_watcher_glib = - static_cast<GLibWaylandSource*>(source)->event_watcher; + static_cast<GLibWaylandSource*>(source)->event_watcher.get(); if (event_watcher_glib->HandlePrepare()) return FALSE; @@ -41,7 +43,7 @@ GSourceFunc unused_func, gpointer data) { auto* event_watcher_glib = - static_cast<GLibWaylandSource*>(source)->event_watcher; + static_cast<GLibWaylandSource*>(source)->event_watcher.get(); event_watcher_glib->HandleDispatch(); return TRUE; }
diff --git a/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.h b/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.h index 2efcc92..716bff9 100644 --- a/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.h +++ b/ui/ozone/platform/wayland/host/wayland_event_watcher_glib.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_EVENT_WATCHER_GLIB_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_EVENT_WATCHER_GLIB_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/wayland_event_watcher.h" using GPollFD = struct _GPollFD; @@ -37,7 +38,7 @@ bool started_ = false; // The GLib event source for Wayland events. - GSource* wayland_source_ = nullptr; + raw_ptr<GSource> wayland_source_ = nullptr; // The poll attached to |wayland_source_|. std::unique_ptr<GPollFD> wayland_poll_;
diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc index a120c6ff1..73f155e6 100644 --- a/ui/ozone/platform/wayland/host/wayland_frame_manager.cc +++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.cc
@@ -178,7 +178,7 @@ return; } - auto* root_surface = frame->root_surface; + auto* root_surface = frame->root_surface.get(); auto& root_config = frame->root_config; bool empty_frame = !root_config.buffer_id;
diff --git a/ui/ozone/platform/wayland/host/wayland_frame_manager.h b/ui/ozone/platform/wayland/host/wayland_frame_manager.h index 1780de0..76ff20ea 100644 --- a/ui/ozone/platform/wayland/host/wayland_frame_manager.h +++ b/ui/ozone/platform/wayland/host/wayland_frame_manager.h
@@ -12,6 +12,7 @@ #include "base/containers/circular_deque.h" #include "base/containers/flat_map.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/gfx/gpu_fence_handle.h" #include "ui/gfx/presentation_feedback.h" @@ -56,7 +57,7 @@ friend class WaylandFrameManager; uint32_t frame_id; - WaylandSurface* root_surface; + raw_ptr<WaylandSurface> root_surface; wl::WaylandOverlayConfig root_config; base::circular_deque<std::pair<WaylandSubsurface*, wl::WaylandOverlayConfig>> subsurfaces_to_overlays; @@ -168,7 +169,7 @@ // feedbacks if the number is too big. void VerifyNumberOfSubmittedFrames(); - WaylandWindow* const window_; + const raw_ptr<WaylandWindow> window_; // When RecordFrame() is called, a Frame is pushed to |pending_frames_|. See // RecordFrame(). @@ -179,7 +180,7 @@ base::circular_deque<std::unique_ptr<WaylandFrame>> submitted_frames_; // Non-owned pointer to the main connection. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; base::WeakPtrFactory<WaylandFrameManager> weak_factory_; };
diff --git a/ui/ozone/platform/wayland/host/wayland_input_controller.cc b/ui/ozone/platform/wayland/host/wayland_input_controller.cc index 87c79997..d320c7d 100644 --- a/ui/ozone/platform/wayland/host/wayland_input_controller.cc +++ b/ui/ozone/platform/wayland/host/wayland_input_controller.cc
@@ -4,6 +4,7 @@ #include "ui/ozone/platform/wayland/host/wayland_input_controller.h" +#include "base/memory/raw_ptr.h" #include "ui/events/devices/haptic_touchpad_effects.h" #include "ui/events/devices/stylus_state.h" #include "ui/ozone/platform/wayland/host/wayland_connection.h" @@ -112,7 +113,7 @@ } private: - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace
diff --git a/ui/ozone/platform/wayland/host/wayland_input_method_context.h b/ui/ozone/platform/wayland/host/wayland_input_method_context.h index ff0fa2f..a6efe5d 100644 --- a/ui/ozone/platform/wayland/host/wayland_input_method_context.h +++ b/ui/ozone/platform/wayland/host/wayland_input_method_context.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" #include "ui/base/ime/character_composer.h" #include "ui/base/ime/linux/linux_input_method_context.h" @@ -86,13 +87,14 @@ void UpdatePreeditText(const std::u16string& preedit_text); void MaybeUpdateActivated(); - WaylandConnection* const connection_; // TODO(jani) Handle this better + const raw_ptr<WaylandConnection> + connection_; // TODO(jani) Handle this better // Delegate key events to be injected into PlatformEvent system. - WaylandKeyboard::Delegate* const key_delegate_; + const raw_ptr<WaylandKeyboard::Delegate> key_delegate_; // Delegate IME-specific events to be handled by //ui code. - LinuxInputMethodContextDelegate* const ime_delegate_; + const raw_ptr<LinuxInputMethodContextDelegate> ime_delegate_; std::unique_ptr<ZWPTextInputWrapper> text_input_;
diff --git a/ui/ozone/platform/wayland/host/wayland_input_method_context_factory.h b/ui/ozone/platform/wayland/host/wayland_input_method_context_factory.h index ef7a8ba8..37e68a8 100644 --- a/ui/ozone/platform/wayland/host/wayland_input_method_context_factory.h +++ b/ui/ozone/platform/wayland/host/wayland_input_method_context_factory.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/base/ime/linux/linux_input_method_context_factory.h" namespace ui { @@ -28,7 +29,7 @@ LinuxInputMethodContextDelegate* delegate) const override; private: - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_input_method_context_unittest.cc b/ui/ozone/platform/wayland/host/wayland_input_method_context_unittest.cc index b1712ff..9716ebc 100644 --- a/ui/ozone/platform/wayland/host/wayland_input_method_context_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_input_method_context_unittest.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/i18n/break_iterator.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -148,8 +149,8 @@ std::unique_ptr<TestInputMethodContextDelegate> input_method_context_delegate_; std::unique_ptr<WaylandInputMethodContext> input_method_context_; - wl::MockZwpTextInput* zwp_text_input_ = nullptr; - wl::MockZcrExtendedTextInput* zcr_extended_text_input_ = nullptr; + raw_ptr<wl::MockZwpTextInput> zwp_text_input_ = nullptr; + raw_ptr<wl::MockZcrExtendedTextInput> zcr_extended_text_input_ = nullptr; }; TEST_P(WaylandInputMethodContextTest, ActivateDeactivate) {
diff --git a/ui/ozone/platform/wayland/host/wayland_keyboard.cc b/ui/ozone/platform/wayland/host/wayland_keyboard.cc index 243944b..ef96d82d 100644 --- a/ui/ozone/platform/wayland/host/wayland_keyboard.cc +++ b/ui/ozone/platform/wayland/host/wayland_keyboard.cc
@@ -12,6 +12,7 @@ #include <utility> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" #include "base/unguessable_token.h" #include "ui/base/buildflags.h" @@ -74,7 +75,7 @@ serial, time, key, state, WaylandKeyboard::KeyEventKind::kPeekKey); } - WaylandKeyboard* const keyboard_; + const raw_ptr<WaylandKeyboard> keyboard_; wl::Object<zcr_extended_keyboard_v1> obj_; };
diff --git a/ui/ozone/platform/wayland/host/wayland_keyboard.h b/ui/ozone/platform/wayland/host/wayland_keyboard.h index c49934d..9bd0ed1 100644 --- a/ui/ozone/platform/wayland/host/wayland_keyboard.h +++ b/ui/ozone/platform/wayland/host/wayland_keyboard.h
@@ -7,6 +7,7 @@ #include <cstdint> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/base/buildflags.h" @@ -126,8 +127,8 @@ wl::Object<wl_keyboard> obj_; std::unique_ptr<ZCRExtendedKeyboard> extended_keyboard_; - WaylandConnection* const connection_; - Delegate* const delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<Delegate> delegate_; // Key repeat handler. static const wl_callback_listener callback_listener_; @@ -135,7 +136,7 @@ base::OnceClosure auto_repeat_closure_; wl::Object<wl_callback> sync_callback_; - LayoutEngine* layout_engine_; + raw_ptr<LayoutEngine> layout_engine_; }; class WaylandKeyboard::Delegate {
diff --git a/ui/ozone/platform/wayland/host/wayland_keyboard_unittest.cc b/ui/ozone/platform/wayland/host/wayland_keyboard_unittest.cc index 3b08e97e..3b62155 100644 --- a/ui/ozone/platform/wayland/host/wayland_keyboard_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_keyboard_unittest.cc
@@ -6,6 +6,7 @@ #include <wayland-server.h> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/test/test_mock_time_task_runner.h" #include "base/timer/timer.h" #include "testing/gmock/include/gmock/gmock.h" @@ -82,7 +83,7 @@ } protected: - wl::TestKeyboard* keyboard_; + raw_ptr<wl::TestKeyboard> keyboard_; // There may be a pending wl_display_sync event, which is triggered by auto // key repeat and needs to be processed. Wait for its completion.
diff --git a/ui/ozone/platform/wayland/host/wayland_menu_utils.h b/ui/ozone/platform/wayland/host/wayland_menu_utils.h index 43d1e85..bff2f84 100644 --- a/ui/ozone/platform/wayland/host/wayland_menu_utils.h +++ b/ui/ozone/platform/wayland/host/wayland_menu_utils.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_MENU_UTILS_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_MENU_UTILS_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/public/platform_menu_utils.h" namespace ui { @@ -22,7 +23,7 @@ std::string ToDBusKeySym(KeyboardCode code) const override; private: - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_output.h b/ui/ozone/platform/wayland/host/wayland_output.h index c9571ccc..3ac36ea 100644 --- a/ui/ozone/platform/wayland/host/wayland_output.h +++ b/ui/ozone/platform/wayland/host/wayland_output.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "ui/display/types/display_snapshot.h" #include "ui/display/types/native_display_delegate.h" #include "ui/gfx/geometry/rect.h" @@ -116,8 +117,8 @@ // Size of the output in physical pixels. gfx::Size physical_size_; - Delegate* delegate_ = nullptr; - WaylandConnection* connection_ = nullptr; + raw_ptr<Delegate> delegate_ = nullptr; + raw_ptr<WaylandConnection> connection_ = nullptr; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_output_manager.h b/ui/ozone/platform/wayland/host/wayland_output_manager.h index 23a34a88..edc1807 100644 --- a/ui/ozone/platform/wayland/host/wayland_output_manager.h +++ b/ui/ozone/platform/wayland/host/wayland_output_manager.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_OUTPUT_MANAGER_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_OUTPUT_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include <memory> @@ -66,7 +67,7 @@ OutputList output_list_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Non-owned wayland screen instance. base::WeakPtr<WaylandScreen> wayland_screen_;
diff --git a/ui/ozone/platform/wayland/host/wayland_pointer.h b/ui/ozone/platform/wayland/host/wayland_pointer.h index cdc0378..f3ff5d6 100644 --- a/ui/ozone/platform/wayland/host/wayland_pointer.h +++ b/ui/ozone/platform/wayland/host/wayland_pointer.h
@@ -7,6 +7,7 @@ #include <cstdint> +#include "base/memory/raw_ptr.h" #include "ui/events/event_constants.h" #include "ui/events/types/event_type.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -94,8 +95,8 @@ wl::Object<wl_pointer> obj_; wl::Object<zcr_pointer_stylus_v2> zcr_pointer_stylus_v2_; - WaylandConnection* const connection_; - Delegate* const delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<Delegate> delegate_; // Whether the axis source event has been received for the current frame. //
diff --git a/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc b/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc index e92b65d..c2f0174 100644 --- a/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_pointer_unittest.cc
@@ -8,6 +8,7 @@ #include <cmath> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "build/chromeos_buildflags.h" #include "testing/gmock/include/gmock/gmock.h" @@ -60,7 +61,7 @@ } protected: - wl::MockPointer* pointer_; + raw_ptr<wl::MockPointer> pointer_; }; void SendAxisEvents(struct wl_resource* resource,
diff --git a/ui/ozone/platform/wayland/host/wayland_screen.h b/ui/ozone/platform/wayland/host/wayland_screen.h index 87358f4f..287bd20 100644 --- a/ui/ozone/platform/wayland/host/wayland_screen.h +++ b/ui/ozone/platform/wayland/host/wayland_screen.h
@@ -8,6 +8,7 @@ #include <set> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -88,7 +89,7 @@ int32_t panel_transform, int32_t logical_transform); - WaylandConnection* connection_ = nullptr; + raw_ptr<WaylandConnection> connection_ = nullptr; display::DisplayList display_list_;
diff --git a/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc b/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc index a9a5bca..b82e64f7 100644 --- a/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_screen_unittest.cc
@@ -6,6 +6,7 @@ #include <wayland-server.h> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "base/test/scoped_command_line.h" #include "testing/gtest/include/gtest/gtest.h" @@ -131,9 +132,9 @@ EXPECT_EQ(display_for_widget.id(), expected_display_id); } - wl::MockZAuraShell* mock_zaura_shell_ = nullptr; - wl::TestOutput* output_ = nullptr; - WaylandOutputManager* output_manager_ = nullptr; + raw_ptr<wl::MockZAuraShell> mock_zaura_shell_ = nullptr; + raw_ptr<wl::TestOutput> output_ = nullptr; + raw_ptr<WaylandOutputManager> output_manager_ = nullptr; std::unique_ptr<WaylandScreen> platform_screen_; }; @@ -1058,9 +1059,9 @@ aux_output_->SetRect({0, 0, 800, 600}); } - wl::TestOutput* primary_output_ = nullptr; - wl::TestOutput* aux_output_ = nullptr; - WaylandOutputManager* output_manager_ = nullptr; + raw_ptr<wl::TestOutput> primary_output_ = nullptr; + raw_ptr<wl::TestOutput> aux_output_ = nullptr; + raw_ptr<WaylandOutputManager> output_manager_ = nullptr; bool auto_configure; };
diff --git a/ui/ozone/platform/wayland/host/wayland_seat.h b/ui/ozone/platform/wayland/host/wayland_seat.h index db07a4ea..2139c13a 100644 --- a/ui/ozone/platform/wayland/host/wayland_seat.h +++ b/ui/ozone/platform/wayland/host/wayland_seat.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" namespace ui { @@ -59,7 +60,7 @@ // Wayland object wrapped by this class. wl::Object<wl_seat> obj_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Input device objects. std::unique_ptr<WaylandKeyboard> keyboard_;
diff --git a/ui/ozone/platform/wayland/host/wayland_shm.h b/ui/ozone/platform/wayland/host/wayland_shm.h index 00e214a3..7d137c1 100644 --- a/ui/ozone/platform/wayland/host/wayland_shm.h +++ b/ui/ozone/platform/wayland/host/wayland_shm.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_SHM_H_ #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/rect.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" @@ -47,7 +48,7 @@ wl::Object<wl_shm> const shm_; // Non-owned pointer to the main connection. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_subsurface.h b/ui/ozone/platform/wayland/host/wayland_subsurface.h index db2455a..e829aed 100644 --- a/ui/ozone/platform/wayland/host/wayland_subsurface.h +++ b/ui/ozone/platform/wayland/host/wayland_subsurface.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_SUBSURFACE_H_ #include "base/containers/linked_list.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_surface.h" @@ -63,10 +64,10 @@ wl::Object<augmented_sub_surface> augmented_subsurface_; gfx::PointF position_dip_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // |parent_| refers to the WaylandWindow whose wl_surface is the parent to // this subsurface. - WaylandWindow* const parent_; + const raw_ptr<WaylandWindow> parent_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.cc b/ui/ozone/platform/wayland/host/wayland_surface.cc index 8d3139f7..f8ca74b 100644 --- a/ui/ozone/platform/wayland/host/wayland_surface.cc +++ b/ui/ozone/platform/wayland/host/wayland_surface.cc
@@ -83,7 +83,8 @@ if (explicit_release_callback_.is_null()) return; for (auto& release : linux_buffer_releases_) { - explicit_release_callback_.Run(release.second.buffer, base::ScopedFD()); + explicit_release_callback_.Run(release.second.buffer.get(), + base::ScopedFD()); } } @@ -698,7 +699,7 @@ DCHECK(iter != linux_buffer_releases_.end()); DCHECK(iter->second.buffer); if (!explicit_release_callback_.is_null()) - explicit_release_callback_.Run(iter->second.buffer, std::move(fence)); + explicit_release_callback_.Run(iter->second.buffer.get(), std::move(fence)); linux_buffer_releases_.erase(iter); }
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.h b/ui/ozone/platform/wayland/host/wayland_surface.h index 7b5dec9d..c369188 100644 --- a/ui/ozone/platform/wayland/host/wayland_surface.h +++ b/ui/ozone/platform/wayland/host/wayland_surface.h
@@ -11,6 +11,7 @@ #include "base/callback.h" #include "base/containers/flat_map.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/geometry/rect.h" @@ -196,7 +197,7 @@ wl::Object<zwp_linux_buffer_release_v1> linux_buffer_release; // The buffer associated with this explicit release. - wl_buffer* buffer; + raw_ptr<wl_buffer> buffer; }; struct State { @@ -217,7 +218,7 @@ // buffer_handle owning this wl_buffer is destroyed. Accessing this field // should ensure wl_buffer exists by calling // WaylandBufferManagerHost::EnsureBufferHandle(buffer_id). - wl_buffer* buffer = nullptr; + raw_ptr<wl_buffer> buffer = nullptr; gfx::Size buffer_size_px; // Current scale factor of a next attached buffer used by the GPU process. @@ -282,8 +283,8 @@ zwp_linux_surface_synchronization_v1* GetSurfaceSync(); augmented_surface* GetAugmentedSurface(); - WaylandConnection* const connection_; - WaylandWindow* root_window_ = nullptr; + const raw_ptr<WaylandConnection> connection_; + raw_ptr<WaylandWindow> root_window_ = nullptr; bool apply_state_immediately_ = false; wl::Object<wl_surface> surface_; wl::Object<wp_viewport> viewport_;
diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.h b/ui/ozone/platform/wayland/host/wayland_toplevel_window.h index 2911821..50c2918 100644 --- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.h +++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_TOPLEVEL_WINDOW_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_TOPLEVEL_WINDOW_H_ +#include "base/memory/raw_ptr.h" #include "build/chromeos_buildflags.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/vector2d.h" @@ -302,7 +303,7 @@ // True when screen coordinates is enabled. bool screen_coordinates_enabled_; - WorkspaceExtensionDelegate* workspace_extension_delegate_ = nullptr; + raw_ptr<WorkspaceExtensionDelegate> workspace_extension_delegate_ = nullptr; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_touch.cc b/ui/ozone/platform/wayland/host/wayland_touch.cc index 2f09d66..35c3881 100644 --- a/ui/ozone/platform/wayland/host/wayland_touch.cc +++ b/ui/ozone/platform/wayland/host/wayland_touch.cc
@@ -45,7 +45,7 @@ if (!surface) return; - WaylandTouch* touch = static_cast<WaylandTouch*>(data); + auto* touch = static_cast<WaylandTouch*>(data); DCHECK(touch); touch->connection_->serial_tracker().UpdateSerial(wl::SerialType::kTouchPress, @@ -64,7 +64,7 @@ uint32_t serial, uint32_t time, int32_t id) { - WaylandTouch* touch = static_cast<WaylandTouch*>(data); + auto* touch = static_cast<WaylandTouch*>(data); DCHECK(touch); base::TimeTicks timestamp = base::TimeTicks() + base::Milliseconds(time); @@ -78,8 +78,9 @@ int32_t id, wl_fixed_t x, wl_fixed_t y) { - WaylandTouch* touch = static_cast<WaylandTouch*>(data); + auto* touch = static_cast<WaylandTouch*>(data); DCHECK(touch); + const WaylandWindow* target = touch->delegate_->GetTouchTarget(id); if (!target) { LOG(WARNING) << "Touch event fired with wrong id"; @@ -93,14 +94,16 @@ } void WaylandTouch::Cancel(void* data, wl_touch* obj) { - WaylandTouch* touch = static_cast<WaylandTouch*>(data); + auto* touch = static_cast<WaylandTouch*>(data); DCHECK(touch); + touch->delegate_->OnTouchCancelEvent(); } void WaylandTouch::Frame(void* data, wl_touch* obj) { auto* touch = static_cast<WaylandTouch*>(data); DCHECK(touch); + touch->delegate_->OnTouchFrame(); } @@ -123,7 +126,8 @@ struct zcr_touch_stylus_v2* obj, uint32_t id, uint32_t stylus_type) { - auto* pointer = static_cast<WaylandTouch*>(data); + auto* touch = static_cast<WaylandTouch*>(data); + DCHECK(touch); ui::EventPointerType pointer_type = ui::EventPointerType::kTouch; switch (stylus_type) { @@ -137,7 +141,7 @@ break; } - pointer->delegate_->OnTouchStylusToolChanged(id, pointer_type); + touch->delegate_->OnTouchStylusToolChanged(id, pointer_type); } // static
diff --git a/ui/ozone/platform/wayland/host/wayland_touch.h b/ui/ozone/platform/wayland/host/wayland_touch.h index 4b7b336..cec325c 100644 --- a/ui/ozone/platform/wayland/host/wayland_touch.h +++ b/ui/ozone/platform/wayland/host/wayland_touch.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "ui/events/pointer_details.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -78,8 +79,8 @@ wl::Object<wl_touch> obj_; wl::Object<zcr_touch_stylus_v2> zcr_touch_stylus_v2_; - WaylandConnection* const connection_; - Delegate* const delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<Delegate> delegate_; }; class WaylandTouch::Delegate {
diff --git a/ui/ozone/platform/wayland/host/wayland_touch_unittest.cc b/ui/ozone/platform/wayland/host/wayland_touch_unittest.cc index 95f5601..689dd43 100644 --- a/ui/ozone/platform/wayland/host/wayland_touch_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_touch_unittest.cc
@@ -8,6 +8,7 @@ #include <cstdint> #include <memory> +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/events/devices/device_data_manager.h" @@ -71,7 +72,7 @@ EXPECT_EQ(event_type, touch_event->type()); } - wl::TestTouch* touch_; + raw_ptr<wl::TestTouch> touch_; }; TEST_P(WaylandTouchTest, TouchPressAndMotion) { @@ -129,6 +130,36 @@ CheckEventType(ui::ET_TOUCH_RELEASED, event.get()); } +// Tests that touch events with stylus pen work. This variant of the test sends +// the tool information after the touch down event, and ensures that +// wl_touch::frame event handles it correctly. +TEST_P(WaylandTouchTest, TouchPressAndMotionWithStylus2) { + std::unique_ptr<Event> event; + EXPECT_CALL(delegate_, DispatchEvent(_)).WillRepeatedly(CloneEvent(&event)); + + wl_touch_send_down(touch_->resource(), 1, 0, surface_->resource(), 0 /* id */, + wl_fixed_from_int(50), wl_fixed_from_int(100)); + zcr_touch_stylus_v2_send_tool(touch_->touch_stylus()->resource(), 0 /* id */, + ZCR_TOUCH_STYLUS_V2_TOOL_TYPE_PEN); + wl_touch_send_frame(touch_->resource()); + + Sync(); + CheckEventType(ui::ET_TOUCH_PRESSED, event.get(), ui::EventPointerType::kPen); + + wl_touch_send_motion(touch_->resource(), 500, 0 /* id */, + wl_fixed_from_int(100), wl_fixed_from_int(100)); + wl_touch_send_frame(touch_->resource()); + + Sync(); + CheckEventType(ui::ET_TOUCH_MOVED, event.get(), ui::EventPointerType::kPen); + + wl_touch_send_up(touch_->resource(), 1, 1000, 0 /* id */); + wl_touch_send_frame(touch_->resource()); + + Sync(); + CheckEventType(ui::ET_TOUCH_RELEASED, event.get()); +} + // Tests that touch focus is correctly set and released. TEST_P(WaylandTouchTest, CheckTouchFocus) { uint32_t serial = 0;
diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h index d2db6bae..9ca7d16 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.h +++ b/ui/ozone/platform/wayland/host/wayland_window.h
@@ -15,6 +15,7 @@ #include "base/containers/flat_set.h" #include "base/containers/linked_list.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" @@ -392,10 +393,10 @@ void UpdateCursorShape(scoped_refptr<BitmapCursor> cursor); - PlatformWindowDelegate* delegate_; - WaylandConnection* connection_; - WaylandWindow* parent_window_ = nullptr; - WaylandWindow* child_window_ = nullptr; + raw_ptr<PlatformWindowDelegate> delegate_; + raw_ptr<WaylandConnection> connection_; + raw_ptr<WaylandWindow> parent_window_ = nullptr; + raw_ptr<WaylandWindow> child_window_ = nullptr; std::unique_ptr<WaylandFrameManager> frame_manager_; bool can_submit_frames_ = false;
diff --git a/ui/ozone/platform/wayland/host/wayland_window_drag_controller.h b/ui/ozone/platform/wayland/host/wayland_window_drag_controller.h index d0f5bd5..667123b 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_drag_controller.h +++ b/ui/ozone/platform/wayland/host/wayland_window_drag_controller.h
@@ -11,6 +11,7 @@ #include <string> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/events/event.h" #include "ui/events/platform/platform_event_dispatcher.h" @@ -142,12 +143,12 @@ // |set_extended_drag_available_for_testing_|. bool IsExtendedDragAvailableInternal() const; - WaylandConnection* const connection_; - WaylandDataDeviceManager* const data_device_manager_; - WaylandDataDevice* const data_device_; - WaylandWindowManager* const window_manager_; - WaylandPointer::Delegate* const pointer_delegate_; - WaylandTouch::Delegate* const touch_delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<WaylandDataDeviceManager> data_device_manager_; + const raw_ptr<WaylandDataDevice> data_device_; + const raw_ptr<WaylandWindowManager> window_manager_; + const raw_ptr<WaylandPointer::Delegate> pointer_delegate_; + const raw_ptr<WaylandTouch::Delegate> touch_delegate_; State state_ = State::kIdle; absl::optional<DragSource> drag_source_; @@ -163,17 +164,17 @@ std::unique_ptr<ExtendedDragSource> extended_drag_source_; // The current toplevel window being dragged, when in detached mode. - WaylandToplevelWindow* dragged_window_ = nullptr; + raw_ptr<WaylandToplevelWindow> dragged_window_ = nullptr; // Keeps track of the window that holds the pointer grab. i.e: the owner of // the surface that must receive the mouse release event upon drop. - WaylandWindow* pointer_grab_owner_ = nullptr; + raw_ptr<WaylandWindow> pointer_grab_owner_ = nullptr; // The window where the DND session originated from. i.e: which had the // pointer focus when the session was initiated. - WaylandWindow* origin_window_ = nullptr; + raw_ptr<WaylandWindow> origin_window_ = nullptr; - WaylandWindow* drag_target_window_ = nullptr; + raw_ptr<WaylandWindow> drag_target_window_ = nullptr; // The |origin_window_| can be destroyed during the DND session. If this // happens, |origin_surface_| takes ownership of its surface and ensure it
diff --git a/ui/ozone/platform/wayland/host/wayland_window_manager.cc b/ui/ozone/platform/wayland/host/wayland_window_manager.cc index 85cda44..386c1bf 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_manager.cc +++ b/ui/ozone/platform/wayland/host/wayland_window_manager.cc
@@ -35,7 +35,7 @@ // Wayland doesn't allow to grab the mouse. However, we start forwarding all // mouse events received by WaylandWindow to the aura::WindowEventDispatcher // which has capture. - auto* old_grabber = located_events_grabber_; + auto* old_grabber = located_events_grabber_.get(); located_events_grabber_ = window; if (old_grabber) old_grabber->OnWindowLostCapture(); @@ -43,7 +43,7 @@ void WaylandWindowManager::UngrabLocatedEvents(WaylandWindow* window) { DCHECK_EQ(located_events_grabber_, window); - auto* old_grabber = located_events_grabber_; + auto* old_grabber = located_events_grabber_.get(); located_events_grabber_ = nullptr; old_grabber->OnWindowLostCapture(); }
diff --git a/ui/ozone/platform/wayland/host/wayland_window_manager.h b/ui/ozone/platform/wayland/host/wayland_window_manager.h index a746457..59a398a 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_manager.h +++ b/ui/ozone/platform/wayland/host/wayland_window_manager.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "ui/gfx/geometry/size_f.h" #include "ui/gfx/native_widget_types.h" @@ -109,13 +110,13 @@ gfx::AcceleratedWidget AllocateAcceleratedWidget(); private: - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; base::ObserverList<WaylandWindowObserver> observers_; base::flat_map<gfx::AcceleratedWidget, WaylandWindow*> window_map_; - WaylandWindow* located_events_grabber_ = nullptr; + raw_ptr<WaylandWindow> located_events_grabber_ = nullptr; // Stores strictly monotonically increasing counter for allocating unique // AccelerateWidgets.
diff --git a/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc b/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc index 0e8af0f5..875f5c6 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc +++ b/ui/ozone/platform/wayland/host/wayland_window_manager_unittests.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/ozone/platform/wayland/host/wayland_output.h" #include "ui/ozone/platform/wayland/test/mock_pointer.h" @@ -48,7 +49,7 @@ return window; } - WaylandWindowManager* manager_ = nullptr; + raw_ptr<WaylandWindowManager> manager_ = nullptr; }; TEST_P(WaylandWindowManagerTest, GetWindow) {
diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc index 874b371..74a8478 100644 --- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/ozone/platform/wayland/host/wayland_window.h" +#include "base/memory/raw_ptr.h" #include <cstddef> #include <memory> @@ -294,7 +295,7 @@ return nullptr; } - wl::MockXdgSurface* xdg_surface_; + raw_ptr<wl::MockXdgSurface> xdg_surface_; MouseEvent test_mouse_event_; }; @@ -1955,7 +1956,7 @@ ASSERT_TRUE(surface); struct { - wl::TestOutput* output; + raw_ptr<wl::TestOutput> output; const char* label; } screen[] = {{main_output, "main output"}, {secondary_output, "secondary output"}};
diff --git a/ui/ozone/platform/wayland/host/wayland_zaura_output_unittest.cc b/ui/ozone/platform/wayland/host/wayland_zaura_output_unittest.cc index a29d9c68..9873d16 100644 --- a/ui/ozone/platform/wayland/host/wayland_zaura_output_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_zaura_output_unittest.cc
@@ -8,6 +8,7 @@ #include <aura-shell-server-protocol.h> #include <wayland-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "testing/gtest/include/gtest/gtest.h" @@ -71,7 +72,7 @@ wl::MockZAuraShell mock_zaura_shell_; WaylandConnection connection_; - WaylandOutputManager* output_manager_ = nullptr; + raw_ptr<WaylandOutputManager> output_manager_ = nullptr; std::unique_ptr<WaylandScreen> platform_screen_; };
diff --git a/ui/ozone/platform/wayland/host/wayland_zaura_shell.cc b/ui/ozone/platform/wayland/host/wayland_zaura_shell.cc index 6c8b6454..673e536d 100644 --- a/ui/ozone/platform/wayland/host/wayland_zaura_shell.cc +++ b/ui/ozone/platform/wayland/host/wayland_zaura_shell.cc
@@ -100,7 +100,7 @@ struct zaura_shell* zaura_shell, uint32_t layout_mode) { auto* self = static_cast<WaylandZAuraShell*>(data); - auto* connection = self->connection_; + auto* connection = self->connection_.get(); auto* screen = connection->wayland_output_manager()->wayland_screen(); // |screen| is null in some unit test suites. if (!screen)
diff --git a/ui/ozone/platform/wayland/host/wayland_zaura_shell.h b/ui/ozone/platform/wayland/host/wayland_zaura_shell.h index 56b7e9c4..496e964 100644 --- a/ui/ozone/platform/wayland/host/wayland_zaura_shell.h +++ b/ui/ozone/platform/wayland/host/wayland_zaura_shell.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZAURA_SHELL_H_ #include "base/containers/flat_set.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" namespace ui { @@ -58,7 +59,7 @@ struct wl_surface* lost_active); wl::Object<zaura_shell> obj_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; base::flat_set<uint32_t> bug_fix_ids_; std::vector<std::string> desks_; int active_desk_index_ = 0;
diff --git a/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.h b/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.h index 29af2085..2556483a 100644 --- a/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.h +++ b/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZCR_CURSOR_SHAPES_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZCR_CURSOR_SHAPES_H_ +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/base/cursor/mojom/cursor_type.mojom-forward.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" @@ -43,7 +44,7 @@ private: wl::Object<zcr_cursor_shapes_v1> zcr_cursor_shapes_v1_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_zcr_touchpad_haptics.h b/ui/ozone/platform/wayland/host/wayland_zcr_touchpad_haptics.h index df30619..d563b3a7 100644 --- a/ui/ozone/platform/wayland/host/wayland_zcr_touchpad_haptics.h +++ b/ui/ozone/platform/wayland/host/wayland_zcr_touchpad_haptics.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZCR_TOUCHPAD_HAPTICS_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZCR_TOUCHPAD_HAPTICS_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" namespace ui { @@ -44,7 +45,7 @@ struct zcr_touchpad_haptics_v1* zcr_touchpad_haptics_v1); wl::Object<zcr_touchpad_haptics_v1> obj_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.h b/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.h index e6bc80ea..f4db7b5 100644 --- a/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.h +++ b/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/common/wayland_util.h" @@ -100,7 +101,7 @@ const wl::Object<zwp_linux_dmabuf_v1> zwp_linux_dmabuf_; // Non-owned. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Holds supported DRM formats translated to gfx::BufferFormat. wl::BufferFormatsWithModifiersMap supported_buffer_formats_with_modifiers_;
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_constraints.h b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_constraints.h index 3ad33bb..756a031 100644 --- a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_constraints.h +++ b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_constraints.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_POINTER_CONSTRAINTS_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_POINTER_CONSTRAINTS_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" namespace ui { @@ -44,7 +45,7 @@ wl::Object<zwp_pointer_constraints_v1> obj_; wl::Object<zwp_locked_pointer_v1> locked_pointer_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.h b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.h index de8e4e2..dbd6c75 100644 --- a/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.h +++ b/ui/ozone/platform/wayland/host/wayland_zwp_pointer_gestures.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_POINTER_GESTURES_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_POINTER_GESTURES_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/events/types/event_type.h" @@ -71,8 +72,8 @@ wl::Object<zwp_pointer_gestures_v1> obj_; wl::Object<zwp_pointer_gesture_pinch_v1> pinch_; double current_scale_ = 1; - WaylandConnection* const connection_; - Delegate* const delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<Delegate> delegate_; }; class WaylandZwpPointerGestures::Delegate {
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_relative_pointer_manager.h b/ui/ozone/platform/wayland/host/wayland_zwp_relative_pointer_manager.h index 014829a..6a86996 100644 --- a/ui/ozone/platform/wayland/host/wayland_zwp_relative_pointer_manager.h +++ b/ui/ozone/platform/wayland/host/wayland_zwp_relative_pointer_manager.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_RELATIVE_POINTER_MANAGER_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_ZWP_RELATIVE_POINTER_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" namespace gfx { @@ -55,8 +56,8 @@ wl::Object<zwp_relative_pointer_manager_v1> obj_; wl::Object<zwp_relative_pointer_v1> relative_pointer_; - WaylandConnection* const connection_; - Delegate* const delegate_; + const raw_ptr<WaylandConnection> connection_; + const raw_ptr<Delegate> delegate_; }; class WaylandZwpRelativePointerManager::Delegate {
diff --git a/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc b/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc index 2586adf9..be5f284 100644 --- a/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc +++ b/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc
@@ -8,6 +8,7 @@ #include <xdg-foreign-unstable-v2-client-protocol.h> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/wayland_connection.h" #include "ui/ozone/platform/wayland/host/wayland_window.h" #include "ui/platform_window/platform_window_init_properties.h" @@ -52,7 +53,7 @@ ~ExportedSurface() = default; // Surface that is exported. - wl_surface* surface_for_export = nullptr; + raw_ptr<wl_surface> surface_for_export = nullptr; // Exported |surface|. wl::Object<ExportedType> exported; @@ -148,7 +149,7 @@ exported_surface_it->callbacks.clear(); } - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; wl::Object<ExporterType> exporter_; std::vector<ExportedSurface<ExportedType>> exported_surfaces_; };
diff --git a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h index 49d4da77..1c361bc 100644 --- a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_popup_wrapper.h" namespace ui { @@ -53,8 +54,8 @@ XDGSurfaceWrapperImpl* xdg_surface_wrapper() const; // Non-owned WaylandWindow that uses this popup. - WaylandWindow* const wayland_window_; - WaylandConnection* const connection_; + const raw_ptr<WaylandWindow> wayland_window_; + const raw_ptr<WaylandConnection> connection_; // Ground surface for this popup. std::unique_ptr<XDGSurfaceWrapperImpl> xdg_surface_wrapper_;
diff --git a/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h b/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h index a44a5d8..c73848a 100644 --- a/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_XDG_SURFACE_WRAPPER_IMPL_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_XDG_SURFACE_WRAPPER_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_surface_wrapper.h" #include <cstdint> @@ -44,8 +45,8 @@ uint32_t serial); // Non-owing WaylandWindow that uses this surface wrapper. - WaylandWindow* const wayland_window_; - WaylandConnection* const connection_; + const raw_ptr<WaylandWindow> wayland_window_; + const raw_ptr<WaylandConnection> connection_; bool is_configured_ = false;
diff --git a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.h b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.h index c8d7830..eebe3482 100644 --- a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_toplevel_wrapper.h" namespace ui { @@ -92,8 +93,8 @@ std::unique_ptr<XDGSurfaceWrapperImpl> xdg_surface_wrapper_; // Non-owing WaylandWindow that uses this toplevel wrapper. - WaylandWindow* const wayland_window_; - WaylandConnection* const connection_; + const raw_ptr<WaylandWindow> wayland_window_; + const raw_ptr<WaylandConnection> connection_; // XDG Shell Stable object. wl::Object<xdg_toplevel> xdg_toplevel_;
diff --git a/ui/ozone/platform/wayland/host/zwp_primary_selection_device_manager.h b/ui/ozone/platform/wayland/host/zwp_primary_selection_device_manager.h index 053105ad..019869a 100644 --- a/ui/ozone/platform/wayland/host/zwp_primary_selection_device_manager.h +++ b/ui/ozone/platform/wayland/host/zwp_primary_selection_device_manager.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/wayland_data_source.h" @@ -46,7 +47,7 @@ private: wl::Object<zwp_primary_selection_device_manager_v1> device_manager_; - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; std::unique_ptr<ZwpPrimarySelectionDevice> device_; };
diff --git a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v1.h b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v1.h index 7daa3f90..cf96760f 100644 --- a/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v1.h +++ b/ui/ozone/platform/wayland/host/zwp_text_input_wrapper_v1.h
@@ -12,6 +12,7 @@ #include <text-input-extension-unstable-v1-client-protocol.h> #include <text-input-unstable-v1-client-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/common/wayland_object.h" #include "ui/ozone/platform/wayland/host/zwp_text_input_wrapper.h" @@ -113,10 +114,10 @@ int32_t index, uint32_t length); - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; wl::Object<zwp_text_input_v1> obj_; wl::Object<zcr_extended_text_input_v1> extended_obj_; - ZWPTextInputWrapperClient* const client_; + const raw_ptr<ZWPTextInputWrapperClient> client_; std::vector<ZWPTextInputWrapperClient::SpanStyle> spans_; int32_t preedit_cursor_ = -1;
diff --git a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h index c1ba2ba..1318481 100644 --- a/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/zxdg_popup_v6_wrapper_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_popup_wrapper.h" namespace ui { @@ -50,9 +51,9 @@ ZXDGSurfaceV6WrapperImpl* zxdg_surface_v6_wrapper() const; // Non-owned WaylandWindow that uses this popup. - WaylandWindow* const wayland_window_; + const raw_ptr<WaylandWindow> wayland_window_; // Non-owned WaylandConnection. - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; // Ground surface for this popup. std::unique_ptr<ZXDGSurfaceV6WrapperImpl> zxdg_surface_v6_wrapper_;
diff --git a/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.h b/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.h index 2794969..e5aa3da 100644 --- a/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_HOST_ZXDG_SURFACE_V6_WRAPPER_IMPL_H_ #define UI_OZONE_PLATFORM_WAYLAND_HOST_ZXDG_SURFACE_V6_WRAPPER_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_surface_wrapper.h" #include <cstdint> @@ -44,8 +45,8 @@ private: // Non-owing WaylandWindow that uses this surface wrapper. - WaylandWindow* const wayland_window_; - WaylandConnection* const connection_; + const raw_ptr<WaylandWindow> wayland_window_; + const raw_ptr<WaylandConnection> connection_; bool is_configured_ = false;
diff --git a/ui/ozone/platform/wayland/host/zxdg_toplevel_v6_wrapper_impl.h b/ui/ozone/platform/wayland/host/zxdg_toplevel_v6_wrapper_impl.h index 140c6778..c6b564f0 100644 --- a/ui/ozone/platform/wayland/host/zxdg_toplevel_v6_wrapper_impl.h +++ b/ui/ozone/platform/wayland/host/zxdg_toplevel_v6_wrapper_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/host/shell_toplevel_wrapper.h" namespace ui { @@ -71,8 +72,8 @@ std::unique_ptr<ZXDGSurfaceV6WrapperImpl> zxdg_surface_v6_wrapper_; // Non-owing WaylandWindow that uses this toplevel wrapper. - WaylandWindow* const wayland_window_; - WaylandConnection* const connection_; + const raw_ptr<WaylandWindow> wayland_window_; + const raw_ptr<WaylandConnection> connection_; // XDG Shell V6 object. wl::Object<zxdg_toplevel_v6> zxdg_toplevel_v6_;
diff --git a/ui/ozone/platform/wayland/test/global_object.h b/ui/ozone/platform/wayland/test/global_object.h index e3c99cb..2e241e2 100644 --- a/ui/ozone/platform/wayland/test/global_object.h +++ b/ui/ozone/platform/wayland/test/global_object.h
@@ -7,6 +7,8 @@ #include <memory> +#include "base/memory/raw_ptr.h" + struct wl_client; struct wl_display; struct wl_global; @@ -56,10 +58,10 @@ std::unique_ptr<wl_global, Deleter> global_; - const wl_interface* interface_; - const void* implementation_; + raw_ptr<const wl_interface> interface_; + raw_ptr<const void> implementation_; const uint32_t version_; - wl_resource* resource_ = nullptr; + raw_ptr<wl_resource> resource_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/mock_surface.h b/ui/ozone/platform/wayland/test/mock_surface.h index fb4fedb..c2dd7c8 100644 --- a/ui/ozone/platform/wayland/test/mock_surface.h +++ b/ui/ozone/platform/wayland/test/mock_surface.h
@@ -9,6 +9,7 @@ #include <wayland-server-protocol.h> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/gfx/gpu_fence_handle.h" #include "ui/ozone/platform/wayland/test/mock_xdg_surface.h" @@ -114,20 +115,20 @@ void set_buffer_scale(int32_t buffer_scale) { buffer_scale_ = buffer_scale; } private: - MockXdgSurface* xdg_surface_ = nullptr; - TestSubSurface* sub_surface_ = nullptr; - TestViewport* viewport_ = nullptr; - TestAlphaBlending* blending_ = nullptr; - TestOverlayPrioritizedSurface* prioritized_surface_ = nullptr; - TestAugmentedSurface* augmented_surface_ = nullptr; + raw_ptr<MockXdgSurface> xdg_surface_ = nullptr; + raw_ptr<TestSubSurface> sub_surface_ = nullptr; + raw_ptr<TestViewport> viewport_ = nullptr; + raw_ptr<TestAlphaBlending> blending_ = nullptr; + raw_ptr<TestOverlayPrioritizedSurface> prioritized_surface_ = nullptr; + raw_ptr<TestAugmentedSurface> augmented_surface_ = nullptr; gfx::Rect opaque_region_ = {-1, -1, 0, 0}; gfx::Rect input_region_ = {-1, -1, 0, 0}; - wl_resource* frame_callback_ = nullptr; + raw_ptr<wl_resource> frame_callback_ = nullptr; base::flat_map<wl_resource*, wl_resource*> linux_buffer_releases_; - wl_resource* attached_buffer_ = nullptr; - wl_resource* prev_attached_buffer_ = nullptr; + raw_ptr<wl_resource> attached_buffer_ = nullptr; + raw_ptr<wl_resource> prev_attached_buffer_ = nullptr; int32_t buffer_scale_ = -1; };
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 b4f462a..904f172 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
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_TEST_MOCK_WAYLAND_PLATFORM_WINDOW_DELEGATE_H_ #define UI_OZONE_PLATFORM_WAYLAND_TEST_MOCK_WAYLAND_PLATFORM_WINDOW_DELEGATE_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/test/mock_platform_window_delegate.h" namespace ui { @@ -32,7 +33,7 @@ gfx::Rect ConvertRectToDIP(const gfx::Rect& rect_in_pixels) const override; private: - WaylandWindow* wayland_window_ = nullptr; + raw_ptr<WaylandWindow> wayland_window_ = nullptr; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/test/mock_wp_presentation.cc b/ui/ozone/platform/wayland/test/mock_wp_presentation.cc index cd87cb8a..d4117d9 100644 --- a/ui/ozone/platform/wayland/test/mock_wp_presentation.cc +++ b/ui/ozone/platform/wayland/test/mock_wp_presentation.cc
@@ -37,7 +37,7 @@ MockWpPresentation::~MockWpPresentation() {} wl_resource* MockWpPresentation::ReleasePresentationCallback() { - auto* presentation_callback = presentation_callback_; + auto* presentation_callback = presentation_callback_.get(); presentation_callback_ = nullptr; return presentation_callback; }
diff --git a/ui/ozone/platform/wayland/test/mock_wp_presentation.h b/ui/ozone/platform/wayland/test/mock_wp_presentation.h index 5230cea..2ae53bf 100644 --- a/ui/ozone/platform/wayland/test/mock_wp_presentation.h +++ b/ui/ozone/platform/wayland/test/mock_wp_presentation.h
@@ -8,6 +8,7 @@ #include <presentation-time-server-protocol.h> #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/ozone/platform/wayland/test/global_object.h" @@ -43,7 +44,7 @@ void SendPresentationCallbackDiscarded(); private: - wl_resource* presentation_callback_ = nullptr; + raw_ptr<wl_resource> presentation_callback_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/mock_xdg_surface.h b/ui/ozone/platform/wayland/test/mock_xdg_surface.h index 2eacf1f3..b127308 100644 --- a/ui/ozone/platform/wayland/test/mock_xdg_surface.h +++ b/ui/ozone/platform/wayland/test/mock_xdg_surface.h
@@ -11,6 +11,7 @@ #include <xdg-shell-server-protocol.h> #include <xdg-shell-unstable-v6-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/ozone/platform/wayland/test/server_object.h" #include "ui/ozone/platform/wayland/test/test_xdg_popup.h" @@ -53,10 +54,10 @@ // Has either toplevel role.. std::unique_ptr<MockXdgTopLevel> xdg_toplevel_; // Or popup role. - TestXdgPopup* xdg_popup_ = nullptr; + raw_ptr<TestXdgPopup> xdg_popup_ = nullptr; // MockSurface that is the ground for this xdg_surface. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; }; // Manage zxdg_toplevel for providing desktop UI.
diff --git a/ui/ozone/platform/wayland/test/server_object.h b/ui/ozone/platform/wayland/test/server_object.h index 24e5410..87555cb 100644 --- a/ui/ozone/platform/wayland/test/server_object.h +++ b/ui/ozone/platform/wayland/test/server_object.h
@@ -11,6 +11,8 @@ #include <wayland-server-core.h> +#include "base/memory/raw_ptr.h" + struct wl_client; struct wl_resource; @@ -31,7 +33,7 @@ static void OnResourceDestroyed(wl_resource* resource); private: - wl_resource* resource_; + raw_ptr<wl_resource> resource_; }; template <class T>
diff --git a/ui/ozone/platform/wayland/test/test_alpha_blending.h b/ui/ozone/platform/wayland/test/test_alpha_blending.h index 296990d7..70c3390 100644 --- a/ui/ozone/platform/wayland/test/test_alpha_blending.h +++ b/ui/ozone/platform/wayland/test/test_alpha_blending.h
@@ -7,6 +7,7 @@ #include <alpha-compositing-unstable-v1-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/server_object.h" struct wl_resource; @@ -24,7 +25,7 @@ private: // Surface resource that is the ground for this Viewport. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_augmented_subsurface.h b/ui/ozone/platform/wayland/test/test_augmented_subsurface.h index 33c594c..2ff5106 100644 --- a/ui/ozone/platform/wayland/test/test_augmented_subsurface.h +++ b/ui/ozone/platform/wayland/test/test_augmented_subsurface.h
@@ -7,6 +7,7 @@ #include <surface-augmenter-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/server_object.h" namespace wl { @@ -27,7 +28,7 @@ private: // Subsurface resource that is the ground for this augmented surface. - wl_resource* sub_surface_ = nullptr; + raw_ptr<wl_resource> sub_surface_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_augmented_surface.h b/ui/ozone/platform/wayland/test/test_augmented_surface.h index 709ce10..b8a618f 100644 --- a/ui/ozone/platform/wayland/test/test_augmented_surface.h +++ b/ui/ozone/platform/wayland/test/test_augmented_surface.h
@@ -7,6 +7,7 @@ #include <surface-augmenter-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/gfx/geometry/rrect_f.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -32,7 +33,7 @@ private: // Surface resource that is the ground for this augmented surface. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; gfx::RRectF rounded_clip_bounds_; };
diff --git a/ui/ozone/platform/wayland/test/test_data_device.cc b/ui/ozone/platform/wayland/test/test_data_device.cc index ee3fc397..28618177 100644 --- a/ui/ozone/platform/wayland/test/test_data_device.cc +++ b/ui/ozone/platform/wayland/test/test_data_device.cc
@@ -8,6 +8,7 @@ #include <cstdint> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "ui/ozone/platform/wayland/test/mock_surface.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -67,7 +68,7 @@ void OnDestroying() override { delete this; } private: - TestDataDevice* const device_; + const raw_ptr<TestDataDevice> device_; }; } // namespace
diff --git a/ui/ozone/platform/wayland/test/test_data_device.h b/ui/ozone/platform/wayland/test/test_data_device.h index 16242fb4..69f5066 100644 --- a/ui/ozone/platform/wayland/test/test_data_device.h +++ b/ui/ozone/platform/wayland/test/test_data_device.h
@@ -9,6 +9,7 @@ #include <cstdint> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/mock_surface.h" #include "ui/ozone/platform/wayland/test/test_selection_device_manager.h" @@ -60,10 +61,10 @@ wl_client* client() { return client_; } private: - wl_client* client_ = nullptr; - DragDelegate* drag_delegate_ = nullptr; + raw_ptr<wl_client> client_ = nullptr; + raw_ptr<DragDelegate> drag_delegate_ = nullptr; - TestDataDeviceManager* const manager_; + const raw_ptr<TestDataDeviceManager> manager_; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_data_device_manager.h b/ui/ozone/platform/wayland/test/test_data_device_manager.h index 650e8458..86d67101 100644 --- a/ui/ozone/platform/wayland/test/test_data_device_manager.h +++ b/ui/ozone/platform/wayland/test/test_data_device_manager.h
@@ -7,6 +7,7 @@ #include <wayland-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" namespace wl { @@ -37,8 +38,8 @@ } private: - TestDataDevice* data_device_ = nullptr; - TestDataSource* data_source_ = nullptr; + raw_ptr<TestDataDevice> data_device_ = nullptr; + raw_ptr<TestDataSource> data_source_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_data_offer.cc b/ui/ozone/platform/wayland/test/test_data_offer.cc index fbafddb..48387b8 100644 --- a/ui/ozone/platform/wayland/test/test_data_offer.cc +++ b/ui/ozone/platform/wayland/test/test_data_offer.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/test_selection_device_manager.h" namespace wl { @@ -52,7 +53,7 @@ void OnDestroying() override { delete this; } private: - TestDataOffer* const offer_; + const raw_ptr<TestDataOffer> offer_; }; } // namespace
diff --git a/ui/ozone/platform/wayland/test/test_data_source.cc b/ui/ozone/platform/wayland/test/test_data_source.cc index 8970cb82..f0a9257 100644 --- a/ui/ozone/platform/wayland/test/test_data_source.cc +++ b/ui/ozone/platform/wayland/test/test_data_source.cc
@@ -9,6 +9,7 @@ #include <string> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/test_selection_device_manager.h" namespace wl { @@ -50,7 +51,7 @@ void OnDestroying() override { delete this; } private: - TestDataSource* const source_; + const raw_ptr<TestDataSource> source_; }; } // namespace
diff --git a/ui/ozone/platform/wayland/test/test_output.h b/ui/ozone/platform/wayland/test/test_output.h index 5b90dc0..7f78bf7 100644 --- a/ui/ozone/platform/wayland/test/test_output.h +++ b/ui/ozone/platform/wayland/test/test_output.h
@@ -8,6 +8,7 @@ #include <wayland-server-protocol.h> #include <cstdint> +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/gfx/geometry/rect.h" #include "ui/ozone/platform/wayland/test/global_object.h" @@ -48,7 +49,7 @@ absl::optional<int32_t> pending_scale_ = absl::nullopt; absl::optional<wl_output_transform> pending_transform_ = absl::nullopt; - TestZAuraOutput* aura_output_ = nullptr; + raw_ptr<TestZAuraOutput> aura_output_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_overlay_prioritized_surface.h b/ui/ozone/platform/wayland/test/test_overlay_prioritized_surface.h index 3d52c8d..fe6462a 100644 --- a/ui/ozone/platform/wayland/test/test_overlay_prioritized_surface.h +++ b/ui/ozone/platform/wayland/test/test_overlay_prioritized_surface.h
@@ -7,6 +7,7 @@ #include <overlay-prioritizer-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/server_object.h" struct wl_resource; @@ -30,7 +31,7 @@ private: // Surface resource that is the ground for this prioritized surface. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; uint32_t overlay_priority_ = OVERLAY_PRIORITIZED_SURFACE_OVERLAY_PRIORITY_NONE;
diff --git a/ui/ozone/platform/wayland/test/test_seat.h b/ui/ozone/platform/wayland/test/test_seat.h index 94b85ab..ec30c24 100644 --- a/ui/ozone/platform/wayland/test/test_seat.h +++ b/ui/ozone/platform/wayland/test/test_seat.h
@@ -7,6 +7,7 @@ #include <wayland-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" namespace wl { @@ -42,9 +43,9 @@ TestTouch* touch() const { return touch_; } private: - MockPointer* pointer_; - TestKeyboard* keyboard_; - TestTouch* touch_; + raw_ptr<MockPointer> pointer_; + raw_ptr<TestKeyboard> keyboard_; + raw_ptr<TestTouch> touch_; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_selection_device_manager.h b/ui/ozone/platform/wayland/test/test_selection_device_manager.h index bf4c9578..b514fa5 100644 --- a/ui/ozone/platform/wayland/test/test_selection_device_manager.h +++ b/ui/ozone/platform/wayland/test/test_selection_device_manager.h
@@ -11,6 +11,7 @@ #include "base/callback_forward.h" #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/threading/thread.h" #include "ui/ozone/platform/wayland/test/global_object.h" @@ -72,10 +73,10 @@ wl_resource* seat_resource); private: - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; - TestSelectionDevice* device_ = nullptr; - TestSelectionSource* source_ = nullptr; + raw_ptr<TestSelectionDevice> device_ = nullptr; + raw_ptr<TestSelectionSource> source_ = nullptr; }; class TestSelectionOffer : public ServerObject { @@ -103,7 +104,7 @@ int fd); private: - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; const scoped_refptr<base::SequencedTaskRunner> task_runner_; ui::PlatformClipboard::DataMap data_to_offer_; @@ -139,7 +140,7 @@ const char* mime_type); private: - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; std::vector<std::string> mime_types_; const scoped_refptr<base::SequencedTaskRunner> task_runner_; @@ -178,11 +179,11 @@ uint32_t selection_serial() const { return selection_serial_; } private: - Delegate* const delegate_; + const raw_ptr<Delegate> delegate_; uint32_t selection_serial_ = 0; - TestSelectionDeviceManager* manager_ = nullptr; + raw_ptr<TestSelectionDeviceManager> manager_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_subsurface.h b/ui/ozone/platform/wayland/test/test_subsurface.h index 833248e..0c713f4 100644 --- a/ui/ozone/platform/wayland/test/test_subsurface.h +++ b/ui/ozone/platform/wayland/test/test_subsurface.h
@@ -7,7 +7,7 @@ #include <wayland-server-protocol.h> - +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/gfx/geometry/point_f.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -53,12 +53,12 @@ bool sync_ = false; // Surface resource that is the ground for this subsurface. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; // Parent surface resource. - wl_resource* parent_resource_ = nullptr; + raw_ptr<wl_resource> parent_resource_ = nullptr; - TestAugmentedSubSurface* augmented_subsurface_ = nullptr; + raw_ptr<TestAugmentedSubSurface> augmented_subsurface_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_touch.h b/ui/ozone/platform/wayland/test/test_touch.h index 7da0520..ac21cb0a 100644 --- a/ui/ozone/platform/wayland/test/test_touch.h +++ b/ui/ozone/platform/wayland/test/test_touch.h
@@ -7,6 +7,7 @@ #include <wayland-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/server_object.h" struct wl_resource; @@ -32,7 +33,7 @@ MockZcrTouchStylus* touch_stylus() const { return touch_stylus_; } private: - MockZcrTouchStylus* touch_stylus_ = nullptr; + raw_ptr<MockZcrTouchStylus> touch_stylus_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_viewport.h b/ui/ozone/platform/wayland/test/test_viewport.h index 4ac792a..1f24dfd 100644 --- a/ui/ozone/platform/wayland/test/test_viewport.h +++ b/ui/ozone/platform/wayland/test/test_viewport.h
@@ -7,6 +7,7 @@ #include <viewporter-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/gfx/geometry/size_f.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -32,7 +33,7 @@ private: // Surface resource that is the ground for this Viewport. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; gfx::SizeF destination_size_; };
diff --git a/ui/ozone/platform/wayland/test/test_wayland_server_thread.h b/ui/ozone/platform/wayland/test/test_wayland_server_thread.h index b08b191..83d24ec2 100644 --- a/ui/ozone/platform/wayland/test/test_wayland_server_thread.h +++ b/ui/ozone/platform/wayland/test/test_wayland_server_thread.h
@@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_libevent.h" #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" @@ -152,8 +153,8 @@ void OnFileCanWriteWithoutBlocking(int fd) override; std::unique_ptr<wl_display, DisplayDeleter> display_; - wl_client* client_ = nullptr; - wl_event_loop* event_loop_ = nullptr; + raw_ptr<wl_client> client_ = nullptr; + raw_ptr<wl_event_loop> event_loop_ = nullptr; base::WaitableEvent pause_event_; base::WaitableEvent resume_event_; @@ -188,7 +189,7 @@ base::MessagePumpLibevent::FdWatchController controller_; - OutputDelegate* output_delegate_ = nullptr; + raw_ptr<OutputDelegate> output_delegate_ = nullptr; }; class TestWaylandServerThread::OutputDelegate {
diff --git a/ui/ozone/platform/wayland/test/test_wp_pointer_gestures.h b/ui/ozone/platform/wayland/test/test_wp_pointer_gestures.h index d275dee9..e5a9ce10 100644 --- a/ui/ozone/platform/wayland/test/test_wp_pointer_gestures.h +++ b/ui/ozone/platform/wayland/test/test_wp_pointer_gestures.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_TEST_TEST_WP_POINTER_GESTURES_H_ #define UI_OZONE_PLATFORM_WAYLAND_TEST_TEST_WP_POINTER_GESTURES_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -42,7 +43,7 @@ struct wl_resource* pointer); private: - TestPinchGesture* pinch_; + raw_ptr<TestPinchGesture> pinch_; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_xdg_popup.h b/ui/ozone/platform/wayland/test/test_xdg_popup.h index 0beecc56..6e4ba0d7 100644 --- a/ui/ozone/platform/wayland/test/test_xdg_popup.h +++ b/ui/ozone/platform/wayland/test/test_xdg_popup.h
@@ -10,6 +10,7 @@ #include <xdg-shell-server-protocol.h> #include <xdg-shell-unstable-v6-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/server_object.h" #include "ui/ozone/platform/wayland/test/test_positioner.h" @@ -50,7 +51,7 @@ struct TestPositioner::PopupPosition position_; // Ground surface for this popup. - wl_resource* surface_ = nullptr; + raw_ptr<wl_resource> surface_ = nullptr; uint32_t grab_serial_ = 0; };
diff --git a/ui/ozone/platform/wayland/test/test_zcr_text_input_extension.h b/ui/ozone/platform/wayland/test/test_zcr_text_input_extension.h index c0eff20..9f9b9b1 100644 --- a/ui/ozone/platform/wayland/test/test_zcr_text_input_extension.h +++ b/ui/ozone/platform/wayland/test/test_zcr_text_input_extension.h
@@ -7,6 +7,7 @@ #include <text-input-extension-unstable-v1-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" namespace wl { @@ -33,7 +34,7 @@ } private: - MockZcrExtendedTextInput* extended_text_input_; + raw_ptr<MockZcrExtendedTextInput> extended_text_input_; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_zwp_linux_buffer_params.h b/ui/ozone/platform/wayland/test/test_zwp_linux_buffer_params.h index bd518fe..40829b7 100644 --- a/ui/ozone/platform/wayland/test/test_zwp_linux_buffer_params.h +++ b/ui/ozone/platform/wayland/test/test_zwp_linux_buffer_params.h
@@ -8,6 +8,7 @@ #include <linux-dmabuf-unstable-v1-server-protocol.h> #include "base/files/scoped_file.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -70,11 +71,11 @@ // Non-owned pointer to the linux dmabuf object, which created this params // resource and holds a pointer to it. On destruction, must notify it about // going out of scope. - MockZwpLinuxDmabufV1* linux_dmabuf_ = nullptr; + raw_ptr<MockZwpLinuxDmabufV1> linux_dmabuf_ = nullptr; // A buffer resource, which is created on Create or CreateImmed call. Can be // null if not created/failed to be created. - wl_resource* buffer_resource_ = nullptr; + raw_ptr<wl_resource> buffer_resource_ = nullptr; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/test_zwp_linux_explicit_synchronization.h b/ui/ozone/platform/wayland/test/test_zwp_linux_explicit_synchronization.h index 4b817fa..f4fe0af4 100644 --- a/ui/ozone/platform/wayland/test/test_zwp_linux_explicit_synchronization.h +++ b/ui/ozone/platform/wayland/test/test_zwp_linux_explicit_synchronization.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_TEST_TEST_ZWP_LINUX_EXPLICIT_SYNCHRONIZATION_H_ #define UI_OZONE_PLATFORM_WAYLAND_TEST_TEST_ZWP_LINUX_EXPLICIT_SYNCHRONIZATION_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" #include "ui/ozone/platform/wayland/test/server_object.h" @@ -20,7 +21,7 @@ wl_resource* surface_resource() const { return surface_resource_; } private: - wl_resource* surface_resource_; + raw_ptr<wl_resource> surface_resource_; }; // Manage wl_viewporter object.
diff --git a/ui/ozone/platform/wayland/test/test_zwp_text_input_manager.h b/ui/ozone/platform/wayland/test/test_zwp_text_input_manager.h index 44cbdd1..4a04634 100644 --- a/ui/ozone/platform/wayland/test/test_zwp_text_input_manager.h +++ b/ui/ozone/platform/wayland/test/test_zwp_text_input_manager.h
@@ -7,6 +7,7 @@ #include <text-input-unstable-v1-server-protocol.h> +#include "base/memory/raw_ptr.h" #include "ui/ozone/platform/wayland/test/global_object.h" namespace wl { @@ -33,7 +34,7 @@ MockZwpTextInput* text_input() const { return text_input_; } private: - MockZwpTextInput* text_input_; + raw_ptr<MockZwpTextInput> text_input_; }; } // namespace wl
diff --git a/ui/ozone/platform/wayland/test/wayland_drag_drop_test.h b/ui/ozone/platform/wayland/test/wayland_drag_drop_test.h index eaf4c63..460068e 100644 --- a/ui/ozone/platform/wayland/test/wayland_drag_drop_test.h +++ b/ui/ozone/platform/wayland/test/wayland_drag_drop_test.h
@@ -8,6 +8,7 @@ #include <cstdint> #include "base/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/ozone/platform/wayland/test/test_data_device.h" #include "ui/ozone/platform/wayland/test/test_data_source.h" @@ -92,10 +93,10 @@ } // Server objects - wl::TestDataDeviceManager* data_device_manager_; - wl::TestDataSource* data_source_; - wl::MockPointer* pointer_; - wl::TestTouch* touch_; + raw_ptr<wl::TestDataDeviceManager> data_device_manager_; + raw_ptr<wl::TestDataSource> data_source_; + raw_ptr<wl::MockPointer> pointer_; + raw_ptr<wl::TestTouch> touch_; uint32_t current_serial_; };
diff --git a/ui/ozone/platform/wayland/test/wayland_ozone_ui_controls_test_helper.cc b/ui/ozone/platform/wayland/test/wayland_ozone_ui_controls_test_helper.cc index 90a26c0..5562111 100644 --- a/ui/ozone/platform/wayland/test/wayland_ozone_ui_controls_test_helper.cc +++ b/ui/ozone/platform/wayland/test/wayland_ozone_ui_controls_test_helper.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ui/ozone/platform/wayland/test/wayland_ozone_ui_controls_test_helper.h" +#include "base/memory/raw_ptr.h" #include <linux/input.h> @@ -119,7 +120,7 @@ base::OnceClosure closure_; - WaylandInputEmulate* const emulate_; + const raw_ptr<WaylandInputEmulate> emulate_; // Expected pointer location on screen. gfx::Point screen_point_;
diff --git a/ui/ozone/platform/wayland/test/wayland_test.h b/ui/ozone/platform/wayland/test/wayland_test.h index a27417c1..70da93b 100644 --- a/ui/ozone/platform/wayland/test/wayland_test.h +++ b/ui/ozone/platform/wayland/test/wayland_test.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "testing/gtest/include/gtest/gtest.h" @@ -69,7 +70,7 @@ base::test::TaskEnvironment task_environment_; wl::TestWaylandServerThread server_; - wl::MockSurface* surface_; + raw_ptr<wl::MockSurface> surface_; MockWaylandPlatformWindowDelegate delegate_; std::unique_ptr<ScopedKeyboardLayoutEngine> scoped_keyboard_layout_engine_;
diff --git a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc index 2849556c..cb620ad 100644 --- a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc +++ b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
@@ -10,6 +10,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/memory/raw_ptr.h" #include "base/test/mock_callback.h" #include "mojo/public/cpp/system/platform_handle.h" #include "testing/gmock/include/gmock/gmock.h" @@ -90,7 +91,7 @@ const gfx::PresentationFeedback& feedback)); private: - WaylandBufferManagerGpu* const buffer_manager_; + const raw_ptr<WaylandBufferManagerGpu> buffer_manager_; const gfx::AcceleratedWidget widget_; }; @@ -267,7 +268,7 @@ } MockTerminateGpuCallback callback_; - WaylandBufferManagerHost* manager_host_; + raw_ptr<WaylandBufferManagerHost> manager_host_; // Error message that is received when the manager_host destroys the channel. std::string channel_destroyed_error_message_; };
diff --git a/ui/ozone/platform/wayland/wayland_utils.h b/ui/ozone/platform/wayland/wayland_utils.h index 52e1e4b..1616460 100644 --- a/ui/ozone/platform/wayland/wayland_utils.h +++ b/ui/ozone/platform/wayland/wayland_utils.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_WAYLAND_WAYLAND_UTILS_H_ #define UI_OZONE_PLATFORM_WAYLAND_WAYLAND_UTILS_H_ +#include "base/memory/raw_ptr.h" #include "ui/ozone/public/platform_utils.h" namespace ui { @@ -25,7 +26,7 @@ void OnUnhandledKeyEvent(const KeyEvent& key_event) override; private: - WaylandConnection* const connection_; + const raw_ptr<WaylandConnection> connection_; }; } // namespace ui
diff --git a/ui/ozone/platform/x11/gl_surface_egl_readback_x11.h b/ui/ozone/platform/x11/gl_surface_egl_readback_x11.h index 7459e00..0f85f5c78f 100644 --- a/ui/ozone/platform/x11/gl_surface_egl_readback_x11.h +++ b/ui/ozone/platform/x11/gl_surface_egl_readback_x11.h
@@ -5,6 +5,7 @@ #ifndef UI_OZONE_PLATFORM_X11_GL_SURFACE_EGL_READBACK_X11_H_ #define UI_OZONE_PLATFORM_X11_GL_SURFACE_EGL_READBACK_X11_H_ +#include "base/memory/raw_ptr.h" #include "ui/gfx/x/xproto.h" #include "ui/ozone/common/gl_surface_egl_readback.h" @@ -29,7 +30,7 @@ bool HandlePixels(uint8_t* pixels) override; const x11::Window window_; - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::GraphicsContext window_graphics_context_{}; x11::VisualId visual_{}; };
diff --git a/ui/ozone/platform/x11/test/device_data_manager_x11_unittest.cc b/ui/ozone/platform/x11/test/device_data_manager_x11_unittest.cc index 88fccb6..b688cdf8 100644 --- a/ui/ozone/platform/x11/test/device_data_manager_x11_unittest.cc +++ b/ui/ozone/platform/x11/test/device_data_manager_x11_unittest.cc
@@ -6,6 +6,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/events/devices/device_hotplug_event_observer.h" #include "ui/events/devices/input_device.h" @@ -41,7 +42,7 @@ void Reset() { change_notified_ = false; } private: - DeviceDataManager* manager_; + raw_ptr<DeviceDataManager> manager_; bool change_notified_; };
diff --git a/ui/ozone/platform/x11/test/x11_drag_drop_client_unittest.cc b/ui/ozone/platform/x11/test/x11_drag_drop_client_unittest.cc index e4f8670..02c02bfd 100644 --- a/ui/ozone/platform/x11/test/x11_drag_drop_client_unittest.cc +++ b/ui/ozone/platform/x11/test/x11_drag_drop_client_unittest.cc
@@ -12,6 +12,7 @@ #include "base/bind.h" #include "base/location.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" @@ -72,7 +73,7 @@ x11::Window window_; // Not owned. - TestDragDropClient* client_; + raw_ptr<TestDragDropClient> client_; std::vector<x11::ClientMessageEvent> events_; }; @@ -96,7 +97,7 @@ private: // Not owned. - X11MoveLoopDelegate* delegate_; + raw_ptr<X11MoveLoopDelegate> delegate_; // Ends the move loop. base::OnceClosure quit_closure_; @@ -155,7 +156,7 @@ x11::Window target_window_ = x11::Window::None; // The move loop. Not owned. - TestMoveLoop* loop_ = nullptr; + raw_ptr<TestMoveLoop> loop_ = nullptr; base::OnceClosure quit_closure_; }; @@ -296,7 +297,7 @@ std::unique_ptr<X11MoveLoop> SimpleTestDragDropClient::CreateMoveLoop( X11MoveLoopDelegate* delegate) { loop_ = new TestMoveLoop(delegate); - return base::WrapUnique(loop_); + return base::WrapUnique(loop_.get()); } DragOperation SimpleTestDragDropClient::StartDragAndDrop(
diff --git a/ui/ozone/platform/x11/x11_screen_ozone.h b/ui/ozone/platform/x11/x11_screen_ozone.h index d86acae9..7f84bc5 100644 --- a/ui/ozone/platform/x11/x11_screen_ozone.h +++ b/ui/ozone/platform/x11/x11_screen_ozone.h
@@ -9,6 +9,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/base/x/x11_display_manager.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/x/event.h" @@ -72,8 +73,8 @@ gfx::Point GetCursorLocation() const; - x11::Connection* const connection_; - X11WindowManager* const window_manager_; + const raw_ptr<x11::Connection> connection_; + const raw_ptr<X11WindowManager> window_manager_; std::unique_ptr<ui::XDisplayManager> x11_display_manager_; // Scale value that DesktopScreenOzoneLinux sets by listening to
diff --git a/ui/ozone/platform/x11/x11_window.h b/ui/ozone/platform/x11/x11_window.h index 0532f40..91d49860 100644 --- a/ui/ozone/platform/x11/x11_window.h +++ b/ui/ozone/platform/x11/x11_window.h
@@ -13,6 +13,7 @@ #include "base/cancelable_callback.h" #include "base/containers/flat_set.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h" #include "ui/base/x/x11_desktop_window_move_client.h" #include "ui/base/x/x11_drag_drop_client.h" @@ -315,11 +316,11 @@ // Stores current state of this window. PlatformWindowState state_ = PlatformWindowState::kUnknown; - PlatformWindowDelegate* const platform_window_delegate_; + const raw_ptr<PlatformWindowDelegate> platform_window_delegate_; - WorkspaceExtensionDelegate* workspace_extension_delegate_ = nullptr; + raw_ptr<WorkspaceExtensionDelegate> workspace_extension_delegate_ = nullptr; - X11ExtensionDelegate* x11_extension_delegate_ = nullptr; + raw_ptr<X11ExtensionDelegate> x11_extension_delegate_ = nullptr; // Tells if the window got a ::Close call. bool is_shutting_down_ = false; @@ -341,7 +342,7 @@ // Handles XDND events going through this window. std::unique_ptr<XDragDropClient> drag_drop_client_; WmDragHandler::DragFinishedCallback drag_finished_callback_; - WmDragHandler::LocationDelegate* drag_location_delegate_ = nullptr; + raw_ptr<WmDragHandler::LocationDelegate> drag_location_delegate_ = nullptr; // Run loop used while dragging from this window. std::unique_ptr<X11MoveLoop> drag_loop_; @@ -350,7 +351,7 @@ std::unique_ptr<x11::XScopedEventSelector> source_window_events_; // The display and the native X window hosting the root window. - x11::Connection* const connection_; + const raw_ptr<x11::Connection> connection_; x11::Window xwindow_ = x11::Window::None; x11::Window x_root_window_ = x11::Window::None;
diff --git a/ui/ozone/platform/x11/x11_window_manager.cc b/ui/ozone/platform/x11/x11_window_manager.cc index 2db427e..d1add9c0 100644 --- a/ui/ozone/platform/x11/x11_window_manager.cc +++ b/ui/ozone/platform/x11/x11_window_manager.cc
@@ -42,7 +42,7 @@ // - |located_events_grabber_| is set to have capture. // OR // - The topmost window underneath the mouse is managed by Chrome. - auto* old_grabber = located_events_grabber_; + auto* old_grabber = located_events_grabber_.get(); // Update |located_events_grabber_| prior to calling OnXWindowLostCapture() to // avoid releasing pointer grab. @@ -58,7 +58,7 @@ // Release mouse grab asynchronously. A window managed by Chrome is likely // the topmost window underneath the mouse so the capture release being // asynchronous is likely inconsequential. - auto* old_grabber = located_events_grabber_; + auto* old_grabber = located_events_grabber_.get(); located_events_grabber_ = nullptr; old_grabber->OnXWindowLostCapture(); }
diff --git a/ui/ozone/platform/x11/x11_window_manager.h b/ui/ozone/platform/x11/x11_window_manager.h index 0ca496c..dbceb44 100644 --- a/ui/ozone/platform/x11/x11_window_manager.h +++ b/ui/ozone/platform/x11/x11_window_manager.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PLATFORM_X11_X11_WINDOW_MANAGER_H_ #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "ui/gfx/native_widget_types.h" namespace ui { @@ -48,8 +49,8 @@ } private: - X11Window* located_events_grabber_ = nullptr; - X11Window* window_mouse_currently_on_ = nullptr; + raw_ptr<X11Window> located_events_grabber_ = nullptr; + raw_ptr<X11Window> window_mouse_currently_on_ = nullptr; base::flat_map<gfx::AcceleratedWidget, X11Window*> windows_; };
diff --git a/ui/ozone/public/platform_global_shortcut_listener.h b/ui/ozone/public/platform_global_shortcut_listener.h index a5b539d..5b6ceb2 100644 --- a/ui/ozone/public/platform_global_shortcut_listener.h +++ b/ui/ozone/public/platform_global_shortcut_listener.h
@@ -6,6 +6,7 @@ #define UI_OZONE_PUBLIC_PLATFORM_GLOBAL_SHORTCUT_LISTENER_H_ #include "base/component_export.h" +#include "base/memory/raw_ptr.h" #include "ui/events/keycodes/keyboard_codes.h" namespace ui { @@ -61,7 +62,7 @@ PlatformGlobalShortcutListenerDelegate* delegate() { return delegate_; } private: - PlatformGlobalShortcutListenerDelegate* delegate_; + raw_ptr<PlatformGlobalShortcutListenerDelegate> delegate_; }; } // namespace ui
diff --git a/ui/platform_window/platform_window_init_properties.h b/ui/platform_window/platform_window_init_properties.h index ae50ef8..b67f867 100644 --- a/ui/platform_window/platform_window_init_properties.h +++ b/ui/platform_window/platform_window_init_properties.h
@@ -117,7 +117,7 @@ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) bool prefer_dark_theme = false; - gfx::ImageSkia* icon = nullptr; + raw_ptr<gfx::ImageSkia> icon = nullptr; absl::optional<int> background_color; // Specifies the res_name and res_class fields, @@ -127,7 +127,7 @@ std::string wm_class_name; std::string wm_class_class; - X11ExtensionDelegate* x11_extension_delegate = nullptr; + raw_ptr<X11ExtensionDelegate> x11_extension_delegate = nullptr; // Wayland specific. Holds the application ID that is used by the window // manager to match the desktop entry and group windows.
diff --git a/ui/shell_dialogs/select_file_dialog_linux_portal.h b/ui/shell_dialogs/select_file_dialog_linux_portal.h index e048c160..457c4085 100644 --- a/ui/shell_dialogs/select_file_dialog_linux_portal.h +++ b/ui/shell_dialogs/select_file_dialog_linux_portal.h
@@ -5,6 +5,7 @@ #ifndef UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_LINUX_PORTAL_H_ #define UI_SHELL_DIALOGS_SELECT_FILE_DIALOG_LINUX_PORTAL_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/atomic_flag.h" @@ -97,13 +98,13 @@ // The response object handle that the portal will send a signal to upon the // dialog's completion. - dbus::ObjectProxy* response_handle = nullptr; + raw_ptr<dbus::ObjectProxy> response_handle = nullptr; absl::optional<gfx::AcceleratedWidget> parent; Type type; // The task runner the SelectFileImpl method was called on. scoped_refptr<base::SequencedTaskRunner> main_task_runner; // The untyped params to pass to the listener. - void* listener_params = nullptr; + raw_ptr<void> listener_params = nullptr; private: friend class base::RefCountedThreadSafe<DialogInfo>;
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc index 0f2a66a2..c97c118 100644 --- a/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc +++ b/ui/views/accessibility/view_ax_platform_node_delegate_auralinux.cc
@@ -9,6 +9,7 @@ #include <vector> #include "base/containers/contains.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "base/scoped_multi_source_observation.h" #include "ui/accessibility/ax_action_data.h" @@ -183,7 +184,7 @@ // TODO(nektar): Make this into a const pointer so that it can't be set // outside the class's constructor. - ui::AXPlatformNode* ax_platform_node_; + raw_ptr<ui::AXPlatformNode> ax_platform_node_; ui::AXUniqueId unique_id_; mutable ui::AXNodeData data_; std::vector<Widget*> widgets_;
diff --git a/ui/views/color_chooser/color_chooser_view.h b/ui/views/color_chooser/color_chooser_view.h index 1858d938..3faeff8 100644 --- a/ui/views/color_chooser/color_chooser_view.h +++ b/ui/views/color_chooser/color_chooser_view.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkScalar.h" @@ -82,21 +83,21 @@ // The current color in HSV coordinate. SkScalar hsv_[3]; - ColorChooserListener* listener_; + raw_ptr<ColorChooserListener> listener_; ViewTracker tracker_; // Child views. These are owned as part of the normal views hierarchy. // The view of hue chooser. - HueView* hue_ = nullptr; + raw_ptr<HueView> hue_ = nullptr; // The view of saturation/value choosing area. - SaturationValueView* saturation_value_ = nullptr; + raw_ptr<SaturationValueView> saturation_value_ = nullptr; // The rectangle to denote the selected color. - SelectedColorPatchView* selected_color_patch_ = nullptr; + raw_ptr<SelectedColorPatchView> selected_color_patch_ = nullptr; // The textfield to write the color explicitly. - Textfield* textfield_ = nullptr; + raw_ptr<Textfield> textfield_ = nullptr; SkColor initial_color_; };
diff --git a/ui/views/linux_ui/status_icon_linux.h b/ui/views/linux_ui/status_icon_linux.h index 5d02eae8..58458bd4 100644 --- a/ui/views/linux_ui/status_icon_linux.h +++ b/ui/views/linux_ui/status_icon_linux.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "ui/views/views_export.h" namespace gfx { @@ -64,7 +65,7 @@ Delegate* delegate() { return delegate_; } protected: - Delegate* delegate_ = nullptr; + raw_ptr<Delegate> delegate_ = nullptr; }; } // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone.h b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone.h index 30c7365..e849606 100644 --- a/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone.h +++ b/ui/views/widget/desktop_aura/desktop_drag_drop_client_ozone.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ui/aura/client/drag_drop_client.h" #include "ui/aura/client/drag_drop_delegate.h" @@ -135,16 +136,16 @@ aura::Window* root_window() { return root_window_; } private: - aura::Window* const root_window_; + const raw_ptr<aura::Window> root_window_; - ui::WmDragHandler* const drag_handler_; + const raw_ptr<ui::WmDragHandler> drag_handler_; aura::client::DragUpdateInfo current_drag_info_; // Last window under the mouse. - aura::Window* current_window_ = nullptr; + raw_ptr<aura::Window> current_window_ = nullptr; // The delegate corresponding to the window located at the mouse position. - aura::client::DragDropDelegate* drag_drop_delegate_ = nullptr; + raw_ptr<aura::client::DragDropDelegate> drag_drop_delegate_ = nullptr; // The data to be delivered through the drag and drop. std::unique_ptr<ui::OSExchangeData> data_to_drop_;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc index e861828..d8d30be 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "ui/aura/null_window_targeter.h" #include "ui/aura/scoped_window_targeter.h" #include "ui/aura/window.h" @@ -69,7 +70,7 @@ compositor_ = nullptr; } - ui::Compositor* compositor_; + raw_ptr<ui::Compositor> compositor_; const HelperCallback callback_; };
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_impl_interactive_uitest.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_impl_interactive_uitest.cc index 3135fcb..58245d8 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_impl_interactive_uitest.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_impl_interactive_uitest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h" #include "base/run_loop.h" @@ -132,7 +133,7 @@ } private: - ui::PlatformWindow* platform_window_; + raw_ptr<ui::PlatformWindow> platform_window_; gfx::Rect bounds_; int hittest_ = -1; @@ -206,7 +207,7 @@ } private: - HitTestNonClientFrameView* frame_view_ = nullptr; + raw_ptr<HitTestNonClientFrameView> frame_view_ = nullptr; }; // Test host that can intercept calls to the real host. @@ -268,8 +269,8 @@ auto* native_widget = new DesktopNativeWidgetAura(toplevel); toplevel_params.native_widget = native_widget; host_ = new TestDesktopWindowTreeHostPlatformImpl(toplevel, native_widget); - toplevel_params.desktop_window_tree_host = host_; - toplevel_params.delegate = delegate_; + toplevel_params.desktop_window_tree_host = host_.get(); + toplevel_params.delegate = delegate_.get(); toplevel_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; toplevel_params.bounds = bounds; toplevel_params.remove_standard_frame = true; @@ -316,8 +317,8 @@ base::TimeTicks::Now(), gesture_details); } - HitTestWidgetDelegate* delegate_ = nullptr; - TestDesktopWindowTreeHostPlatformImpl* host_ = nullptr; + raw_ptr<HitTestWidgetDelegate> delegate_ = nullptr; + raw_ptr<TestDesktopWindowTreeHostPlatformImpl> host_ = nullptr; }; // These tests are run using either click or touch events.
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc index c096c26..348833e 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/command_line.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "ui/aura/window_tree_host.h" #include "ui/aura/window_tree_host_observer.h" @@ -99,7 +100,7 @@ run_loop_->Quit(); } - Widget* widget_; + raw_ptr<Widget> widget_; std::unique_ptr<base::RunLoop> run_loop_; bool on_widget_destroying_ = false; bool visible_ = false; @@ -281,7 +282,7 @@ } private: - aura::WindowTreeHost* const host_; + const raw_ptr<aura::WindowTreeHost> host_; int resize_count_ = 0; int bounds_change_count_ = 0; };
diff --git a/ui/views/widget/desktop_aura/window_event_filter_linux.h b/ui/views/widget/desktop_aura/window_event_filter_linux.h index 8d617e4..5e32418f 100644 --- a/ui/views/widget/desktop_aura/window_event_filter_linux.h +++ b/ui/views/widget/desktop_aura/window_event_filter_linux.h
@@ -5,6 +5,7 @@ #ifndef UI_VIEWS_WIDGET_DESKTOP_AURA_WINDOW_EVENT_FILTER_LINUX_H_ #define UI_VIEWS_WIDGET_DESKTOP_AURA_WINDOW_EVENT_FILTER_LINUX_H_ +#include "base/memory/raw_ptr.h" #include "ui/base/hit_test.h" #include "ui/events/event_handler.h" #include "ui/views/views_export.h" @@ -62,12 +63,12 @@ // ui::EventHandler overrides: void OnGestureEvent(ui::GestureEvent* event) override; - DesktopWindowTreeHostPlatform* const desktop_window_tree_host_; + const raw_ptr<DesktopWindowTreeHostPlatform> desktop_window_tree_host_; // A handler, which is used for interactive move/resize events if set and // unless MaybeDispatchHostWindowDragMovement is overridden by a derived // class. - ui::WmMoveResizeHandler* const handler_; + const raw_ptr<ui::WmMoveResizeHandler> handler_; // The non-client component for the target of a MouseEvent. Mouse events can // be destructive to the window tree, which can cause the component of a
diff --git a/ui/views_content_client/views_content_client.h b/ui/views_content_client/views_content_client.h index 37dae9a..f26003c3 100644 --- a/ui/views_content_client/views_content_client.h +++ b/ui/views_content_client/views_content_client.h
@@ -100,7 +100,7 @@ raw_ptr<sandbox::SandboxInterfaceInfo> sandbox_info_; #else int argc_; - const char** argv_; + raw_ptr<const char*> argv_; #endif OnPreMainMessageLoopRunCallback on_pre_main_message_loop_run_callback_; base::OnceClosure on_resources_loaded_callback_;