diff --git a/DEPS b/DEPS index 334a5d8..4b077f7cb 100644 --- a/DEPS +++ b/DEPS
@@ -204,11 +204,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'fa8d6915cbbf8cc7f6bc11c2c6bb7eaa36c2b5df', + 'skia_revision': 'bc3c41b8742aa3430b5da0ac97de42f0fe25fe85', # 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': 'ab473c140fe5b583fe97ecb319840f23168f425a', + 'v8_revision': '61f3e61408129afc0d9e1268d3354a283ea3c881', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -216,7 +216,7 @@ # 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': '1ad5791d97bea23f092b206679a56302defa378f', + 'angle_revision': '51a0e95d78eb22b1d87dfe7cb10a576690931986', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -224,7 +224,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '46df5d14ee8017a1854f4ab03cc578126c0ee67c', + 'pdfium_revision': '30f45a6f043fc1bbd19eb4820261c45ad68cf1cc', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -271,7 +271,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'd1cf5db4152d162ef170c43626872c897625cc9f', + 'catapult_revision': '88efddc6a162994babc45a2d28bb5f4f9867c2f1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -279,7 +279,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': 'b917ab64e84b7b91b925c1fc7c187e95b6602085', + 'devtools_frontend_revision': 'd5886280043bd2cd11f348b3b12d80bda52590c9', # 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. @@ -331,7 +331,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': 'ab5821d0166feabf7690b7d2399ad36870501e72', + 'dawn_revision': 'f31b78e90e1ea17bf012edd22d2f35e9d89adb15', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -923,7 +923,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '079a95bc72408f034a8ffbcb1ae70b54ef155aa0', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'b28382109909606b061f2a9a04adf8196a47ce3b', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1164,7 +1164,7 @@ }, 'src/third_party/libjpeg_turbo': - Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'd5148db386ceb4a608058320071cbed890bd6ad2', + Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'bbb828223e9c8f83f0e84db1e98b116029e62765', 'src/third_party/liblouis/src': { 'url': Var('chromium_git') + '/external/liblouis-github.git' + '@' + '03d7d72d983d47c17f7de95bbeae89fe33e41943', @@ -1278,7 +1278,7 @@ Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '3dd5b80bc4f172dd82925bb259cb7c82348409c5', 'src/third_party/openscreen/src': - Var('chromium_git') + '/openscreen' + '@' + '12b95e78a4d536eabc689467bf558652252f39a8', + Var('chromium_git') + '/openscreen' + '@' + 'b9d9529da93acf08f70acf2071f153749c4eac94', 'src/third_party/openxr/src': { 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '97cfe495bb7a3853266b646d1c79e169387f9c7a', @@ -1373,7 +1373,7 @@ 'packages': [ { 'package': 'fuchsia/third_party/aemu/linux-amd64', - 'version': 'Ld6Ho8txe7fnUwYDIgKsMmU0e2gBZ9Zx1n43O83aofUC' + 'version': 'FMtthcz6qGrAgLXdxXJ6pP0iueMVqTXO6-6_LOrvTZUC' }, ], 'condition': 'host_os == "linux" and checkout_fuchsia', @@ -1486,10 +1486,10 @@ 'url': Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + '147e1b4038c1df82dc82455e1fa352ffcf1864a6', 'condition': 'checkout_ios', }, - + 'src/third_party/tflite/src': Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'fcc4b966f1265f466e82617020af93670141b009', - + 'src/third_party/turbine': { 'packages': [ { @@ -1545,7 +1545,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'ad70609509a98138cd6391828e4adafeb2f35b3d', + Var('webrtc_git') + '/src.git' + '@' + '6c80aebd00360ee00c84c7b14422c5fe475d8916', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1617,7 +1617,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@1df52ed5909b6872b8d7a76269c0e6247d4a101d', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ff8800deaa33f678b4f53b3030e5deaf46716da5', 'condition': 'checkout_src_internal', },
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 4f3456c..1102661 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -374,8 +374,7 @@ '^components/webcrypto/', '^extensions/browser/', '^extensions/renderer/', - '^google_apis/drive/', - '^media/blink/', + '^media/blink/', '^media/cdm/', '^net/http/', '^net/url_request/',
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java index 95006193..2ebb7d2 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
@@ -65,7 +65,6 @@ import org.chromium.android_webview.AwThreadUtils; import org.chromium.android_webview.gfx.AwDrawFnImpl; import org.chromium.android_webview.renderer_priority.RendererPriority; -import org.chromium.base.BuildInfo; import org.chromium.base.ThreadUtils; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.ScopedSysTraceEvent; @@ -2537,7 +2536,7 @@ @Override public AwDrawFnImpl.DrawFnAccess getDrawFnAccess() { - if (BuildInfo.isAtLeastQ()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return mFactory.getWebViewDelegate(); } return null;
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java index f887774..fe3de32 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
@@ -342,7 +342,7 @@ private void initPlatSupportLibrary() { try (ScopedSysTraceEvent e = ScopedSysTraceEvent.scoped( "WebViewChromiumAwInit.initPlatSupportLibrary")) { - if (BuildInfo.isAtLeastQ()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { AwDrawFnImpl.setDrawFnFunctionTable(DrawFunctor.getDrawFnFunctionTable()); } DrawGLFunctor.setChromiumAwDrawGLFunction(AwContents.getAwDrawGLFunction());
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 233b43a..3d2045ad 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -58,7 +58,6 @@ import org.chromium.android_webview.permission.AwGeolocationCallback; import org.chromium.android_webview.permission.AwPermissionRequest; import org.chromium.android_webview.renderer_priority.RendererPriority; -import org.chromium.base.BuildInfo; import org.chromium.base.Callback; import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; @@ -1932,7 +1931,9 @@ if (TRACE) Log.i(TAG, "%s loadData", this); if (isDestroyed(WARN)) return; if (data != null && data.contains("#")) { - if (!BuildInfo.targetsAtLeastQ() && !isBase64Encoded(encoding)) { + if (ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion + < Build.VERSION_CODES.Q + && !isBase64Encoded(encoding)) { // As of Chromium M72, data URI parsing strictly enforces encoding of '#'. To // support WebView applications which were not expecting this change, we do it for // them.
diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java index 3fde85c..7832f90 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java +++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java
@@ -21,7 +21,6 @@ import org.chromium.android_webview.safe_browsing.AwSafeBrowsingConfigHelper; import org.chromium.android_webview.settings.ForceDarkBehavior; import org.chromium.android_webview.settings.ForceDarkMode; -import org.chromium.base.BuildInfo; import org.chromium.base.ContextUtils; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; @@ -294,7 +293,9 @@ mDoNotUpdateSelectionOnMutatingSelectionRange = doNotUpdateSelectionOnMutatingSelectionRange; - mAllowFileUrlAccess = !BuildInfo.targetsAtLeastR(); + mAllowFileUrlAccess = + ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion + < Build.VERSION_CODES.R; } // Defer initializing the native side until a native WebContents instance is set. }
diff --git a/android_webview/java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java b/android_webview/java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java index beb05d6..f595428 100644 --- a/android_webview/java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java +++ b/android_webview/java/src/org/chromium/android_webview/safe_browsing/AwSafeBrowsingConversionHelper.java
@@ -4,9 +4,10 @@ package org.chromium.android_webview.safe_browsing; +import android.os.Build; import android.webkit.WebViewClient; -import org.chromium.base.BuildInfo; +import org.chromium.base.ContextUtils; import org.chromium.components.safe_browsing.SBThreatType; /** @@ -53,8 +54,10 @@ case SBThreatType.URL_UNWANTED: return SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE; case SBThreatType.BILLING: - return BuildInfo.targetsAtLeastQ() ? SAFE_BROWSING_THREAT_BILLING - : SAFE_BROWSING_THREAT_UNKNOWN; + return ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion + >= Build.VERSION_CODES.Q + ? SAFE_BROWSING_THREAT_BILLING + : SAFE_BROWSING_THREAT_UNKNOWN; default: return SAFE_BROWSING_THREAT_UNKNOWN; }
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java index 81b1d7c..50b23b2 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java
@@ -12,6 +12,7 @@ import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -38,7 +39,7 @@ import org.chromium.android_webview.renderer_priority.RendererPriority; import org.chromium.android_webview.test.TestAwContentsClient.OnDownloadStartHelper; import org.chromium.android_webview.test.util.CommonResources; -import org.chromium.base.BuildInfo; +import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.test.util.CallbackHelper; @@ -957,7 +958,9 @@ final AwContents awContents = testView.getAwContents(); // Before Android Q, the loadData API is expected to handle the encoding for users. - boolean encodeOctothorpes = !BuildInfo.targetsAtLeastQ(); + boolean encodeOctothorpes = + ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion + < Build.VERSION_CODES.Q; // A URL with no '#' character. mActivityTestRule.loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwNetworkConfigurationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwNetworkConfigurationTest.java index b4ad487d6..1d4f14f 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwNetworkConfigurationTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwNetworkConfigurationTest.java
@@ -6,6 +6,7 @@ import static org.chromium.android_webview.test.AwActivityTestRule.WAIT_TIMEOUT_MS; +import android.os.Build; import android.support.test.InstrumentationRegistry; import android.webkit.JavascriptInterface; @@ -22,7 +23,6 @@ import org.chromium.android_webview.AwContents; import org.chromium.android_webview.AwContentsClient.AwWebResourceRequest; import org.chromium.android_webview.test.TestAwContentsClient.OnReceivedSslErrorHelper; -import org.chromium.base.BuildInfo; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.net.test.EmbeddedTestServer; @@ -72,7 +72,7 @@ String url = mTestServer.getURL("/android_webview/test/data/hello_world.html"); mActivityTestRule.loadUrlSync( mAwContents, mContentsClient.getOnPageFinishedHelper(), url); - if (BuildInfo.isAtLeastQ()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { Assert.assertEquals("We should generate an SSL error on >= Q", count + 1, onReceivedSslErrorHelper.getCallCount()); } else {
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java index 29d3e37..d04d10d8 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java
@@ -12,6 +12,7 @@ import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; +import android.os.Build; import android.support.test.InstrumentationRegistry; import android.view.ViewGroup; @@ -41,8 +42,8 @@ import org.chromium.android_webview.safe_browsing.AwSafeBrowsingResponse; import org.chromium.android_webview.test.TestAwContentsClient.OnReceivedError2Helper; import org.chromium.android_webview.test.util.GraphicsTestUtils; -import org.chromium.base.BuildInfo; import org.chromium.base.Callback; +import org.chromium.base.ContextUtils; import org.chromium.base.ThreadUtils; import org.chromium.base.task.PostTask; import org.chromium.base.test.util.CallbackHelper; @@ -508,7 +509,9 @@ Assert.assertEquals(responseUrl, mContentsClient.getLastRequest().url); // The expectedCode intentionally depends on targetSdk (and is disconnected from SDK_INT). // This is for backwards compatibility with apps with a lower targetSdk. - int expectedCode = BuildInfo.targetsAtLeastQ() + int expectedCode = + ContextUtils.getApplicationContext().getApplicationInfo().targetSdkVersion + >= Build.VERSION_CODES.Q ? AwSafeBrowsingConversionHelper.SAFE_BROWSING_THREAT_BILLING : AwSafeBrowsingConversionHelper.SAFE_BROWSING_THREAT_UNKNOWN; Assert.assertEquals(expectedCode, mContentsClient.getLastThreatType());
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc index c14f45b..fb18e53d 100644 --- a/ash/app_list/app_list_controller_impl.cc +++ b/ash/app_list/app_list_controller_impl.cc
@@ -112,12 +112,6 @@ prefs->SetInteger(prefs::kAssistantPrivacyInfoShownInLauncher, count); } -bool IsAssistantPrivacyInfoDismissed() { - PrefService* prefs = - Shell::Get()->session_controller()->GetLastActiveUserPrefService(); - return prefs->GetBoolean(prefs::kAssistantPrivacyInfoDismissedInLauncher); -} - void SetAssistantPrivacyInfoDismissed() { PrefService* prefs = Shell::Get()->session_controller()->GetLastActiveUserPrefService(); @@ -1323,19 +1317,8 @@ } bool AppListControllerImpl::ShouldShowAssistantPrivacyInfo() const { - if (!IsAssistantAllowedAndEnabled()) - return false; - - if (!app_list_features::IsAssistantSearchEnabled()) - return false; - - const bool dismissed = IsAssistantPrivacyInfoDismissed(); - if (dismissed) - return false; - - const int count = GetAssistantPrivacyInfoShownCount(); - constexpr int kThresholdToShow = 6; - return count >= 0 && count <= kThresholdToShow; + // TODO(b/174506130) completely remove Assistant privacy info in followup. + return false; } void AppListControllerImpl::MarkAssistantPrivacyInfoDismissed() {
diff --git a/ash/clipboard/clipboard_history_controller_impl.cc b/ash/clipboard/clipboard_history_controller_impl.cc index c935548..837effa 100644 --- a/ash/clipboard/clipboard_history_controller_impl.cc +++ b/ash/clipboard/clipboard_history_controller_impl.cc
@@ -202,11 +202,13 @@ clipboard_history_->RemoveObserver(this); } -void ClipboardHistoryControllerImpl::AddObserver(Observer* observer) const { +void ClipboardHistoryControllerImpl::AddObserver( + ClipboardHistoryController::Observer* observer) const { observers_.AddObserver(observer); } -void ClipboardHistoryControllerImpl::RemoveObserver(Observer* observer) const { +void ClipboardHistoryControllerImpl::RemoveObserver( + ClipboardHistoryController::Observer* observer) const { observers_.RemoveObserver(observer); }
diff --git a/ash/clipboard/clipboard_history_controller_impl.h b/ash/clipboard/clipboard_history_controller_impl.h index f037ad64..5b61c367 100644 --- a/ash/clipboard/clipboard_history_controller_impl.h +++ b/ash/clipboard/clipboard_history_controller_impl.h
@@ -37,14 +37,6 @@ : public ClipboardHistoryController, public ClipboardHistory::Observer { public: - class Observer : public base::CheckedObserver { - public: - // Called when the clipboard history menu is shown. - virtual void OnClipboardHistoryMenuShown() = 0; - // Called when the user pastes from the clipboard history menu. - virtual void OnClipboardHistoryPasted() = 0; - }; - ClipboardHistoryControllerImpl(); ClipboardHistoryControllerImpl(const ClipboardHistoryControllerImpl&) = delete; @@ -52,8 +44,10 @@ const ClipboardHistoryControllerImpl&) = delete; ~ClipboardHistoryControllerImpl() override; - void AddObserver(Observer* observer) const; - void RemoveObserver(Observer* observer) const; + void AddObserver( + ClipboardHistoryController::Observer* observer) const override; + void RemoveObserver( + ClipboardHistoryController::Observer* observer) const override; // Returns if the contextual menu is currently showing. bool IsMenuShowing() const; @@ -123,7 +117,7 @@ // Mutable to allow adding/removing from |observers_| through a const // ClipboardHistoryControllerImpl. - mutable base::ObserverList<Observer> observers_; + mutable base::ObserverList<ClipboardHistoryController::Observer> observers_; // The menu being shown. std::unique_ptr<ClipboardHistoryMenuModelAdapter> context_menu_;
diff --git a/ash/clipboard/clipboard_nudge_controller.h b/ash/clipboard/clipboard_nudge_controller.h index 1e9b6580..92dc8640 100644 --- a/ash/clipboard/clipboard_nudge_controller.h +++ b/ash/clipboard/clipboard_nudge_controller.h
@@ -8,6 +8,7 @@ #include "ash/ash_export.h" #include "ash/clipboard/clipboard_history.h" #include "ash/clipboard/clipboard_history_controller_impl.h" +#include "ash/public/cpp/clipboard_history_controller.h" #include "ash/public/cpp/session/session_observer.h" #include "base/memory/weak_ptr.h" #include "base/time/clock.h" @@ -36,7 +37,7 @@ : public ClipboardHistory::Observer, public ui::ClipboardObserver, public SessionObserver, - public ClipboardHistoryControllerImpl::Observer { + public ClipboardHistoryController::Observer { public: ClipboardNudgeController( ClipboardHistory* clipboard_history,
diff --git a/ash/events/accessibility_event_rewriter.cc b/ash/events/accessibility_event_rewriter.cc index fb05c06..e82e508 100644 --- a/ash/events/accessibility_event_rewriter.cc +++ b/ash/events/accessibility_event_rewriter.cc
@@ -168,9 +168,6 @@ return capture; } - if (chromevox_send_mouse_events_ && event.IsMouseEvent()) - delegate_->DispatchMouseEventToChromeVox(ui::Event::Clone(event)); - return false; } @@ -273,6 +270,16 @@ } } +void AccessibilityEventRewriter::MaybeSendMouseEvent(const ui::Event& event) { + // Mouse moves are the only pertinent event for accessibility component + // extensions. + if (send_mouse_events_ && event.type() == ui::ET_MOUSE_MOVED && + (Shell::Get()->magnification_controller()->IsEnabled() || + Shell::Get()->accessibility_controller()->spoken_feedback().enabled())) { + delegate_->DispatchMouseEvent(ui::Event::Clone(event)); + } +} + ui::EventDispatchDetails AccessibilityEventRewriter::RewriteEvent( const ui::Event& event, const Continuation continuation) { @@ -297,6 +304,10 @@ captured = RewriteEventForChromeVox(event, continuation); } + if (!captured) { + MaybeSendMouseEvent(event); + } + return captured ? DiscardEvent(continuation) : SendEvent(continuation, &event); }
diff --git a/ash/events/accessibility_event_rewriter.h b/ash/events/accessibility_event_rewriter.h index ee9b82ed..686342a 100644 --- a/ash/events/accessibility_event_rewriter.h +++ b/ash/events/accessibility_event_rewriter.h
@@ -56,9 +56,8 @@ void set_chromevox_capture_all_keys(bool value) { chromevox_capture_all_keys_ = value; } - void set_chromevox_send_mouse_events(bool value) { - chromevox_send_mouse_events_ = value; - } + + void set_send_mouse_events(bool value) { send_mouse_events_ = value; } void set_suspend_switch_access_key_handling(bool suspend) { suspend_switch_access_key_handling_ = suspend; @@ -89,6 +88,10 @@ // keyboard input types. void UpdateKeyboardDeviceIds(); + // Maybe sends a mouse event to be dispatched to accessibility component + // extensions. + void MaybeSendMouseEvent(const ui::Event& event); + // ui::EventRewriter: ui::EventDispatchDetails RewriteEvent( const ui::Event& event, @@ -104,8 +107,8 @@ // extensions. AccessibilityEventRewriterDelegate* delegate_ = nullptr; - // Whether to send mouse events to the ChromeVox extension. - bool chromevox_send_mouse_events_ = false; + // Whether to send mouse events to accessibility component extensions. + bool send_mouse_events_ = false; // Whether to capture all keys for ChromeVox. bool chromevox_capture_all_keys_ = false;
diff --git a/ash/events/accessibility_event_rewriter_unittest.cc b/ash/events/accessibility_event_rewriter_unittest.cc index 2d3b549e2..e586331 100644 --- a/ash/events/accessibility_event_rewriter_unittest.cc +++ b/ash/events/accessibility_event_rewriter_unittest.cc
@@ -55,8 +55,7 @@ if (capture) chromevox_captured_event_count_++; } - void DispatchMouseEventToChromeVox( - std::unique_ptr<ui::Event> event) override { + void DispatchMouseEvent(std::unique_ptr<ui::Event> event) override { chromevox_recorded_event_count_++; } void SendSwitchAccessCommand(SwitchAccessCommand command) override {} @@ -411,7 +410,7 @@ } void SendPointScanPoint(const gfx::PointF& point) override {} void DispatchKeyEventToChromeVox(std::unique_ptr<ui::Event>, bool) override {} - void DispatchMouseEventToChromeVox(std::unique_ptr<ui::Event>) override {} + void DispatchMouseEvent(std::unique_ptr<ui::Event>) override {} private: std::vector<SwitchAccessCommand> commands_;
diff --git a/ash/events/event_rewriter_controller_impl.cc b/ash/events/event_rewriter_controller_impl.cc index 243bf369..062dd4c 100644 --- a/ash/events/event_rewriter_controller_impl.cc +++ b/ash/events/event_rewriter_controller_impl.cc
@@ -108,8 +108,8 @@ accessibility_event_rewriter_->set_chromevox_capture_all_keys(capture); } -void EventRewriterControllerImpl::SetSendMouseEventsToDelegate(bool value) { - accessibility_event_rewriter_->set_chromevox_send_mouse_events(value); +void EventRewriterControllerImpl::SetSendMouseEvents(bool value) { + accessibility_event_rewriter_->set_send_mouse_events(value); } void EventRewriterControllerImpl::OnHostInitialized(
diff --git a/ash/events/event_rewriter_controller_impl.h b/ash/events/event_rewriter_controller_impl.h index 717538a..ab0a828 100644 --- a/ash/events/event_rewriter_controller_impl.h +++ b/ash/events/event_rewriter_controller_impl.h
@@ -40,7 +40,7 @@ void OnUnhandledSpokenFeedbackEvent( std::unique_ptr<ui::Event> event) override; void CaptureAllKeysForSpokenFeedback(bool capture) override; - void SetSendMouseEventsToDelegate(bool value) override; + void SetSendMouseEvents(bool value) override; // aura::EnvObserver: void OnHostInitialized(aura::WindowTreeHost* host) override;
diff --git a/ash/public/cpp/accessibility_event_rewriter_delegate.h b/ash/public/cpp/accessibility_event_rewriter_delegate.h index 17cdc0f..291be248 100644 --- a/ash/public/cpp/accessibility_event_rewriter_delegate.h +++ b/ash/public/cpp/accessibility_event_rewriter_delegate.h
@@ -28,9 +28,8 @@ virtual void DispatchKeyEventToChromeVox(std::unique_ptr<ui::Event> event, bool capture) = 0; - // Used to send mouse events to the ChromeVox extension. - virtual void DispatchMouseEventToChromeVox( - std::unique_ptr<ui::Event> event) = 0; + // Used to send mouse events to accessibility component extensions. + virtual void DispatchMouseEvent(std::unique_ptr<ui::Event> event) = 0; // Sends a command to Switch Access. virtual void SendSwitchAccessCommand(SwitchAccessCommand command) = 0;
diff --git a/ash/public/cpp/clipboard_history_controller.h b/ash/public/cpp/clipboard_history_controller.h index bf7178b..d52032d 100644 --- a/ash/public/cpp/clipboard_history_controller.h +++ b/ash/public/cpp/clipboard_history_controller.h
@@ -8,6 +8,7 @@ #include <memory> #include "ash/public/cpp/ash_public_export.h" +#include "base/observer_list_types.h" #include "ui/base/ui_base_types.h" namespace gfx { @@ -26,9 +27,20 @@ // clipboard history menu. class ASH_PUBLIC_EXPORT ClipboardHistoryController { public: + class Observer : public base::CheckedObserver { + public: + // Called when the clipboard history menu is shown. + virtual void OnClipboardHistoryMenuShown() {} + // Called when the user pastes from the clipboard history menu. + virtual void OnClipboardHistoryPasted() {} + }; + // Returns the singleton instance. static ClipboardHistoryController* Get(); + virtual void AddObserver(Observer* observer) const = 0; + virtual void RemoveObserver(Observer* observer) const = 0; + // Returns whether the clipboard history menu is able to show. virtual bool CanShowMenu() const = 0;
diff --git a/ash/public/cpp/event_rewriter_controller.h b/ash/public/cpp/event_rewriter_controller.h index aa2acfdc..4ef12bf 100644 --- a/ash/public/cpp/event_rewriter_controller.h +++ b/ash/public/cpp/event_rewriter_controller.h
@@ -51,8 +51,8 @@ // Discards key events and sends to spoken feedback when true. virtual void CaptureAllKeysForSpokenFeedback(bool capture) = 0; - // Sends mouse events to ChromeVox when true. - virtual void SetSendMouseEventsToDelegate(bool value) = 0; + // Sends mouse events to accessibility component extensions when true. + virtual void SetSendMouseEvents(bool value) = 0; protected: virtual ~EventRewriterController() {}
diff --git a/ash/public/cpp/holding_space/holding_space_constants.h b/ash/public/cpp/holding_space/holding_space_constants.h index edeb0ca5..3165d07 100644 --- a/ash/public/cpp/holding_space/holding_space_constants.h +++ b/ash/public/cpp/holding_space/holding_space_constants.h
@@ -29,10 +29,11 @@ constexpr int kHoldingSpaceCornerRadius = 8; constexpr int kHoldingSpaceDownloadsChevronIconSize = 20; constexpr int kHoldingSpaceDownloadsHeaderSpacing = 16; -constexpr int kHoldingSpacePinIconSize = 20; +constexpr int kHoldingSpaceIconSize = 20; constexpr int kHoldingSpaceRowSpacing = 8; constexpr gfx::Insets kHoldingSpaceScreenCapturePadding(8); constexpr gfx::Size kHoldingSpaceScreenCapturePinButtonSize(24, 24); +constexpr gfx::Size kHoldingSpaceScreenCapturePlayIconSize(32, 32); constexpr int kHoldingSpaceScreenCaptureSpacing = 8; constexpr gfx::Size kHoldingSpaceScreenCaptureSize(104, 80); constexpr gfx::Insets kHoldingSpaceScreenCapturesContainerPadding(8, 0);
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_be.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_be.xtb index 280c054d..bb4c513f 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_be.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_be.xtb
@@ -56,7 +56,7 @@ <translation id="2774822903829597107">Стварыць новы стол</translation> <translation id="2789868185375229787">Паменшыць маштаб на старонцы</translation> <translation id="2804480015716812239">Трымаць <ph name="ALT" /> і націснуць на спасылку</translation> -<translation id="2830827904629746450">Прыстыкаваць акно справа</translation> +<translation id="2830827904629746450">Замацаваць акно справа</translation> <translation id="2840766858109427815">Перайсці да наступнай старонкі</translation> <translation id="2872353916818027657">Змяніць асноўны манітор</translation> <translation id="2914313326123580426">Паказаць або схаваць панэль інструментаў распрацоўшчыка</translation> @@ -153,7 +153,7 @@ <translation id="666343722268997814">На вылучаным элеменце адкрыйце меню правай кнопкай мышы</translation> <translation id="6671538777808758331">Перайсці да наступнага супадзення ў пошуку</translation> <translation id="6681606577947445973"><ph name="REFRESH" /> або <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="R" /></translation> -<translation id="6690765639083431875">Прыстыкаваць акно злева</translation> +<translation id="6690765639083431875">Замацаваць акно злева</translation> <translation id="6692847073476874842">Праглядзець файл у праграме "Файлы"</translation> <translation id="671928215901716392">Экран блакіроўкі</translation> <translation id="6727005317916125192">Папярэдняя панэль</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index 8881434..a385b02 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">প্রতিকৃতি</translation> <translation id="2067602449040652523">কীবোর্ডের উজ্জ্বলতা</translation> <translation id="2078034614700056995">পরবর্তী ডেস্কে সুইচ করতে, চার আঙুল ব্যবহার করে ডানদিকে সোয়াইপ করুন</translation> +<translation id="2079504693865562705">শেল্ফে অ্যাপ লুকিয়ে রাখুন</translation> <translation id="2083190527011054446">শুভরাত্রি <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">কোনও নেটওয়ার্কে কানেক্ট করা নেই</translation> <translation id="2126242104232412123">নতুন ডেস্ক</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+ আরও <ph name="COUNT" />টি</translation> <translation id="3236488194889173876">কোনো মোবাইল নেটওয়ার্ক উপলব্ধ নেই</translation> <translation id="3249513730522716925">Window <ph name="WINDOW_TITLE" /> ডেস্ক <ph name="ACTIVE_DESK" /> থেকে ডেস্ক <ph name="TARGET_DESK" />-এ সরানো হয়েছে</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, সিগন্যাল ক্ষমতা <ph name="SIGNAL_STRENGTH" /> শতাংশ।</translation> <translation id="3255483164551725916">আপনি কি করতে পারেন?</translation> <translation id="3269597722229482060">ডানদিকের বোতামে ক্লিক করুন</translation> <translation id="3289674678944039601">অ্যাডাপ্টার দিয়ে চার্জ হচ্ছে</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">ডক করা ম্যাগনিফায়ারের জন্য আপনি কীবোর্ড শর্টকাট টিপেছেন। আপনি কি এটি চালু করতে চান?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> বন্ধ আছে।</translation> <translation id="4421231901400348175">রিমোট সহায়কের মাধ্যমে <ph name="HELPER_NAME" />-এর সাথে আপনার স্ক্রিন নিয়ন্ত্রন ভাগ করুন৷</translation> +<translation id="4427613789487709312">ডিফল্ট (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">ভলিউম</translation> <translation id="4450893287417543264">আর দেখতে চাই না</translation> <translation id="445864333228800152">শুভ সন্ধ্যা,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">ভুল পিন</translation> <translation id="5083553833479578423">অ্যাসিস্ট্যান্ট-এর আরও বৈশিষ্ট্য আনলক করুন।</translation> <translation id="5136175204352732067">বিভিন্ন কীবোর্ড কানেক্ট করা হয়েছে</translation> +<translation id="5155897006997040331">পড়ার গতি</translation> <translation id="5168181903108465623">কাস্ট ডিভাইসগুলি উপলব্ধ</translation> <translation id="5170568018924773124">ফোল্ডারে দেখান</translation> <translation id="5176318573511391780">আংশিক স্ক্রিন রেকর্ড করুন</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{১টি বিজ্ঞপ্তি}one{#টি বিজ্ঞপ্তি}other{#টি বিজ্ঞপ্তি}}</translation> <translation id="7724603315864178912">কাটুন</translation> +<translation id="7745560842763881396">শেল্ফে অ্যাপ দেখুন</translation> <translation id="7749443890790263709">সর্বাধিক সংখ্যক ডেস্ক যোগ করা হয়ে গেছে।</translation> <translation id="776344839111254542">আপডেটের বিশদ বিবরণ জানার জন্য ক্লিক করুন</translation> <translation id="7780159184141939021">স্ক্রিন ঘোরান</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index 77abf8d..eb2d2f6 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -122,7 +122,7 @@ <translation id="2050339315714019657">Uspravno</translation> <translation id="2067602449040652523">Svjetlina tipkovnice</translation> <translation id="2078034614700056995">Prevucite udesno s četiri prsta da prebacite na sljedeću radnu površinu</translation> -<translation id="2079504693865562705">Sakrij aplikacije na polici</translation> +<translation id="2079504693865562705">Sakrijte aplikacije na polici</translation> <translation id="2083190527011054446">Laku noć <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Niste povezani na mrežu</translation> <translation id="2126242104232412123">Novi sto</translation> @@ -239,7 +239,7 @@ <translation id="3226991577105957773">i još <ph name="COUNT" /></translation> <translation id="3236488194889173876">Nije dostupna mobilna mreža</translation> <translation id="3249513730522716925">Prozor <ph name="WINDOW_TITLE" /> je premješten s radne površine <ph name="ACTIVE_DESK" /> na radnu površinu <ph name="TARGET_DESK" /></translation> -<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, jačina signala <ph name="SIGNAL_STRENGTH" /> posto.</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, jačina signala je <ph name="SIGNAL_STRENGTH" /> posto.</translation> <translation id="3255483164551725916">Šta sve možete uraditi?</translation> <translation id="3269597722229482060">Desni klik</translation> <translation id="3289674678944039601">Punjenje putem adaptera</translation> @@ -716,7 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 obavještenje}one{# obavještenje}few{# obavještenja}other{# obavještenja}}</translation> <translation id="7724603315864178912">Izreži</translation> -<translation id="7745560842763881396">Prikaži aplikacije na polici</translation> +<translation id="7745560842763881396">Pregledajte aplikacije na polici</translation> <translation id="7749443890790263709">Dostigli ste maksimalni broj radnih površina.</translation> <translation id="776344839111254542">Kliknite da vidite detalje o ažuriranju</translation> <translation id="7780159184141939021">Rotiranje ekrana</translation>
diff --git a/ash/strings/ash_strings_eu.xtb b/ash/strings/ash_strings_eu.xtb index 48248a5..c4906dc9 100644 --- a/ash/strings/ash_strings_eu.xtb +++ b/ash/strings/ash_strings_eu.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Bertikala</translation> <translation id="2067602449040652523">Teklatuaren distira</translation> <translation id="2078034614700056995">Hurrengo lan-eremura joateko, pasatu lau hatz eskuinera</translation> +<translation id="2079504693865562705">Ezkutatu gailuak apalean</translation> <translation id="2083190527011054446">Gabon, <ph name="GIVEN_NAME" />:</translation> <translation id="209965399369889474">Ez zaude sarera konektatuta</translation> <translation id="2126242104232412123">Lan-eremu berria</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">eta beste <ph name="COUNT" /></translation> <translation id="3236488194889173876">Ez dago sare mugikor erabilgarririk</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> leihoa <ph name="ACTIVE_DESK" /> lan-eremutik <ph name="TARGET_DESK" /> lan-eremura eraman da</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, seinalearen indarra: % <ph name="SIGNAL_STRENGTH" />.</translation> <translation id="3255483164551725916">Zer egin dezakezu?</translation> <translation id="3269597722229482060">Egin klik eskuineko botoiarekin</translation> <translation id="3289674678944039601">Egokigailu bidez kargatzen</translation> @@ -370,6 +372,7 @@ <translation id="4389184120735010762">Lupa ainguratuaren lasterbidea sakatu duzu. Aktibatu egin nahi duzu?</translation> <translation id="4412944820643904175">Desaktibatuta dago <ph name="FEATURE_NAME" />.</translation> <translation id="4421231901400348175">Urruneko laguntzaren bidez <ph name="HELPER_NAME" /> laguntzailearekin pantailaren kontrola partekatzen.</translation> +<translation id="4427613789487709312">Lehenetsia (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Bolumena</translation> <translation id="4450893287417543264">Ez erakutsi berriro</translation> <translation id="445864333228800152">Arratsalde on:</translation> @@ -450,6 +453,7 @@ <translation id="5078796286268621944">Okerreko PIN kodea</translation> <translation id="5083553833479578423">Lortu Laguntzailea eginbidearen aukera gehiago.</translation> <translation id="5136175204352732067">Beste teklatu bat konektatu duzu</translation> +<translation id="5155897006997040331">Irakurketa-abiadura</translation> <translation id="5168181903108465623">Igorpen-gailuak erabilgarri</translation> <translation id="5170568018924773124">Erakutsi karpetan</translation> <translation id="5176318573511391780">Grabatu pantailaren zati bat</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 jakinarazpen}other{# jakinarazpen}}</translation> <translation id="7724603315864178912">Ebaki</translation> +<translation id="7745560842763881396">Bistaratu aplikazioak apalean</translation> <translation id="7749443890790263709">Gehieneko lan-eremuen kopurura iritsi zara.</translation> <translation id="776344839111254542">Egin klik eguneratzearen xehetasunak ikusteko</translation> <translation id="7780159184141939021">Biratu pantaila</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index ab46f02..60320ea 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">عمودی</translation> <translation id="2067602449040652523">روشنایی صفحهکلید</translation> <translation id="2078034614700056995">برای رفتن به میزکار بعدی، با ۴ انگشت تند به راست بکشید</translation> +<translation id="2079504693865562705">پنهان کردن برنامهها در قفسه</translation> <translation id="2083190527011054446">شببهخیر <ph name="GIVEN_NAME" />،</translation> <translation id="209965399369889474">به شبکه متصل نیست</translation> <translation id="2126242104232412123">فضای کار جدید</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+<ph name="COUNT" /> مورد دیگر</translation> <translation id="3236488194889173876">هیچ شبکه تلفن همراهی دردسترس نیست</translation> <translation id="3249513730522716925">پنجره <ph name="WINDOW_TITLE" /> از میز <ph name="ACTIVE_DESK" /> به میز <ph name="TARGET_DESK" /> منتقل شد</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" /> درصد.</translation> <translation id="3255483164551725916">What can you do? (چه کاری میتوانی انجام دهی؟)</translation> <translation id="3269597722229482060">کلیک راست</translation> <translation id="3289674678944039601">درحال شارژ ازطریق آداپتور</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">میانبر صفحهکلید مربوط به ذرهبین متصل را فشار دادید. میخواهید آن را روشن کنید؟</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> خاموش است.</translation> <translation id="4421231901400348175">همرسانی کنترل صفحهتان با <ph name="HELPER_NAME" /> از طریق راهنمایی ازراهدور.</translation> +<translation id="4427613789487709312">پیشفرض (<ph name="RATE" /> برابر)</translation> <translation id="4430019312045809116">میزان صدا</translation> <translation id="4450893287417543264">دیگر نشان داده نشود</translation> <translation id="445864333228800152">عصر بهخیر،</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">پین اشتباه</translation> <translation id="5083553833479578423">باز کردن قفل ویژگیهای بیشتری از «دستیار».</translation> <translation id="5136175204352732067">صفحهکلید دیگری متصل شد</translation> +<translation id="5155897006997040331">سرعت خواندن</translation> <translation id="5168181903108465623">دستگاههای فرستادن موجود هستند</translation> <translation id="5170568018924773124">نمایش در پوشه</translation> <translation id="5176318573511391780">ضبط کردن بخشی از صفحهنمایش</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{۱ اعلان}one{# اعلان}other{# اعلان}}</translation> <translation id="7724603315864178912">برش</translation> +<translation id="7745560842763881396">نمایش برنامهها در قفسه</translation> <translation id="7749443890790263709">به حداکثر تعداد میز رسیدهاید.</translation> <translation id="776344839111254542">برای مشاهده جزئیات بهروزرسانی کلیک کنید</translation> <translation id="7780159184141939021">چرخش صفحه</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index 787ff11..67f2078 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Portrait</translation> <translation id="2067602449040652523">Luminosité du clavier</translation> <translation id="2078034614700056995">Balayez vers la droite avec quatre doigts pour passer au bureau suivant</translation> +<translation id="2079504693865562705">Masquer les applications sur l'étagère</translation> <translation id="2083190527011054446">Bonne nuit <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Aucune connexion réseau</translation> <translation id="2126242104232412123">Nouveau bureau</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">et <ph name="COUNT" /> autres</translation> <translation id="3236488194889173876">Aucun réseau mobile accessible</translation> <translation id="3249513730522716925">La fenêtre <ph name="WINDOW_TITLE" /> a passé du bureau <ph name="ACTIVE_DESK" /> au bureau <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, force du signal : <ph name="SIGNAL_STRENGTH" /> %.</translation> <translation id="3255483164551725916">Que peux-tu faire?</translation> <translation id="3269597722229482060">Clic droit</translation> <translation id="3289674678944039601">Recharge par l'adaptateur</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Vous avez appuyé sur le raccourci-clavier de loupe en mode ancré. Voulez-vous l'activer?</translation> <translation id="4412944820643904175">La fonctionnalité <ph name="FEATURE_NAME" /> est désactivée.</translation> <translation id="4421231901400348175">Partage du contrôle de votre écran avec <ph name="HELPER_NAME" /> au moyen de l’assistance à distance.</translation> +<translation id="4427613789487709312">Par défaut (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Volume</translation> <translation id="4450893287417543264">Ne plus afficher</translation> <translation id="445864333228800152">Bonsoir,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">NIP incorrect</translation> <translation id="5083553833479578423">Déverrouillez davantage de fonctionnalités de l'Assistant Google.</translation> <translation id="5136175204352732067">Autre clavier branché</translation> +<translation id="5155897006997040331">Vitesse de lecture</translation> <translation id="5168181903108465623">Appareils de diffusion disponibles</translation> <translation id="5170568018924773124">Afficher dans le dossier</translation> <translation id="5176318573511391780">Enregistrer une partie de l'écran</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">RPV</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notification}one{# notification}many{# notifications}other{# notifications}}</translation> <translation id="7724603315864178912">Couper</translation> +<translation id="7745560842763881396">Afficher les applications sur l'étagère</translation> <translation id="7749443890790263709">Le nombre maximal de bureaux a été atteint.</translation> <translation id="776344839111254542">Cliquez pour afficher les détails de la mise à jour</translation> <translation id="7780159184141939021">Faire pivoter l'écran</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index b400f08..8a0dbe6 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Vertical</translation> <translation id="2067602449040652523">Brillo do teclado</translation> <translation id="2078034614700056995">Para cambiar ao escritorio seguinte, pasa catro dedos cara á dereita</translation> +<translation id="2079504693865562705">Ocultar as aplicacións do estante</translation> <translation id="2083190527011054446">Boas noites, <ph name="GIVEN_NAME" />!</translation> <translation id="209965399369889474">Non hai conexión á rede</translation> <translation id="2126242104232412123">Novo escritorio</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773"><ph name="COUNT" /> máis</translation> <translation id="3236488194889173876">Non hai ningunha rede móbil dispoñible</translation> <translation id="3249513730522716925">A ventá <ph name="WINDOW_TITLE" /> moveuse do escritorio <ph name="ACTIVE_DESK" /> ao escritorio <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />; intensidade do sinal: <ph name="SIGNAL_STRENGTH" /> %.</translation> <translation id="3255483164551725916">Que podes facer?</translation> <translation id="3269597722229482060">Facer clic co botón dereito</translation> <translation id="3289674678944039601">Cargando cun adaptador</translation> @@ -370,6 +372,7 @@ <translation id="4389184120735010762">Premiches o atallo de teclado para a lupa ancorada. Queres activala?</translation> <translation id="4412944820643904175">A función <ph name="FEATURE_NAME" /> está desactivada.</translation> <translation id="4421231901400348175">Control compartido da túa pantalla con <ph name="HELPER_NAME" /> a través de Asistencia remota.</translation> +<translation id="4427613789487709312">Predeterminada (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Volume</translation> <translation id="4450893287417543264">Non mostrar outra vez</translation> <translation id="445864333228800152">Bo serán!</translation> @@ -450,6 +453,7 @@ <translation id="5078796286268621944">PIN incorrecto</translation> <translation id="5083553833479578423">Desbloquea máis funcións do Asistente.</translation> <translation id="5136175204352732067">Conectouse un teclado diferente</translation> +<translation id="5155897006997040331">Velocidade de lectura</translation> <translation id="5168181903108465623">Dispositivos de emisión dispoñibles</translation> <translation id="5170568018924773124">Mostrar no cartafol</translation> <translation id="5176318573511391780">Gravar pantalla parcial</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notificación}other{# notificacións}}</translation> <translation id="7724603315864178912">Cortar</translation> +<translation id="7745560842763881396">Mostrar as aplicacións do estante</translation> <translation id="7749443890790263709">Alcanzouse o número máximo de escritorios.</translation> <translation id="776344839111254542">Fai clic para ver os detalles da actualización</translation> <translation id="7780159184141939021">Xirar a pantalla</translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb index 8fbb15d..c23457f 100644 --- a/ash/strings/ash_strings_hy.xtb +++ b/ash/strings/ash_strings_hy.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Ուղղաձիգ</translation> <translation id="2067602449040652523">Ստեղնաշարի պայծառություն</translation> <translation id="2078034614700056995">Հաջորդ աշխատասեղանին անցնելու համար չորս մատով սահեցրեք աջ</translation> +<translation id="2079504693865562705">Թաքցնել դարակի հավելվածները</translation> <translation id="2083190527011054446">Բարի գիշեր, <ph name="GIVEN_NAME" /></translation> <translation id="209965399369889474">Սարքը միացած չէ ցանցին</translation> <translation id="2126242104232412123">Նոր աշխատանքային տարածք</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">Եվս <ph name="COUNT" /> ծանուցում</translation> <translation id="3236488194889173876">Հասանելի բջջային ցանց չկա</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> պատուհանը տեղափոխվել է աշխատասեղան <ph name="ACTIVE_DESK" />-ից աշխատասեղան <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, ազդանշանի ուժգնությունը՝ <ph name="SIGNAL_STRENGTH" /> տոկոս։</translation> <translation id="3255483164551725916">Ի՞նչ կարող ես անել:</translation> <translation id="3269597722229482060">Աջ սեղմում</translation> <translation id="3289674678944039601">Լիցքավորում ադապտերի միջոցով</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Դուք սեղմել եք ամրացված խոշորացույցի դյուրանցման ստեղները: Ուզում եք միացնե՞լ այն:</translation> <translation id="4412944820643904175">«<ph name="FEATURE_NAME" />» գործառույթն անջատված է։</translation> <translation id="4421231901400348175">Էկրանի կառավարման համօգտագործում <ph name="HELPER_NAME" />-ի հետ Հեռակա օգնության միջոցով:</translation> +<translation id="4427613789487709312">Կանխադրված (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Ձայնի ուժգնություն</translation> <translation id="4450893287417543264">Այլևս ցույց չտալ</translation> <translation id="445864333228800152">Բարի երեկո,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Սխալ PIN կոդ</translation> <translation id="5083553833479578423">Օգտվեք Օգնականի այլ գործառույթներից</translation> <translation id="5136175204352732067">Այլ ստեղնաշար է միացվել</translation> +<translation id="5155897006997040331">Ընթերցման արագությունը</translation> <translation id="5168181903108465623">Առկա են հեռարձակման սարքեր</translation> <translation id="5170568018924773124">Ցույց տալ պանակում</translation> <translation id="5176318573511391780">Տեսագրել էկրանի մի մասը</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ծանուցում}one{# ծանուցում}other{# ծանուցում}}</translation> <translation id="7724603315864178912">Կտրել</translation> +<translation id="7745560842763881396">Ցուցադրել դարակի հավելվածները</translation> <translation id="7749443890790263709">Աշխատասեղանների առավելագույն թույլատրելի քանակը լրացել է:</translation> <translation id="776344839111254542">Հպեք՝ թարմացման մանրամասները դիտելու համար</translation> <translation id="7780159184141939021">Էկրանի պտտում</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index 0847fc2..97c47b42 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Skammsnið</translation> <translation id="2067602449040652523">Birtustig lyklaborðs</translation> <translation id="2078034614700056995">Strjúktu til hægri með fjórum fingrum til að skipta yfir í næsta skrifborð</translation> +<translation id="2079504693865562705">Fela forrit á hillu</translation> <translation id="2083190527011054446">Góða nótt <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Engin nettenging</translation> <translation id="2126242104232412123">Nýtt svæði</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+<ph name="COUNT" /> í viðbót</translation> <translation id="3236488194889173876">Ekkert farsímakerfi í boði</translation> <translation id="3249513730522716925">Gluggi <ph name="WINDOW_TITLE" /> færður af skjáborði <ph name="ACTIVE_DESK" /> yfir á skjáborð <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, sendistyrkur <ph name="SIGNAL_STRENGTH" /> prósent.</translation> <translation id="3255483164551725916">Hvað geturðu gert?</translation> <translation id="3269597722229482060">Hægrismella</translation> <translation id="3289674678944039601">Hleður með hleðslutæki</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Þú ýttir á flýtilykilinn fyrir stækkunargler í föstum glugga. Viltu kveikja á því?</translation> <translation id="4412944820643904175">Slökkt er á <ph name="FEATURE_NAME" />.</translation> <translation id="4421231901400348175"><ph name="HELPER_NAME" /> deilir stjórn yfir skjánum þínum í gegnum fjaraðstoð.</translation> +<translation id="4427613789487709312">Sjálfgefið (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Hljóðstyrkur</translation> <translation id="4450893287417543264">Ekki sýna þetta aftur</translation> <translation id="445864333228800152">Gott kvöld,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Rangt PIN-númer</translation> <translation id="5083553833479578423">Opnaðu fyrir fleiri eiginleika hjálparans.</translation> <translation id="5136175204352732067">Annað lyklaborð tengt</translation> +<translation id="5155897006997040331">Leshraði</translation> <translation id="5168181903108465623">Útsendingartæki í boði</translation> <translation id="5170568018924773124">Sýna í möppu</translation> <translation id="5176318573511391780">Upptaka á hluta skjás</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{Ein tilkynning}one{# tilkynning}other{# tilkynningar}}</translation> <translation id="7724603315864178912">Klippa</translation> +<translation id="7745560842763881396">Sýna forrit á hillu</translation> <translation id="7749443890790263709">Hámarksfjölda skjáborða náð.</translation> <translation id="776344839111254542">Smelltu til að skoða upplýsingar um uppfærsluna</translation> <translation id="7780159184141939021">Snúa skjánum</translation>
diff --git a/ash/strings/ash_strings_it.xtb b/ash/strings/ash_strings_it.xtb index ef6579c..1f0c9ac9 100644 --- a/ash/strings/ash_strings_it.xtb +++ b/ash/strings/ash_strings_it.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Verticale</translation> <translation id="2067602449040652523">Luminosità della tastiera</translation> <translation id="2078034614700056995">Scorri verso destra con quattro dita per passare alla scrivania successiva</translation> +<translation id="2079504693865562705">Nascondi app nello shelf</translation> <translation id="2083190527011054446">Buonanotte <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Nessuna connessione alla rete</translation> <translation id="2126242104232412123">Nuova scrivania</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+ altre <ph name="COUNT" /></translation> <translation id="3236488194889173876">Nessuna rete mobile disponibile</translation> <translation id="3249513730522716925">La finestra <ph name="WINDOW_TITLE" /> è stata spostata dalla scrivania <ph name="ACTIVE_DESK" /> alla scrivania <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, intensità segnale: <ph name="SIGNAL_STRENGTH" /> percento.</translation> <translation id="3255483164551725916">Cosa sai fare?</translation> <translation id="3269597722229482060">Clic con il pulsante destro</translation> <translation id="3289674678944039601">Carica tramite adattatore</translation> @@ -370,6 +372,7 @@ <translation id="4389184120735010762">Hai premuto la scorciatoia da tastiera per la lente d'ingrandimento ancorata. Vuoi attivarla?</translation> <translation id="4412944820643904175">La funzionalità <ph name="FEATURE_NAME" /> è disattivata.</translation> <translation id="4421231901400348175">Condividi il controllo dello schermo con <ph name="HELPER_NAME" /> tramite Assistenza remota.</translation> +<translation id="4427613789487709312">Velocità predefinita (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Volume</translation> <translation id="4450893287417543264">Non mostrare più</translation> <translation id="445864333228800152">Buonasera,</translation> @@ -450,6 +453,7 @@ <translation id="5078796286268621944">PIN errato</translation> <translation id="5083553833479578423">Sblocca altre funzioni dell'assistente.</translation> <translation id="5136175204352732067">Tastiera diversa collegata</translation> +<translation id="5155897006997040331">Velocità di lettura</translation> <translation id="5168181903108465623">Dispositivi di trasmissione disponibili</translation> <translation id="5170568018924773124">Mostra nella cartella</translation> <translation id="5176318573511391780">Registra schermo parziale</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 notifica}other{# notifiche}}</translation> <translation id="7724603315864178912">Taglia</translation> +<translation id="7745560842763881396">Mostra app nello shelf</translation> <translation id="7749443890790263709">Numero massimo di scrivanie raggiunto.</translation> <translation id="776344839111254542">Fai clic per visualizzare i dettagli dell'aggiornamento</translation> <translation id="7780159184141939021">Ruota lo schermo</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 4563991..2f45c12f 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Портреттік</translation> <translation id="2067602449040652523">Пернетақта ашықтығы</translation> <translation id="2078034614700056995">Келесі жұмыс үстеліне ауысу үшін төрт саусақпен оңға сырғытыңыз.</translation> +<translation id="2079504693865562705">Сөредегі қолданбаларды жасыру</translation> <translation id="2083190527011054446">Қайырлы түн, <ph name="GIVEN_NAME" />!</translation> <translation id="209965399369889474">Желіге жалғанбаған.</translation> <translation id="2126242104232412123">Жаңа жұмыс үстелі</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">Тағы <ph name="COUNT" /></translation> <translation id="3236488194889173876">Ешқандай мобильдік желі қолжетімді емес</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> терезесі <ph name="ACTIVE_DESK" /> үстелінен <ph name="TARGET_DESK" /> үстеліне көшірілді.</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, сигнал күші <ph name="SIGNAL_STRENGTH" /> пайыз.</translation> <translation id="3255483164551725916">Сен не істей аласың?</translation> <translation id="3269597722229482060">Тінтуірдің оң жақ түймесін басу</translation> <translation id="3289674678944039601">Адаптер арқылы зарядталып жатыр.</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Бекітілген ұлғайтқышқа арналған пернелер тіркесімін бастыңыз. Оны қосқыңыз келе ме?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> өшірулі.</translation> <translation id="4421231901400348175">Remote Assistance арқылы <ph name="HELPER_NAME" /> пайдаланушысымен экранды бөлісіп басқару.</translation> +<translation id="4427613789487709312">Әдепкі (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Дыбыс деңгейі</translation> <translation id="4450893287417543264">Қайта көрсетілмесін</translation> <translation id="445864333228800152">Қайырлы кеш!</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">PIN коды дұрыс емес</translation> <translation id="5083553833479578423">Басқа да Assistant мүмкіндіктерін ашыңыз.</translation> <translation id="5136175204352732067">Басқа пернетақта жалғанды</translation> +<translation id="5155897006997040331">Оқу жылдамдығы</translation> <translation id="5168181903108465623">Трансляциялау құрылғылары қолжетімді</translation> <translation id="5170568018924773124">Қалтада көрсету</translation> <translation id="5176318573511391780">Экранның бір бөлігін жазу</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 хабарландыру}other{# хабарландыру}}</translation> <translation id="7724603315864178912">Қиып алу</translation> +<translation id="7745560842763881396">Сөредегі қолданбаларды көрсету</translation> <translation id="7749443890790263709">Жұмыс үстелдерінің максималды санына жетті.</translation> <translation id="776344839111254542">Жаңарту мәліметтерін қарау үшін басыңыз</translation> <translation id="7780159184141939021">Экранды бұру</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb index c34f22d..7d18c53f 100644 --- a/ash/strings/ash_strings_kn.xtb +++ b/ash/strings/ash_strings_kn.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">ಪೋರ್ಟ್ರೇಟ್</translation> <translation id="2067602449040652523">ಕೀಬೋರ್ಡ್ ಪ್ರಖರತೆ</translation> <translation id="2078034614700056995">ಮುಂದಿನ ಡೆಸ್ಕ್ಗೆ ಬದಲಿಸಲು, ನಾಲ್ಕು ಬೆರಳುಗಳಿಂದ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ</translation> +<translation id="2079504693865562705">ಶೆಲ್ಫ್ನಲ್ಲಿ ಆ್ಯಪ್ಗಳನ್ನು ಮರೆಮಾಡಿ</translation> <translation id="2083190527011054446">ಶುಭ ರಾತ್ರಿ <ph name="GIVEN_NAME" /> ಅವರೇ,</translation> <translation id="209965399369889474">ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ</translation> <translation id="2126242104232412123">ಹೊಸ ಡೆಸ್ಕ್</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+<ph name="COUNT" /> ಹೆಚ್ಚು</translation> <translation id="3236488194889173876">ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> ವಿಂಡೋವನ್ನು <ph name="ACTIVE_DESK" /> ಡೆಸ್ಕ್ನಿಂದ<ph name="TARGET_DESK" /> ಡೆಸ್ಕ್ಗೆ ಸರಿಸಲಾಗಿದೆ</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ ಶೇಕಡಾ <ph name="SIGNAL_STRENGTH" />.</translation> <translation id="3255483164551725916">ನೀವೇನು ಮಾಡಬಲ್ಲಿರಿ?</translation> <translation id="3269597722229482060">ಬಲ-ಕ್ಲಿಕ್</translation> <translation id="3289674678944039601">ಅಡಾಪ್ಟರ್ ಮೂಲಕ ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">ನೀವು ಡಾಕ್ ಮಾಡಿದ ವರ್ಧಕದ ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ ಒತ್ತಿದ್ದೀರಿ. ನೀವು ಅದನ್ನು ಆನ್ ಮಾಡಲು ಬಯಸುವಿರಾ?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ಆಫ್ ಆಗಿದೆ.</translation> <translation id="4421231901400348175">ರಿಮೋಟ್ ಸಹಾಯದ ಮೂಲಕ <ph name="HELPER_NAME" /> ಜೊತೆಗೆ ನಿಮ್ಮ ಪರದೆಯ ನಿಯಂತ್ರಣವನ್ನು ಹಂಚಲಾಗುತ್ತಿದೆ.</translation> +<translation id="4427613789487709312">ಡೀಫಾಲ್ಟ್ (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">ವಾಲ್ಯೂಮ್</translation> <translation id="4450893287417543264">ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ</translation> <translation id="445864333228800152">ಶುಭ ಸಂಜೆ,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">ತಪ್ಪಾದ PIN</translation> <translation id="5083553833479578423">ಇನ್ನಷ್ಟು ಅಸಿಸ್ಟೆಂಟ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ.</translation> <translation id="5136175204352732067">ವಿವಿಧ ಕೀಬೋರ್ಡ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ</translation> +<translation id="5155897006997040331">ರೀಡಿಂಗ್ ಸ್ಪೀಡ್</translation> <translation id="5168181903108465623">ಬಿತ್ತರಿಸುವಿಕೆಯ ಸಾಧನಗಳು ಲಭ್ಯವಿದೆ</translation> <translation id="5170568018924773124">ಫೋಲ್ಡರ್ನಲ್ಲಿ ತೋರಿಸಿ</translation> <translation id="5176318573511391780">ಭಾಗಶಃ ಸ್ಕ್ರೀನ್ ಅನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ಅಧಿಸೂಚನೆ}one{# ಅಧಿಸೂಚನೆಗಳು}other{# ಅಧಿಸೂಚನೆಗಳು}}</translation> <translation id="7724603315864178912">ಕತ್ತರಿಸು</translation> +<translation id="7745560842763881396">ಶೆಲ್ಫ್ನಲ್ಲಿ ಆ್ಯಪ್ಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="7749443890790263709">ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಡೆಸ್ಕ್ಗಳನ್ನು ತಲುಪಲಾಗಿದೆ.</translation> <translation id="776344839111254542">ಅಪ್ಡೇಟ್ ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation> <translation id="7780159184141939021">ಪರದೆಯನ್ನು ತಿರುಗಿಸಿ</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb index cff62e8..b94a2e94 100644 --- a/ash/strings/ash_strings_ky.xtb +++ b/ash/strings/ash_strings_ky.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Тигинен</translation> <translation id="2067602449040652523">Баскычтоптун жарыктыгы</translation> <translation id="2078034614700056995">Кийинки иш тактага которулуу үчүн экранды төрт манжаңыз менен оңго сүрүп коюңуз</translation> +<translation id="2079504693865562705">Текчедеги колдонмолорду жашыруу</translation> <translation id="2083190527011054446">Түнүңүз бейпил болсун, <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Тармакка туташпай турат</translation> <translation id="2126242104232412123">Жаңы иш такта</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+ дагы <ph name="COUNT" /></translation> <translation id="3236488194889173876">Бир да мобилдик тармак жок</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> терезеси <ph name="ACTIVE_DESK" /> иш тактасынан <ph name="TARGET_DESK" /> иш тактасына жылдырылды</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, Сигналдын күчү <ph name="SIGNAL_STRENGTH" /> пайыз.</translation> <translation id="3255483164551725916">Эмне кыла аласыз?</translation> <translation id="3269597722229482060">Оң баскычын чыкылдатуу</translation> <translation id="3289674678944039601">Адаптер аркылуу кубатталууда</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Жалгаштырылган лупаны колдонуу үчүн тез баскычты бастыңыз. Ал күйгүзүлсүнбү?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> өчүк.</translation> <translation id="4421231901400348175">Алыскы жардамчы аркылуу экраныңыздын көзөмөлү <ph name="HELPER_NAME" /> менен бөлүшүүдө.</translation> +<translation id="4427613789487709312">Демейки (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Үндүн катуулугу</translation> <translation id="4450893287417543264">Экинчи көрүнбөсүн</translation> <translation id="445864333228800152">Кутмандуу кечиңиз менен,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Туура эмес PIN</translation> <translation id="5083553833479578423">Жардамчынын башка функцияларын иштетиңиз.</translation> <translation id="5136175204352732067">Башка баскычтоп туташтырылды</translation> +<translation id="5155897006997040331">Окуу ылдамдыгы</translation> <translation id="5168181903108465623">Тышкы экранга чыгаруу түзмөктөрү жеткиликтүү</translation> <translation id="5170568018924773124">Куржунда көрсөтүү</translation> <translation id="5176318573511391780">Экрандын жарымын видеого жаздырып алуу</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 билдирме}other{# билдирме}}</translation> <translation id="7724603315864178912">Кесүү</translation> +<translation id="7745560842763881396">Текчедеги колдонмолорду көрсөтүү</translation> <translation id="7749443890790263709">Иш такталардын саны эң жогорку чегине жетти.</translation> <translation id="776344839111254542">Жаңыртуунун чоо-жайын көрүү үчүн чыкылдатыңыз</translation> <translation id="7780159184141939021">Экранды буруу</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index 8e54350..8f6bc982 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -16,7 +16,7 @@ <translation id="109942774857561566">Би уйдаж байна</translation> <translation id="1104084341931202936">Нэвтрэлтийн тохиргоог харуулах</translation> <translation id="1104621072296271835">Таны төхөөрөмжүүд хамтдаа илүү сайн ажилладаг</translation> -<translation id="1119348796022671382">Загвартай хоршсон өнгөний горим нь харагдах байдлыг бага зэрэг өнгөтэй болгохын тулд ханын зургаас гаргаж авсан өнгийг ашигладаг.</translation> +<translation id="1119348796022671382">Загвартай хоршсон өнгөний горим нь харагдах байдлыг бага зэрэг өнгөтэй болгохын тулд дэлгэцийн зургаас гаргаж авсан өнгийг ашигладаг.</translation> <translation id="112308213915226829">Autohide shelf</translation> <translation id="1153356358378277386">Хослуулсан төхөөрөмж</translation> <translation id="1175572348579024023">Гүйлгэх</translation> @@ -77,7 +77,7 @@ <translation id="1611993646327628135">Асаалттай</translation> <translation id="1632985212731562677">Сэлгүүрийг Тохиргоо > Хандалт хэсэгт идэвхгүй болгох боломжтой.</translation> <translation id="1654477262762802994">Дуут асуулга эхлүүлэх</translation> -<translation id="1667964833127753507">Завсрын өнгөний горим нь ханын зургаас гаргаж авсан өнгийг ашигладаггүй тул завсрын цайвар эсвэл бараан өнгөөр орлуулдаг.</translation> +<translation id="1667964833127753507">Завсрын өнгөний горим нь дэлгэцийн зургаас гаргаж авсан өнгийг ашигладаггүй тул завсрын цайвар эсвэл бараан өнгөөр орлуулдаг.</translation> <translation id="1677472565718498478"><ph name="TIME" /> үлдсэн</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> холбогдоогүй.</translation> <translation id="1698080062160024910"><ph name="TOTAL_TIME" /> цаг хэмжигч · <ph name="LABEL" /></translation>
diff --git a/ash/strings/ash_strings_si.xtb b/ash/strings/ash_strings_si.xtb index 1ead90b..d6c0c69 100644 --- a/ash/strings/ash_strings_si.xtb +++ b/ash/strings/ash_strings_si.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">සිරස්</translation> <translation id="2067602449040652523">යතුරු පුවරුවේ දීප්තිය</translation> <translation id="2078034614700056995">ඊළඟ මේසයට මාරු වීමට ඇඟිලි හතරකින් දකුණට ස්වයිප් කරන්න</translation> +<translation id="2079504693865562705">රාක්කය තුළ යෙදුම් සඟවන්න</translation> <translation id="2083190527011054446">සුබ රාත්රියක් <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">ජාලයට සම්බන්ධ වී නැත</translation> <translation id="2126242104232412123">නව මේසය</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">තවත් +<ph name="COUNT" /></translation> <translation id="3236488194889173876">ලබා ගත හැකි ජංගම ජාල නොමැත</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> කවුළුව <ph name="ACTIVE_DESK" /> මේසයෙන් <ph name="TARGET_DESK" /> මේසයට ගියා</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, සංඥා ප්රබලතාව සියයට <ph name="SIGNAL_STRENGTH" />.</translation> <translation id="3255483164551725916">ඔබට කළ හැක්කේ කුමක්ද?</translation> <translation id="3269597722229482060">දකුණු ක්ලික් කිරීම</translation> <translation id="3289674678944039601">ඇඩැප්ටරය හරහා ආරෝපණය වෙමින්</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">ඔබ ඩොක් කළ විශාලකය සඳහා යතුරුපුවරු කෙටිමඟ ඔබා ඇත. ඔබට එය සක්රීය කළ යුතුද?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ක්රියාවිරහිතයි.</translation> <translation id="4421231901400348175">දුරස්ථ සහයක මගින් ඔබේ තිරයේ පාලනය <ph name="HELPER_NAME" /> සමඟ බෙදාගනී.</translation> +<translation id="4427613789487709312">පෙරනිමි (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">ශබ්ද තීව්රතාවය</translation> <translation id="4450893287417543264">නැවත නොපෙන්වන්න</translation> <translation id="445864333228800152">සුබ සන්ධ්යාවක්,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">වැරදි PIN</translation> <translation id="5083553833479578423">තව සහායක අංග අගුලු හරින්න</translation> <translation id="5136175204352732067">වෙනස් යතුරු පුවරුවක් සම්බන්ධ කර ඇත</translation> +<translation id="5155897006997040331">කියවීමේ වේගය</translation> <translation id="5168181903108465623">විකාශ උපාංග ලබා ගත හැකිය</translation> <translation id="5170568018924773124">ෆෝල්ඩරයේ පෙන්වන්න</translation> <translation id="5176318573511391780">අර්ධ තිරය පටිගත කරන්න</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{දැනුම්දීම් 1ක්}one{දැනුම්දීම් #ක්}other{දැනුම්දීම් #ක්}}</translation> <translation id="7724603315864178912">කැපීම</translation> +<translation id="7745560842763881396">රාක්කය තුළ යෙදුම් පෙන්වන්න</translation> <translation id="7749443890790263709">උපරිම මේස ගණන ළඟා විය.</translation> <translation id="776344839111254542">යාවත්කාලීන විස්තර බැලීමට ක්ලික් කරන්න</translation> <translation id="7780159184141939021">තිරය කරකවන්න</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 8160ac7..817cfb4 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Na výšku</translation> <translation id="2067602449040652523">Jas klávesnice</translation> <translation id="2078034614700056995">Na ďalšiu plochu prepnete potiahnutím štyrmi prstami doprava</translation> +<translation id="2079504693865562705">Skryť aplikácie na poličke</translation> <translation id="2083190527011054446">Dobrú noc, <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Nemáte pripojenie k sieti</translation> <translation id="2126242104232412123">Nová plocha</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">a ďalšie (<ph name="COUNT" />)</translation> <translation id="3236488194889173876">Nie je k dispozícii žiadna mobilná sieť</translation> <translation id="3249513730522716925">Okno <ph name="WINDOW_TITLE" /> bolo presunuté z plochy <ph name="ACTIVE_DESK" /> na plochu <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, sila signálu: <ph name="SIGNAL_STRENGTH" /> %.</translation> <translation id="3255483164551725916">Čo dokážeš?</translation> <translation id="3269597722229482060">Kliknúť pravým tlačidlom</translation> <translation id="3289674678944039601">Nabíja sa cez adaptér</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Stlačili ste klávesovú skratku ukotvenej lupy. Chcete ju zapnúť?</translation> <translation id="4412944820643904175">Funkcia <ph name="FEATURE_NAME" /> je vypnutá.</translation> <translation id="4421231901400348175">Ovládanie obrazovky sa prostredníctvom Vzdialenej pomoci zdieľa s používateľom <ph name="HELPER_NAME" />.</translation> +<translation id="4427613789487709312">Predvolené (<ph name="RATE" />×)</translation> <translation id="4430019312045809116">Hlasitosť</translation> <translation id="4450893287417543264">Nabudúce nezobrazovať</translation> <translation id="445864333228800152">Dobrý večer,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Nesprávny kód PIN</translation> <translation id="5083553833479578423">Odblokujte ďalšie funkcie Asistenta.</translation> <translation id="5136175204352732067">Bola pripojená iná klávesnica</translation> +<translation id="5155897006997040331">Rýchlosť čítania</translation> <translation id="5168181903108465623">Dostupné zariadenia na prenos</translation> <translation id="5170568018924773124">Zobraziť v priečinku</translation> <translation id="5176318573511391780">Nahrať časť obrazovky</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 upozornenie}few{# upozornenia}many{# notifications}other{# upozornení}}</translation> <translation id="7724603315864178912">Vystrihnúť</translation> +<translation id="7745560842763881396">Zobraziť aplikácie na poličke</translation> <translation id="7749443890790263709">Dosiahli ste maximálny počet pracovných prostredí.</translation> <translation id="776344839111254542">Kliknutím zobrazíte podrobnosti o aktualizácii</translation> <translation id="7780159184141939021">Otáčanie obrazovky</translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb index 349be88..d308502 100644 --- a/ash/strings/ash_strings_sq.xtb +++ b/ash/strings/ash_strings_sq.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Portret (vertikal</translation> <translation id="2067602449040652523">Ndriçimi i tastierës</translation> <translation id="2078034614700056995">Rrëshqit shpejt djathtas me katër gishta për të kaluar te tavolina tjetër e punës</translation> +<translation id="2079504693865562705">Fshih aplikacionet në raft</translation> <translation id="2083190527011054446">Natën e mirë <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Nuk është lidhur në rrjet</translation> <translation id="2126242104232412123">Tavolinë e re</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+<ph name="COUNT" /> më shumë</translation> <translation id="3236488194889173876">Nuk disponohet asnjë rrjet celular</translation> <translation id="3249513730522716925">Dritarja <ph name="WINDOW_TITLE" /> u zhvendos nga tavolina e punës <ph name="ACTIVE_DESK" /> në tavolinën e punës <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, fuqia e sinjalit <ph name="SIGNAL_STRENGTH" /> për qind.</translation> <translation id="3255483164551725916">Çfarë mund të bësh?</translation> <translation id="3269597722229482060">Kliko me butonin djathtas</translation> <translation id="3289674678944039601">Po karikohet përmes përshtatësit</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Ke shtypur shkurtoren e tastierës për zmadhuesin me puthitje. Dëshiron ta aktivizosh?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> është joaktive.</translation> <translation id="4421231901400348175">Po ndan kontrollin e ekranit me <ph name="HELPER_NAME" /> përmes "Ndihmës në distancë".</translation> +<translation id="4427613789487709312">Parazgjedhja (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Volumi</translation> <translation id="4450893287417543264">Mos e shfaq përsëri</translation> <translation id="445864333228800152">Mirëmbrëma,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Kod i pasaktë PIN</translation> <translation id="5083553833479578423">Shkyç më shumë funksione të "Asistentit".</translation> <translation id="5136175204352732067">Është lidhur një tastierë tjetër</translation> +<translation id="5155897006997040331">Shpejtësia e leximit</translation> <translation id="5168181903108465623">Pajisjet e transmetimit janë të disponueshme</translation> <translation id="5170568018924773124">Shfaq në dosje</translation> <translation id="5176318573511391780">Regjistro ekranin e pjesshëm</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 njoftim}other{# njoftime}}</translation> <translation id="7724603315864178912">Prite</translation> +<translation id="7745560842763881396">Shfaq aplikacionet në raft</translation> <translation id="7749443890790263709">Është arritur numri maksimal i tavolinave të punës.</translation> <translation id="776344839111254542">Kliko për të parë detajet e përditësimit</translation> <translation id="7780159184141939021">Rrotullo ekranin</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index 9b2dcd2..065cc59a 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Stående</translation> <translation id="2067602449040652523">Ljusstyrka för tangentbordet</translation> <translation id="2078034614700056995">Svep till höger med fyra fingrar för att byta till nästa skrivbord</translation> +<translation id="2079504693865562705">Dölj appar på hyllan</translation> <translation id="2083190527011054446">Hej <ph name="GIVEN_NAME" />!</translation> <translation id="209965399369889474">Ingen nätverksanslutning</translation> <translation id="2126242104232412123">Ny arbetsyta</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">och <ph name="COUNT" /> till</translation> <translation id="3236488194889173876">Det finns inget tillgängligt mobilnätverk</translation> <translation id="3249513730522716925">Fönstret <ph name="WINDOW_TITLE" /> flyttades från skrivbordet <ph name="ACTIVE_DESK" /> till skrivbordet <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, signalstyrka <ph name="SIGNAL_STRENGTH" /> procent.</translation> <translation id="3255483164551725916">Vad kan du göra?</translation> <translation id="3269597722229482060">Högerklicka</translation> <translation id="3289674678944039601">Laddas via adapter</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Du tryckte på kortkommandot för dockad skärmförstoring. Vill du aktivera funktionen?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> är av.</translation> <translation id="4421231901400348175">Dela kontroll över skärmen med <ph name="HELPER_NAME" /> via Fjärrhjälp.</translation> +<translation id="4427613789487709312">Standard (<ph name="RATE" /> ggr)</translation> <translation id="4430019312045809116">Volym</translation> <translation id="4450893287417543264">Visa inte igen</translation> <translation id="445864333228800152">Hej!</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Fel pinkod</translation> <translation id="5083553833479578423">Lås upp fler funktioner för Assistent</translation> <translation id="5136175204352732067">Ett annat tangentbord har anslutits</translation> +<translation id="5155897006997040331">Läshastighet</translation> <translation id="5168181903108465623">Överföringsenheter finns tillgängliga</translation> <translation id="5170568018924773124">Visa i mapp</translation> <translation id="5176318573511391780">Spela in en del av skärmen</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 avisering}other{# aviseringar}}</translation> <translation id="7724603315864178912">Klipp ut</translation> +<translation id="7745560842763881396">Visa appar på hyllan</translation> <translation id="7749443890790263709">Det högsta tillåtna antalet skrivbord har uppnåtts.</translation> <translation id="776344839111254542">Klicka här om du vill se mer information om uppdateringen</translation> <translation id="7780159184141939021">Rotera skärmen</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index bf74f69..7932ccc 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">పోర్ట్రెయిట్</translation> <translation id="2067602449040652523">కీబోర్డ్ ప్రకాశం</translation> <translation id="2078034614700056995">తర్వాతి డెస్క్కు మారడానికి నాలుగు వేళ్లతో కుడి వైపు స్వైప్ చేయండి</translation> +<translation id="2079504693865562705">షెల్ఫ్లో ఉన్న యాప్లను దాచు</translation> <translation id="2083190527011054446">శుభరాత్రి <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">నెట్వర్క్కు కనెక్ట్ కాలేదు</translation> <translation id="2126242104232412123">కొత్త డెస్క్</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+మరో <ph name="COUNT" /></translation> <translation id="3236488194889173876">మొబైల్ నెట్వర్క్ ఏదీ అందుబాటులో లేదు</translation> <translation id="3249513730522716925">"<ph name="WINDOW_TITLE" />" విండో అన్నది "<ph name="ACTIVE_DESK" />" డెస్క్ నుండి "<ph name="TARGET_DESK" />" డెస్క్కు తరలించబడింది</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, సిగ్నల్ సామర్థ్యం <ph name="SIGNAL_STRENGTH" /> శాతం.</translation> <translation id="3255483164551725916">నువ్వు ఏమి చేయగలవు?</translation> <translation id="3269597722229482060">కుడి క్లిక్</translation> <translation id="3289674678944039601">అడాప్టర్ ద్వారా ఛార్జ్ అవుతోంది</translation> @@ -370,6 +372,7 @@ <translation id="4389184120735010762">మీరు డాక్ చేసిన మాగ్నిఫైయర్ కోసం కీబోర్డ్ షార్ట్కట్ను నొక్కారు. మీరు దీన్ని ఆన్ చేయాలనుకుంటున్నారా?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> ఆఫ్లో ఉంది.</translation> <translation id="4421231901400348175">రిమోట్ సహాయం విధానంలో మీ స్క్రీన్ నియంత్రణ <ph name="HELPER_NAME" />కి భాగస్వామ్యం చేయబడుతోంది.</translation> +<translation id="4427613789487709312">ఆటోమేటిక్ (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">వాల్యూమ్</translation> <translation id="4450893287417543264">మళ్లీ చూపవద్దు</translation> <translation id="445864333228800152">గుడ్ ఈవెనింగ్,</translation> @@ -450,6 +453,7 @@ <translation id="5078796286268621944"> సరి కానటువంటి PIN</translation> <translation id="5083553833479578423">మరిన్ని Assistant ఫీచర్లను అన్లాక్ చేయండి.</translation> <translation id="5136175204352732067">వేరే కీబోర్డ్ కనెక్ట్ చేయబడింది</translation> +<translation id="5155897006997040331">రీడింగ్ వేగం</translation> <translation id="5168181903108465623">Cast పరికరాలు అందుబాటులో ఉన్నాయి</translation> <translation id="5170568018924773124">ఫోల్డర్లో చూపించు</translation> <translation id="5176318573511391780">పాక్షిక స్క్రీన్ను రికార్డ్ చేయండి</translation> @@ -713,6 +717,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 నోటిఫికేషన్}other{# నోటిఫికేషన్లు}}</translation> <translation id="7724603315864178912">కత్తిరించు</translation> +<translation id="7745560842763881396">యాప్లను షెల్ఫ్లో చూపించు</translation> <translation id="7749443890790263709">గరిష్ట డెస్క్ల సంఖ్యను చేరుకుంది.</translation> <translation id="776344839111254542">అప్డేట్ వివరాలను వీక్షించడం కోసం క్లిక్ చేయండి</translation> <translation id="7780159184141939021">స్క్రీన్ను తిప్పండి</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index ac99e867..ffb455884 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Bo‘yiga</translation> <translation id="2067602449040652523">Klaviatura yorqinligi</translation> <translation id="2078034614700056995">Keyingi ish stoliga qaytish uchun 4 ta barmoq bilan oʻngga suring</translation> +<translation id="2079504693865562705">Ilovalar ishga tushirish panelida chiqmasin</translation> <translation id="2083190527011054446">Xayrli tun, <ph name="GIVEN_NAME" /></translation> <translation id="209965399369889474">Tarmoqqa ulanmagan</translation> <translation id="2126242104232412123">Yangi ish stoli</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">yana <ph name="COUNT" /> ta</translation> <translation id="3236488194889173876">Birorta ham mobil tarmoq mavjud emas</translation> <translation id="3249513730522716925"><ph name="WINDOW_TITLE" /> oynasi <ph name="ACTIVE_DESK" /> ish stolidan <ph name="TARGET_DESK" /> ish stoliga koʻchirildi</translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, Signal darajasi: <ph name="SIGNAL_STRENGTH" /> %.</translation> <translation id="3255483164551725916">Assistent nimalarga qodir?</translation> <translation id="3269597722229482060">Oʻng klik</translation> <translation id="3289674678944039601">Adapter orqali quvvat olmoqda</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Qadalgan lupa tezkor havolasini bosdingiz. Ishga tushirilsinmi?</translation> <translation id="4412944820643904175"><ph name="FEATURE_NAME" /> yoqilmagan</translation> <translation id="4421231901400348175">Ekraningiz boshqaruvini masofaviy yordamchi orqali <ph name="HELPER_NAME" /> bilan ulashish.</translation> +<translation id="4427613789487709312">Standart (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Hajmi</translation> <translation id="4450893287417543264">Boshqa ko‘rsatilmasin</translation> <translation id="445864333228800152">Xayrli kech,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Noto‘g‘ri PIN-kod</translation> <translation id="5083553833479578423">Assistentning boshqa imkoniyatlarini oching.</translation> <translation id="5136175204352732067">Boshqa klaviatura ulandi</translation> +<translation id="5155897006997040331">Oʻqish tezligi</translation> <translation id="5168181903108465623">Translatsiya qurilmalari mavjud</translation> <translation id="5170568018924773124">&Jildda ko‘rsatish</translation> <translation id="5176318573511391780">Ekran qismini yozib olish</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 ta bildirishnoma}other{# ta bildirishnoma}}</translation> <translation id="7724603315864178912">Qirqish</translation> +<translation id="7745560842763881396">Ilovalarni ishga tushirish panelida chiqarish</translation> <translation id="7749443890790263709">Ish stollari maksimal miqdorda.</translation> <translation id="776344839111254542">Yangilanish tafsilotlarini ko‘rish uchun bosing</translation> <translation id="7780159184141939021">Ekranni burish</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 138be42..9e081d5 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -122,6 +122,7 @@ <translation id="2050339315714019657">Ukuma ngobude</translation> <translation id="2067602449040652523">Ukukhanya kwekhibhodi</translation> <translation id="2078034614700056995">Swayiphela ngakwesokudla ngeminwe emine ukuze ushintshele kudeski elilandelayo</translation> +<translation id="2079504693865562705">Fihla izinhlelo zokusebenza kushelufu</translation> <translation id="2083190527011054446">Ulale kahle <ph name="GIVEN_NAME" />,</translation> <translation id="209965399369889474">Akuxhumekile kunethiwekhi</translation> <translation id="2126242104232412123">Ideski elisha</translation> @@ -238,6 +239,7 @@ <translation id="3226991577105957773">+<ph name="COUNT" /> okuningi</translation> <translation id="3236488194889173876">Ayikho inethiwekhi yeselule etholakalayo</translation> <translation id="3249513730522716925">Iwindi <ph name="WINDOW_TITLE" /> lihanjisiwe kusuka kudeski <ph name="ACTIVE_DESK" /> kuya kudeski <ph name="TARGET_DESK" /></translation> +<translation id="3252068179161473151"><ph name="WIRELESS_PROVIDER" />, Amandla esignali angamaphesenti angu-<ph name="SIGNAL_STRENGTH" />.</translation> <translation id="3255483164551725916">Yini ongayenza?</translation> <translation id="3269597722229482060">Ukuchofoza Kwesokudla</translation> <translation id="3289674678944039601">Ishaja nge-adaptha</translation> @@ -369,6 +371,7 @@ <translation id="4389184120735010762">Ucindezele isinqamuleli sekhibhodi sesikhulisi esidokhiwe. Uyafuna ukusivula?</translation> <translation id="4412944820643904175">I-<ph name="FEATURE_NAME" /> ivaliwe.</translation> <translation id="4421231901400348175">Ukulawula ukwabelana kwesikrini sakho nge-<ph name="HELPER_NAME" /> nge-Remote Assistance.</translation> +<translation id="4427613789487709312">Okuzenzakalelayo (<ph name="RATE" />x)</translation> <translation id="4430019312045809116">Ivolumu</translation> <translation id="4450893287417543264">Ungabonisi futhi</translation> <translation id="445864333228800152">Sawubona,</translation> @@ -449,6 +452,7 @@ <translation id="5078796286268621944">Iphinikhodi engalungile</translation> <translation id="5083553833479578423">Vula izici eziningi zomsizi.</translation> <translation id="5136175204352732067">Ikhibhodi ehlukile ixhunyiwe</translation> +<translation id="5155897006997040331">Isivinini sokufunda</translation> <translation id="5168181903108465623">Amadivayisi wabalingisi ayatholakala</translation> <translation id="5170568018924773124">Bonisa kufolda</translation> <translation id="5176318573511391780">Rekhoda ingxenye yesikrini</translation> @@ -712,6 +716,7 @@ <translation id="7705524343798198388">I-VPN</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 isaziso}one{# izaziso}other{# izaziso}}</translation> <translation id="7724603315864178912">Sika</translation> +<translation id="7745560842763881396">Bonisa izinhlelo zokusebenza kushelufu</translation> <translation id="7749443890790263709">Inombolo enkulu yamadeski ifinyelelwe.</translation> <translation id="776344839111254542">Chofoza ukuze ubuke imininingwane yokubuyekeza</translation> <translation id="7780159184141939021">Zungezisa isikrini</translation>
diff --git a/ash/system/holding_space/holding_space_item_chip_view.cc b/ash/system/holding_space/holding_space_item_chip_view.cc index 309fb79..7fa943e0 100644 --- a/ash/system/holding_space/holding_space_item_chip_view.cc +++ b/ash/system/holding_space/holding_space_item_chip_view.cc
@@ -53,7 +53,7 @@ cc::PaintFlags flags; flags.setAntiAlias(false); - gfx::Point gradient_end(size.width() - kHoldingSpacePinIconSize, 0); + gfx::Point gradient_end(size.width() - kHoldingSpaceIconSize, 0); gfx::Point gradient_start( gradient_end.x() - kHoldingSpaceChipLabelMaskGradientWidth, gradient_end.y());
diff --git a/ash/system/holding_space/holding_space_item_screen_capture_view.cc b/ash/system/holding_space/holding_space_item_screen_capture_view.cc index ab696898..7513fc7 100644 --- a/ash/system/holding_space/holding_space_item_screen_capture_view.cc +++ b/ash/system/holding_space/holding_space_item_screen_capture_view.cc
@@ -36,6 +36,9 @@ UpdateImage(); + if (item->type() == HoldingSpaceItem::Type::kScreenRecording) + AddPlayIcon(); + views::View* pin_button_container = AddChildView(std::make_unique<views::View>()); @@ -65,6 +68,27 @@ SchedulePaint(); } +void HoldingSpaceItemScreenCaptureView::AddPlayIcon() { + views::View* play_icon_container = + AddChildView(std::make_unique<views::View>()); + + auto* layout = + play_icon_container->SetLayoutManager(std::make_unique<views::BoxLayout>( + views::BoxLayout::Orientation::kHorizontal, + kHoldingSpaceScreenCapturePadding)); + layout->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kCenter); + layout->set_cross_axis_alignment( + views::BoxLayout::CrossAxisAlignment::kCenter); + + views::View* play_icon = CreatePlayIcon(play_icon_container); + + // Create contrasting background for the play icon. + play_icon->SetBackground(views::CreateRoundedRectBackground( + HoldingSpaceColorProvider::Get()->GetBackgroundColor(), + kHoldingSpaceScreenCapturePlayIconSize.width() / 2)); + play_icon->SetPreferredSize(kHoldingSpaceScreenCapturePlayIconSize); +} + BEGIN_METADATA(HoldingSpaceItemScreenCaptureView, HoldingSpaceItemView) END_METADATA
diff --git a/ash/system/holding_space/holding_space_item_screen_capture_view.h b/ash/system/holding_space/holding_space_item_screen_capture_view.h index 246db6b..e21b2fb 100644 --- a/ash/system/holding_space/holding_space_item_screen_capture_view.h +++ b/ash/system/holding_space/holding_space_item_screen_capture_view.h
@@ -32,6 +32,9 @@ private: void UpdateImage(); + // Overlays a play icon over the Screen Capture preview. + void AddPlayIcon(); + RoundedImageView* image_ = nullptr; base::CallbackListSubscription image_subscription_;
diff --git a/ash/system/holding_space/holding_space_item_view.cc b/ash/system/holding_space/holding_space_item_view.cc index bed6b9c..77f0e3d9 100644 --- a/ash/system/holding_space/holding_space_item_view.cc +++ b/ash/system/holding_space/holding_space_item_view.cc
@@ -13,6 +13,7 @@ #include "ash/style/ash_color_provider.h" #include "ash/system/holding_space/holding_space_item_view_delegate.h" #include "base/bind.h" +#include "components/vector_icons/vector_icons.h" #include "ui/base/class_property.h" #include "ui/base/dragdrop/drag_drop_types.h" #include "ui/gfx/canvas.h" @@ -241,9 +242,9 @@ AshColorProvider::ContentLayerType::kButtonIconColor); const gfx::ImageSkia unpinned_icon = gfx::CreateVectorIcon( - views::kUnpinIcon, kHoldingSpacePinIconSize, icon_color); - const gfx::ImageSkia pinned_icon = gfx::CreateVectorIcon( - views::kPinIcon, kHoldingSpacePinIconSize, icon_color); + views::kUnpinIcon, kHoldingSpaceIconSize, icon_color); + const gfx::ImageSkia pinned_icon = + gfx::CreateVectorIcon(views::kPinIcon, kHoldingSpaceIconSize, icon_color); pin_->SetImage(views::Button::STATE_NORMAL, unpinned_icon); pin_->SetToggledImage(views::Button::STATE_NORMAL, &pinned_icon); @@ -259,6 +260,23 @@ return pin_; } +views::View* HoldingSpaceItemView::CreatePlayIcon(views::View* parent) { + DCHECK(!play_icon_); + play_icon_ = parent->AddChildView(std::make_unique<views::ImageView>()); + play_icon_->SetFocusBehavior(views::View::FocusBehavior::NEVER); + play_icon_->SetVisible(true); + + const SkColor icon_color = AshColorProvider::Get()->GetContentLayerColor( + AshColorProvider::ContentLayerType::kButtonIconColor); + + const gfx::ImageSkia play_icon_image = gfx::CreateVectorIcon( + vector_icons::kPlayArrowIcon, kHoldingSpaceIconSize, icon_color); + + play_icon_->SetImage(&play_icon_image); + + return play_icon_; +} + void HoldingSpaceItemView::OnPaintFocus(gfx::Canvas* canvas, gfx::Size size) { if (!HasFocus()) return;
diff --git a/ash/system/holding_space/holding_space_item_view.h b/ash/system/holding_space/holding_space_item_view.h index f61c97b..7af7ffd 100644 --- a/ash/system/holding_space/holding_space_item_view.h +++ b/ash/system/holding_space/holding_space_item_view.h
@@ -9,6 +9,7 @@ #include "ash/ash_export.h" #include "ui/views/animation/ink_drop_host_view.h" +#include "ui/views/controls/image_view.h" #include "ui/views/metadata/metadata_header_macros.h" namespace views { @@ -64,8 +65,13 @@ void SetSelected(bool selected); bool selected() const { return selected_; } + views::View* play_icon() { return play_icon_; } + protected: views::ToggleImageButton* AddPin(views::View* parent); + // Creates a View consisting of a play icon. + views::View* CreatePlayIcon(views::View* parent); + virtual void OnPinVisiblityChanged(bool pin_visible) {} private: @@ -83,6 +89,7 @@ const std::string item_id_; views::ToggleImageButton* pin_ = nullptr; // Owned by view hierarchy. + views::ImageView* play_icon_ = nullptr; // Owned by view hierarchy. // Owners for the layers used to paint focused and selected states. std::unique_ptr<ui::LayerOwner> selected_layer_owner_;
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc index 4fa67cb..cb16699d 100644 --- a/ash/system/holding_space/holding_space_tray_unittest.cc +++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -1316,6 +1316,31 @@ test_api()->Close(); } +// Screen recordings should have an overlaying play icon. +TEST_P(HoldingSpaceTrayTest, PlayIconForScreenRecordings) { + StartSession(); + test_api()->Show(); + + // Add one screenshot item and one screen recording item. + HoldingSpaceItem* screenshot_item = AddItem( + HoldingSpaceItem::Type::kScreenshot, base::FilePath("/tmp/fake_1")); + HoldingSpaceItem* screen_recording_item = AddItem( + HoldingSpaceItem::Type::kScreenRecording, base::FilePath("/tmp/fake_2")); + EXPECT_TRUE(test_api()->RecentFilesContainerShown()); + + std::vector<views::View*> screen_capture_chips = + test_api()->GetScreenCaptureViews(); + + EXPECT_EQ(2u, screen_capture_chips.size()); + + EXPECT_EQ(screenshot_item->id(), + HoldingSpaceItemView::Cast(screen_capture_chips[1])->item()->id()); + EXPECT_FALSE(HoldingSpaceItemView::Cast(screen_capture_chips[1])->play_icon()); + EXPECT_EQ(screen_recording_item->id(), + HoldingSpaceItemView::Cast(screen_capture_chips[0])->item()->id()); + EXPECT_TRUE(HoldingSpaceItemView::Cast(screen_capture_chips[0])->play_icon()); +} + INSTANTIATE_TEST_SUITE_P(All, HoldingSpaceTrayTest, testing::Bool()); } // namespace ash
diff --git a/base/BUILD.gn b/base/BUILD.gn index 3357e74..8c32c2f 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -3222,6 +3222,11 @@ "android/jni_array_unittest.cc", "android/jni_string_unittest.cc", "android/library_loader/library_prefetcher_unittest.cc", + "android/linker/linker_jni.cc", + "android/linker/linker_jni.h", + "android/linker/modern_linker_jni.cc", + "android/linker/modern_linker_jni.h", + "android/linker/modern_linker_unittest.cc", "android/path_utils_unittest.cc", "android/reached_addresses_bitset_unittest.cc", "android/scoped_java_ref_unittest.cc",
diff --git a/base/allocator/partition_allocator/partition_alloc_unittest.cc b/base/allocator/partition_allocator/partition_alloc_unittest.cc index 8bfad3543..1081ef361 100644 --- a/base/allocator/partition_allocator/partition_alloc_unittest.cc +++ b/base/allocator/partition_allocator/partition_alloc_unittest.cc
@@ -1056,7 +1056,13 @@ } // Tests the handing out of freelists for partial slot spans. -TEST_F(PartitionAllocTest, PartialPageFreelists) { +#if defined(OS_MAC) && defined(ARCH_CPU_ARM64) +// Bulk-disabled on mac-arm64 for bot stabilization: https://crbug.com/1154345 +#define MAYBE_PartialPageFreelists DISABLED_PartialPageFreelists +#else +#define MAYBE_PartialPageFreelists PartialPageFreelists +#endif +TEST_F(PartitionAllocTest, MAYBE_PartialPageFreelists) { size_t big_size = SystemPageSize() - kExtraAllocSize; size_t bucket_index = SizeToIndex(big_size + kExtraAllocSize); PartitionRoot<ThreadSafe>::Bucket* bucket =
diff --git a/base/android/linker/BUILD.gn b/base/android/linker/BUILD.gn index 14efe73..e5dcc9e 100644 --- a/base/android/linker/BUILD.gn +++ b/base/android/linker/BUILD.gn
@@ -13,6 +13,7 @@ "legacy_linker_jni.h", "linker_jni.cc", "linker_jni.h", + "linker_jni_onload.cc", "modern_linker_jni.cc", "modern_linker_jni.h", ]
diff --git a/base/android/linker/config.gni b/base/android/linker/config.gni index 27793ffe..a4c4b65 100644 --- a/base/android/linker/config.gni +++ b/base/android/linker/config.gni
@@ -9,5 +9,8 @@ # Chromium linker doesn't reliably support loading multiple libraries; # disable for component builds, see crbug.com/657093. # Chromium linker causes instrumentation to return incorrect results. +# Incompatible with incremental_install because it causes LibraryLoader to not +# look for the .so files in their side-loaded location. chromium_linker_supported = - !is_component_build && !enable_profiling && !use_order_profiling && !is_asan + !incremental_install && !is_component_build && !enable_profiling && + !use_order_profiling && !is_asan
diff --git a/base/android/linker/linker_jni.cc b/base/android/linker/linker_jni.cc index d761e89..73d9cbc 100644 --- a/base/android/linker/linker_jni.cc +++ b/base/android/linker/linker_jni.cc
@@ -19,9 +19,6 @@ #include <string.h> #include <sys/mman.h> -#include "base/android/linker/legacy_linker_jni.h" -#include "base/android/linker/modern_linker_jni.h" - namespace chromium_android_linker { // Variable containing LibInfo for the loaded library. @@ -107,44 +104,4 @@ return static_cast<jlong>(reinterpret_cast<uintptr_t>(address)); } -namespace { - -// JNI_OnLoad() initialization hook. -bool LinkerJNIInit(JavaVM* vm, JNIEnv* env) { - // Find LibInfo field ids. - LOG_INFO("Caching field IDs"); - if (!s_lib_info_fields.Init(env)) { - return false; - } - - return true; -} - -// JNI_OnLoad() hook called when the linker library is loaded through -// the regular System.LoadLibrary) API. This shall save the Java VM -// handle and initialize LibInfo fields. -jint JNI_OnLoad(JavaVM* vm, void* reserved) { - LOG_INFO("Entering"); - // Get new JNIEnv - JNIEnv* env; - if (JNI_OK != vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4)) { - LOG_ERROR("Could not create JNIEnv"); - return -1; - } - - // Initialize linker base and implementations. - if (!LinkerJNIInit(vm, env) || !LegacyLinkerJNIInit(vm, env) || - !ModernLinkerJNIInit(vm, env)) { - return -1; - } - - LOG_INFO("Done"); - return JNI_VERSION_1_4; -} - -} // namespace } // namespace chromium_android_linker - -jint JNI_OnLoad(JavaVM* vm, void* reserved) { - return chromium_android_linker::JNI_OnLoad(vm, reserved); -}
diff --git a/base/android/linker/linker_jni.h b/base/android/linker/linker_jni.h index 7a4b5491..b469385f 100644 --- a/base/android/linker/linker_jni.h +++ b/base/android/linker/linker_jni.h
@@ -207,9 +207,11 @@ } }; -// Variable containing LibInfo for the loaded library. +// Variable containing LibInfo accessors for the loaded library. extern LibInfo_class s_lib_info_fields; +extern jint JNI_OnLoad(JavaVM* vm, void* reserved); + } // namespace chromium_android_linker #endif // BASE_ANDROID_LINKER_LINKER_JNI_H_
diff --git a/base/android/linker/linker_jni_onload.cc b/base/android/linker/linker_jni_onload.cc new file mode 100644 index 0000000..efbbd94 --- /dev/null +++ b/base/android/linker/linker_jni_onload.cc
@@ -0,0 +1,56 @@ +// Copyright 2020 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. + +// The JNI_OnLoad() definition for the linker library is moved here to avoid a +// conflict with JNI_Onload() defined by the test library. The linker tests +// together with the linker internals are smashed into (=linked with) the test +// library. +// +// This file also helps avoiding LegacyLinkerJNIInit() and its dependencies in +// base_unittests. There are no plans to unittest LegacyLinker. + +#include <jni.h> + +#include "base/android/linker/legacy_linker_jni.h" +#include "base/android/linker/linker_jni.h" +#include "base/android/linker/modern_linker_jni.h" + +namespace chromium_android_linker { +namespace { + +bool LinkerJNIInit(JavaVM* vm, JNIEnv* env) { + // Find LibInfo field ids. + LOG_INFO("Caching field IDs"); + if (!s_lib_info_fields.Init(env)) { + return false; + } + + return true; +} + +} // namespace + +// JNI_OnLoad() is called when the linker library is loaded through the regular +// System.LoadLibrary) API. This shall save the Java VM handle and initialize +// LibInfo field accessors. +jint JNI_OnLoad(JavaVM* vm, void* reserved) { + LOG_INFO("Entering"); + JNIEnv* env; + if (JNI_OK != vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4)) { + LOG_ERROR("Could not create JNIEnv"); + return -1; + } + if (!LinkerJNIInit(vm, env) || !LegacyLinkerJNIInit(vm, env) || + !ModernLinkerJNIInit(vm, env)) { + return -1; + } + LOG_INFO("Done"); + return JNI_VERSION_1_4; +} + +} // namespace chromium_android_linker + +jint JNI_OnLoad(JavaVM* vm, void* reserved) { + return chromium_android_linker::JNI_OnLoad(vm, reserved); +}
diff --git a/base/android/linker/modern_linker_jni.cc b/base/android/linker/modern_linker_jni.cc index dc16429..8e81e87 100644 --- a/base/android/linker/modern_linker_jni.cc +++ b/base/android/linker/modern_linker_jni.cc
@@ -159,122 +159,6 @@ void* library_handle; }; -// Holds address ranges of the loaded native library, its RELRO region, along -// with the RELRO FD identifying the shared memory region. Carries the same -// members as the Java-side LibInfo, allowing to internally import/export the -// member values from/to the Java-side counterpart. -// -// Does *not* own the RELRO FD as soon as the latter gets exported to Java -// (as a result of 'spawning' the RELRO region as shared memory. -// -// *Not* threadsafe. -class NativeLibInfo { - public: - // Constructs an (almost) empty instance. To be later populated from native - // code. The |env| and |java_object| will be useful later for exporting the - // values to the Java counterpart. - NativeLibInfo(size_t address, JNIEnv* env, jobject java_object) - : load_address_(address), env_(env), java_object_(java_object) {} - - // Constructs and imports fields from the Java LibInfo. As above, the |env| - // and |java_object| are used for exporting. - NativeLibInfo(JNIEnv* env, jobject java_object) - : env_(env), java_object_(java_object) { - s_lib_info_fields.GetLoadInfo(env, java_object, &load_address_, - &load_size_); - s_lib_info_fields.GetRelroInfo(env, java_object, &relro_start_, - &relro_size_, &relro_fd_); - } - - size_t load_address() const { return load_address_; } - - // Loads the native library using android_dlopen_ext and invokes JNI_OnLoad(). - // - // On a successful load exports the address range of the library to the - // Java-side LibInfo. - // - // Iff |spawn_relro_region| is true, also finds the RELRO region in the - // library (PT_GNU_RELRO), converts it to be backed by a shared memory region - // (here referred as "RELRO FD") and exports the RELRO information to Java - // (the address range and the RELRO FD). - // - // When spawned, the shared memory region is exported only after sealing as - // read-only and without writable memory mappings. This allows any process to - // provide RELRO FD before it starts processing arbitrary input. For example, - // an App Zygote can create a RELRO FD in a sufficiently trustworthy way to - // make the Browser/Privileged processes share the region with it. - // - // TODO(pasko): Add an option to use an existing memory reservation. - bool LoadLibrary(const String& library_path, bool spawn_relro_region); - - // Finds the RELRO region in the native library identified by - // |this->load_address()| and replaces it with the shared memory region - // identified by |other_lib_info|. - // - // The external NativeLibInfo can arrive from a different process. - // - // Note on security: The RELRO region is treated as *trusted*, no untrusted - // user/website/network input can be processed in an isolated process before - // it sends the RELRO FD. This is because there is no way to check whether the - // process has a writable mapping of the region remaining. - bool CompareRelroAndReplaceItBy(const NativeLibInfo& other_lib_info); - - private: - friend int VisitLibraryPhdrs(dl_phdr_info*, size_t, void*); - - NativeLibInfo() = delete; - - // Not copyable or movable. - NativeLibInfo(const NativeLibInfo&) = delete; - NativeLibInfo& operator=(const NativeLibInfo&) = delete; - - // Exports the address range of the library described by |this| to the - // Java-side LibInfo. - void ExportLoadInfoToJava() const { - s_lib_info_fields.SetLoadInfo(env_, java_object_, load_address_, - load_size_); - } - - // Initializes |relro_fd_| with a newly created read-only shared memory region - // sized as the library's RELRO and with identical data. - bool CreateSharedRelroFd(); - - // Exports the address range of the RELRO region and RELRO FD described by - // |this| to the Java-side LibInfo. - void ExportRelroInfoToJava() const { - s_lib_info_fields.SetRelroInfo(env_, java_object_, relro_start_, - relro_size_, relro_fd_); - } - - void CloseRelroFd() { - if (relro_fd_ == kInvalidFd) - return; - close(relro_fd_); - relro_fd_ = kInvalidFd; - } - - // Loads and initializes the load address ranges: |load_address_|, - // |load_size_|. - bool LoadWithDlopenExt(const String& path, void** handle); - - // Assuming that RELRO-related information is populated, memory-maps the RELRO - // FD on top of the library's RELRO. - bool ReplaceRelroWithSharedOne() const; - - // Returns true iff the RELRO address and size, along with the contents are - // equal among the two. - bool RelroIsIdentical(const NativeLibInfo& external_lib_info) const; - - static constexpr int kInvalidFd = -1; - size_t load_address_ = 0; - size_t load_size_ = 0; - size_t relro_start_ = 0; - size_t relro_size_ = 0; - int relro_fd_ = kInvalidFd; - JNIEnv* env_; - jobject java_object_; -}; - // android_dlopen_ext() wrapper. // Returns false if no android_dlopen_ext() is available, otherwise true with // the return value from android_dlopen_ext() in |status|. @@ -297,11 +181,95 @@ return true; } -// Callback for dl_iterate_phdr(). From program headers (phdr(s)) of a loaded -// library determines its load address, and in case it is equal to -// |lib_info.load_address()|, extracts the RELRO and size information from -// corresponding phdr(s). -int VisitLibraryPhdrs(dl_phdr_info* info, size_t size UNUSED, void* lib_info) { +// Creates an android_dlextinfo struct so that a library is loaded inside the +// space referenced by |mapping|. +std::unique_ptr<android_dlextinfo> MakeAndroidDlextinfo( + const ScopedAnonymousMmap& mapping) { + auto info = std::make_unique<android_dlextinfo>(); + memset(info.get(), 0, sizeof(*info)); + info->flags = ANDROID_DLEXT_RESERVED_ADDRESS; + info->reserved_addr = mapping.address(); + info->reserved_size = mapping.size(); + + return info; +} + +// Resizes the address space reservation to the required size. Failure here is +// only a warning, since at worst this wastes virtual address space, not +// physical memory. +void ResizeMapping(const ScopedAnonymousMmap& mapping, size_t load_size) { + // Trim the reservation mapping to match the library's actual size. Failure + // to resize is not a fatal error. At worst we lose a portion of virtual + // address space that we might otherwise have recovered. Note that trimming + // the mapping here requires that we have already released the scoped + // mapping. + const uintptr_t uintptr_addr = reinterpret_cast<uintptr_t>(mapping.address()); + if (mapping.size() <= load_size) { + LOG_ERROR("WARNING: library reservation was too small"); + } else { + // Unmap the part of the reserved address space that is beyond the end of + // the loaded library data. + void* unmap = reinterpret_cast<void*>(uintptr_addr + load_size); + const size_t length = mapping.size() - load_size; + munmap(unmap, length); + } +} + +// Calls JNI_OnLoad() in the library referenced by |handle|. +// Returns true for success. +bool CallJniOnLoad(void* handle) { + LOG_INFO("Entering"); + // Locate and if found then call the loaded library's JNI_OnLoad() function. + using JNI_OnLoadFunctionPtr = int (*)(void* vm, void* reserved); + auto jni_onload = + reinterpret_cast<JNI_OnLoadFunctionPtr>(dlsym(handle, "JNI_OnLoad")); + if (jni_onload != nullptr) { + // Check that JNI_OnLoad returns a usable JNI version. + int jni_version = (*jni_onload)(s_java_vm, nullptr); + if (jni_version < JNI_VERSION_1_4) { + LOG_ERROR("JNI version is invalid: %d", jni_version); + return false; + } + } + + return true; +} + +bool LoadNoSharedRelocations(const String& path) { + void* handle = dlopen(path.c_str(), RTLD_NOW); + if (!handle) { + LOG_ERROR("dlopen: %s", dlerror()); + return false; + } + + if (!CallJniOnLoad(handle)) + return false; + + return true; +} + +} // namespace + +void NativeLibInfo::ExportLoadInfoToJava() const { + s_lib_info_fields.SetLoadInfo(env_, java_object_, load_address_, load_size_); +} + +void NativeLibInfo::ExportRelroInfoToJava() const { + s_lib_info_fields.SetRelroInfo(env_, java_object_, relro_start_, relro_size_, + relro_fd_); +} + +void NativeLibInfo::CloseRelroFd() { + if (relro_fd_ == kInvalidFd) + return; + close(relro_fd_); + relro_fd_ = kInvalidFd; +} + +// static +int NativeLibInfo::VisitLibraryPhdrs(dl_phdr_info* info, + size_t size UNUSED, + void* lib_info) { auto* out_lib_info = reinterpret_cast<NativeLibInfo*>(lib_info); ElfW(Addr) lookup_address = static_cast<ElfW(Addr)>(out_lib_info->load_address()); @@ -368,75 +336,20 @@ return false; } -bool FindRelroAndLibraryRangesInElf(void* load_address, - NativeLibInfo* lib_info) { - LOG_INFO("Called for %p", load_address); +bool NativeLibInfo::FindRelroAndLibraryRangesInElf() { + LOG_INFO("Called for %zx", load_address_); if (!dl_iterate_phdr) { LOG_ERROR("No dl_iterate_phdr() found"); return false; } - int status = dl_iterate_phdr(&VisitLibraryPhdrs, lib_info); + int status = dl_iterate_phdr(&VisitLibraryPhdrs, this); if (!status) { - LOG_ERROR("Failed to find library at address %p", load_address); + LOG_ERROR("Failed to find library at address %zx", load_address_); return false; } return true; } -// Creates an android_dlextinfo struct so that a library is loaded inside the -// space referenced by |mapping|. -std::unique_ptr<android_dlextinfo> MakeAndroidDlextinfo( - const ScopedAnonymousMmap& mapping) { - auto info = std::make_unique<android_dlextinfo>(); - memset(info.get(), 0, sizeof(*info)); - info->flags = ANDROID_DLEXT_RESERVED_ADDRESS; - info->reserved_addr = mapping.address(); - info->reserved_size = mapping.size(); - - return info; -} - -// Resizes the address space reservation to the required size. Failure here is -// only a warning, since at worst this wastes virtual address space, not -// physical memory. -void ResizeMapping(const ScopedAnonymousMmap& mapping, size_t load_size) { - // Trim the reservation mapping to match the library's actual size. Failure - // to resize is not a fatal error. At worst we lose a portion of virtual - // address space that we might otherwise have recovered. Note that trimming - // the mapping here requires that we have already released the scoped - // mapping. - const uintptr_t uintptr_addr = reinterpret_cast<uintptr_t>(mapping.address()); - if (mapping.size() <= load_size) { - LOG_ERROR("WARNING: library reservation was too small"); - } else { - // Unmap the part of the reserved address space that is beyond the end of - // the loaded library data. - void* unmap = reinterpret_cast<void*>(uintptr_addr + load_size); - const size_t length = mapping.size() - load_size; - munmap(unmap, length); - } -} - -// Calls JNI_OnLoad() in the library referenced by |handle|. -// Returns true for success. -bool CallJniOnLoad(void* handle) { - LOG_INFO("Entering"); - // Locate and if found then call the loaded library's JNI_OnLoad() function. - using JNI_OnLoadFunctionPtr = int (*)(void* vm, void* reserved); - auto jni_onload = - reinterpret_cast<JNI_OnLoadFunctionPtr>(dlsym(handle, "JNI_OnLoad")); - if (jni_onload != nullptr) { - // Check that JNI_OnLoad returns a usable JNI version. - int jni_version = (*jni_onload)(s_java_vm, nullptr); - if (jni_version < JNI_VERSION_1_4) { - LOG_ERROR("JNI version is invalid: %d", jni_version); - return false; - } - } - - return true; -} - bool NativeLibInfo::LoadWithDlopenExt(const String& path, void** handle) { LOG_INFO("Entering"); @@ -464,7 +377,7 @@ mapping.Release(); // Find RELRO and trim the unused parts of the memory mapping. - if (!FindRelroAndLibraryRangesInElf(address, this)) { + if (!FindRelroAndLibraryRangesInElf()) { // Fail early if PT_GNU_RELRO is not found. It likely indicates a // build misconfiguration. LOG_ERROR("Could not find RELRO in the loaded library: %s", path.c_str()); @@ -550,17 +463,14 @@ return true; } -bool LoadNoSharedRelocations(const String& path) { - void* handle = dlopen(path.c_str(), RTLD_NOW); - if (!handle) { - LOG_ERROR("dlopen: %s", dlerror()); - return false; - } +NativeLibInfo::NativeLibInfo(size_t address, JNIEnv* env, jobject java_object) + : load_address_(address), env_(env), java_object_(java_object) {} - if (!CallJniOnLoad(handle)) - return false; - - return true; +NativeLibInfo::NativeLibInfo(JNIEnv* env, jobject java_object) + : env_(env), java_object_(java_object) { + s_lib_info_fields.GetLoadInfo(env, java_object, &load_address_, &load_size_); + s_lib_info_fields.GetRelroInfo(env, java_object, &relro_start_, &relro_size_, + &relro_fd_); } bool NativeLibInfo::LoadLibrary(const String& library_path, @@ -636,10 +546,9 @@ return false; } - void* library_address = reinterpret_cast<void*>(other_lib_info.load_address_); - if (!FindRelroAndLibraryRangesInElf(library_address, this)) { + if (!FindRelroAndLibraryRangesInElf()) { LOG_ERROR("Could not find RELRO from externally provided address: 0x%p", - library_address); + reinterpret_cast<void*>(other_lib_info.load_address_)); return false; } @@ -668,7 +577,11 @@ return true; } -} // namespace +// static +bool NativeLibInfo::SharedMemoryFunctionsSupportedForTesting() { + SharedMemoryFunctions functions; + return functions.IsWorking(); +} JNI_GENERATOR_EXPORT jboolean Java_org_chromium_base_library_1loader_ModernLinker_nativeLoadLibrary(
diff --git a/base/android/linker/modern_linker_jni.h b/base/android/linker/modern_linker_jni.h index 9b47684a..df554f3 100644 --- a/base/android/linker/modern_linker_jni.h +++ b/base/android/linker/modern_linker_jni.h
@@ -6,9 +6,12 @@ #define BASE_ANDROID_LINKER_MODERN_LINKER_JNI_H_ #include <jni.h> +#include <link.h> namespace chromium_android_linker { +class String; + // Used to find out whether RELRO sharing is often rejected due to mismatch of // the contents. // @@ -23,6 +26,123 @@ COUNT = 3, }; +// Holds address ranges of the loaded native library, its RELRO region, along +// with the RELRO FD identifying the shared memory region. Carries the same +// members as the Java-side LibInfo, allowing to internally import/export the +// member values from/to the Java-side counterpart. +// +// Does *not* own the RELRO FD as soon as the latter gets exported to Java +// (as a result of 'spawning' the RELRO region as shared memory. +// +// *Not* threadsafe. +class NativeLibInfo { + public: + // Constructs an (almost) empty instance. To be later populated from native + // code. The |env| and |java_object| will be useful later for exporting the + // values to the Java counterpart. + NativeLibInfo(size_t address, JNIEnv* env, jobject java_object); + + // Constructs and imports fields from the Java LibInfo. As above, the |env| + // and |java_object| are used for exporting. + NativeLibInfo(JNIEnv* env, jobject java_object); + + size_t load_address() const { return load_address_; } + + // Loads the native library using android_dlopen_ext and invokes JNI_OnLoad(). + // + // On a successful load exports the address range of the library to the + // Java-side LibInfo. + // + // Iff |spawn_relro_region| is true, also finds the RELRO region in the + // library (PT_GNU_RELRO), converts it to be backed by a shared memory region + // (here referred as "RELRO FD") and exports the RELRO information to Java + // (the address range and the RELRO FD). + // + // When spawned, the shared memory region is exported only after sealing as + // read-only and without writable memory mappings. This allows any process to + // provide RELRO FD before it starts processing arbitrary input. For example, + // an App Zygote can create a RELRO FD in a sufficiently trustworthy way to + // make the Browser/Privileged processes share the region with it. + // + // TODO(pasko): Add an option to use an existing memory reservation. + bool LoadLibrary(const String& library_path, bool spawn_relro_region); + + // Finds the RELRO region in the native library identified by + // |this->load_address()| and replaces it with the shared memory region + // identified by |other_lib_info|. + // + // The external NativeLibInfo can arrive from a different process. + // + // Note on security: The RELRO region is treated as *trusted*, no untrusted + // user/website/network input can be processed in an isolated process before + // it sends the RELRO FD. This is because there is no way to check whether the + // process has a writable mapping of the region remaining. + bool CompareRelroAndReplaceItBy(const NativeLibInfo& other_lib_info); + + void set_relro_info_for_testing(size_t start, size_t size) { + relro_start_ = start; + relro_size_ = size; + } + + bool CreateSharedRelroFdForTesting() { return CreateSharedRelroFd(); } + + int get_relro_fd_for_testing() { return relro_fd_; } + + static bool SharedMemoryFunctionsSupportedForTesting(); + + private: + NativeLibInfo() = delete; + + // Not copyable or movable. + NativeLibInfo(const NativeLibInfo&) = delete; + NativeLibInfo& operator=(const NativeLibInfo&) = delete; + + // Exports the address range of the library described by |this| to the + // Java-side LibInfo. + void ExportLoadInfoToJava() const; + + // Exports the address range of the RELRO region and RELRO FD described by + // |this| to the Java-side LibInfo. + void ExportRelroInfoToJava() const; + + void CloseRelroFd(); + + // Callback for dl_iterate_phdr(). From program headers (phdr(s)) of a loaded + // library determines its load address, and in case it is equal to + // |lib_info.load_address()|, extracts the RELRO and size information from + // corresponding phdr(s). + static int VisitLibraryPhdrs(dl_phdr_info* info, size_t size, void* lib_info); + + // Invokes dl_iterate_phdr() for the current load address, with + // VisitLibraryPhdrs() as a callback. + bool FindRelroAndLibraryRangesInElf(); + + // Loads and initializes the load address ranges: |load_address_|, + // |load_size_|. + bool LoadWithDlopenExt(const String& path, void** handle); + + // Initializes |relro_fd_| with a newly created read-only shared memory region + // sized as the library's RELRO and with identical data. + bool CreateSharedRelroFd(); + + // Assuming that RELRO-related information is populated, memory-maps the RELRO + // FD on top of the library's RELRO. + bool ReplaceRelroWithSharedOne() const; + + // Returns true iff the RELRO address and size, along with the contents are + // equal among the two. + bool RelroIsIdentical(const NativeLibInfo& external_lib_info) const; + + static constexpr int kInvalidFd = -1; + size_t load_address_ = 0; + size_t load_size_ = 0; + size_t relro_start_ = 0; + size_t relro_size_ = 0; + int relro_fd_ = kInvalidFd; + JNIEnv* env_; + jobject java_object_; +}; + // JNI_OnLoad() initialization hook for the modern linker. // Sets up JNI and other initializations for native linker code. // |vm| is the Java VM handle passed to JNI_OnLoad().
diff --git a/base/android/linker/modern_linker_unittest.cc b/base/android/linker/modern_linker_unittest.cc new file mode 100644 index 0000000..d84ba823 --- /dev/null +++ b/base/android/linker/modern_linker_unittest.cc
@@ -0,0 +1,62 @@ +// Copyright 2020 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 <sys/mman.h> + +#include "base/android/linker/modern_linker_jni.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromium_android_linker { + +// These tests get linked with base_unittests and leave JNI uninitialized. The +// tests must not execute any parts relying on initialization with JNI_Onload(). + +class ModernLinkerTest : public testing::Test { + public: + ModernLinkerTest() = default; + ~ModernLinkerTest() override = default; +}; + +// Checks that NativeLibInfo::CreateSharedRelroFd() creates a shared memory +// region that is 'sealed' as read-only. +TEST_F(ModernLinkerTest, CreatedRegionIsSealed) { + constexpr size_t kRelroSize = 1 << 21; // 2 MiB. + void* relro_address = mmap(nullptr, kRelroSize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + ASSERT_NE(MAP_FAILED, relro_address); + NativeLibInfo lib_info = {0, 0, 0}; + lib_info.set_relro_info_for_testing(reinterpret_cast<size_t>(relro_address), + kRelroSize); + memset(relro_address, 0xEE, kRelroSize); + if (!NativeLibInfo::SharedMemoryFunctionsSupportedForTesting()) { + // The ModernLinker uses functions from libandroid.so that are not available + // on old Android releases. TODO(pasko): Add a fallback to ashmem for L-M, + // as it is done in crazylinker and enable the testing below for these + // devices. + return; + } + ASSERT_EQ(true, lib_info.CreateSharedRelroFdForTesting()); + int relro_fd = lib_info.get_relro_fd_for_testing(); + ASSERT_NE(-1, relro_fd); + + // Check that a read-only mapping contains the original data. + void* ro_address = + mmap(nullptr, kRelroSize, PROT_READ, MAP_SHARED, relro_fd, 0); + ASSERT_NE(MAP_FAILED, ro_address); + int not_equal = memcmp(relro_address, ro_address, kRelroSize); + EXPECT_EQ(false, not_equal); + munmap(ro_address, kRelroSize); + + // Check that attempts to mmap with PROT_WRITE fail. + void* rw_address = mmap(nullptr, kRelroSize, PROT_READ | PROT_WRITE, + MAP_SHARED, relro_fd, 0); + EXPECT_EQ(MAP_FAILED, rw_address); + munmap(rw_address, kRelroSize); + void* w_address = + mmap(nullptr, kRelroSize, PROT_WRITE, MAP_SHARED, relro_fd, 0); + EXPECT_EQ(MAP_FAILED, w_address); + munmap(w_address, kRelroSize); +} + +} // namespace chromium_android_linker
diff --git a/build/android/gradle/generate_gradle.py b/build/android/gradle/generate_gradle.py index bbbde51..eb960259 100755 --- a/build/android/gradle/generate_gradle.py +++ b/build/android/gradle/generate_gradle.py
@@ -129,7 +129,7 @@ def _QueryForAllGnTargets(output_dir): cmd = [ os.path.join(_BUILD_ANDROID, 'list_java_targets.py'), '--gn-labels', - '--nested', '--build-build-configs', '--output-directory', output_dir + '--nested', '--build', '--output-directory', output_dir ] logging.info('Running: %r', cmd) return subprocess.check_output(cmd).splitlines()
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py index bda6d6d..5a10a3b 100755 --- a/build/android/gyp/proguard.py +++ b/build/android/gyp/proguard.py
@@ -118,6 +118,10 @@ parser.add_argument('--show-desugar-default-interface-warnings', action='store_true', help='Enable desugaring warnings.') + parser.add_argument('--dump-inputs', + action='store_true', + help='Use when filing R8 bugs to capture inputs.' + ' Stores inputs to r8inputs.zip') parser.add_argument( '--stamp', help='File to touch upon success. Mutually exclusive with --output-path') @@ -238,6 +242,8 @@ ] if options.disable_outlining: cmd += ['-Dcom.android.tools.r8.disableOutlining=1'] + if options.dump_inputs: + cmd += ['-Dcom.android.tools.r8.dumpinputtofile=r8inputs.zip'] cmd += [ '-cp', options.r8_path,
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py index 93cd4c0e..1c71bdd 100755 --- a/build/android/gyp/write_build_config.py +++ b/build/android/gyp/write_build_config.py
@@ -1803,8 +1803,7 @@ raise Exception('Deps %s have proguard enabled while deps %s have ' 'proguard disabled' % (deps_proguard_enabled, deps_proguard_disabled)) - else: - deps_info['proguard_enabled'] = bool(options.proguard_enabled) + deps_info['proguard_enabled'] = bool(options.proguard_enabled) if options.proguard_mapping_path: deps_info['proguard_mapping_path'] = options.proguard_mapping_path
diff --git a/build/android/incremental_install/installer.py b/build/android/incremental_install/installer.py index 5e33786..7329593 100755 --- a/build/android/incremental_install/installer.py +++ b/build/android/incremental_install/installer.py
@@ -152,9 +152,6 @@ else: install_dict = install_json - if install_dict.get('dont_even_try'): - raise Exception(install_dict['dont_even_try']) - main_timer = time_profile.TimeProfile() install_timer = time_profile.TimeProfile() push_native_timer = time_profile.TimeProfile()
diff --git a/build/android/incremental_install/write_installer_json.py b/build/android/incremental_install/write_installer_json.py index df6cfdf7..67a4e51 100755 --- a/build/android/incremental_install/write_installer_json.py +++ b/build/android/incremental_install/write_installer_json.py
@@ -42,8 +42,6 @@ action='store_true', default=False, help='Print a warning about proguard being disabled') - parser.add_argument('--dont-even-try', - help='Prints the given message and exits.') options = parser.parse_args(args) options.dex_files = build_utils.ParseGnList(options.dex_files) @@ -58,7 +56,6 @@ 'apk_path': options.apk_path, 'native_libs': options.native_libs, 'dex_files': options.dex_files, - 'dont_even_try': options.dont_even_try, 'show_proguard_warning': options.show_proguard_warning, 'split_globs': options.split_globs, }
diff --git a/build/android/list_java_targets.py b/build/android/list_java_targets.py index 48518ed..cd123c1 100755 --- a/build/android/list_java_targets.py +++ b/build/android/list_java_targets.py
@@ -115,6 +115,14 @@ """Returns the target type from its .build_config.""" return self.build_config()['deps_info']['type'] + def proguard_enabled(self): + """Returns whether proguard runs for this target.""" + # Modules set proguard_enabled, but the proguarding happens only once at the + # bundle level. + if self.get_type() == 'android_app_bundle_module': + return False + return self.build_config()['deps_info'].get('proguard_enabled', False) + def main(): parser = argparse.ArgumentParser( @@ -133,7 +141,7 @@ parser.add_argument('--print-types', action='store_true', help='Print type of each target') - parser.add_argument('--build-build-configs', + parser.add_argument('--build', action='store_true', help='Build all .build_config files.') parser.add_argument('--type', @@ -143,10 +151,14 @@ parser.add_argument('--stats', action='store_true', help='Print counts of each target type.') + parser.add_argument('--proguard-enabled', + action='store_true', + help='Restrict to targets that have proguard enabled') parser.add_argument('-v', '--verbose', default=0, action='count') args = parser.parse_args() - args.build_build_configs |= bool(args.type or args.print_types or args.stats) + args.build |= bool(args.type or args.proguard_enabled or args.print_types + or args.stats) logging.basicConfig(level=logging.WARNING - (10 * args.verbose), format='%(levelname).1s %(relativeCreated)6d %(message)s') @@ -160,13 +172,16 @@ targets = _query_for_build_config_targets(output_dir) entries = [_TargetEntry(t) for t in targets] - if args.build_build_configs: + if args.build: logging.warning('Building %d .build_config files...', len(entries)) _run_ninja(output_dir, [e.ninja_build_config_target for e in entries]) if args.type: entries = [e for e in entries if e.get_type() in args.type] + if args.proguard_enabled: + entries = [e for e in entries if e.proguard_enabled()] + if args.stats: counts = collections.Counter(e.get_type() for e in entries) for entry_type, count in sorted(counts.items()): @@ -180,7 +195,7 @@ # Convert to top-level target if not args.nested: - to_print = to_print.replace('__test_apk__apk', '').replace('__apk', '') + to_print = to_print.replace('__test_apk', '').replace('__apk', '') if args.print_types: to_print = f'{to_print}: {e.get_type()}'
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 0baa5a1..fa503f9 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -3267,9 +3267,6 @@ rebase_path(_loadable_modules, root_build_dir) args += [ "--native-libs=$_rebased_loadable_modules" ] } - if (_load_library_from_apk) { - args += [ "--dont-even-try=Incremental builds do not work with load_library_from_apk. Try setting is_component_build=true in your GN args." ] - } } _final_deps += [ ":$_java_target",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 726d31e..ba98cb1 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -767,6 +767,7 @@ "java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java", "java/src/org/chromium/chrome/browser/language/settings/LanguagesManager.java", "java/src/org/chromium/chrome/browser/lens/LensController.java", + "java/src/org/chromium/chrome/browser/lens/LensIntentParams.java", "java/src/org/chromium/chrome/browser/lens/LensQueryParams.java", "java/src/org/chromium/chrome/browser/lens/LensQueryResult.java", "java/src/org/chromium/chrome/browser/locale/DefaultSearchEngineDialogHelper.java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java index f600054..a9702ff 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2069,11 +2069,12 @@ new TabPrinter(currentTab), new PrintManagerDelegateImpl(this)); RecordUserAction.record("MobileMenuPrint"); } - } else if (id == R.id.add_to_homescreen_id || id == R.id.add_to_homescreen_menu_id) { + } else if (id == R.id.add_to_homescreen_id || id == R.id.add_to_homescreen_menu_id + || id == R.id.install_app_id) { AddToHomescreenCoordinator.showForAppMenu(currentTab, this, getWindowAndroid(), getModalDialogManager(), currentTab.getWebContents(), mMenuItemData); RecordUserAction.record("MobileMenuAddToHomescreen"); - } else if (id == R.id.open_webapk_id) { + } else if (id == R.id.open_webapk_id || id == R.id.menu_open_webapk_id) { Context context = ContextUtils.getApplicationContext(); String packageName = WebApkValidator.queryFirstWebApkPackage(context, currentTab.getUrlString());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java index 5001338..51fc212 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -804,7 +804,8 @@ public Bundle getBundleForMenuItem(MenuItem item) { Bundle bundle = new Bundle(); if (item.getItemId() == R.id.add_to_homescreen_id - || item.getItemId() == R.id.add_to_homescreen_menu_id) { + || item.getItemId() == R.id.add_to_homescreen_menu_id + || item.getItemId() == R.id.install_app_id) { bundle.putInt(AppBannerManager.MENU_TITLE_KEY, mAddAppTitleShown); } return bundle;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/lens/LensController.java b/chrome/android/java/src/org/chromium/chrome/browser/lens/LensController.java index 67a598c..c690c6a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/lens/LensController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/lens/LensController.java
@@ -102,11 +102,18 @@ * @param intent The intent to Google Lens. */ public void startLens(WindowAndroid window, Intent intent) {} + + /** + * Launch lens with an intent. + * @param window The current window. + * @param lensIntentParams The intent parameters for Lens + */ + public void startLens(WindowAndroid window, LensIntentParams lensIntentParams) {} + /** * Retrieve the Text resource id for "Shop with Google Lens". * @return The resource id for "Shop with Google Lens" string. */ - protected @StringRes int getShopWithGoogleLensTextResourceId() { return R.string.contextmenu_shop_image_with_google_lens; } @@ -118,4 +125,10 @@ protected @DrawableRes int getLensIconResourceId() { return R.drawable.lens_icon; } -} \ No newline at end of file + + /** Starts the Lens connection. */ + public void startLensConnection() {} + + /** Terminate any active Lens connections. */ + public void terminateLensConnections() {} +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/lens/LensIntentParams.java b/chrome/android/java/src/org/chromium/chrome/browser/lens/LensIntentParams.java new file mode 100644 index 0000000..53b17f1 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/lens/LensIntentParams.java
@@ -0,0 +1,165 @@ +// Copyright 2020 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.lens; + +import android.net.Uri; + +/** + * A wrapper class for the Lens intent params (e.g. used in LensController.startLens) + * to provide a more consistent and extensible API. + */ +public class LensIntentParams { + private Uri mImageUri; + private String mSrcUrl; + private String mImageTitleOrAltText; + private String mPageUrl; + private boolean mIsIncognito; + private boolean mRequiresConfirmation; + private int mIntentType; + + /** + * Builder class for LensIntentParams. + */ + public static class Builder { + private Uri mImageUri = Uri.EMPTY; + private String mSrcUrl; + private String mImageTitleOrAltText; + private String mPageUrl; + private boolean mIsIncognito; + private boolean mRequiresConfirmation; + private int mIntentType; + + public Builder() {} + + /** + * Sets the image URI. + * + * @param imageUri The image URI to set as a parameter + */ + public Builder withImageUri(Uri imageUri) { + this.mImageUri = imageUri; + return this; + } + + /** + * Sets the URL of the top level frame of the page. + * + * @param pageUrl The page URL string to set as a parameter + */ + public Builder withPageUrl(String pageUrl) { + this.mPageUrl = pageUrl; + return this; + } + + /** + * Sets the image source URL. + * + * @param srcUrl The image source URL string to set as a parameter + */ + public Builder withSrcUrl(String srcUrl) { + this.mSrcUrl = srcUrl; + return this; + } + + /** + * Sets the image title or alt text. + * + * @param imageTitleOrAltText The image title or alt text to set as a parameter + */ + public Builder withImageTitleOrAltText(String imageTitleOrAltText) { + this.mImageTitleOrAltText = imageTitleOrAltText; + return this; + } + + /** + * Sets whether the client is incognito. + * + * @param isIncognito Whether the client is incognito as a boolean parameter + */ + public Builder withIsIncognito(boolean isIncognito) { + this.mIsIncognito = isIncognito; + return this; + } + + /** + * Sets whether the client requires account confirmation. + * + * @param requiresConfirmation Whether the client requires account confirmation as a boolean + * parameter + */ + public Builder withRequiresConfirmation(boolean requiresConfirmation) { + this.mRequiresConfirmation = requiresConfirmation; + return this; + } + + /** + * Sets the intent type. + * + * @param intentType The intent type to set as a parameter + */ + public Builder withIntentType(int intentType) { + this.mIntentType = intentType; + return this; + } + + /** + * Build LensIntentParams object from parameters set. + */ + public LensIntentParams build() { + LensIntentParams lensIntentParams = new LensIntentParams(); + if (!Uri.EMPTY.equals(mImageUri)) { + lensIntentParams.mImageUri = mImageUri; + lensIntentParams.mIsIncognito = mIsIncognito; + lensIntentParams.mIntentType = mIntentType; + lensIntentParams.mRequiresConfirmation = mRequiresConfirmation; + if (mSrcUrl != null) { + lensIntentParams.mSrcUrl = mSrcUrl; + } + if (mImageTitleOrAltText != null) { + lensIntentParams.mImageTitleOrAltText = mImageTitleOrAltText; + } + if (mPageUrl != null) { + lensIntentParams.mPageUrl = mPageUrl; + } + } + return lensIntentParams; + } + } + + /** Retrieve the image URI for the intent. */ + public Uri getImageUri() { + return mImageUri; + } + + /** Retrieve the page URL for the intent. */ + public String getPageUrl() { + return mPageUrl; + } + + /** Retrieve the image source URL for the intent. */ + public String getSrcUrl() { + return mSrcUrl; + } + + /** Retrieve the image title or alt text for the intent. */ + public String getImageTitleOrAltText() { + return mImageTitleOrAltText; + } + + /** Retrieve whether the client is incognito for the intent. */ + public boolean getIsIncognito() { + return mIsIncognito; + } + + /** Retrieve whether the client requires account for the intent. */ + public boolean getRequiresConfirmation() { + return mRequiresConfirmation; + } + + /** Retrieve the intent type. */ + public int getIntentType() { + return mIntentType; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java index 94f34b1..0f3cd69 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -6,11 +6,9 @@ import android.view.ActionMode; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.view.ViewCompat; - import org.chromium.base.CallbackController; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplierImpl; @@ -61,6 +59,7 @@ private WindowDelegate mWindowDelegate; private View mAutocompleteAnchorView; private LocationBarMediator mLocationBarMediator; + private View mUrlBar; private CallbackController mCallbackController = new CallbackController(); private boolean mNativeInitialized; @@ -113,14 +112,15 @@ new LocationBarCoordinatorTablet((LocationBarTablet) locationBarLayout); } - View urlBar = mLocationBarLayout.findViewById(R.id.url_bar); + mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar); OneshotSupplierImpl<AssistantVoiceSearchService> assistantVoiceSearchSupplier = new OneshotSupplierImpl(); mLocationBarMediator = new LocationBarMediator( mLocationBarLayout, locationBarDataProvider, assistantVoiceSearchSupplier); - mUrlCoordinator = new UrlBarCoordinator((UrlBar) urlBar, windowDelegate, actionModeCallback, - mCallbackController.makeCancelable(mLocationBarMediator::onUrlFocusChange), - mLocationBarMediator); + mUrlCoordinator = + new UrlBarCoordinator((UrlBar) mUrlBar, windowDelegate, actionModeCallback, + mCallbackController.makeCancelable(mLocationBarMediator::onUrlFocusChange), + mLocationBarMediator); mAutocompleteCoordinator = new AutocompleteCoordinator(mLocationBarLayout, mLocationBarMediator, this, mUrlCoordinator, activityLifecycleDispatcher, modalDialogManagerSupplier, @@ -128,8 +128,8 @@ StatusView statusView = mLocationBarLayout.findViewById(R.id.location_bar_status); mStatusCoordinator = new StatusCoordinator(isTablet(), statusView, mUrlCoordinator, incognitoStateProvider, modalDialogManagerSupplier, locationBarDataProvider); - mLocationBarMediator.setCoordinators(mStatusCoordinator); - + mLocationBarMediator.setCoordinators(mStatusCoordinator, mAutocompleteCoordinator); + mUrlBar.setOnKeyListener(mLocationBarMediator); mUrlCoordinator.addUrlTextChangeListener(mAutocompleteCoordinator); // The LocationBar's direction is tied to the UrlBar's text direction. Icons inside the @@ -155,6 +155,8 @@ mSubCoordinator.destroy(); mSubCoordinator = null; } + mUrlBar.setOnKeyListener(null); + mUrlBar = null; mUrlCoordinator.destroy(); mUrlCoordinator = null; mLocationBarLayout.removeUrlFocusChangeListener(mAutocompleteCoordinator); @@ -212,7 +214,7 @@ @Override public void selectAll() { - mLocationBarMediator.selectAll(); + mUrlCoordinator.selectAll(); } @Override @@ -227,12 +229,12 @@ @Override public View getContainerView() { - return mLocationBarMediator.getContainerView(); + return mLocationBarLayout.getContainerView(); } @Override public View getSecurityIconView() { - return mLocationBarMediator.getSecurityIconView(); + return mLocationBarLayout.getSecurityIconView(); } /** Returns the {@link VoiceRecognitionHandler} associated with this LocationBar. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java index 23a8f53..f65e469 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -22,7 +22,6 @@ import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; @@ -43,7 +42,6 @@ import org.chromium.chrome.browser.WindowDelegate; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.locale.LocaleManager; -import org.chromium.chrome.browser.native_page.NativePageFactory; import org.chromium.chrome.browser.ntp.NewTabPageUma; import org.chromium.chrome.browser.omnibox.UrlBar.ScrollType; import org.chromium.chrome.browser.omnibox.UrlBarCoordinator.SelectionState; @@ -58,7 +56,6 @@ import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; -import org.chromium.chrome.browser.util.KeyNavigationUtil; import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.widget.CompositeTouchDelegate; import org.chromium.components.embedder_support.util.UrlUtilities; @@ -131,45 +128,6 @@ private TemplateUrlServiceObserver mTemplateUrlObserver; private OverrideUrlLoadingDelegate mOverrideUrlLoadingDelegate; - /** - * Class to handle input from a hardware keyboard when the focus is on the URL bar. In - * particular, handle navigating the suggestions list from the keyboard. - */ - private final class UrlBarKeyListener implements OnKeyListener { - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - boolean isRtl = v.getLayoutDirection() == LAYOUT_DIRECTION_RTL; - if (mAutocompleteCoordinator.handleKeyEvent(keyCode, event)) { - return true; - } else if (keyCode == KeyEvent.KEYCODE_BACK) { - if (KeyNavigationUtil.isActionDown(event) && event.getRepeatCount() == 0) { - // Tell the framework to start tracking this event. - getKeyDispatcherState().startTracking(event, this); - return true; - } else if (KeyNavigationUtil.isActionUp(event)) { - getKeyDispatcherState().handleUpEvent(event); - if (event.isTracking() && !event.isCanceled()) { - backKeyPressed(); - return true; - } - } - } else if (keyCode == KeyEvent.KEYCODE_ESCAPE) { - if (KeyNavigationUtil.isActionDown(event) && event.getRepeatCount() == 0) { - revertChanges(); - return true; - } - } else if ((!isRtl && KeyNavigationUtil.isGoRight(event)) - || (isRtl && KeyNavigationUtil.isGoLeft(event))) { - // Ensures URL bar doesn't lose focus, when RIGHT or LEFT (RTL) key is pressed while - // the cursor is positioned at the end of the text. - TextView tv = (TextView) v; - return tv.getSelectionStart() == tv.getSelectionEnd() - && tv.getSelectionEnd() == tv.getText().length(); - } - return false; - } - } - public LocationBarLayout(Context context, AttributeSet attrs) { this(context, attrs, R.layout.location_bar); @@ -226,8 +184,6 @@ StatusView statusView = findViewById(R.id.location_bar_status); statusView.setCompositeTouchDelegate(mCompositeTouchDelegate); - - mUrlBar.setOnKeyListener(new UrlBarKeyListener()); } @Override @@ -343,26 +299,6 @@ setUrlBarFocus(false, null, OmniboxFocusReason.UNFOCUS); } - public void selectAll() { - mUrlCoordinator.selectAll(); - } - - public void revertChanges() { - if (!mUrlHasFocus) { - setUrl(mLocationBarDataProvider.getCurrentUrl()); - } else { - String currentUrl = mLocationBarDataProvider.getCurrentUrl(); - if (NativePageFactory.isNativePageUrl( - currentUrl, mLocationBarDataProvider.isIncognito())) { - setUrlBarTextEmpty(); - } else { - setUrlBarText(mLocationBarDataProvider.getUrlBarData(), UrlBar.ScrollType.NO_SCROLL, - SelectionState.SELECT_ALL); - } - setKeyboardVisibility(false, false); - } - } - /* package */ void onUrlTextChanged() { updateButtonVisibility(); } @@ -1130,7 +1066,7 @@ * @param selectionState Specifies how the text should be selected in the focused state. * @return Whether the URL was changed as a result of this call. */ - private boolean setUrlBarText( + /* package */ boolean setUrlBarText( UrlBarData urlBarData, @ScrollType int scrollType, @SelectionState int selectionState) { return mUrlCoordinator.setUrlBarData(urlBarData, scrollType, selectionState); } @@ -1139,7 +1075,7 @@ * Clear any text in the URL bar. * @return Whether this changed the existing text. */ - private boolean setUrlBarTextEmpty() { + /* package */ boolean setUrlBarTextEmpty() { boolean textChanged = mUrlCoordinator.setUrlBarData( UrlBarData.EMPTY, UrlBar.ScrollType.SCROLL_TO_BEGINNING, SelectionState.SELECT_ALL); forceOnTextChanged();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java index 3a13d56..7c662073 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -5,7 +5,10 @@ package org.chromium.chrome.browser.omnibox; import android.content.Context; +import android.view.KeyEvent; import android.view.View; +import android.view.View.OnKeyListener; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -13,8 +16,10 @@ import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.gsa.GSAState; +import org.chromium.chrome.browser.native_page.NativePageFactory; import org.chromium.chrome.browser.ntp.FakeboxDelegate; import org.chromium.chrome.browser.omnibox.UrlBar.UrlBarDelegate; +import org.chromium.chrome.browser.omnibox.UrlBarCoordinator.SelectionState; import org.chromium.chrome.browser.omnibox.status.StatusCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteDelegate; @@ -22,6 +27,7 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +import org.chromium.chrome.browser.util.KeyNavigationUtil; import org.chromium.ui.base.WindowAndroid; import java.util.List; @@ -30,16 +36,17 @@ * Mediator for the LocationBar component. Intended location for LocationBar business logic; * currently, migration of this logic out of LocationBarLayout is in progress. */ -class LocationBarMediator implements LocationBar, LocationBarDataProvider.Observer, - AutocompleteDelegate, FakeboxDelegate, - VoiceRecognitionHandler.Delegate, - AssistantVoiceSearchService.Observer, UrlBarDelegate { - private LocationBarLayout mLocationBarLayout; +class LocationBarMediator implements LocationBarDataProvider.Observer, AutocompleteDelegate, + FakeboxDelegate, VoiceRecognitionHandler.Delegate, + AssistantVoiceSearchService.Observer, UrlBarDelegate, + OnKeyListener { + private final LocationBarLayout mLocationBarLayout; private VoiceRecognitionHandler mVoiceRecognitionHandler; - private LocationBarDataProvider mLocationBarDataProvider; + private final LocationBarDataProvider mLocationBarDataProvider; private AssistantVoiceSearchService mAssistantVoiceSearchService; - private OneshotSupplierImpl<AssistantVoiceSearchService> mAssistantVoiceSearchSupplier; + private final OneshotSupplierImpl<AssistantVoiceSearchService> mAssistantVoiceSearchSupplier; private StatusCoordinator mStatusCoordinator; + private AutocompleteCoordinator mAutocompleteCoordinator; /*package */ LocationBarMediator(@NonNull LocationBarLayout locationBarLayout, @NonNull LocationBarDataProvider locationBarDataProvider, @@ -52,6 +59,15 @@ mVoiceRecognitionHandler = new VoiceRecognitionHandler(this, mAssistantVoiceSearchSupplier); } + /*package */ void destroy() { + if (mAssistantVoiceSearchService != null) { + mAssistantVoiceSearchService.destroy(); + mAssistantVoiceSearchService = null; + } + mStatusCoordinator = null; + mAutocompleteCoordinator = null; + } + /*package */ void onUrlFocusChange(boolean hasFocus) { mLocationBarLayout.onUrlFocusChange(hasFocus); } @@ -84,12 +100,60 @@ * LocationBarMediator is a delegate for them, so is constructed beforehand. * * @param statusCoordinator + * @param autocompleteCoordinator */ - /* package */ void setCoordinators(@NonNull StatusCoordinator statusCoordinator) { + /* package */ void setCoordinators(@NonNull StatusCoordinator statusCoordinator, + @NonNull AutocompleteCoordinator autocompleteCoordinator) { mStatusCoordinator = statusCoordinator; + mAutocompleteCoordinator = autocompleteCoordinator; + } + + /*package */ void updateVisualsForState() { + mLocationBarLayout.onPrimaryColorChanged(); + } + + /*package */ void setShowTitle(boolean showTitle) { + // This method is only used in CustomTabToolbar. + } + + /*package */ void updateLoadingState(boolean updateUrl) { + mLocationBarLayout.updateLoadingState(updateUrl); + } + + /*package */ void showUrlBarCursorWithoutFocusAnimations() { + mLocationBarLayout.showUrlBarCursorWithoutFocusAnimations(); + } + + /*package */ void revertChanges() { + if (mLocationBarLayout.isUrlBarFocused()) { + String currentUrl = mLocationBarDataProvider.getCurrentUrl(); + if (NativePageFactory.isNativePageUrl( + currentUrl, mLocationBarDataProvider.isIncognito())) { + mLocationBarLayout.setUrlBarTextEmpty(); + } else { + mLocationBarLayout.setUrlBarText(mLocationBarDataProvider.getUrlBarData(), + UrlBar.ScrollType.NO_SCROLL, SelectionState.SELECT_ALL); + } + setKeyboardVisibility(false, false); + } else { + mLocationBarLayout.setUrl(mLocationBarDataProvider.getCurrentUrl()); + } + } + + /*package */ void updateStatusIcon() { + mLocationBarLayout.updateStatusIcon(); } // LocationBarData.Observer implementation + + @Override + public void onTitleChanged() {} + + @Override + public void onUrlChanged() { + mLocationBarLayout.setUrl(mLocationBarDataProvider.getCurrentUrl()); + } + @Override public void onIncognitoStateChanged() { mLocationBarLayout.updateMicButtonState(); @@ -105,73 +169,6 @@ mLocationBarLayout.onPrimaryColorChanged(); } - @Override - public void onTitleChanged() {} - - @Override - public void onUrlChanged() { - mLocationBarLayout.setUrl(mLocationBarDataProvider.getCurrentUrl()); - } - - // LocationBar implementation. - @Override - public void destroy() { - mLocationBarLayout = null; - mVoiceRecognitionHandler = null; - if (mAssistantVoiceSearchService != null) { - mAssistantVoiceSearchService.destroy(); - mAssistantVoiceSearchService = null; - } - mLocationBarDataProvider.removeObserver(this); - mLocationBarDataProvider = null; - mStatusCoordinator = null; - } - - @Override - public void updateVisualsForState() { - mLocationBarLayout.onPrimaryColorChanged(); - } - - @Override - public void setShowTitle(boolean showTitle) { - // This method is only used in CustomTabToolbar. - } - - @Override - public void updateLoadingState(boolean updateUrl) { - mLocationBarLayout.updateLoadingState(updateUrl); - } - - @Override - public void showUrlBarCursorWithoutFocusAnimations() { - mLocationBarLayout.showUrlBarCursorWithoutFocusAnimations(); - } - - @Override - public void selectAll() { - mLocationBarLayout.selectAll(); - } - - @Override - public void revertChanges() { - mLocationBarLayout.revertChanges(); - } - - @Override - public void updateStatusIcon() { - mLocationBarLayout.updateStatusIcon(); - } - - @Override - public View getContainerView() { - return mLocationBarLayout.getContainerView(); - } - - @Override - public View getSecurityIconView() { - return mLocationBarLayout.getSecurityIconView(); - } - // FakeboxDelegate implementation. @Override @@ -289,12 +286,6 @@ mLocationBarLayout.updateMicButtonState(); } - @Nullable - @Override - public FakeboxDelegate getFakeboxDelegate() { - return null; - } - @Override public void setSearchQuery(String query) { mLocationBarLayout.setSearchQuery(query); @@ -337,4 +328,38 @@ public void gestureDetected(boolean isLongPress) { mLocationBarLayout.gestureDetected(isLongPress); } + + // OnKeyListener implementation. + @Override + public boolean onKey(View view, int keyCode, KeyEvent event) { + boolean isRtl = view.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; + if (mAutocompleteCoordinator.handleKeyEvent(keyCode, event)) { + return true; + } else if (keyCode == KeyEvent.KEYCODE_BACK) { + if (KeyNavigationUtil.isActionDown(event) && event.getRepeatCount() == 0) { + // Tell the framework to start tracking this event. + mLocationBarLayout.getKeyDispatcherState().startTracking(event, this); + return true; + } else if (KeyNavigationUtil.isActionUp(event)) { + mLocationBarLayout.getKeyDispatcherState().handleUpEvent(event); + if (event.isTracking() && !event.isCanceled()) { + mLocationBarLayout.backKeyPressed(); + return true; + } + } + } else if (keyCode == KeyEvent.KEYCODE_ESCAPE) { + if (KeyNavigationUtil.isActionDown(event) && event.getRepeatCount() == 0) { + revertChanges(); + return true; + } + } else if ((!isRtl && KeyNavigationUtil.isGoRight(event)) + || (isRtl && KeyNavigationUtil.isGoLeft(event))) { + // Ensures URL bar doesn't lose focus, when RIGHT or LEFT (RTL) key is pressed while + // the cursor is positioned at the end of the text. + TextView tv = (TextView) view; + return tv.getSelectionStart() == tv.getSelectionEnd() + && tv.getSelectionEnd() == tv.getText().length(); + } + return false; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java index cffd3f5..68fd6cf 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ChromePaymentRequestService.java
@@ -15,7 +15,6 @@ import org.chromium.chrome.browser.autofill.PersonalDataManager; import org.chromium.chrome.browser.payments.handler.PaymentHandlerCoordinator; import org.chromium.chrome.browser.payments.ui.PaymentUiService; -import org.chromium.chrome.browser.payments.ui.SectionInformation; import org.chromium.components.autofill.EditableOption; import org.chromium.components.payments.AbortReason; import org.chromium.components.payments.BrowserPaymentRequest; @@ -143,7 +142,7 @@ // Implements BrowserPaymentRequest: @Override public PaymentApp getSelectedPaymentApp() { - return (PaymentApp) mPaymentUiService.getSelectedPaymentApp(); + return mPaymentUiService.getSelectedPaymentApp(); } // Implements BrowserPaymentRequest: @@ -301,7 +300,7 @@ } assert !mPaymentUiService.getPaymentApps().isEmpty(); - PaymentApp selectedApp = (PaymentApp) mPaymentUiService.getSelectedPaymentApp(); + PaymentApp selectedApp = mPaymentUiService.getSelectedPaymentApp(); dimBackgroundIfNotBottomSheetPaymentHandler(selectedApp); mDidRecordShowEvent = true; mJourneyLogger.setEventOccurred(Event.SKIPPED_SHOW); @@ -326,7 +325,7 @@ return false; } - PaymentApp app = (PaymentApp) mPaymentUiService.getSelectedPaymentApp(); + PaymentApp app = mPaymentUiService.getSelectedPaymentApp(); if (app == null || !app.isReadyForMinimalUI() || TextUtils.isEmpty(app.accountBalance())) { return false; } @@ -398,15 +397,8 @@ if (hasNotifiedInvokedPaymentApp) return; - if (mPaymentUiService.shouldShowShippingSection() - && (mPaymentUiService.getUiShippingOptions().isEmpty() - || !TextUtils.isEmpty(details.error)) - && mPaymentUiService.getShippingAddressesSection().getSelectedItem() != null) { - mPaymentUiService.getShippingAddressesSection().getSelectedItem().setInvalid(); - mPaymentUiService.getShippingAddressesSection().setSelectedItemIndex( - SectionInformation.INVALID_SELECTION); - mPaymentUiService.getShippingAddressesSection().setErrorMessage(details.error); - } + String detailsError = mSpec.getPaymentDetails().error; + mPaymentUiService.showShippingAddressErrorIfApplicable(detailsError); boolean providedInformationToPaymentRequestUI = mPaymentUiService.enableAndUpdatePaymentRequestUIWithPaymentInfo(); @@ -451,16 +443,7 @@ // Implements BrowserPaymentRequest: @Override public void onPaymentDetailsNotUpdated(@Nullable String selectedShippingOptionError) { - if (mPaymentUiService.shouldShowShippingSection() - && (mPaymentUiService.getUiShippingOptions().isEmpty() - || !TextUtils.isEmpty(mSpec.selectedShippingOptionError())) - && mPaymentUiService.getShippingAddressesSection().getSelectedItem() != null) { - mPaymentUiService.getShippingAddressesSection().getSelectedItem().setInvalid(); - mPaymentUiService.getShippingAddressesSection().setSelectedItemIndex( - SectionInformation.INVALID_SELECTION); - mPaymentUiService.getShippingAddressesSection().setErrorMessage( - selectedShippingOptionError); - } + mPaymentUiService.showShippingAddressErrorIfApplicable(selectedShippingOptionError); boolean providedInformationToPaymentRequestUI = mPaymentUiService.enableAndUpdatePaymentRequestUIWithPaymentInfo(); @@ -665,13 +648,13 @@ // Implements BrowserPaymentRequest: @Override public void onInstrumentDetailsReady() { - // If the payment method was an Autofill credit card with an identifier, record its use. - PaymentApp selectedPaymentMethod = (PaymentApp) mPaymentUiService.getSelectedPaymentApp(); - if (selectedPaymentMethod != null - && selectedPaymentMethod.getPaymentAppType() == PaymentAppType.AUTOFILL - && !selectedPaymentMethod.getIdentifier().isEmpty()) { + // If the payment app was an Autofill credit card with an identifier, record its use. + PaymentApp selectedPaymentApp = mPaymentUiService.getSelectedPaymentApp(); + if (selectedPaymentApp != null + && selectedPaymentApp.getPaymentAppType() == PaymentAppType.AUTOFILL + && !selectedPaymentApp.getIdentifier().isEmpty()) { PersonalDataManager.getInstance().recordAndLogCreditCardUse( - selectedPaymentMethod.getIdentifier()); + selectedPaymentApp.getIdentifier()); } // Showing the app selector UI if we were previously skipping it so the loading
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java index 327f8cb..ddb044c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentUiService.java
@@ -338,6 +338,7 @@ /** @return The payment apps. */ public List<PaymentApp> getPaymentApps() { List<PaymentApp> paymentApps = new ArrayList<>(); + if (mPaymentMethodsSection == null) return paymentApps; for (EditableOption each : mPaymentMethodsSection.getItems()) { paymentApps.add((PaymentApp) each); } @@ -349,8 +350,10 @@ * @return The selected payment app or null if none selected. */ @Nullable - public EditableOption getSelectedPaymentApp() { - return mPaymentMethodsSection.getSelectedItem(); + public PaymentApp getSelectedPaymentApp() { + return mPaymentMethodsSection == null + ? null + : (PaymentApp) mPaymentMethodsSection.getSelectedItem(); } /** @@ -472,9 +475,9 @@ // Do not show the Payment Request UI dialog even if the minimal UI is suppressed. mPaymentUisShowStateReconciler.onBottomSheetShown(); mMinimalUi = new MinimalUICoordinator(); + PaymentApp selectedApp = getSelectedPaymentApp(); return mMinimalUi.show(chromeActivity, - BottomSheetControllerProvider.from(chromeActivity.getWindowAndroid()), - (PaymentApp) mPaymentMethodsSection.getSelectedItem(), + BottomSheetControllerProvider.from(chromeActivity.getWindowAndroid()), selectedApp, mCurrencyFormatterMap.get(mRawTotal.amount.currency), mUiShoppingCart.getTotal(), readyObserver, confirmObserver, dismissObserver); } @@ -491,10 +494,12 @@ MinimalUICoordinator.ErrorAndCloseObserver onMinimalUiErroredAndClosed, Runnable onUiCompleted) { // Update records of the used payment app for sorting payment apps next time. - EditableOption selectedPaymentMethod = mPaymentMethodsSection.getSelectedItem(); - PaymentPreferencesUtil.increasePaymentAppUseCount(selectedPaymentMethod.getIdentifier()); + PaymentApp paymentApp = getSelectedPaymentApp(); + assert paymentApp != null; + String selectedPaymentMethod = paymentApp.getIdentifier(); + PaymentPreferencesUtil.increasePaymentAppUseCount(selectedPaymentMethod); PaymentPreferencesUtil.setPaymentAppLastUseDate( - selectedPaymentMethod.getIdentifier(), System.currentTimeMillis()); + selectedPaymentMethod, System.currentTimeMillis()); if (mMinimalUi != null) { mMinimalUi.onPaymentRequestComplete(result, @@ -642,7 +647,7 @@ public void onRetry(PaymentValidationErrors errors) { // Remove all payment apps except the selected one. assert mPaymentMethodsSection != null; - PaymentApp selectedApp = (PaymentApp) mPaymentMethodsSection.getSelectedItem(); + PaymentApp selectedApp = getSelectedPaymentApp(); assert selectedApp != null; mPaymentMethodsSection = new SectionInformation(PaymentRequestUI.DataType.PAYMENT_METHODS, /* selection = */ 0, new ArrayList<>(Arrays.asList(selectedApp))); @@ -698,9 +703,8 @@ /** @return The selected payment app type. */ public @PaymentAppType int getSelectedPaymentAppType() { - return mPaymentMethodsSection != null && mPaymentMethodsSection.getSelectedItem() != null - ? ((PaymentApp) mPaymentMethodsSection.getSelectedItem()).getPaymentAppType() - : PaymentAppType.UNDEFINED; + PaymentApp paymentApp = getSelectedPaymentApp(); + return paymentApp == null ? PaymentAppType.UNDEFINED : paymentApp.getPaymentAppType(); } /** Sets the modifier for the order summary based on the given app, if any. */ @@ -758,7 +762,7 @@ .format(modifier.total.amount.value)); } - updateOrderSummary((PaymentApp) mPaymentMethodsSection.getSelectedItem()); + updateOrderSummary(getSelectedPaymentApp()); } /** @@ -908,23 +912,33 @@ return isFirstUpdate; } + /** + * Shows the shipping address error if any. + * @param error The shipping address error, can be null. + */ + public void showShippingAddressErrorIfApplicable(@Nullable String error) { + if (shouldShowShippingSection() + && (mUiShippingOptions.isEmpty() || !TextUtils.isEmpty(error)) + && mShippingAddressesSection.getSelectedItem() != null) { + mShippingAddressesSection.getSelectedItem().setInvalid(); + mShippingAddressesSection.setSelectedItemIndex(SectionInformation.INVALID_SELECTION); + mShippingAddressesSection.setErrorMessage(error); + } + } + // Implements PaymentUiService.Delegate: @Override public boolean shouldShowShippingSection() { if (mParams.hasClosed() || !mParams.getPaymentOptions().requestShipping) return false; - if (mPaymentMethodsSection == null) return true; - - PaymentApp selectedApp = (PaymentApp) mPaymentMethodsSection.getSelectedItem(); + PaymentApp selectedApp = getSelectedPaymentApp(); return selectedApp == null || !selectedApp.handlesShippingAddress(); } // Implements PaymentUiService.Delegate: @Override public boolean shouldShowContactSection() { - PaymentApp selectedApp = (mPaymentMethodsSection == null) - ? null - : (PaymentApp) mPaymentMethodsSection.getSelectedItem(); + PaymentApp selectedApp = getSelectedPaymentApp(); if (mParams.hasClosed()) return false; PaymentOptions options = mParams.getPaymentOptions(); if (options.requestPayerName && (selectedApp == null || !selectedApp.handlesPayerName())) { @@ -1621,9 +1635,8 @@ mPaymentUisShowStateReconciler.onPaymentRequestUiClosed(); } if (mPaymentMethodsSection != null) { - for (int i = 0; i < mPaymentMethodsSection.getSize(); i++) { - EditableOption option = mPaymentMethodsSection.getItem(i); - ((PaymentApp) option).dismissInstrument(); + for (PaymentApp app : getPaymentApps()) { + app.dismissInstrument(); } mPaymentMethodsSection = null; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS index 543e4312..657e4f5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/DEPS
@@ -1,7 +1,6 @@ include_rules = [ "-chrome", "+chrome/android/java/src/org/chromium/chrome/browser/ActivityTabProvider.java", - "+chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java", "+chrome/android/java/src/org/chromium/chrome/browser/TabHidingType.java", "+chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java index f98936d..1b8afb1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.status_indicator.StatusIndicatorCoordinator; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; +import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.toolbar.ToolbarButtonInProductHelpController; import org.chromium.chrome.browser.ui.RootUiCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler; @@ -249,6 +250,12 @@ mEmptyBackgroundViewWrapper.initialize(); } + if (!mActivity.isTablet() + && (TabUiFeatureUtilities.isTabGroupsAndroidEnabled() + || TabUiFeatureUtilities.isConditionalTabStripEnabled())) { + getToolbarManager().enableBottomControls(); + } + if (EphemeralTabCoordinator.isSupported()) { mEphemeralTabCoordinatorSupplier.set(new EphemeralTabCoordinator(mActivity, mActivity.getWindowAndroid(), mActivity.getWindow().getDecorView(),
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java index 5ae7e94..4335a57d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -88,7 +88,6 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver; import org.chromium.chrome.browser.tasks.ReturnToChromeExperimentsUtil; -import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.toolbar.ThemeColorProvider.ThemeColorObserver; import org.chromium.chrome.browser.toolbar.ThemeColorProvider.TintObserver; import org.chromium.chrome.browser.toolbar.bottom.BottomControlsCoordinator; @@ -977,7 +976,7 @@ /** * Enable the bottom controls. */ - private void enableBottomControls() { + public void enableBottomControls() { mBottomControlsCoordinatorSupplier.set( new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager, mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer, @@ -1052,12 +1051,6 @@ // init directly. mMenuButtonCoordinator.onNativeInitialized(); - if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) - && (TabUiFeatureUtilities.isTabGroupsAndroidEnabled() - || TabUiFeatureUtilities.isConditionalTabStripEnabled())) { - enableBottomControls(); - } - TemplateUrlServiceFactory.get().runWhenLoaded(this::registerTemplateUrlObserver); mInitializedWithNative = true; mTabModelSelector.addObserver(mTabModelSelectorObserver);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java index 29b8cb0..c440bdd 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/tab/state/CriticalPersistedTabDataTest.java
@@ -12,6 +12,7 @@ import org.junit.Assert; import org.junit.Before; +import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,11 +23,13 @@ import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.UiThreadTest; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.tab.MockTab; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabImpl; import org.chromium.chrome.browser.tab.WebContentsState; -import org.chromium.chrome.test.ChromeBrowserTestRule; +import org.chromium.chrome.test.ChromeTabbedActivityTestRule; +import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule; import java.nio.ByteBuffer; import java.util.concurrent.Semaphore; @@ -35,9 +38,15 @@ * Test relating to {@link CriticalPersistedTabData} */ @RunWith(BaseJUnit4ClassRunner.class) +@Batch(Batch.PER_CLASS) public class CriticalPersistedTabDataTest { + @ClassRule + public static ChromeTabbedActivityTestRule mActivityTestRule = + new ChromeTabbedActivityTestRule(); + @Rule - public final ChromeBrowserTestRule mBrowserTestRule = new ChromeBrowserTestRule(); + public BlankCTATabInitialStateRule mBlankCTATabInitialStateRule = + new BlankCTATabInitialStateRule(mActivityTestRule, false); private static final int TAB_ID = 1; private static final int PARENT_ID = 2;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java index 267fa5c..26bede4 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/LocationBarMediatorTest.java
@@ -4,10 +4,9 @@ package org.chromium.chrome.browser.omnibox; -import static junit.framework.Assert.assertNull; - import static org.mockito.ArgumentMatchers.notNull; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import android.content.Context; @@ -25,9 +24,11 @@ import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.omnibox.UrlBarCoordinator.SelectionState; import org.chromium.chrome.browser.omnibox.voice.AssistantVoiceSearchService; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.search_engines.TemplateUrlService; /** Unit tests for LocationBarMediator. */ @@ -78,7 +79,7 @@ public void testGetVoiceRecognitionHandler_safeToCallAfterDestroy() { mMediator.onFinishNativeInitialization(); mMediator.destroy(); - assertNull(mMediator.getVoiceRecognitionHandler()); + mMediator.getVoiceRecognitionHandler(); } @Test @@ -86,4 +87,29 @@ mMediator.onNtpStartedLoading(); verify(mLocationBarLayout).onNtpStartedLoading(); } + + @Test + public void testRevertChanges_focused() { + doReturn(true).when(mLocationBarLayout).isUrlBarFocused(); + UrlBarData urlBarData = mock(UrlBarData.class); + doReturn(urlBarData).when(mLocationBarDataProvider).getUrlBarData(); + mMediator.revertChanges(); + verify(mLocationBarLayout) + .setUrlBarText(urlBarData, UrlBar.ScrollType.NO_SCROLL, SelectionState.SELECT_ALL); + } + + @Test + public void testRevertChanges_focusedNativePage() { + doReturn(UrlConstants.NTP_URL).when(mLocationBarDataProvider).getCurrentUrl(); + doReturn(true).when(mLocationBarLayout).isUrlBarFocused(); + mMediator.revertChanges(); + verify(mLocationBarLayout).setUrlBarTextEmpty(); + } + + @Test + public void testRevertChanges_unFocused() { + doReturn("http://url.com").when(mLocationBarDataProvider).getCurrentUrl(); + mMediator.revertChanges(); + verify(mLocationBarLayout).setUrl("http://url.com"); + } }
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp index c135928..b2ecdff3 100644 --- a/chrome/app/chromeos_strings.grdp +++ b/chrome/app/chromeos_strings.grdp
@@ -4076,13 +4076,13 @@ Network connection was lost. Please check your connection or try another Wi-Fi network. </message> <message name="IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR" desc="Android sign-in error because of service is unavailable"> - Couldn't reach Google Play + Couldn't reach Google Play. Error code: <ph name="ERROR_CODE">$1<ex>7</ex></ph>. </message> <message name="IDS_ARC_SIGN_IN_BAD_AUTHENTICATION_ERROR" desc="Android sign-in error because of bad authentification"> Couldn’t verify your account. Please try again or restart your Chromebook. </message> <message name="IDS_ARC_SIGN_IN_GMS_NOT_AVAILABLE_ERROR" desc="Android sign-in error because of GMS services are unavailable"> - Couldn’t connect with Google services + Couldn’t connect with Google services. Error code: <ph name="ERROR_CODE">$1<ex>7</ex></ph>. </message> <message name="IDS_ARC_SIGN_IN_CLOUD_PROVISION_FLOW_ACCOUNT_MISSING_ERROR" desc="Android permament sign-in error because of cloud provision flow failed"> Provisioning failed because your account details could not be retrieved. Please try again. Error code: <ph name="ERROR_CODE">$1<ex>7</ex></ph>.
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_GMS_NOT_AVAILABLE_ERROR.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_GMS_NOT_AVAILABLE_ERROR.png.sha1 new file mode 100644 index 0000000..6e4f1b4 --- /dev/null +++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_GMS_NOT_AVAILABLE_ERROR.png.sha1
@@ -0,0 +1 @@ +eaaf2e943790d476190c1cdd3773126e69885b25 \ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR.png.sha1 new file mode 100644 index 0000000..e851ee8f --- /dev/null +++ b/chrome/app/chromeos_strings_grdp/IDS_ARC_SIGN_IN_SERVICE_UNAVAILABLE_ERROR.png.sha1
@@ -0,0 +1 @@ +23edc2c2d9a9bda258271892611221de55f5b0a8 \ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 10f678e..64d3794 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -9768,6 +9768,21 @@ <message name="IDS_DESKTOP_MEDIA_PICKER_MULTIPLE_SCREEN_NAME" desc="Name for screens in the desktop media picker UI when there are multiple monitors."> {SCREEN_INDEX, plural, =1{Screen #} other{Screen #}} </message> + + <!-- Confirmation dialog for getCurrentBrowsingContextMedia API --> + <message name="IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE" desc="Title for the confirmation dialog shown when getCurrentBrowsingContextMedia is requested by an app."> + Share this tab + </message> + <message name="IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TEXT_REQUESTED_BY_APP" desc="Text for the confirmation dialog shown when getCurrentBrowsingContextMedia is requested by an app."> + <ph name="TARGET_NAME">$1<ex>https://google.com</ex></ph> is asking for permission to capture the contents of this tab. + </message> + <message name="IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_AUDIO_SHARE" desc="Text for the checkbox on the confirmation dialog for getCurrentBrowsingContextMedia API, when checked, audio will be shared, otherwise just video sharing"> + Share audio + </message> + <message name="IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_SHARE_BUTTON" desc="Used for Share on buttons"> + Share + </message> + <!-- Local Device Discovery display strings --> <if expr="enable_service_discovery"> <message name="IDS_LOCAL_DISCOVERY_NOTIFICATION_TITLE_PRINTER" desc="Title of notification for one or more new printer showing up on your network. [ICU Syntax]">
diff --git a/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_AUDIO_SHARE.png.sha1 b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_AUDIO_SHARE.png.sha1 new file mode 100644 index 0000000..dbb7865 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_AUDIO_SHARE.png.sha1
@@ -0,0 +1 @@ +282e4397adbf6cbc51adad6fca84783715c4681a \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_SHARE_BUTTON.png.sha1 b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_SHARE_BUTTON.png.sha1 new file mode 100644 index 0000000..dbb7865 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_SHARE_BUTTON.png.sha1
@@ -0,0 +1 @@ +282e4397adbf6cbc51adad6fca84783715c4681a \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TEXT_REQUESTED_BY_APP.png.sha1 b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TEXT_REQUESTED_BY_APP.png.sha1 new file mode 100644 index 0000000..bd215cf --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TEXT_REQUESTED_BY_APP.png.sha1
@@ -0,0 +1 @@ +0836b3016785247f5f95badc7df41abdbf791747 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE.png.sha1 new file mode 100644 index 0000000..dbb7865 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@ +282e4397adbf6cbc51adad6fca84783715c4681a \ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 623ee778..a6a6278 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">আপনার অ্যাকাউন্টের সাইন-ইনের বিবরণটি পুরনো হওয়ায় Chromium OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation> <translation id="2560420686485554789">ফাইল ডাউনলোড করতে Chromium-এর জন্য স্টোরেজের অ্যাক্সেস প্রয়োজন</translation> <translation id="2572494885440352020">Chromium সহায়ক</translation> +<translation id="2583187216237139145">এই প্রোফাইল ব্যবহার করার সময় জেনারেট হওয়া Chromium ডেটা (যেমন বুকমার্ক, ইতিহাস, পাসওয়ার্ড ও অন্যান্য সেটিংস) অফিস প্রোফাইল অ্যাডমিনিস্ট্রেটর মুছে দিতে পারেন। <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">আপডেটটি প্রয়োগ করতে Chromium OS আবার চালু করা প্রয়োজন।</translation> <translation id="2615699638672665509">এই কম্পিউটারটি শীঘ্রই Chromium এর আপডেটগুলি গ্রহণ করা বন্ধ করবে কারণ এটির হার্ডওয়্যার আর সমর্থিত নয়৷</translation> <translation id="2648074677641340862">ইনস্টলেশনের সময় একটি অপারেটিং সিস্টেম ত্রুটি ঘটেছে৷ অনুগ্রহ করে Chromium আবার ডাউনলোড করুন৷</translation> @@ -141,6 +142,7 @@ <translation id="6055895534982063517">Chromium-এর একটি নতুন ভার্সন উপলভ্য আছে৷ এবং এটি আগের তুলনায় আরও দ্রুত৷</translation> <translation id="6063093106622310249">Chromium এ খুলুন</translation> <translation id="6072279588547424923">Chromium-এ <ph name="EXTENSION_NAME" /> যোগ করা হয়েছে</translation> +<translation id="608006075545470555">এই ব্রাউজারে অফিস প্রোফাইল যোগ করুন</translation> <translation id="608189560609172163">সাইন ইনে ত্রুটির কারণে Chromium আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation> <translation id="6096348254544841612">Chromium কে কাস্টমাইজ এবং নিয়ন্ত্রণ করুন৷ আপডেট পাওয়া যাবে৷</translation> <translation id="6120345080069858279">Chromium আপনার Google অ্যাকাউন্টে এই পাসওয়ার্ডটি সেভ করবে। আপনাকে এটি মনে রাখতে হবে না।</translation> @@ -161,6 +163,7 @@ <translation id="6403826409255603130">Chromium হল একটি ওয়েব ব্রাউজার যা ওয়েব পৃষ্ঠার গতি এবং অ্যাপগুলিকে বিদ্যুৎ গতিতে সঞ্চালিত করে৷ এটা দ্রুত, স্থিতিশীল এবং সহজে ব্যবহারের যোগ্য৷ Chromium নির্মিত ম্যালওয়ার এবং ফিশিং সুরক্ষার সাহায্যে আরও সুরক্ষিত ভাবে ওয়েব ব্রাউজ করুন৷</translation> <translation id="6434250628340475518">Chromium OS সিস্টেম</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium ১ সেকেন্ডের মধ্যে রিস্টার্ট হবে}one{Chromium # সেকেন্ডের মধ্যে রিস্টার্ট হবে}other{Chromium # সেকেন্ডের মধ্যে রিস্টার্ট হবে}}</translation> +<translation id="6464340581899189425">আপনার একাধিক Google অ্যাকাউন্ট থাকলে, সেগুলি <ph name="DEVICE_TYPE" />-এ যোগ করতে পারবেন। এই অ্যাকাউন্টের মাধ্যমে আপনি Chromium ব্রাউজার ও Play Store সহ Gmail, Drive ও YouTube-এর মতো পরিষেবা অ্যাক্সেস করতে পারবেন।<ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="6475912303565314141">আপনি Chromium শুরু করলে কোন পৃষ্ঠাটি দেখানো হবে তাও এটি নিয়ন্ত্রণ করে।</translation> <translation id="6510925080656968729">Chromium আনইনস্টল করুন</translation> <translation id="6570579332384693436">ভুল বানানগুলি ঠিক করতে, Chromium টেক্সট ফিল্ডে আপনার লেখা টেক্সট Google-এ পাঠায়</translation> @@ -218,6 +221,7 @@ <translation id="7857220146454061152">ভবিষ্যতে Chromium আপডেট পেতে হলে, আপনার কম্পিউটারে OS X 10.11 বা এর পরবর্তী যেকোনও ভার্সন থাকতে হবে। এই কম্পিউটারে OS X 10.10 ভার্সন ব্যবহার করা হচ্ছে।</translation> <translation id="7867198900892795913">Chromium লেটেস্ট ভার্সনে আপডেট করা যাচ্ছে না, তাই আপনি নতুন বৈশিষ্ট্য এবং সুরক্ষা সমাধানগুলি পাচ্ছেন না।</translation> <translation id="7898472181347242998">আপনার ডিভাইস আপ-টু-ডেট আছে কিনা তা দেখতে <ph name="LINK_BEGIN" />Chromium OS সেটিংস<ph name="LINK_END" /> বিকল্পে যান</translation> +<translation id="7907774600618164274">Chromium OS ঠিকভাবে বন্ধ হয়নি।</translation> <translation id="7937630085815544518">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসাবে Chromium-এ প্রবেশ করেছেন৷ আবার সাইন-ইন করতে একই অ্যাকাউন্ট ব্যবহার করুন৷</translation> <translation id="7975919845073681630">এটা Chromium এর সেকেন্ডারি ইনস্টলেশন এবং একে আপনার ডিফল্ট ব্রাউজার করা যাবে না।</translation> <translation id="7979877361127045932">Chromium মেনুর মধ্যে লুকান</translation> @@ -232,6 +236,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromium এক দিনের মধ্যে আবার লঞ্চ করুন}one{Chromium # দিনের মধ্যে আবার লঞ্চ করুন}other{Chromium # দিনের মধ্যে আবার লঞ্চ করুন}}</translation> <translation id="8453117565092476964">ইনস্টলার আর্কাইভ অবিশুদ্ধ বা ভুল৷ Chromium পুনরায় ডাউনলোড করুন৷</translation> <translation id="8493179195440786826">Chromium পুরানো হয়ে গেছে</translation> +<translation id="8550334526674375523">এই অফিস প্রোফাইল আপনার ব্যক্তিগত প্রোফাইল থেকে সম্পূর্ণ আলাদা।</translation> <translation id="8558383651099478961">তোমার অভিভাবক Chromium-এ "সাইট, অ্যাপ ও এক্সটেনশনের অনুমতি" বন্ধ করে দিয়েছেন। এই <ph name="EXTENSION_TYPE_PARAMETER" /> যোগ করার অনুমতি নেই।</translation> <translation id="8568283329061645092">আপনি যখন নিজের Google অ্যাকাউন্টের মাধ্যমে সাইন-ইন করবেন, Chromium তখন আপনার পাসওয়ার্ড চেক করে দেখতে পারবে</translation> <translation id="8586442755830160949">কপিরাইট <ph name="YEAR" /> Chromium রচয়িতা৷ সর্বস্বত্ত্ব সংরক্ষিত৷</translation> @@ -248,6 +253,7 @@ <translation id="8907580949721785412">Chromium পাসওয়ার্ডগুলি দেখানোর চেষ্টা করছে। এটির অনুমতি দিতে আপনার Windows পাসওয়ার্ড টাইপ করুন।</translation> <translation id="8941642502866065432">Chromium আপডেট করা যাচ্ছে না</translation> <translation id="8974095189086268230">Chrome OS সম্ভবত অতিরিক্ত <ph name="BEGIN_LINK_CROS_OSS" />ওপেন সোর্স সফ্টওয়্যার<ph name="END_LINK_CROS_OSS" /> দিয়ে তৈরি৷</translation> +<translation id="8986207147630327271">আপনি এই ব্রাউজারে অফিস প্রোফাইল যোগ করছেন এবং আপনার অ্যাডমিনিস্ট্রেটরকে শুধু অফিস প্রোফাইলটি নিয়ন্ত্রণ করার অধিকার দিচ্ছেন।</translation> <translation id="9019929317751753759">Chromium-কে আরও নিরাপদ করতে, আমরা নিচের এক্সটেনশনটি বন্ধ করেছি যা <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />-এ তালিকাবদ্ধ করা হয়নি এবং হয়ত আপনাকে না জানিয়ে যোগ করা হয়েছিল৷</translation> <translation id="9089354809943900324">Chromium পুরানো হয়ে গেছে</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium ১ ঘণ্টার মধ্যে আবার লঞ্চ হবে}one{Chromium # ঘণ্টার মধ্যে আবার লঞ্চ হবে}other{Chromium # ঘণ্টার মধ্যে আবার লঞ্চ হবে}}</translation> @@ -255,6 +261,7 @@ <translation id="911206726377975832">আপনার ব্রাউজিং ডেটাও মুছে দেবেন?</translation> <translation id="9158494823179993217"><ph name="TARGET_URL_HOSTNAME" /> অ্যাক্সেস করতে অন্য ব্রাউজার খোলার জন্য আপনার সিস্টেম অ্যাডমিনিস্ট্রেটর Chromium কনফিগার করেছেন।</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS সিস্টেম</translation> <translation id="93478295209880648">Chromium সঠিকভাবে কাজ নাও করতে পারে কারণ এটি এখন আর Windows XP বা Windows Vista আর সমর্থিত নয়</translation> <translation id="95514773681268843"><ph name="DOMAIN" />-এ এই ডিভাইসটি ব্যবহার করার আগে আপনাকে নিম্নলিখিত পরিষেবার শর্তাদি পড়তে হবে এবং এটিকে স্বীকার করতে হবে৷ এই শর্তাদি Chromium OS-এর শর্তাদিকে প্রসারণ, সংশোধন বা সীমাবদ্ধ করে না৷</translation> <translation id="965162752251293939">Chromium কে ব্যবহার করছেন?</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index b0fc4ed..3d54501 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -42,7 +42,7 @@ <translation id="2535480412977113886">OS Chromium nije mogao sinkronizirati podatke vašeg računa jer su pojedinosti prijave na račun zastarjele.</translation> <translation id="2560420686485554789">Chromium treba pristup pohrani zbog preuzimanja fajlova</translation> <translation id="2572494885440352020">Chromium pomagač</translation> -<translation id="2583187216237139145">Sve podatke iz Chromiuma koji se generiraju tijekom upotrebe ovog profila (primjerice izradom oznaka, povijesti, zaporki i drugih postavki) može ukloniti administrator poslovnog profila. <ph name="LEARN_MORE" /></translation> +<translation id="2583187216237139145">Administrator radnog profila može ukloniti bilo koje podatke Chromiuma koji se generiraju tokom korištenja ovog profila (naprimjer kreiranje oznaka, historije, lozinki i drugih postavki). <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Chromium OS treba ponovo pokrenuti kako bi se primijenilo ažuriranje.</translation> <translation id="2615699638672665509">Ovo će računalo uskoro prestati primati ažuriranja Chromiuma jer njegov hardver više nije podržan.</translation> <translation id="2648074677641340862">Tokom instaliranja se pojavila greška operativnog sistema. Ponovo preuzmite Chromium.</translation> @@ -144,7 +144,7 @@ <translation id="6055895534982063517">Dostupna je nova verzija Chromiuma, brža nego ikad.</translation> <translation id="6063093106622310249">&Otvori u Chromiumu</translation> <translation id="6072279588547424923">Ekstenzija <ph name="EXTENSION_NAME" /> je dodana u Chromium</translation> -<translation id="608006075545470555">Dodavanje poslovnog profila u ovaj preglednik</translation> +<translation id="608006075545470555">Dodajte radni profil na ovaj preglednik</translation> <translation id="608189560609172163">Chromium nije uspio sinhronizirati vaše podatke zbog greške prilikom prijave.</translation> <translation id="6096348254544841612">Prilagodite i kontrolirajte Chromium. Dostupno je ažuriranje.</translation> <translation id="6120345080069858279">Chromium će sačuvati ovu lozinku na vašem Google računu. Nećete je morati zapamtiti.</translation> @@ -165,7 +165,7 @@ <translation id="6403826409255603130">Chromium je novi preglednik koji pokreće web stranice i aplikacije brzinom svjetlosti. On je brz, stabilan i jednostavan za upotrebu. Krećite se internetom u sigurnijem okruženju, zaštićeni od zlonamjernih softvera i krađe identiteta zahvaljujući elementima koji su ugrađeni u Chromium.</translation> <translation id="6434250628340475518">Sistem Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium će se ponovo pokrenuti za 1 sekundu}one{Chromium će se ponovo pokrenuti za # sekundu}few{Chromium će se ponovo pokrenuti za # sekunde}other{Chromium će se ponovo pokrenuti za # sekundi}}</translation> -<translation id="6464340581899189425">Ako imate više Google računa, možete ih dodati na uređaj <ph name="DEVICE_TYPE" />. Vaši će računi biti dostupni u pregledniku Chromium i u Trgovini Play te na uslugama kao što su Gmail, Disk i YouTube.<ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> +<translation id="6464340581899189425">Ako imate više Google računa, možete ih dodati na uređaj <ph name="DEVICE_TYPE" />. Vaši računi će biti dostupni u pregledniku Chromium i Play trgovini, kao i na drugim uslugama kao što su Gmail, Disk i YouTube.<ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Također kontrolira koja stranica se prikazuje kada pokrenete Chromium.</translation> <translation id="6510925080656968729">Deinstaliraj Chromium</translation> <translation id="6570579332384693436">Zbog ispravke pravopisnih grešaka, Chromium šalje Googleu tekst koji napišete u polja.</translation> @@ -225,7 +225,7 @@ <translation id="7857220146454061152">Da primate buduća ažuriranja za Chromium, trebat će vam OS X 10.11 ili novija verzija. Ovaj računar koristi OS X 10.10.</translation> <translation id="7867198900892795913">Chromium nije ažuriran na najnoviju verziju tako da propuštate prednosti novih funkcija i ispravke sigurnosnih propusta.</translation> <translation id="7898472181347242998">Da vidite je li vaš uređaj ažuriran, idite u <ph name="LINK_BEGIN" />Postavke Chromium OS-a<ph name="LINK_END" /></translation> -<translation id="7907774600618164274">OS Chromium nije se ispravno zatvorio.</translation> +<translation id="7907774600618164274">Chromium OS se nije ispravno isključio.</translation> <translation id="7937630085815544518">Bili ste prijavljeni na Chrome kao <ph name="USER_EMAIL_ADDRESS" />. Koristite isti račun da se ponovo prijavite.</translation> <translation id="7975919845073681630">Ovo je sekundarno instaliranje Chromiuma i stoga on ne može biti vaš zadani preglednik.</translation> <translation id="7979877361127045932">Sakrij u meniju Chromiuma</translation> @@ -240,7 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Ponovo pokreni Chromium u roku od jednog dana}one{Ponovo pokreni Chromium u roku od # dana}few{Ponovo pokreni Chromium u roku od # dana}other{Ponovo pokreni Chromium u roku od # dana}}</translation> <translation id="8453117565092476964">Arhiva alata za instaliranje je oštećena ili nevažeća. Ponovo preuzmite Chromium.</translation> <translation id="8493179195440786826">Chromium nije ažuriran</translation> -<translation id="8550334526674375523">Ovaj poslovni profil potpuno je odvojen od vašeg osobnog profila.</translation> +<translation id="8550334526674375523">Ovaj radni profil je u potpunosti odvojen od vašeg ličnog profila.</translation> <translation id="8558383651099478961">Tvoj roditelj je isključio "Odobrenja za web lokacije, aplikacije i ekstenzije" za Chromium. Dodavanje ove stavke (<ph name="EXTENSION_TYPE_PARAMETER" />) nije dozvoljeno.</translation> <translation id="8568283329061645092">Chromium može provjeravati vaše lozinke kada se prijavljujete putem Google računa</translation> <translation id="8586442755830160949">Autorska prava <ph name="YEAR" /> Autori Chromiuma. Sva prava zadržana.</translation> @@ -257,7 +257,7 @@ <translation id="8907580949721785412">Chromium pokušava prikazati lozinke. Upišite Windows lozinku da ovo omogućite.</translation> <translation id="8941642502866065432">Nije moguće ažurirati Chromium</translation> <translation id="8974095189086268230">Chromium OS omogućava dodatni <ph name="BEGIN_LINK_CROS_OSS" />softver otvorenog koda<ph name="END_LINK_CROS_OSS" />.</translation> -<translation id="8986207147630327271">Dodajete poslovni profil u ovaj preglednik i administratoru dodjeljujete kontrolu samo nad poslovnim profilom.</translation> +<translation id="8986207147630327271">Dodajete radni profil na ovaj preglednik i dajte administratoru kontrolu samo nad radnim profilom.</translation> <translation id="9019929317751753759">Kako bi Chromium bio sigurniji, onemogućili smo sljedeću ekstenziju koja nije navedena na stranici <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> i koja je dodana bez vašeg znanja.</translation> <translation id="9089354809943900324">Chromium nije ažuriran</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium će se ponovo pokrenuti za jedan sat}one{Chromium će se ponovo pokrenuti za # sat}few{Chromium će se ponovo pokrenuti za # sata}other{Chromium će se ponovo pokrenuti za # sati}}</translation> @@ -265,7 +265,7 @@ <translation id="911206726377975832">Također izbrisati podatke pregledanja?</translation> <translation id="9158494823179993217">Vaš administrator sistema je konfigurirao Chromium da otvori alternativni preglednik za pristup URL-u<ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> -<translation id="9214764063801632699">OS Chromium</translation> +<translation id="9214764063801632699">Sistem Chromium OS</translation> <translation id="93478295209880648">Chromium možda neće ispravno raditi jer više nije podržan na sistemima Windows XP ili Windows Vista</translation> <translation id="95514773681268843">Domena <ph name="DOMAIN" /> zahtijeva da prije korištenja uređaja pročitate i prihvatite sljedeće Uslove korištenja usluge. Ovi uslovi ne predstavljaju dodatak, izmjenu ili ograničenje uslova za Chromium OS.</translation> <translation id="965162752251293939">Ko koristi Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb index 28d4b93..5c09d91 100644 --- a/chrome/app/resources/chromium_strings_eu.xtb +++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS sistemak ezin izan ditu zure datuak sinkronizatu kontuan saioa hasteko datuak iraungi egin direlako.</translation> <translation id="2560420686485554789">Chromium-ek fitxategiak deskargatzearren memorian sartzeko baimena behar du</translation> <translation id="2572494885440352020">Chromium laguntzailea</translation> +<translation id="2583187216237139145">Laneko profilaren administratzaileak kendu egin ditzake profil hau erabiltzean sortutako Chromium-eko datuak (adibidez, sortutako laster-markak, historia, pasahitzak eta bestelako ezarpenak). <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Eguneratzea aplikatzeko, berrabiarazi egin behar da Chromium sistema eragilea.</translation> <translation id="2615699638672665509">Ordenagailuak laster Chromium eguneratzeak jasotzeari utziko dio bere hardwarea ez delako jada bateragarria.</translation> <translation id="2648074677641340862">Sistema-eragilean errore bat gertatu da instalatu bitartean. Deskargatu Chromium berriro.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Chromium-en bertsio berri bat erabilgarri dago; inoiz baino bizkorragoa da.</translation> <translation id="6063093106622310249">&Ireki Chromium-en</translation> <translation id="6072279588547424923">Gehitu da <ph name="EXTENSION_NAME" /> luzapena Chromium-en</translation> +<translation id="608006075545470555">Gehitu laneko profila arakatzaile honetan</translation> <translation id="608189560609172163">Saio-hasieraren errore bat dela-eta, Chromium arakatzaileak ezin izan ditu sinkronizatu zure datuak.</translation> <translation id="6096348254544841612">Pertsonalizatu eta kontrolatu Chromium. Eguneratze bat erabilgarri dago.</translation> <translation id="6120345080069858279">Chromium-ek Google-ko kontuan gordeko du pasahitz hau. Ez duzu gogoratu beharko.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Web-orriak eta aplikazioak tximista bezain azkar abiarazten dituen web-arakatzailea da Chromium. Bizkorra, egonkorra eta erabiltzeko erraza da. Chromium-ek malwarearen eta phishingaren aurka dituen babes inkorporatuei esker, seguruago ibiliko zara Interneten.</translation> <translation id="6434250628340475518">Chromium OS sistema</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{1 segundo barru berrabiaraziko da Chromium}other{# segundo barru berrabiaraziko da Chromium}}</translation> +<translation id="6464340581899189425">Google-ko kontu bat baino gehiago badituzu, <ph name="DEVICE_TYPE" /> gailuan gehi ditzakezu. Horrela, erabilgarri izango dituzu Chromium arakatzailean eta Play Store-n, baita beste zerbitzuetan ere: Gmail, Drive, YouTube eta abar.<ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Chromium abiarazten duzunean erakusten den orria ere kontrolatzen du.</translation> <translation id="6510925080656968729">Desinstalatu Chromium</translation> <translation id="6570579332384693436">Ortografia-akatsak konpondu ahal izateko, testu-eremuetan idazten duzun testua Google-ri bidaltzen dio Chromium-ek</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Etorkizunean Chromium-en eguneratzeak eskuratzeko, OS X 10.11 edo bertsio berriago bat beharko duzu. Ordenagailu hau OS X 10.10 erabiltzen ari da.</translation> <translation id="7867198900892795913">Ezin izan da eguneratu Chromium azken bertsiora; beraz, ez dituzu erabilgarri eginbide berriak eta segurtasun-konponketak.</translation> <translation id="7898472181347242998">Gailua eguneratuta dagoen ikusteko, joan <ph name="LINK_BEGIN" />Chromium OS sistemaren ezarpenetara<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS sistema ez da behar bezala itxi.</translation> <translation id="7937630085815544518">Chromium-en <ph name="USER_EMAIL_ADDRESS" /> gisa hasi duzu saioa. Saioa berriro hasteko, erabili hasiera batean erabilitako kontu bera.</translation> <translation id="7975919845073681630">Chromium-en bigarren mailako instalazio bat da hau; beraz, ezin duzu ezarri arakatzaile lehenetsi gisa.</translation> <translation id="7979877361127045932">Ezkutatu Chromium menuan</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Berrabiarazi Chromium egun bateko epean}other{Berrabiarazi Chromium # eguneko epean}}</translation> <translation id="8453117565092476964">Instalatzailearen artxiboa hondatuta dago edo baliogabea da. Deskargatu Chromium berriro.</translation> <translation id="8493179195440786826">Chromium zaharkituta dago</translation> +<translation id="8550334526674375523">Laneko profila eta profil pertsonala guztiz bereizita daude.</translation> <translation id="8558383651099478961">Zure gurasoak "Webguneen, aplikazioen eta luzapenen baimenak" desaktibatu ditu Chromium-en. Ezin da gehitu <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">Google-ko kontu batekin saioa hasten duzunean egiazta ditzake Chromium-ek pasahitzak</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Chromium-en egileak. Eskubide guztiak erreserbatuta.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium pasahitzak erakusten saiatzen ari da. Hori baimentzeko, idatzi Windows pasahitza.</translation> <translation id="8941642502866065432">Ezin da eguneratu Chromium</translation> <translation id="8974095189086268230">Chromium OS sistemak <ph name="BEGIN_LINK_CROS_OSS" />kode irekiko software<ph name="END_LINK_CROS_OSS" /> gehigarria behar du existitu ahal izateko.</translation> +<translation id="8986207147630327271">Laneko profila gehitzen ari zara arakatzaile honetan, eta laneko profilaren gaineko kontrola soilik eman diozu administratzaileari.</translation> <translation id="9019929317751753759">Chromium seguruagoa izan dadin, zuk jakin gabe gehitu den eta <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dendan zerrendatu gabe dagoen luzapena desgaitu dugu.</translation> <translation id="9089354809943900324">Chromium zaharkituta dago</translation> <translation id="9093206154853821181">{0,plural, =1{Ordubete barru berrabiaraziko da Chromium}other{# ordu barru berrabiaraziko da Chromium}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Arakatze-datuak ere ezabatu nahi dituzu?</translation> <translation id="9158494823179993217">Sistemaren administratzailearen konfigurazioaren arabera, Chromium-ek beste arakatzaile bat ireki behar du <ph name="TARGET_URL_HOSTNAME" /> helbidera joateko.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS sistema</translation> <translation id="93478295209880648">Chromium-ek agian ez du behar bezala funtzionatuko, jada ez baita bateragarria Windows XP eta Windows Vista-rekin</translation> <translation id="95514773681268843">Gailua erabili aurretik, <ph name="DOMAIN" /> domeinuak jarraian azalduko diren Zerbitzu-baldintza irakurtzeko eta onartzeko eskatzen dizu. Baldintzok ez dituzte Chromium OS Baldintzak hedatuko, aldatuko edo mugatuko.</translation> <translation id="965162752251293939">Nor erabiltzen ari da Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index 331b53c..315ea5f 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">سیستمعامل Chromium قادر به همگامسازی دادههای شما نبود زیرا جزئیات ورود به حساب شما بهروز نیست.</translation> <translation id="2560420686485554789">Chromium برای بارگیری فایلها باید به حافظه دسترسی داشته باشد</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2583187216237139145">سرپرست نمایه کاری میتواند دادههای Chromium را که درطول استفاده از این نمایه ایجاد شدهاند (مثل ایجاد سابقه نشانکها، گذرواژهها، و دیگر تنظیمات) بردارد. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">برای اعمال بهروزرسانی، Chromium OS باید راهاندازی مجدد شود.</translation> <translation id="2615699638672665509">دریافت بهروزرسانیهای Chromium به زودی در این رایانه متوقف خواهد شد زیرا سختافزار آن دیگر پشتیبانی نمیشود.</translation> <translation id="2648074677641340862">یک خطای سیستمعامل در طول نصب روی داد. لطفاً Chromium را دوباره نصب کنید.</translation> @@ -140,6 +141,7 @@ <translation id="6055895534982063517">نسخه جدیدی از Chromium وجود دارد که سریعتر از همیشه است.</translation> <translation id="6063093106622310249">&باز کردن در Chromium</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> به Chromium اضافه شد</translation> +<translation id="608006075545470555">افزودن نمایه کاری به این مرورگر</translation> <translation id="608189560609172163">به دلیل وجود خطا در ورود به سیستم، Chromium قادر به همگامسازی دادههای شما نبود.</translation> <translation id="6096348254544841612">سفارشی کردن و کنترل Chromium. بهروزرسانی در دسترس است.</translation> <translation id="6120345080069858279">Chromium این گذرواژه را در حساب Google شما ذخیره میکند. لازم نیست آن را به خاطر بسپارید.</translation> @@ -160,6 +162,7 @@ <translation id="6403826409255603130">Chromium یک مرورگر وب است که صفحات وب و برنامهها را با سرعت بسیار زیاد اجرا میکند. این مرورگر خیلی سریع، پایدار و دارای کاربرد آسان است. با محافظت در مقابل بدافزار و رمزگیری طراحی شده در داخل Chromium، با امنیت بیشتری وب را مرور کنید.</translation> <translation id="6434250628340475518">سیستم سیستمعامل Chromium</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium بعد از ۱ ثانیه بازراهاندازی میشود}one{Chromium بعد از # ثانیه بازراهاندازی میشود}other{Chromium بعد از # ثانیه بازراهاندازی میشود}}</translation> +<translation id="6464340581899189425">اگر چند «حساب Google» دارید، میتوانید آنها را به <ph name="DEVICE_TYPE" /> اضافه کنید. حسابهایتان در مرورگر Chromium و «فروشگاه Play» و همچنین سرویسهایی مثل Gmail، Drive، و YouTube دردسترس خواهند بود.<ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation> <translation id="6475912303565314141">این برنامه همچنین صفحهای را که هنگام راهاندازی Chromium نشان داده میشود، کنترل میکند.</translation> <translation id="6510925080656968729">حذف نصب Chromium </translation> <translation id="6570579332384693436">برای رفع خطاهای املائی، Chromium نوشتاری را که در فیلد نوشتار تایپ میکنید، برای Google ارسال میکند</translation> @@ -218,6 +221,7 @@ <translation id="7857220146454061152">برای دریافت بهروزرسانیهای آتی Chromium، باید OS X نسخه ۱۰.۱۱ یا بالاتر داشته باشید. این رایانه از OS X نسخه ۱۰.۱۰ استفاده میکند.</translation> <translation id="7867198900892795913">Chromium به جدیدترین نسخه بهروزرسانی نشد، بنابراین قابلیتهای جدید و رفع اشکالهای امنیتی را ندارید.</translation> <translation id="7898472181347242998">برای اینکه ببینید دستگاهتان بهروز است یا نه، به <ph name="LINK_BEGIN" />تنظیمات سیستمعامل Chromium<ph name="LINK_END" /> بروید</translation> +<translation id="7907774600618164274">Chromium OS بهدرستی خاموش نشده است.</translation> <translation id="7937630085815544518">شما بعنوان <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم Chromium شدهاید. لطفاً برای ورود به سیستم مجدد از همان حساب استفاده کنید.</translation> <translation id="7975919845073681630">این نصب ثانویه Chromium است و نمیتواند مرورگر پیشفرضتان شود.</translation> <translation id="7979877361127045932">پنهان در منوی Chromium</translation> @@ -232,6 +236,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromium را ظرف یک روز راهاندازی مجدد کنید}one{Chromium را ظرف # روز راهاندازی مجدد کنید}other{Chromium را ظرف # روز راهاندازی مجدد کنید}}</translation> <translation id="8453117565092476964">بایگانی نصبکننده خراب یا نامعتبر است. لطفاً Chromium را دوباره را بارگیری کنید.</translation> <translation id="8493179195440786826">نسخه Chromium قدیمی است</translation> +<translation id="8550334526674375523">این نمایه کاری کاملاً مجزا از نمایه شخصیتان است.</translation> <translation id="8558383651099478961">ولیتان «اجازههای مربوط به سایتها، برنامهها، و افزونهها» را برای Chromium خاموش کرده است. افزودن این <ph name="EXTENSION_TYPE_PARAMETER" /> مجاز نیست.</translation> <translation id="8568283329061645092">وقتی با «حساب Google» خود به سیستم وارد میشوید، Chromium میتواند گذرواژههایتان را بررسی کند</translation> <translation id="8586442755830160949">حق نسخهبرداری <ph name="YEAR" /> نویسندگان Chromium. کلیه حقوق محفوظ است.</translation> @@ -248,6 +253,7 @@ <translation id="8907580949721785412">Chromium در حال تلاش برای نشان دادن گذرواژههاست. برای اجازه به این کار، گذرواژه Windows خود را تایپ کنید.</translation> <translation id="8941642502866065432">بهروزرسانی Chromium امکانپذیر نیست</translation> <translation id="8974095189086268230">سیستمعامل Chromium با یک <ph name="BEGIN_LINK_CROS_OSS" />نرمافزار منبع آزاد<ph name="END_LINK_CROS_OSS" /> دیگر امکانپذیر است.</translation> +<translation id="8986207147630327271">با این کار، نمایه کاری را به این مرورگر اضافه میکنید و فقط کنترل نمایه کاری را دراختیار سرپرست قرار میدهید.</translation> <translation id="9019929317751753759">برای ایمنتر کردن Chromium، افزونه زیر را که در <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> فهرست نشده است و ممکن است بدون اطلاع شما اضافه شده باشد، غیرفعال کردیم.</translation> <translation id="9089354809943900324">نسخه Chromium قدیمی است</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium یک ساعت دیگر راهاندازی مجدد میشود}one{Chromium # ساعت دیگر راهاندازی مجدد میشود}other{Chromium # ساعت دیگر راهاندازی مجدد میشود}}</translation> @@ -255,6 +261,7 @@ <translation id="911206726377975832">دادههای مرور شما نیز حذف شود؟</translation> <translation id="9158494823179993217">سرپرست سیستم شما برای باز شدن مرورگر جایگزین برای دسترسی به <ph name="TARGET_URL_HOSTNAME" />، Chromium را پیکربندی کرده است.</translation> <translation id="9190841055450128916">Chromium (mDNS ورودی)</translation> +<translation id="9214764063801632699">سیستم Chromium OS</translation> <translation id="93478295209880648">Chromium ممکن است درست کار نکند زیرا دیگر در Windows XP یا Windows Vista پشتیبانی نمیشود</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> از شما میخواهد قبل از استفاده از دستگاه، شرایط خدمات زیر را خوانده و بپذیرید. این شرایط بسط داده نمیشوند، اصلاح نمیشوند و شرایط سیستمعامل Chromium را محدود نمیکنند.</translation> <translation id="965162752251293939">چهکسی از Chromium استفاده میکند؟</translation>
diff --git a/chrome/app/resources/chromium_strings_fr-CA.xtb b/chrome/app/resources/chromium_strings_fr-CA.xtb index 8a6495a..8ee5c4b 100644 --- a/chrome/app/resources/chromium_strings_fr-CA.xtb +++ b/chrome/app/resources/chromium_strings_fr-CA.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS n'a pas pu synchroniser vos données, car vos renseignements de connexion ne sont plus à jour.</translation> <translation id="2560420686485554789">Chromium a besoin d'accéder au stockage pour télécharger des fichiers</translation> <translation id="2572494885440352020">Aide de Chromium</translation> +<translation id="2583187216237139145">L'administrateur du profil professionnel peut retirer toutes les données Chromium générées durant l'utilisation de ce profil (comme la création de favoris, l'historique, les mots de passe et d'autres paramètres). <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Redémarrez Chromium OS pour appliquer la mise à jour.</translation> <translation id="2615699638672665509">Cet ordinateur ne recevra bientôt plus les mises à jour de Google Chromium, car ses composants matériels ne sont plus compatibles.</translation> <translation id="2648074677641340862">Une erreur de système d'exploitation s'est produite pendant l'installation. Veuillez télécharger de nouveau Chromium.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Une nouvelle version de Google Chrome est maintenant offerte. Il est plus rapide que jamais.</translation> <translation id="6063093106622310249">&Ouvrir dans Chromium</translation> <translation id="6072279588547424923">L'extension « <ph name="EXTENSION_NAME" /> » a été ajoutée à Chromium</translation> +<translation id="608006075545470555">Ajouter le profil professionnel à ce navigateur</translation> <translation id="608189560609172163">Chromium n'a pas pu synchroniser vos données, car une erreur s'est produite lors de la connexion.</translation> <translation id="6096348254544841612">Personnalisez et contrôlez Chromium. Une mise à jour est disponible.</translation> <translation id="6120345080069858279">Chromium enregistrera ce mot de passe dans votre compte Google. Vous n'aurez pas à le retenir.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium est un navigateur Web qui exécute les pages Web et les applications à une vitesse fulgurante. Il est rapide, stable et simple d'utilisation. Naviguez sur Internet en toute sécurité, en bénéficiant de la protection offerte par Chromium contre les logiciels malveillants et l'hameçonnage.</translation> <translation id="6434250628340475518">Système Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium redémarrera dans 1 seconde}one{Chromium redémarrera dans # seconde}many{Chromium will restart in # seconds}other{Chromium redémarrera dans # secondes}}</translation> +<translation id="6464340581899189425">Si vous avez plusieurs comptes Google, vous pouvez les ajouter à votre <ph name="DEVICE_TYPE" />. Vos comptes seront accessibles dans le navigateur Chromium et dans la boutique Play Store ainsi que dans les services comme Gmail, Disque et YouTube.<ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Elle gère également la page qui s'affiche au démarrage de Chromium.</translation> <translation id="6510925080656968729">Désinstaller Chromium</translation> <translation id="6570579332384693436">Pour corriger les fautes d'orthographe, Chromium envoie le texte que vous entrez dans des zones de texte à Google</translation> @@ -221,6 +224,7 @@ <translation id="7857220146454061152">Vous devez disposer de macOS X 10.11 ou d'une version ultérieure pour recevoir les futures mises à jour de Chromium. Or, c'est la version macOS X 10.10 qui est installée sur cet ordinateur.</translation> <translation id="7867198900892795913">Chromium n'a pas pu installer la nouvelle version, vous ne pouvez donc pas profiter des nouvelles fonctionnalités ni des correctifs relatifs à la sécurité.</translation> <translation id="7898472181347242998">Pour voir si votre appareil est à jour, sélectionnez les <ph name="LINK_BEGIN" />paramètres de Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS n'a pas été éteint correctement.</translation> <translation id="7937630085815544518">Vous étiez connecté à Chromium en tant que <ph name="USER_EMAIL_ADDRESS" />. Veuillez utiliser le même compte pour vous reconnecter.</translation> <translation id="7975919845073681630">Cette installation de Chromium est secondaire. Celui-ci ne peut donc pas servir de navigateur par défaut.</translation> <translation id="7979877361127045932">Masquer dans le menu Chromium</translation> @@ -235,6 +239,7 @@ <translation id="8417404458978023919">{0,plural, =1{Redémarrer Chromium d'ici un jour}one{Redémarrer Chromium d'ici # jour}many{Relaunch Chromium within # days}other{Redémarrer Chromium d'ici # jours}}</translation> <translation id="8453117565092476964">L'archive du programme d'installation est corrompue ou n'est pas valide. Veuillez télécharger Chromium à nouveau.</translation> <translation id="8493179195440786826">Chromium n'est pas à jour</translation> +<translation id="8550334526674375523">Ce profil professionnel est distinct de votre profil personnel.</translation> <translation id="8558383651099478961">Ton parent a désactivé le paramètre « Autorisations pour les sites, les applications et les extensions » dans Chromium. L'activation de ce <ph name="EXTENSION_TYPE_PARAMETER" /> n'est pas autorisée.</translation> <translation id="8568283329061645092">Chromium peut vérifier vos mots de passe lorsque vous vous connectez avec votre compte Google</translation> <translation id="8586442755830160949">© <ph name="YEAR" /> Les auteurs de Chrome. Tous droits réservés.</translation> @@ -251,6 +256,7 @@ <translation id="8907580949721785412">Chromium essaie d'afficher les mots de passe. Pour autoriser cette action, entrez votre mot de passe Windows.</translation> <translation id="8941642502866065432">Impossible de mettre à jour Chromium</translation> <translation id="8974095189086268230">Chromium OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels libres<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">Vous ajoutez un profil professionnel à ce navigateur et vous octroyez uniquement le contrôle de ce profil à votre administrateur.</translation> <translation id="9019929317751753759">Afin de rendre Chromium plus sûr, nous avons désactivé l'extension suivante qui n'est pas répertoriée dans <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> et a pu être ajoutée à votre insu.</translation> <translation id="9089354809943900324">Chromium n'est pas à jour</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium redémarrera dans une heure}one{Chromium redémarrera dans # heure}many{Chromium will relaunch in # hours}other{Chromium redémarrera dans # heures}}</translation> @@ -258,6 +264,7 @@ <translation id="911206726377975832">Supprimer également vos données de navigation?</translation> <translation id="9158494823179993217">Votre administrateur système a configuré Chromium pour ouvrir un autre navigateur afin d'accéder à <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Système Chromium OS</translation> <translation id="93478295209880648">Il se peut que Chromium ne fonctionne pas correctement, car il n'est plus compatible avec Windows XP ni Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> exige que vous lisiez et acceptiez les présentes conditions d'utilisation pour utiliser cet appareil. Ces dernières n'étendent, ne modifient ni ne restreignent les conditions d'utilisation de Chrome OS.</translation> <translation id="965162752251293939">Qui utilise Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb index fe0f578..388fd9d 100644 --- a/chrome/app/resources/chromium_strings_gl.xtb +++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS non puido sincronizar os teus datos porque caducou a túa información de inicio de sesión na conta.</translation> <translation id="2560420686485554789">Chromium necesita acceder ao almacenamento para descargar ficheiros</translation> <translation id="2572494885440352020">Asistente de Chromium</translation> +<translation id="2583187216237139145">O administrador do perfil de traballo pode quitar os datos de Chromium que se xeren durante o uso deste perfil (por exemplo, os marcadores, o historial, os contrasinais e outras opcións de configuración). <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">É necesario reiniciar Chromium OS para aplicar a actualización.</translation> <translation id="2615699638672665509">Este ordenador deixará de recibir actualizacións de Chromium en breve porque xa non se admite o seu hardware.</translation> <translation id="2648074677641340862">Produciuse un erro no sistema operativo durante a instalación. Volve descargar Chromium.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Hai unha nova versión de Chromium dispoñible que é máis rápida que nunca.</translation> <translation id="6063093106622310249">&Abrir en Chromium</translation> <translation id="6072279588547424923">Engadiuse a extensión <ph name="EXTENSION_NAME" /> a Chromium</translation> +<translation id="608006075545470555">Engadir un perfil de traballo a este navegador</translation> <translation id="608189560609172163">Chromium non puido sincronizar os teus datos debido a un erro ao iniciar sesión.</translation> <translation id="6096348254544841612">Personalizar e controlar Chromium. Hai una actualización dispoñible.</translation> <translation id="6120345080069858279">Chromium gardará este contrasinal na túa Conta de Google. Non terás que recordalo.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium é un navegador web que executa páxinas web e aplicacións a gran velocidade. É rápido, estable e fácil de utilizar. Chromium permíteche navegar na web de forma máis segura, xa que inclúe protección contra malware e phishing.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium reiniciarase en 1 segundo}other{Chromium reiniciarase en # segundos}}</translation> +<translation id="6464340581899189425">Se tes varias Contas de Google, podes engadilas ao teu dispositivo (<ph name="DEVICE_TYPE" />). Ao facelo, estarán dispoñibles no navegador Chromium e en Play Store, así como noutros servizos (por exemplo, Gmail, Drive e YouTube). <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Tamén controla a páxina que se mostra ao iniciar Chromium.</translation> <translation id="6510925080656968729">Desinstalar Chromium</translation> <translation id="6570579332384693436">Para solucionar os erros ortográficos, Chromium envía a Google o texto que escribes nos campos de texto</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Se queres recibir actualizacións de Chromium no futuro, debes instalar o sistema operativo OS X 10.11 ou unha versión posterior. Este ordenador ten instalada a versión OS X 10.10.</translation> <translation id="7867198900892795913">Chromium non se puido actualizar á última versión, polo que non gozas das novas funcións e solucións de seguranza.</translation> <translation id="7898472181347242998">Para ver ser o teu dispositivo está actualizado, accede á <ph name="LINK_BEGIN" />configuración de Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS non se pechou correctamente.</translation> <translation id="7937630085815544518">Iniciaches sesión en Chromium como <ph name="USER_EMAIL_ADDRESS" />. Utiliza a mesma conta para iniciar sesión de novo.</translation> <translation id="7975919845073681630">Esta é unha instalación secundaria de Chromium e non se pode converter no teu navegador predeterminado.</translation> <translation id="7979877361127045932">Ocultar no menú de Chromium</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Reinicia Chromium en 1 día}other{Reinicia Chromium en # días}}</translation> <translation id="8453117565092476964">O arquivo do instalador está danado ou non é válido. Volve descargar Chromium.</translation> <translation id="8493179195440786826">Chromium está desactualizado</translation> +<translation id="8550334526674375523">Este perfil de traballo é totalmente independente do teu perfil persoal.</translation> <translation id="8558383651099478961">O teu pai ou nai desactivou esta opción en Chromium: Permisos para sitios, aplicacións e extensións. Non está permitido engadir esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">Chromium pode comprobar os teus contrasinais cando inicies sesión coa túa Conta de Google</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. Reservados todos os dereitos.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium está tentando mostrar contrasinais. Escribe os teus contrasinais de Windows para permitir esta acción.</translation> <translation id="8941642502866065432">Non se puido actualizar Chromium</translation> <translation id="8974095189086268230">Chromium OS é posible grazas a outros <ph name="BEGIN_LINK_CROS_OSS" />software de código aberto<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">Estás a piques de engadir un perfil de traballo a este navegador e de permitir que o teu administrador controle só o perfil de traballo.</translation> <translation id="9019929317751753759">Para conseguir que Chromium resulte máis seguro, desactivamos a seguinte extensión que non aparece en <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> e que quizais se engadise sen o teu coñecemento.</translation> <translation id="9089354809943900324">Chromium está desactualizado</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium reiniciarase en 1 hora}other{Chromium reiniciarase en # horas}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Queres eliminar tamén os teus datos de navegación?</translation> <translation id="9158494823179993217">O teu administrador do sistema configurou Chromium para abrir outro navegador co obxectivo de acceder a <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Sistema Chromium OS</translation> <translation id="93478295209880648">É posible que Chromium non funcione correctamente porque xa non admite Windows XP nin Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> require que leas e aceptes as seguintes Condicións de servizo antes de utilizar este dispositivo. Estas condicións non amplían, modifican nin limitan as condicións de Chromium OS.</translation> <translation id="965162752251293939">Quen está utilizando Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_hy.xtb b/chrome/app/resources/chromium_strings_hy.xtb index e85fdfd1..98261c7 100644 --- a/chrome/app/resources/chromium_strings_hy.xtb +++ b/chrome/app/resources/chromium_strings_hy.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS-ին չհաջողվեց համաժամացնել ձեր տվյալները, քանի որ ձեր հաշվի տվյալները հնացել են:</translation> <translation id="2560420686485554789">Ֆայլեր ներբեռնելու համար Chromium-ին անհրաժեշտ է պահեստի օգտագործման թույլտվություն</translation> <translation id="2572494885440352020">Chromium օգնական</translation> +<translation id="2583187216237139145">Աշխատանքային պրոֆիլի ադմինիստրատորը կարող է ջնջել Chromium-ի բոլոր տվյալները, որոնք ստեղծվում են այս պրոֆիլի օգտագործման ընթացքում (օրինակ՝ էջանիշներ, պատմություն, գաղտնաբառեր և այլ կարգավորումներ)։ <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Թարմացումը կիրառելու համար հարկավոր է վերագործարկել Chromium OS-ը:</translation> <translation id="2615699638672665509">Այս համակարգչին այլևս չեն ուղարկվի Chromium-ի թարմացումներ, քանի որ նրա սարքակազմն այլևս չի աջակցվում:</translation> <translation id="2648074677641340862">Տեղադրման ժամանակ օպերացիոն համակարգի սխալ տեղի ունեցավ: Նորից տեղադրեք Chromium-ը:</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Մատչելի է Chromium-ի նոր տարբերակ, որը շատ ավելի արագ է:</translation> <translation id="6063093106622310249">&Բացել Chromium-ում</translation> <translation id="6072279588547424923">«<ph name="EXTENSION_NAME" />» ընդլայնումն ավելացվել է Chromium-ին</translation> +<translation id="608006075545470555">Աշխատանքային պրոֆիլի ավելացում այս դիտարկիչում</translation> <translation id="608189560609172163">Chromium-ին չհաջողվեց համաժամացնել ձեր տվյալները՝ մուտք գործելիս առաջացած սխալի պատճառով:</translation> <translation id="6096348254544841612">Հասանելի է Chromium-ի նոր տարբերակը։</translation> <translation id="6120345080069858279">Chromium-ը կպահի այս գաղտնաբառը ձեր Google հաշվում: Գաղտնաբառը հիշելու կարիք չի լինի:</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium-ը վեբ դիտարկիչ է, որը կայծակի արագությամբ է բացում վեբէջերն ու հավելվածները: Այն արագ է, կայուն և պարզ՝ օգտագործման մեջ: Ավելի ապահով աշխատեք համացանցում՝ վնասագրերի և խաբկայքերի դեմ ներկառուցված պաշտպանության շնորհիվ:</translation> <translation id="6434250628340475518">Chromium OS համակարգ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium-ը կվերագործարկվի 1 վայրկյանից}one{Chromium-ը կվերագործարկվի # վայրկյանից}other{Chromium-ը կվերագործարկվի # վայրկյանից}}</translation> +<translation id="6464340581899189425">Եթե դուք մի քանի Google հաշիվ ունեք, կարող եք դրանք ավելացնել ձեր <ph name="DEVICE_TYPE" /> սարքում։ Ձեր հաշիվները հասանելի կլինեն Chromium դիտարկիչում և Play Խանութում, ինչպես նաև Gmail, Drive, YouTube և այլ ծառայություններում։<ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Այն նաև վերահսկում է, թե որ էջը ցուցադրվի Chromium-ը մեկնարկելիս:</translation> <translation id="6510925080656968729">Ապատեղադրել Chromium-ը</translation> <translation id="6570579332384693436">Ուղղագրական սխալները շտկելու համար Chromium-ը Google-ին է ուղարկում տեքստային դաշտերում ձեր մուտքագրած տեքստը</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Chromium-ի հետագա թարմացումները ստանալու համար ձեզ անհրաժեշտ է OS X 10.11 կամ ավելի նոր տարբերակ։ Այս համակարգիչն օգտագործում է OS X 10.10 տարբերակը։</translation> <translation id="7867198900892795913">Չհաջողվեց տեղադրել Chromium-ի վերջին տարբերակը, որը թարմացվել է նոր գործառույթներով և անվտանգության բարելավումներով:</translation> <translation id="7898472181347242998">Սարքի ծրագրակազմի տարբերակը տեսնելու համար անցեք <ph name="LINK_BEGIN" />Chromium OS-ի կարգավորումներ<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS-ը ճիշտ չի փակվել:</translation> <translation id="7937630085815544518">Դուք մուտք եք գործել Chromium որպես <ph name="USER_EMAIL_ADDRESS" />: Նորից մուտք գործելու համար օգտագործեք նույն հաշիվը:</translation> <translation id="7975919845073681630">Սա Chromium-ի երկրորդային տեղադրումն է: Այն չի կարող դառնալ ձեր կանխադրված դիտարկիչը:</translation> <translation id="7979877361127045932">Թաքցնել Chromium-ի ընտրացանկից</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Վերագործարկեք Chromium-ը մեկ օրվա ընթացքում}one{Վերագործարկեք Chromium-ը # օրվա ընթացքում}other{Վերագործարկեք Chromium-ը # օրվա ընթացքում}}</translation> <translation id="8453117565092476964">Տեղադրիչի արխիվը վնասված է կամ անվավեր: Նորից ներբեռնեք Chromium-ը:</translation> <translation id="8493179195440786826">Chromium-ը հնացած է</translation> +<translation id="8550334526674375523">Այս աշխատանքային պրոֆիլն ամբողջովին առանձնացված է ձեր անձնական պրոֆիլից։</translation> <translation id="8558383651099478961">Ձեր ծնողն անջատել է «Թույլտվություններ կայքերի, հավելվածների և ընդլայնումների համար» պարամետրը Chromium-ում։ Այս <ph name="EXTENSION_TYPE_PARAMETER" />ն արգելափակված է և չի կարող ավելացվել։</translation> <translation id="8568283329061645092">Chromium-ը կարող է ստուգել ձեր գաղտնաբառերը, երբ մտնեք ձեր Google հաշիվ։</translation> <translation id="8586442755830160949">© <ph name="YEAR" /> The Chromium Authors: Բոլոր իրավունքները պահպանված են:</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium-ը փորձում է ցուցադրել գաղտնաբառերը: Մուտքագրեք ձեր Windows-ի գաղտնաբառը՝ այս գործողությունը թույլ տալու համար:</translation> <translation id="8941642502866065432">Չհաջողվեց թարմացնել Chromium-ը</translation> <translation id="8974095189086268230">Chromium OS-ը մատչելի է լրացուցիչ <ph name="BEGIN_LINK_CROS_OSS" />բաց կոդով ծրագրակազմի<ph name="END_LINK_CROS_OSS" /> շնորհիվ:</translation> +<translation id="8986207147630327271">Դուք ավելացնում եք աշխատանքային պրոֆիլ այս դիտարկիչում և միայն դրա վերահսկողությունը տրամադրում ադմինիստրատորին։</translation> <translation id="9019929317751753759">Chromium-ն ավելի ապահով դարձնելու համար հետևյալ ընդլայնումներն անջատվել են, որոնք նշված չեն <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />-ում և կարող են ավելացված լինել առանց ձեր իմացության։</translation> <translation id="9089354809943900324">Chromium-ը հնացել է</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium-ը կվերագործարկվի մեկ ժամից}one{Chromium-ը կվերագործարկվի # ժամից}other{Chromium-ը կվերագործարկվի # ժամից}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Ջնջե՞լ նաև ձեր դիտարկումների տվյալները:</translation> <translation id="9158494823179993217">Ձեր համակարգի ադմինիստրատորն այնպես է կարգավորել Chromium-ը, որ <ph name="TARGET_URL_HOSTNAME" /> կայքը բացվի մեկ այլ դիտարկիչով:</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS համակարգ</translation> <translation id="93478295209880648">Chromium-ը հնարավոր է չաշխատի ինչպես հարկն է, քանի որ այն այլևս չի աջակցվում Windows XP և Windows Vista համակարգերում</translation> <translation id="95514773681268843"><ph name="DOMAIN" />-ը պահանջում է, որ նախքան սարքն օգտագործելը կարդաք և ընդունեք հետևյալ Օգտագործման պայմանները: Այս պայմանները չեն ընդլայնում, փոփոխում կամ սահմանափակում Chromium OS-ի պայմանները:</translation> <translation id="965162752251293939">Ո՞վ է օգտագործում Chromium-ը</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index ae3cb0e..1b4f137 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS gat ekki samstillt gögnin því vegna þess að innskráningarupplýsingar reikningsins þíns eru úreltar.</translation> <translation id="2560420686485554789">Chromium þarf aðgang að geymslu til að geta sótt skrár</translation> <translation id="2572494885440352020">Hjálparforrit Chromium</translation> +<translation id="2583187216237139145">Stjórnandi vinnuprófíla getur fjarlægt öll Chromium gögn sem verða til við notkun þessa prófíls (þ.m.t. bókamerki, feril, aðgangsorð og aðrar stillingar). <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Endurræsa þarf Chromium OS til að nota uppfærsluna.</translation> <translation id="2615699638672665509">Þessi tölva hættir brátt að fá uppfærslur á Chromium því að ekki er lengur stuðningur við vélbúnað hennar.</translation> <translation id="2648074677641340862">Stýrikerfisvilla kom upp við uppsetningu. Sæktu Chromium aftur.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Ný útgáfa af Chromium er í boði, og hún er hraðari en nokkru sinni fyrr.</translation> <translation id="6063093106622310249">&Opna í Chromium</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> hefur verið bætt við Chromium</translation> +<translation id="608006075545470555">Bæta vinnusniði við þennan vafra</translation> <translation id="608189560609172163">Chromium gat ekki samstillt gögnin þín vegna innskráningarvillu.</translation> <translation id="6096348254544841612">Sérstilltu og stjórnaðu Chromium. Uppfærsla er í boði.</translation> <translation id="6120345080069858279">Chromium mun vista þetta aðgangsorð á Google reikningnum þínum. Þú þarft ekki að muna það.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium er vafri sem keyrir vefsíður og forrit með ótrúlegum hraða. Hann er hraðvirkur, stöðugur og einfaldur í notkun. Notaðu vefinn á öruggari hátt með innbyggðri vernd Chromium gegn spilliforritum og vefveiðum.</translation> <translation id="6434250628340475518">Chromium OS kerfi</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium verður endurræst eftir eina sekúndu}one{Chromium verður endurræst eftir # sekúndu}other{Chromium verður endurræst eftir # sekúndur}}</translation> +<translation id="6464340581899189425">Ef þú ert með marga Google reikninga geturðu bætt þeim við <ph name="DEVICE_TYPE" />. Reikningarnir þínir verða tiltækir í Chromium vafranum og Play Store sem og í þjónustum á borð við Gmail, Drive og YouTube.<ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Stýrir því einnig hvaða síða birtist þegar þú ræsir Chromium.</translation> <translation id="6510925080656968729">Fjarlægja Chromium</translation> <translation id="6570579332384693436">Til að lagfæra stafsetningarvillur sendir Chromium textann sem þú skrifar í textareiti til Google</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Til að fá frekari uppfærslur á Chromium þarftu stýrikerfi X 10.11 eða nýrra. Þessi tölva notar stýrikerfi X 10.10.</translation> <translation id="7867198900892795913">Ekki var hægt að uppfæra Chromium í nýjustu útgáfu og þú ferð því á mis við nýja eiginleika og öryggislagfæringar.</translation> <translation id="7898472181347242998">Opnaðu <ph name="LINK_BEGIN" />stillingar Chromium OS<ph name="LINK_END" /> til að athuga hvort tækið sé uppfært</translation> +<translation id="7907774600618164274">Chromium OS lokaðist ekki á réttan hátt.</translation> <translation id="7937630085815544518">Þú varst skráð(ur) inn í Chromium sem <ph name="USER_EMAIL_ADDRESS" />. Notaðu sama reikning til að skrá þig inn aftur.</translation> <translation id="7975919845073681630">Þetta er aukaleg uppsetning á Chromium sem ekki er hægt að gera að sjálfgefnum vafra.</translation> <translation id="7979877361127045932">Fela í valmynd Chromium</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Endurræstu Chromium innan dags}one{Endurræstu Chromium innan # dags}other{Endurræstu Chromium innan # daga}}</translation> <translation id="8453117565092476964">Uppsetningarsafnskráin er skemmd eða ógild. Sæktu Chromium aftur.</translation> <translation id="8493179195440786826">Chromium er úrelt</translation> +<translation id="8550334526674375523">Þessi vinnuprófíll er algjörlega aðskilinn þínum eigin prófíl.</translation> <translation id="8558383651099478961">Foreldrar þínir hafa slökkt á „Heimildum fyrir vefsvæði, forrit og viðbætur" fyrir Chromium. Ekki er leyfilegt að bæta við þessu <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">Chromium getur athugað aðgangsorðin þín þegar þú skráir þig inn með Google reikningnum þínum</translation> <translation id="8586442755830160949">Höfundarréttur <ph name="YEAR" /> höfundar Chromium. Allur réttur áskilinn.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium er að reyna að sýna aðgangsorð. Sláðu inn Windows-aðgangsorðið þitt til að heimila þetta.</translation> <translation id="8941642502866065432">Ekki var hægt að uppfæra Chromium</translation> <translation id="8974095189086268230">Chromium OS á tilvist sína að þakka öðrum <ph name="BEGIN_LINK_CROS_OSS" />opnum hugbúnaði<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">Þú ert að bæta vinnuprófíl við þennan vafra og veita stjórnanda þínum leyfi til að stjórna vinnuprófílnum eingöngu.</translation> <translation id="9019929317751753759">Til að gera Chromium öruggara höfum við slökkt á eftirfarandi viðbót sem ekki er á skrá hjá <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> og kann að hafa verið bætt við án þinnar vitneskju.</translation> <translation id="9089354809943900324">Chromium er úrelt</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium verður endurræst eftir klukkustund}one{Chromium verður endurræst eftir # klukkustund}other{Chromium verður endurræst eftir # klukkustundir}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Eyða líka vafragögnum?</translation> <translation id="9158494823179993217">Kerfisstjórinn þinn hefur stillt Chromium á að opna annan vafra fyrir <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-inn)</translation> +<translation id="9214764063801632699">Chromium OS kerfi</translation> <translation id="93478295209880648">Vera kann að Chromium virki ekki sem skyldi vegna þess að vafrinn er ekki lengur studdur á Windows XP eða Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> krefst þess að þú lesir og samþykkir eftirfarandi þjónustuskilmála áður en þú notar þetta tæki. Þessir skilmálar auka ekki við, breyta eða takmarka skilmála Chromium OS.</translation> <translation id="965162752251293939">Hver er að nota Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index 760b0a1e..66f4a01c 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">Impossibile sincronizzare i dati in Chromium OS perché i dati di accesso dell'account sono obsoleti.</translation> <translation id="2560420686485554789">Chromium deve avere accesso allo spazio di archiviazione per poter scaricare file</translation> <translation id="2572494885440352020">Supporto Chromium</translation> +<translation id="2583187216237139145">Tutti i dati di Chromium generati durante l'utilizzo di questo profilo (come la creazione di preferiti, cronologia, password e altre impostazioni) possono essere rimossi dall'amministratore del profilo di lavoro. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Per applicare l'aggiornamento è necessario riavviare Chromium OS.</translation> <translation id="2615699638672665509">A breve non sarà più possibile ricevere gli aggiornamenti di Chromium, perché l'hardware del computer in uso non è più supportato.</translation> <translation id="2648074677641340862">Durante l'installazione si è verificato un errore del sistema operativo. Scarica di nuovo Chromium.</translation> @@ -141,6 +142,7 @@ <translation id="6055895534982063517">È disponibile una nuova versione di Chromium con una velocità senza precedenti.</translation> <translation id="6063093106622310249">&Apri in Chromium</translation> <translation id="6072279588547424923">L'estensione <ph name="EXTENSION_NAME" /> è stata aggiunta a Chromium</translation> +<translation id="608006075545470555">Aggiungi profilo di lavoro a questo browser</translation> <translation id="608189560609172163">Impossibile sincronizzare i dati in Chromium a causa di un errore durante l'accesso.</translation> <translation id="6096348254544841612">È disponibile un nuovo aggiornamento.</translation> <translation id="6120345080069858279">Chromium salverà la password nel tuo Account Google affinché tu non debba memorizzarla.</translation> @@ -161,6 +163,7 @@ <translation id="6403826409255603130">Chromium è un browser web che esegue le pagine web e le applicazioni alla velocità della luce. È veloce, stabile e facile da utilizzare. Naviga su Internet in modo più sicuro grazie alla protezione da malware e phishing integrata in Chromium.</translation> <translation id="6434250628340475518">Sistema Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium si riavvierà tra 1 secondo}other{Chromium si riavvierà tra # secondi}}</translation> +<translation id="6464340581899189425">Se hai più Account Google, puoi aggiungerli al tuo <ph name="DEVICE_TYPE" />. I tuoi account saranno disponibili nel browser Chromium e nel Play Store, nonché in servizi come Gmail, Drive e YouTube.<ph name="LINK_BEGIN" />Scopri di più<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Controlla anche la pagina visualizzata all'avvio di Chromium.</translation> <translation id="6510925080656968729">Disinstalla Chromium</translation> <translation id="6570579332384693436">Per correggere gli errori ortografici, Chromium invia a Google il testo digitato nei campi di testo</translation> @@ -219,6 +222,7 @@ <translation id="7857220146454061152">Per ricevere gli aggiornamenti futuri di Chromium, devi avere macOS 10.11 o versioni successive. Su questo computer è installato macOS 10.10.</translation> <translation id="7867198900892795913">Non è stato possibile aggiornare Chromium alla versione più recente, quindi non potrai utilizzare le nuove funzioni e gli aggiornamenti di sicurezza.</translation> <translation id="7898472181347242998">Per controllare se il tuo dispositivo è aggiornato, vai alle <ph name="LINK_BEGIN" />Impostazioni di Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS non si è chiuso correttamente.</translation> <translation id="7937630085815544518">Hai eseguito l'accesso a Chromium come <ph name="USER_EMAIL_ADDRESS" />. Utilizza lo stesso account per eseguire di nuovo l'accesso.</translation> <translation id="7975919845073681630">Questa è un'installazione secondaria, di conseguenza Chromium non può essere impostato come browser predefinito.</translation> <translation id="7979877361127045932">Nascondi in menu Chromium</translation> @@ -233,6 +237,7 @@ <translation id="8417404458978023919">{0,plural, =1{Riavvia Chromium entro un giorno}other{Riavvia Chromium entro # giorni}}</translation> <translation id="8453117565092476964">L'archivio di installazione è danneggiato o non valido. Scarica di nuovo Chromium.</translation> <translation id="8493179195440786826">Chromium non è aggiornato</translation> +<translation id="8550334526674375523">Questo profilo di lavoro è completamente separato dal tuo profilo personale.</translation> <translation id="8558383651099478961">Uno dei tuoi genitori ha disattivato "Autorizzazioni per siti, app ed estensioni" per Chromium. L'aggiunta di <ph name="EXTENSION_TYPE_PARAMETER" /> non è consentita.</translation> <translation id="8568283329061645092">Chromium può controllare le tue password quando accedi con il tuo Account Google</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. Tutti i diritti riservati.</translation> @@ -249,6 +254,7 @@ <translation id="8907580949721785412">Chromium sta cercando di visualizzare le password. Per consentire la visualizzazione, digita la tua password Windows.</translation> <translation id="8941642502866065432">Impossibile aggiornare Chromium</translation> <translation id="8974095189086268230">La realizzazione di Chromium OS è stata possibile grazie a <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivi.</translation> +<translation id="8986207147630327271">Stai per aggiungere a questo browser un profilo di lavoro che sarà controllato dal tuo amministratore.</translation> <translation id="9019929317751753759">Per rendere Chromium più sicuro, abbiamo disattivato la seguente estensione non presente nel <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> che potrebbe essere stata aggiunta a tua insaputa.</translation> <translation id="9089354809943900324">Chromium non è aggiornato</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium verrà riavviato tra un'ora}other{Chromium verrà riavviato tra # ore}}</translation> @@ -256,6 +262,7 @@ <translation id="911206726377975832">Eliminare anche i tuoi dati di navigazione?</translation> <translation id="9158494823179993217">L'amministratore di sistema ha configurato Chromium per l'apertura di un browser alternativo per accedere a <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Sistema Chromium OS</translation> <translation id="93478295209880648">Chromium potrebbe non funzionare correttamente perché non è più supportato su Windows XP o Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> richiede di leggere e accettare i seguenti Termini di servizio prima di utilizzare il dispositivo. Questi termini non ampliano, modificano o limitano i Termini di Chromium OS.</translation> <translation id="965162752251293939">Chi usa Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_kk.xtb b/chrome/app/resources/chromium_strings_kk.xtb index 07e0c776..6852febc 100644 --- a/chrome/app/resources/chromium_strings_kk.xtb +++ b/chrome/app/resources/chromium_strings_kk.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS деректеріңізді синхрондай алмайды, себебі есептік жазбаңызға кіру мәліметтері ескірген.</translation> <translation id="2560420686485554789">Файлдарды жүктеп алу үшін Chromium браузеріне сақтау орнын пайдалану құқығы қажет</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2583187216237139145">Жұмыс профилінің әкімшісі осы профильді пайдалану кезінде құрылатын Chromium браузерінің кез келген дерегін (бетбелгілер, тарих, құпия сөздер жасау және басқа параметрлер сияқты) жоя алады. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Жаңарту күшіне енуі үшін Chromium OЖ-н қайта іске қосу қажет.</translation> <translation id="2615699638672665509">Бұл компьютер жақын арада Chromium жаңартуларын қабылдауды тоқтатады, себебі оның жабдығына енді қолдау көрсетілмейді.</translation> <translation id="2648074677641340862">Орнату барысында операциялық жүйе қатесі орын алды. Chromium қайта жүктеңіз.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Жаңа жылдамырақ Chromium нұсқасы қолжетімді.</translation> <translation id="6063093106622310249">&Chromium жүйесінде ашу</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> кеңейтімі Chromium браузеріне енгізілді</translation> +<translation id="608006075545470555">Осы браузерге жұмыс профилін қосу</translation> <translation id="608189560609172163">Кіру кезіндегі қате себебінен Chromium деректеріңізді синхрондай алмайды.</translation> <translation id="6096348254544841612">Chromium браузерін реттеңіз және басқарыңыз. Жаңартылған нұсқа қолжетімді.</translation> <translation id="6120345080069858279">Chromium бұл құпия сөзді Google есептік жазбаңызда сақтайды. Оны есте сақтаудың қажеті жоқ.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium — веб-беттер мен қолданбаларды өте жылдам ашатын веб-браузер. Ол жылдам, тұрақты және пайдалануға оңай. Chromium жүйесіне ендірілген зиянды бағдарлама және фишинг қорғанысымен интернетті уайымсыз пайдалана беруіңізге болады.</translation> <translation id="6434250628340475518">Chromium OS жүйесі</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секундтан кейін қайта іске қосылады}other{Chromium # секундтан кейін қайта іске қосылады}}</translation> +<translation id="6464340581899189425">Бірнеше Google есептік жазбаңыз болса, оларды <ph name="DEVICE_TYPE" /> құрылғыңызға қоса аласыз. Есептік жазбаларыңыз Chromium браузері мен Play Store қолданбасында, сондай-ақ Gmail, Drive және YouTube сияқты қызметтерде қолжетімді болады.<ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Сонымен қатар Chromium іске қосылғанда қайсы бет көрсетілуін бақылайды.</translation> <translation id="6510925080656968729">Chromium жою</translation> <translation id="6570579332384693436">Емле қателерін түзету үшін Chromium браузері мәтін жолына терілген сөздерді Google-ға жібереді</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Chromium жаңартылған нұсқасын алу үшін OS X 10.11 не одан кейінгі операциялық жүйе керек. Бұл компьютерде OS X 10.10 нұсқасы орнатылған.</translation> <translation id="7867198900892795913">Chromium браузерінің ең соңғы нұсқасы орнатылмады, сондықтан жаңа мүмкіндіктер мен қауіпсіздікке қатысты түзетілген функцияларды пайдалана алмайсыз.</translation> <translation id="7898472181347242998">Құрылғыңызда операциялық жүйенің соңғы нұсқасы бар екенін тексеру үшін <ph name="LINK_BEGIN" />Chromium ОЖ параметрлері<ph name="LINK_END" /> бөлімінен қараңыз.</translation> +<translation id="7907774600618164274">Chromium OS дұрыс өшірілмеді.</translation> <translation id="7937630085815544518">Chromium жүйесіне <ph name="USER_EMAIL_ADDRESS" /> ретінде кірдіңіз. Қайта кіру үшін бірдей есептік жазбаны пайдаланыңыз.</translation> <translation id="7975919845073681630">Бұл – Chromium браузерінің қайта орнатылған нұсқасы және әдепкі браузер бола алмайды.</translation> <translation id="7979877361127045932">Chromium мәзірінде жасыру</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromium браузерін бір күннің ішінде қайта іске қосыңыз}other{Chromium браузерін # күннің ішінде қайта іске қосыңыз}}</translation> <translation id="8453117565092476964">Орнатқыш мұрағаты бүлінген немесе жарамсыз. Chromium қайтадан жүктеңіз.</translation> <translation id="8493179195440786826">Chromium ескірген</translation> +<translation id="8550334526674375523">Бұл жұмыс профилі жеке профиліңізден толық ажыратылған.</translation> <translation id="8558383651099478961">Ата-анаңыз Chromium браузері үшін "Сайттар, қолданбалар және кеңейтімдер бойынша рұқсаттар" параметрін өшірді. <ph name="EXTENSION_TYPE_PARAMETER" /> кеңейтімін енгізуге болмайды.</translation> <translation id="8568283329061645092">Google есептік жазбаңызбен кіргенде, Chromium сіздің құпия сөздеріңізді тексере алады.</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> The Chromium Authors. Барлық құқықтар қорғалған.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium құпия сөздерді көрсетуге әрекет етуде. Бұған рұқсат беру үшін Windows құпия сөзіңізді теріңіз.</translation> <translation id="8941642502866065432">Chromium браузерін жаңарту мүмкін емес</translation> <translation id="8974095189086268230">Chromium OS қосымша <ph name="BEGIN_LINK_CROS_OSS" />ашық дереккөз бағдарламалық жасақтамасы<ph name="END_LINK_CROS_OSS" /> арқылы жасалды.</translation> +<translation id="8986207147630327271">Браузерге жұмыс профилін қосудасыз және әкімшіңізге жұмыс профилін басқаруды тапсырудасыз.</translation> <translation id="9019929317751753759">Chromium браузерін қауіпсіз ету үшін, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> тізімінде жоқ келесі кеңейтім өшірілді, ол сізге ескертілмей қосылған болуы мүмкін.</translation> <translation id="9089354809943900324">Chromium ескірген</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium браузері бір сағаттан кейін қайта іске қосылады}other{Chromium браузері # сағаттан кейін қайта іске қосылады}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Сонымен қатар шолу деректеріңізді жоясыз ба?</translation> <translation id="9158494823179993217">Жүйе әкімшісі Chromium браузерін <ph name="TARGET_URL_HOSTNAME" /> сілтемесіне қосымша браузер арқылы кіре алатындай етіп конфигурациялады.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS жүйесі</translation> <translation id="93478295209880648">Chromium дұрыс жұмыс істемеуі мүмкін, себебі оған Windows XP не Windows Vista жүйелерінде қолдау көрсетілмейді</translation> <translation id="95514773681268843">Бұл құрылғыны пайдаланудан бұрын <ph name="DOMAIN" /> домені келесі қызмет шарттарын оқып, қабылдауыңызды талап етеді. Бұл шарттар Chromium OS шарттарын толықтырмайды, өзгертпейді және шектемейді.</translation> <translation id="965162752251293939">Chromium-ді кім пайдаланып жатыр?</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb index ccaed4c..17c69cf 100644 --- a/chrome/app/resources/chromium_strings_kn.xtb +++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">ನಿಮ್ಮ ಖಾತೆಯ ಸೈನ್ ಇನ್ ವಿವರಗಳು ತೀರಾ ಹಳೆಯದಾಗಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chromium OS ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="2560420686485554789">ಫೈಲ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು Chromium ಗೆ ಸಂಗ್ರಹಣೆಯನ್ನು ಪ್ರವೇಶಿಸುವ ಅಗತ್ಯವಿದೆ</translation> <translation id="2572494885440352020">Chromium ಸಹಾಯಕ</translation> +<translation id="2583187216237139145">ಈ ಪ್ರೊಫೈಲ್ನ ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಯಾವುದೇ Chromium ಡೇಟಾವನ್ನು (ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳ ರಚನೆಯಂತಹ) ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿರ್ವಾಹಕರು ತೆಗೆದುಹಾಕಬಹುದು. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">ಅಪ್ಡೇಟ್ ಅನ್ವಯಿಸಲು Chromium OS ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="2615699638672665509">ಈ ಕಂಪ್ಯೂಟರ್ ಶೀಘ್ರದಲ್ಲಿಯೆ Chromium ನವೀಕರಣಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ ಏಕೆಂದರೆ ಅದರ ಹಾರ್ಡ್ವೇರ್ ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.</translation> <translation id="2648074677641340862">ಸ್ಥಾಪಿಸುತ್ತಿರುವಾಗ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ದೋಷ ಸಂಭವಿಸಿದೆ. ದಯವಿಟ್ಟು Chromium ಅನ್ನು ಪುನಃ ಡೌನ್ಲೋಡ್ ಮಾಡಿ.</translation> @@ -139,6 +140,7 @@ <translation id="6055895534982063517">Chromium ನ ಹೊಸ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆ, ಮತ್ತು ಇದು ಎಂದಿಗಿಂತಲೂ ವೇಗವಾಗಿದೆ.</translation> <translation id="6063093106622310249">&Chromium ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation> <translation id="6072279588547424923">Chromium ಗೆ <ph name="EXTENSION_NAME" /> ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ</translation> +<translation id="608006075545470555">ಈ ಬ್ರೌಸರ್ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಸೇರಿಸಿ</translation> <translation id="608189560609172163">ಸೈನ್ ಇನ್ ಮಾಡುವಲ್ಲಿ ದೋಷವಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chromium ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="6096348254544841612">Chromium ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ. ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ.</translation> <translation id="6120345080069858279">Chromium, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಉಳಿಸುತ್ತದೆ. ನೀವು ಅದನ್ನು ನೆನಪಿಡುವ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ.</translation> @@ -159,6 +161,7 @@ <translation id="6403826409255603130">Chromium ಒಂದು ವೆಬ್ ಬ್ರೌಸರ್ ಆಗಿದ್ದು ವೆಬ್ಪುಟಗಳನ್ನು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ವೇಗದೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು ವೇಗವಾದ, ಸ್ಥಿರವಾದ, ಮತ್ತು ಬಳಸಲು ಸುಲಭವಾಗಿದೆ. ಮಾಲ್ವೇರ್ನೊಂದಿಗೆ ಹೆಚ್ಚು ಸುರಕ್ಷಿತವಾಗಿ ಹಾಗೂ Chromium ನಲ್ಲಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಫಿಶಿಂಗ್ ಸುರಕ್ಷೆಯೊಂದಿಗೆ ವೆಬ್ ಅನ್ನು ಬ್ರೌಸ್ ಮಾಡಿ.</translation> <translation id="6434250628340475518">Chromium OS ಸಿಸ್ಟಂ</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 ಸೆಕೆಂಡ್ನಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}one{Chromium # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}other{Chromium # ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮರುಪ್ರಾರಂಭವಾಗುತ್ತದೆ}}</translation> +<translation id="6464340581899189425">ನೀವು ಹಲವು Google ಖಾತೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ಅವುಗಳನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಗೆ ಸೇರಿಸಬಹುದು. ನಿಮ್ಮ ಖಾತೆಗಳು Chromium ಬ್ರೌಸರ್ ಮತ್ತು Play ಸ್ಟೋರ್ನಲ್ಲಿ ಲಭ್ಯವಾಗುವುದರ ಜೊತೆಗೆ Gmail, Drive ಮತ್ತು YouTube ನಂತಹ ಸೇವೆಗಳಲ್ಲಿ ಸಹ ಲಭ್ಯವಿರುತ್ತವೆ.<ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="6475912303565314141">ನೀವು Chromium ಪ್ರಾರಂಭಿಸಿದಾಗ ತೋರಿಸಬೇಕಾದ ಪುಟವನ್ನು ಕೂಡಾ ಇದು ನಿಯಂತ್ರಿಸುತ್ತದೆ.</translation> <translation id="6510925080656968729">Chromium ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> <translation id="6570579332384693436">ಕಾಗುಣಿತ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಲು, ನೀವು ಪಠ್ಯ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Chromium, Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ</translation> @@ -213,6 +216,7 @@ <translation id="7857220146454061152">ಭವಿಷ್ಯದ Chromium ಅಪ್ಡೇಟ್ಗಳನ್ನು ಪಡೆಯಲು, ನಿಮಗೆ OS X 10.11 ಅಥವಾ ಅದರ ನಂತರದ ಆವೃತ್ತಿಗಳ ಅಗತ್ಯವಿದೆ. ಈ ಕಂಪ್ಯೂಟರ್ OS X 10.10 ಅನ್ನು ಬಳಸುತ್ತಿದೆ.</translation> <translation id="7867198900892795913">Chromium ಗೆ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ, ಈ ಮೂಲಕ ನೀವು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಭದ್ರತೆ ಸರಿಪಡಿಸುವಿಕೆಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತಿರಬಹುದು.</translation> <translation id="7898472181347242998">ನಿಮ್ಮ ಸಾಧನ ಅಪ್ ಟು ಡೇಟ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ನೋಡಲು, <ph name="LINK_BEGIN" />Chromium OS ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ<ph name="LINK_END" /> ಹೋಗಿ</translation> +<translation id="7907774600618164274">Chromium OS ಅನ್ನು ಸರಿಯಾಗಿ ಶಟ್ ಡೌನ್ ಮಾಡಲಾಗಿಲ್ಲ.</translation> <translation id="7937630085815544518"><ph name="USER_EMAIL_ADDRESS" /> ನಂತೆ Chromium ಅನ್ನು ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಿರುವಿರಿ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಅದೇ ಖಾತೆಯನ್ನು ಬಳಸಿ.</translation> <translation id="7975919845073681630">ಇದು Chromium ನ ದ್ವಿತೀಯ ಸ್ಥಾಪನೆಯಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="7979877361127045932">Chromium ಮೆನುವಿನಲ್ಲಿ ಮರೆಮಾಡು</translation> @@ -227,6 +231,7 @@ <translation id="8417404458978023919">{0,plural, =1{ಒಂದು ದಿನದ ಒಳಗೆ Chromium ಮರುಪ್ರಾರಂಭಿಸಿ}one{# ದಿನಗಳ ಒಳಗೆ Chromium ಮರುಪ್ರಾರಂಭಿಸಿ}other{# ದಿನಗಳ ಒಳಗೆ Chromium ಮರುಪ್ರಾರಂಭಿಸಿ}}</translation> <translation id="8453117565092476964">ಸ್ಥಾಪಕ ಆರ್ಕೈವ್ ದೋಷಪೂರಿತವಾಗಿದೆ ಅಥವಾ ಅಮಾನ್ಯವಾಗಿದೆ. ದಯವಿಟ್ಟು Chromium ಅನ್ನು ಪುನಃ ಡೌನ್ಲೋಡ್ ಮಾಡಿ.</translation> <translation id="8493179195440786826">Chromium ನ ಅವಧಿ ಮುಗಿದಿದೆ</translation> +<translation id="8550334526674375523">ಈ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಪ್ರತ್ಯೇಕವಾಗಿದೆ.</translation> <translation id="8558383651099478961">ನಿಮ್ಮ ಪೋಷಕರು Chromium ನಲ್ಲಿ "ಸೈಟ್ಗಳು, ಆ್ಯಪ್ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳಿಗಾಗಿ ಅನುಮತಿಗಳನ್ನು" ಆಫ್ ಮಾಡಿದ್ದಾರೆ. ಈ <ph name="EXTENSION_TYPE_PARAMETER" /> ಅನ್ನು ಸೇರಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.</translation> <translation id="8568283329061645092">ನೀವು Google ಖಾತೆಯ ಮೂಲಕ ಸೈನ್ ಇನ್ ಮಾಡಿದಾಗ, Chromium ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಬಲ್ಲದು</translation> <translation id="8586442755830160949">ಹಕ್ಕುಸ್ವಾಮ್ಯ <ph name="YEAR" /> Chromium ಲೇಖಕರು. ಎಲ್ಲಾ ಹಕ್ಕುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ.</translation> @@ -243,6 +248,7 @@ <translation id="8907580949721785412">Chromium ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ. ಇದನ್ನು ಅನುಮತಿಸಲು ನಿಮ್ಮ Windows ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಿ.</translation> <translation id="8941642502866065432">Chromium ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="8974095189086268230">ಹೆಚ್ಚುವರಿ <ph name="BEGIN_LINK_CROS_OSS" />ಓಪನ್ ಸೋರ್ಸ್ ಸಾಫ್ಟ್ವೇರ್<ph name="END_LINK_CROS_OSS" /> ನಿಂದ Chrome OS ಮಾಡಲು ಸಾಧ್ಯ.</translation> +<translation id="8986207147630327271">ನೀವು ಈ ಬ್ರೌಸರ್ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸುತ್ತಿರುವಿರಿ ಮತ್ತು ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಗೆ ಕೇವಲ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ನ ಮೇಲೆ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತಿರುವಿರಿ.</translation> <translation id="9019929317751753759">Chromium ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿರಿಸಲು, <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡದಿರುವ ಕೆಳಗಿನ ವಿಸ್ತರಣೆಯನ್ನು ನಾವು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದೇವೆ ಮತ್ತು ಇದು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಬಾರದೇ ಸೇರಿಸಲಾಗಿರಬಹುದು.</translation> <translation id="9089354809943900324">Chromium ನ ಅವಧಿ ಮುಗಿದಿದೆ</translation> <translation id="9093206154853821181">{0,plural, =1{ಒಂದು ಗಂಟೆಯಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}one{# ಗಂಟೆಗಳಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}other{# ಗಂಟೆಗಳಲ್ಲಿ Chromium ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ}}</translation> @@ -250,6 +256,7 @@ <translation id="911206726377975832">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ಸಹ ಅಳಿಸುವುದೇ?</translation> <translation id="9158494823179993217"><ph name="TARGET_URL_HOSTNAME" /> ಗೆ ಪ್ರವೇಶಿಸಲು ಒಂದು ಪರ್ಯಾಯ ಬ್ರೌಸರ್ ತೆರೆಯುವಂತೆ ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರು Chromium ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದಾರೆ.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS ಸಿಸ್ಟಂ</translation> <translation id="93478295209880648">Windows XP ಅಥವಾ Windows Vista ದಲ್ಲಿ Chromium ಗೆ ಈಗ ಬೆಂಬಲವಿಲ್ಲದೇ ಇರುವುದರಿಂದ ಅದು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೇ ಇರಬಹುದು</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> ಈ ಸಾಧನವನ್ನು ಬಳಸುವ ಮೊದಲು ಕೆಳಗಿನ ಸೇವಾ ನಿಯಗಳನ್ನು ನೀವು ಓದುವ ಹಾಗೂ ಸಮ್ಮತಿಸುವ ಅವಶ್ಯಕತೆ ಇದೆ. ಈ ನಿಯಮಗಳು ವಿಸ್ತರಗೊಳ್ಳುವುದಿಲ್ಲ, ಮಾರ್ಪಡಾಗುವುದಿಲ್ಲ, ಅಥವಾ Chromium OS ನಿಯಮಗಳನ್ನು ಉಲ್ಲಂಘಿಸುವುದಿಲ್ಲ.</translation> <translation id="965162752251293939">Chromium ಅನ್ನು ಯಾರು ಬಳಸುತ್ತಿದ್ದಾರೆ?</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb index 5f35f32..e1dc3c6 100644 --- a/chrome/app/resources/chromium_strings_ky.xtb +++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Аккаунтуңуздун кирүү чоо-жайлары эскирип калгандыктан, Chromium OS дайын-даректериңизди шайкештештире алган жок.</translation> <translation id="2560420686485554789">Файлдарды жүктөп алуу үчүн Chromium сактагычка мүмкүнчүлүк алышы керек</translation> <translation id="2572494885440352020">Chromium Жардамчы</translation> +<translation id="2583187216237139145">Бул профилди колдонуп жатканда Chromium'да топтолгон бардык маалыматты (түзүлгөн кыстармалар, таржымал, сырсөздөр жана башка жөндөөлөр) жумуш профилинин администратору өчүрө алат. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Жаңыртууну колдонуу үчүн Chromium OS өчүрүлүп күйгүзүлүшү керек.</translation> <translation id="2615699638672665509">Бул компьютер жакында Chromium жаңыртууларын албай калат, себеби анын жабдыктары колдоого алынбай калган.</translation> <translation id="2648074677641340862">Орнотулуп жатканда иш тутумунда ката кетти. Chromium'ду кайра жүктөп алыңыз.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Chromium'дун чагылгандай тездик менен иштеген жаңы версиясы бар.</translation> <translation id="6063093106622310249">&Chromiumда ачуу</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium'га кошулду</translation> +<translation id="608006075545470555">Ушул серепчиге жумуш профилин кошуу</translation> <translation id="608189560609172163">Кирүү катасынан улам, Chromium дайын-даректериңизди шайкештештире алган жок.</translation> <translation id="6096348254544841612">Chromium'ду ыңгайлаштырып алып, көзөмөлдөңүз. Жаңыртуу бар.</translation> <translation id="6120345080069858279">Chromium бул сырсөздү Google аккаунтуңузга сактап коёт. Аны эстеп калуунун кажети жок.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium – веб-баракчалар жана колдонмолорду чагылгандай тездик менен иштеткен желе серепчиси. Ал оңой, тез жана туруктуу иштеген курал. Chromium кесепеттүү программалар менен фишингден коргоп тургандыктан, желени эч нерседен коркпостон серептей берсеңиз болот.</translation> <translation id="6434250628340475518">Chromium OS тутуму</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 секунддан кийин өчүрүлүп-күйгүзүлөт}other{Chromium # секунддан кийин өчүрүлүп-күйгүзүлөт}}</translation> +<translation id="6464340581899189425">Эгер бир нече Google аккаунтуңуз болсо, аларды <ph name="DEVICE_TYPE" /> түзмөгүнө кошуп койсоңуз болот. Аккаунттарыңыз, ошондой эле Gmail, Drive, жана YouTube сыяктуу кызматтар Chromium серепчисинде жана Play Store'до жеткиликтүү болот.<ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Chromium иштеп баштаганда кайсы бет көрүнө тургандыгын белгилейт.</translation> <translation id="6510925080656968729">Chromium'ду орнотуудан чыгарып салуу</translation> <translation id="6570579332384693436">Орфографиялык каталарды оңдоо максатында, Chromium сиз талааларда терген текстти Google'га жөнөтөт</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Chromium жаңыртууларын алып туруу үчүн OS X 10.11 же андан кийинки версиясын орнотушуңуз керек. Бул компьютерде OS X 10.10 версиясы колдонулууда.</translation> <translation id="7867198900892795913">Chromium акыркы версиясына жаңыртылбай койду, андыктан жаңы функциялар менен коопсуздук оңдоолорун пайдалана албай калдыңыз.</translation> <translation id="7898472181347242998">Түзмөгүңүздүн жаңыртылганын текшерүү үчүн <ph name="LINK_BEGIN" />Chromium OS Жөндөөлөрүнө<ph name="LINK_END" /> өтүңүз</translation> +<translation id="7907774600618164274">Chromium OS туура эмес жабылып калды.</translation> <translation id="7937630085815544518">Chromium'га <ph name="USER_EMAIL_ADDRESS" /> катары кирдиңиз. Ушул аккаунт менен кайра кириңиз.</translation> <translation id="7975919845073681630">Бул Chromium'дун кошумча орнотулушу болгондуктан, аны демейки серепчиңиз катары тандай албайсыз.</translation> <translation id="7979877361127045932">Chromium менюсунда жашыруу</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromium 1 күндүн ичинде кайра иштетилет}other{Chromium # күндүн ичинде кайра иштетилет}}</translation> <translation id="8453117565092476964">Орноткуч архиви бузулган же жараксыз. Chromium'ду кайра жүктөп алыңыз.</translation> <translation id="8493179195440786826">Chromium эскирип калган.</translation> +<translation id="8550334526674375523">Бул жумуш профили жеке профилиңизден толугу менен ажыратылган.</translation> <translation id="8558383651099478961">Ата-энеңиз Chromium үчүн "Сайттарга, колдонмолорго жана кеңейтүүлөргө уруксаттарды" өчүрүп койгон. Бул <ph name="EXTENSION_TYPE_PARAMETER" /> кеңейтүүсүн кошууга болбойт.</translation> <translation id="8568283329061645092">Google аккаунтуңуз менен киргенде Chromium сырсөздөрүңүздү текшерет</translation> <translation id="8586442755830160949">Автордук укук <ph name="YEAR" /> Chromium авторлору. Бардык укуктар корголгон.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium сырсөздөрдү көрсөткөнгө аракет кылууда. Уруксат берүү үчүн Windows сырсөзүңүздү жазыңыз.</translation> <translation id="8941642502866065432">Chromium жаңырбай жатат</translation> <translation id="8974095189086268230">Chromium OS кошумча <ph name="BEGIN_LINK_CROS_OSS" />ачык булак программасы<ph name="END_LINK_CROS_OSS" /> тарабынан мүмкүн болду.</translation> +<translation id="8986207147630327271">Жумуш профилин ушул серепчиге кошуп, администраторго жумуш профилин гана көзөмөлдөөгө уруксат берип жатасыз.</translation> <translation id="9019929317751753759">Жеке маалыматыңызды коргоо үчүн, айрым Chromium кеңейтүүлөрүн өчүрүп койдук, себеби <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ичинде аларга байланыштуу маалымат жок. Демек, бул курамдык бөлүктөр тымызын орнотулган.</translation> <translation id="9089354809943900324">Chromium эскирип калган.</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium 1 сааттан кийин кайра иштетилет}other{Chromium # сааттан кийин кайра иштетилет}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Серептөө дайын-даректериңизди өчүрөсүзбү?</translation> <translation id="9158494823179993217">Тутумуңуздун администратору Chromium'ду <ph name="TARGET_URL_HOSTNAME" /> шилтемесин кошумча серепчиде ачылгыдай кылып конфигурациялады.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS тутуму</translation> <translation id="93478295209880648">Chromium туура эмес иштеши мүмкүн, себеби ал Windows XP же Windows Vista'да мындан ары колдоого алынбайт.</translation> <translation id="95514773681268843">Бул түзмөктү колдонуудан мурун, <ph name="DOMAIN" /> төмөнкү Тейлөө шарттарын окуп, кабыл алууңузду суранат. Бул шарттар Chromium OS шарттарын кеңейтпейт, өзгөртпөйт же чектебейт.</translation> <translation id="965162752251293939">Chromium'ду ким колдонуп жатат?</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index 26e1bbf3..b2e2df49 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">ඔබේ ගිණුමේ සයින් ඉන් විස්තර යල් පැන ගොස් ඇති බැවින් Chromium OS සමමු කළ නොහැක.</translation> <translation id="2560420686485554789">Chromium හට ගොනු බාගැනීමට ආචයන ප්රවේශය අවශ්යයි</translation> <translation id="2572494885440352020">Chromium උදව්කරු</translation> +<translation id="2583187216237139145">මෙම පැතිකඩ භාවිතා කරන විට ජනනය කරන කිනම් හෝ Chromium දත්ත (පිටුසන්, ඉතිහාසය, මුරපද සහ වෙනත් සැකසීම් වැනි) කාර්යාල පැතිකඩ පරිපාලක විසින් ඉවත් කළ හැකිය. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">මෙම යාවත්කාලීන යෙදීමට Chromium OS නැවත ඇරඹීම අවශ්යය.</translation> <translation id="2615699638672665509">මෙම පරිගණකයේ දෘඩාංග තවදුරටත් සහය නොදැක්වීම හේතුවෙන් මෙයට Chromium යාවත්කාලීන ලැබීම නුදුරේදීම නවතිනු ඇත.</translation> <translation id="2648074677641340862">ස්ථාපිත කරන අතරතුර මෙහෙයුම් පද්ධති දෝෂයක් හට ගැනුණි. කරුණාකර නැවත Chromium බාගන්න.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Chromium හි නව සංස්කරණයක් පවතී, එය සැමදාටම වඩා වේගවත්.</translation> <translation id="6063093106622310249">&Chromium තුළ විවෘත කරන්න</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium වෙත එක් කර ඇත</translation> +<translation id="608006075545470555">මෙම බ්රව්සරයට කාර්යාල පැතිකඩ එක් කරන්න</translation> <translation id="608189560609172163">Chromium හට පිරීමේ දෝෂයක් හේතුවෙන් ඔබගේ දත්ත සමමුහුර්ත කළ නොහැකි විය.</translation> <translation id="6096348254544841612">Chromium අභිරුචිකරණය සහ පාලනය කරන්න. යාවත්කාලීන ලද හැකිය.</translation> <translation id="6120345080069858279">Chromium මෙම මුරපදය ඔබගේ Google ගිණුම සමගින් සුරකිනු ඇත. ඔබට එය මතක තබා ගැනීමට සිදු නොවේ.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium යනු විදුලි වේගයෙන් යෙදුම් හා වෙබ් පිටු ක්රියාකරවන ජාල බ්රව්සරයකි. එය වේගවත්, ස්ථාවර හා භාවිතයට පහසුයි. Chromium තුළ තිළැලි දූශිත මෘදුකාංග හා දත්ත සොරකම් ආරක්ෂාව සමඟ ජාලය වඩා ආරක්ෂිතව ගවේශනය කරන්න.</translation> <translation id="6434250628340475518">Chromium OS පද්ධතිය</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium තත්පර 1කින් යළි ඇරඹෙනු ඇත}one{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}other{Chromium තත්පර #කින් යළි ඇරඹෙනු ඇත}}</translation> +<translation id="6464340581899189425">ඔබට Google ගිණුම් කීපයක් ඇති නම්, ඔබට ඒවා ඔබගේ <ph name="DEVICE_TYPE" /> වෙත එක් කළ හැකිය. ඔබගේ ගිණුම් Chromium බ්රව්සරයෙහි සහ Play Store හි මෙන්ම Gmail, Drive සහ YouTube වැනි සේවාවල ලබා ගත හැකි වනු ඇත.<ph name="LINK_BEGIN" />තව දැන ගන්න<ph name="LINK_END" /></translation> <translation id="6475912303565314141">ඔබ Chromium ආරම්භ කරන විට කුමන පිටුව පෙන්වන්නේද යන්නද එමගින් පාලනය කෙරේ.</translation> <translation id="6510925080656968729">Chromium අස්ථාපනය කරන්න</translation> <translation id="6570579332384693436">අක්ෂර වින්යාස දෝෂ නිවැරදි කිරීම සඳහා, Chromium ඔබ ටයිප් කරන පෙළ Google වෙත යවයි</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">අනාගත Chromium යාවත්කාලීන ලබා ගැනීමට, ඔබට OS X 10.11 හෝ පසු අනුවාදයක් අවශ්ය වේ. මෙම පරිගණකය OS X 10.10 භාවිත කරමින් සිටියි.</translation> <translation id="7867198900892795913">Chromium අලුත්ම අනුවාදයට යාවත්කාලීන කළ නොහැකිය, එබැවින් ඔබට අලුත් විශේෂාංග සහ ආරක්ෂණ පිළියම් මඟ හැරෙයි.</translation> <translation id="7898472181347242998">ඔබේ උපාංගය යාවත්කාලීනද බැලීමට <ph name="LINK_BEGIN" />Chromium OS සැකසුම්<ph name="LINK_END" /> වෙත යන්න</translation> +<translation id="7907774600618164274">Chromium OS නිවැරදිව වසා නොමැත.</translation> <translation id="7937630085815544518">ඔබ Chromiumට සයින් ඉන් වී ඇත්තේ <ph name="USER_EMAIL_ADDRESS" /> ලෙසය. නැවත සයින් ඉන් වීමට එම ගිණුමම භාවිතා කරන්න.</translation> <translation id="7975919845073681630">මෙය Chromium හි දෙවන ස්ථාපනයක් වන අතර, ඔබේ පෙරනිමි බ්රව්සරය කළ නොහැකිය.</translation> <translation id="7979877361127045932">Chromium මෙනුව තුළ සඟවන්න</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{දිනයක් ඇතුළත Chromium යළි දියත් කරන්න}one{දින # ක් ඇතුළත Chromium යළි දියත් කරන්න}other{දින # ක් ඇතුළත Chromium යළි දියත් කරන්න}}</translation> <translation id="8453117565092476964">ස්ථාපන ගබඩාව නරක් වී හෝ වැරදිය. කරුණාකර නැවත Chromium බාගන්න.</translation> <translation id="8493179195440786826">Chromium යල් පැනගොස් ඇත</translation> +<translation id="8550334526674375523">මෙම කාර්යාල පැතිකඩ ඔබගේ පුද්ගලික පැතිකඩෙන් සම්පූර්ණයෙන්ම වෙන්ව ඇත.</translation> <translation id="8558383651099478961">ඔබේ මාපිය Chromium සඳහා "වෙබ් අඩවි, යෙදුම් සහ දිගු සඳහා වන අවසර" අක්රිය කර ඇත. මෙම <ph name="EXTENSION_TYPE_PARAMETER" /> එක් කිරීමට අවසර නැත.</translation> <translation id="8568283329061645092">ඔබ ඔබේ Google ගිණුම මඟින් පුරන විට Chromium ඔබේ මුරපද පරීක්ෂා කළ හැක</translation> <translation id="8586442755830160949">හිමිකම <ph name="YEAR" /> Chromium කතෲවරුන්. සියළුම හිමිකම් ඇවිරිනි.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">රහස්වචන පෙන්වීමට Chromium උත්සාහ කරයි. මීට ඉඩ දීමට ඔබේ Windows රහස්වචනය ටයිප් කරන්න.</translation> <translation id="8941642502866065432">Chromium යාවත්කාලීන කළ නොහැක</translation> <translation id="8974095189086268230">Chromium OS යතාර්තයක් බවට පත්කරන වෙනත් <ph name="BEGIN_LINK_CROS_OSS" />විවෘත කේත මෘදුකාංග<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">ඔබ මෙම බ්රව්සරයට කාර්යාල පැතිකඩක් එක් කරන අතර ඔබගේ පරිපාලකට ඔබගේ පැතිකඩෙහි පාලනය ලබා දෙයි.</translation> <translation id="9019929317751753759">Chromium වඩාත් ආරක්ෂිත කිරීම සඳහා, අප විසින් <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ලැයිස්තුගත කර නොමැති හා ඔබේ දැනුමෙන් තොරව එක් කර ඇති ඇතැම් දිගු අබල කර ඇත.</translation> <translation id="9089354809943900324">Chromium යල්පැනගොස් ඇත</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium පැයකින් යළි දියත් වෙයි}one{Chromium පැය # කින් යළි දියත් වෙයි}other{Chromium පැය # කින් යළි දියත් වෙයි}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">ඔබේ බ්රවුසිං දත්තත් මකන්නද?</translation> <translation id="9158494823179993217">ඔබේ පද්ධති පරිපාලකයා <ph name="TARGET_URL_HOSTNAME" /> වෙත ප්රවේශ වීමට වෛකල්පික බ්රවුසරයක් විවෘත කිරීමට Chromium වින්යාස කර ඇත.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS පද්ධතිය</translation> <translation id="93478295209880648">Chromium තවදුරටත් Windows XP හෝ Windows Vista මත සහාය නොදක්වන නිසා නිවැරදිව ක්රියා නොකරනු ඇත</translation> <translation id="95514773681268843">මෙම උපාංගය භාවිතා කිරීමට පෙර ඔබ පහත සේවා නියමයන් භාවිතා කළ යුතු බවට <ph name="DOMAIN" /> නියම කරයි. මෙම නියමයන් මඟින් Chromium OS පුළුල් වීම, වෙනස් කිරීම හෝ සීමා කිරීම නොකරයි.</translation> <translation id="965162752251293939">Chromium භාවිත කරමින් සිටින්නේ කවුද?</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index e1bc660..ebaa34e 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Systému OS Chromium sa nepodarilo synchronizovať vaše údaje, pretože vaše prihlasovacie údaje účtu sú zastarané.</translation> <translation id="2560420686485554789">Chromium potrebuje na sťahovanie súborov prístup k úložisku</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2583187216237139145">Všetky údaje prehliadača Chromium vygenerované počas používania tohto profilu (napríklad vytvorenie záložiek, histórie, hesiel a ďalších nastavení) môžu byť odstránené správcom pracovného profilu. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Ak chcete uplatniť aktualizáciu, musíte reštartovať systém Chromium OS.</translation> <translation id="2615699638672665509">Tento počítač čoskoro prestane dostávať aktualizácie prehliadača Chromium, pretože jeho hardvér už nie je podporovaný.</translation> <translation id="2648074677641340862">V priebehu inštalácie sa vyskytla chyba operačného systému. Stiahnite prehliadač Chromium znova.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">K dispozícii je nová verzia prehliadača Chromium, ktorá je rýchlejšia ako kedykoľvek predtým.</translation> <translation id="6063093106622310249">&Otvoriť v prehliadači Chromium</translation> <translation id="6072279588547424923">Rozšírenie <ph name="EXTENSION_NAME" /> bolo pridané do prehliadača Chromium</translation> +<translation id="608006075545470555">Pridanie pracovného profilu do tohto prehliadača</translation> <translation id="608189560609172163">Prehliadaču Chromium sa nepodarilo synchronizovať vaše údaje pre chybu prihlásenia.</translation> <translation id="6096348254544841612">Prispôsobte si prehliadač Chromium a ovládajte ho. K dispozícii je aktualizácia.</translation> <translation id="6120345080069858279">Chromium toto heslo uloží do vášho účtu Google. Nebudete si ho musieť pamätať.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium je webový prehliadač, ktorý spúšťa webové stránky a aplikácie rýchlosťou svetla. Je rýchly, stabilný a ľahko sa používa. S ochranou proti škodlivému softvéru a phishingu, ktorá je zabudovaná do prehliadača Chromium, môžete prehliadať web bezpečnejšie.</translation> <translation id="6434250628340475518">Systém Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium sa reštartuje o 1 sekundu}few{Chromium sa reštartujte o # sekundy}many{Chromium sa reštartujte o # sekundy}other{Chromium sa reštartujte o # sekúnd}}</translation> +<translation id="6464340581899189425">Ak máte viac účtov Google, môžete si ich pridať do zariadenia <ph name="DEVICE_TYPE" />. Vaše účty budú k dispozícii v prehliadači Chromium a Obchode Play, ale aj službách, ako sú Gmail, Disk a YouTube.<ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Tiež určuje, ktorá stránka sa zobrazí pri spustení prehliadača Chromium.</translation> <translation id="6510925080656968729">Odinštalovať Chromium</translation> <translation id="6570579332384693436">Chromium odošle text zadaný v textových poliach Googlu s cieľom opraviť pravopisné chyby</translation> @@ -221,6 +224,7 @@ <translation id="7857220146454061152">Ak chcete dostávať budúce aktualizácie prehliadača Chromium, budete potrebovať systém OS X 10.11 alebo novší. V tomto počítači používate OS X 10.10.</translation> <translation id="7867198900892795913">Chromium sa nepodarilo aktualizovať na najnovšiu verziu. K dispozícii tak nie sú niektoré nové funkcie ani bezpečnostné opravy.</translation> <translation id="7898472181347242998">Ak sa chcete pozrieť, či je zariadenie aktualizované, prejdite do <ph name="LINK_BEGIN" />Nastavení operačného systému Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Systém Chromium OS nebol správne vypnutý.</translation> <translation id="7937630085815544518">Do prehliadača Chromium ste boli prihlásený/-á ako <ph name="USER_EMAIL_ADDRESS" />. Ak sa chcete prihlásiť znova, použite rovnaký účet.</translation> <translation id="7975919845073681630">Toto je sekundárna inštalácia prehliadača Chromium – nemôže byť nastavený ako váš predvolený prehliadač.</translation> <translation id="7979877361127045932">Skryť v Ponuke Chromium</translation> @@ -235,6 +239,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromium znova spustite do jedného dňa}few{Chromium znova spustite do # dní}many{Chromium znova spustite do # dňa}other{Chromium znova spustite do # dní}}</translation> <translation id="8453117565092476964">Archív inštalácie je poškodený alebo neplatný. Stiahnite prehliadač Chromium znova.</translation> <translation id="8493179195440786826">Prehliadač Chromium je zastaraný</translation> +<translation id="8550334526674375523">Tento pracovný profil je úplne oddelený od vášho osobného.</translation> <translation id="8558383651099478961">Tvoj rodič vypol „Povolenia pre weby, aplikácie a rozšírenia“ v prehliadači Chromium. Pridanie tohto rozšírenia (<ph name="EXTENSION_TYPE_PARAMETER" />) nie je povolené.</translation> <translation id="8568283329061645092">Keď sa prihlásite pomocou účtu Google, Chromium môže skontrolovať vaše heslá</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Autori Chromium. Všetky práva vyhradené.</translation> @@ -251,6 +256,7 @@ <translation id="8907580949721785412">Prehliadač Chromium sa pokúša zobraziť heslá. Ak to chcete povoliť, zadajte svoje heslo systému Windows.</translation> <translation id="8941642502866065432">Chromium sa nedá aktualizovať</translation> <translation id="8974095189086268230">Prehliadač Chromium mohol vzniknúť vďaka ďalšiemu <ph name="BEGIN_LINK_CROS_OSS" />softvéru s otvoreným zdrojom<ph name="END_LINK_CROS_OSS" /> .</translation> +<translation id="8986207147630327271">Do tohto prehliadača pridávate pracovný profil a svojmu správcovi udeľujete kontrolu iba nad ním.</translation> <translation id="9019929317751753759">Z dôvodu zvýšenia bezpečnosti prehliadača Chromium sme zakázali nasledujúce rozšírenie, ktoré nie je uvedené v službe <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> a mohlo byť pridané bez vášho vedomia.</translation> <translation id="9089354809943900324">Prehliadač Chromium je zastaraný</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium sa znova spustí do jednej hodiny}few{Chromium sa znova spustí do # hodín}many{Chromium sa znova spustí do # hodiny}other{Chromium sa znova spustí do # hodín}}</translation> @@ -258,6 +264,7 @@ <translation id="911206726377975832">Chcete tiež odstrániť svoje údaje prehliadania?</translation> <translation id="9158494823179993217">Správca systému nakonfiguroval Chromium, aby web <ph name="TARGET_URL_HOSTNAME" /> otváral v alternatívnom prehliadači.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Systém Chromium OS</translation> <translation id="93478295209880648">Chromium nemusí fungovať správne, pretože v systémoch Windows XP a Windows Vista už nie je podporovaný</translation> <translation id="95514773681268843">Stránky <ph name="DOMAIN" /> vyžadujú, aby ste si pred používaním tohto zariadenia prečítali nasledujúce Zmluvné podmienky a vyjadrili s nimi súhlas. Tieto zmluvné podmienky nerozširujú, neupravujú ani neobmedzujú Zmluvné podmienky systému Chromium OS.</translation> <translation id="965162752251293939">Kto používa Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_sq.xtb b/chrome/app/resources/chromium_strings_sq.xtb index 6786964..addb9285e 100644 --- a/chrome/app/resources/chromium_strings_sq.xtb +++ b/chrome/app/resources/chromium_strings_sq.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Chromium OS nuk mundi të sinkronizonte të dhënat e tua, sepse detajet e llogarisë tënde të identifikimit janë të vjetruara.</translation> <translation id="2560420686485554789">Chromium ka nevojë për qasje te hapësira ruajtëse për të shkarkuar skedarë</translation> <translation id="2572494885440352020">Ndihmuesi i Chromium</translation> +<translation id="2583187216237139145">Çdo e dhënë e Chromium që krijohet gjatë përdorimit të këtij profili (si p.sh. krijimi i faqeshënuesve, historikut, fjalëkalimeve dhe cilësimeve të tjera) mund të hiqet nga administratori i profilit të punës. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Chromium OS ka nevojë të riniset për të zbatuar përditësimin.</translation> <translation id="2615699638672665509">Së shpejti ky kompjuter nuk do të marrë më përditësime të Chromium sepse hardueri i tij nuk mbështetet më.</translation> <translation id="2648074677641340862">Ndodhi një gabim në sistemin operativ gjatë instalimit. Shkarko përsëri Chromium.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Ofrohet një version i ri i Chromium dhe është më i shpejtë se kurrë.</translation> <translation id="6063093106622310249">&Hape në Chromium</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> është shtuar te Chromium</translation> +<translation id="608006075545470555">Shto profilin e punës në këtë shfletues</translation> <translation id="608189560609172163">Chromium nuk mund të sinkronizonte të dhënat e tua për shkak të një gabimi gjatë identifikimit.</translation> <translation id="6096348254544841612">Personalizo dhe kontrollo Chromium. Ofrohet përditësim.</translation> <translation id="6120345080069858279">Chromium do ta ruajë këtë fjalëkalim në llogarinë tënde të Google. Nuk është nevoja ta mbash mend.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium është një shfletues uebi që ekzekuton faqe uebi dhe aplikacione me një shpejtësi jashtëzakonisht të lartë. Është i shpejtë, i qëndrueshëm dhe i lehtë në përdorim. Shfleto në ueb në mënyrë më të sigurt, me mbrojtje të integruar në Chromium kundër mashtrimeve dhe softuerëve keqdashës.</translation> <translation id="6434250628340475518">Sistemi i Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium do të riniset për 1 sekondë}other{Chromium do të riniset për # sekonda}}</translation> +<translation id="6464340581899189425">Nëse ke disa "Llogari të Google", mund t'i shtosh ato te <ph name="DEVICE_TYPE" />. Llogaritë e tua do të ofrohen në shfletuesin Chromium dhe në "Dyqanin e Play", si dhe në shërbimet si Gmail, "Disku" dhe YouTube.<ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Gjithashtu kontrollon se cila faqe shfaqet kur fillon Chromium</translation> <translation id="6510925080656968729">Çinstaloje Chromium</translation> <translation id="6570579332384693436">Për të korrigjuar gabimet drejtshkrimore, Chromium e dërgon te Google tekstin që ti shkruan në fushat e tekstit</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Për të marrë përditësimet e ardhshme të Chromium, do të të duhet versioni OS X 10.11 ose një version i mëvonshëm. Ky kompjuter përdor versionin OS X 10.10.</translation> <translation id="7867198900892795913">Chromium nuk mund të përditësohej me versionin më të fundit, kështu që të mungojnë rregullimet e sigurisë dhe funksionet e reja.</translation> <translation id="7898472181347242998">Për të parë nëse pajisja jote është e përditësuar, shko te <ph name="LINK_BEGIN" />Cilësimet e sistemit operativ Chromium<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS nuk u mbyll si duhet.</translation> <translation id="7937630085815544518">Je identifikuar në Chromium si <ph name="USER_EMAIL_ADDRESS" />. Përdor të njëjtën llogari për t'u identifikuar sërish.</translation> <translation id="7975919845073681630">Ky është instalim dytësor i Chromium dhe nuk mund të bëhet shfletuesi yt i parazgjedhur.</translation> <translation id="7979877361127045932">Fshih në menynë e Chromium-it</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Hap përsëri Chromium brenda një dite}other{Hap përsëri Chromium brenda # ditësh}}</translation> <translation id="8453117565092476964">Arkivi i instaluesit është i dëmtuar ose i pavlefshëm. Shkarkoje Chromium përsëri.</translation> <translation id="8493179195440786826">Chromium nuk është i përditësuar</translation> +<translation id="8550334526674375523">Ky profil pune është plotësisht i veçuar nga profili yt personal.</translation> <translation id="8558383651099478961">Prindi yt ka çaktivizuar "Lejet për sajtet, aplikacionet dhe shtesat" për Chromium. Nuk lejohet shtimi për këtë <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">Chromium mund t'i kontrollojë fjalëkalimet e tua kur të identifikohesh me "Llogarinë tënde të Google"</translation> <translation id="8586442755830160949">Të drejtat e autorit <ph name="YEAR" /> Autorët e Chromium. Të gjitha të drejtat të rezervuara.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Chromium po përpiqet të shfaqë fjalëkalime. Shkruaj fjalëkalimin tënd të Windows për ta lejuar këtë.</translation> <translation id="8941642502866065432">Chromium nuk mund të përditësohet</translation> <translation id="8974095189086268230">Sistemi operativ Chromium bëhet i mundur nga softueri shtesë <ph name="BEGIN_LINK_CROS_OSS" />me burim të hapur<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">Po shton një profil pune në këtë shfletues dhe po i jep administratorit tënd kontrollin vetëm mbi profilin e punës.</translation> <translation id="9019929317751753759">Për ta bërë më të sigurt Chromium, çaktivizuam shtesën e mëposhtme që nuk është e listuar në <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> dhe që mund të jetë shtuar pa dijeninë tënde.</translation> <translation id="9089354809943900324">Chromium nuk është i përditësuar</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium do të hapet përsëri për një orë}other{Chromium do të hapet përsëri për # orë}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Të fshihen po ashtu të dhënat e shfletimit?</translation> <translation id="9158494823179993217">Administratori i sistemit ka konfiguruar Chromium që të hapë një shfletues alternativ për të pasur qasje te <ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Sistemi Chromium OS</translation> <translation id="93478295209880648">Chromium mund të mos funksionojë si duhet sepse nuk mbështetet më në Windows XP ose Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> kërkon që të lexosh dhe të pranosh "Kushtet e shërbimit" më poshtë para se të përdorësh këtë pajisje. Këto kushte nuk i zgjerojnë, modifikojnë ose kufizojnë kushtet e sistemit operativ të Chromium.</translation> <translation id="965162752251293939">Kush po e përdor Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index 8f92c95b..cb9b26b 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">Det gick inte att synkronisera data med Chromium eftersom inloggningsuppgifterna för kontot är inaktuella.</translation> <translation id="2560420686485554789">Du behöver ge Chromium åtkomst till lagringsutrymmet om det ska gå att ladda ned filer</translation> <translation id="2572494885440352020">Hjälp för Chromium</translation> +<translation id="2583187216237139145">All data i Chromium som uppstår när den här profilen används (t.ex. bokmärken, historik, lösenord och andra inställningar) kan tas bort av jobbprofilens administratör. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Chromium OS måste startas om för att uppdateringen ska börja gälla.</translation> <translation id="2615699638672665509">Den här datorn slutar snart att få uppdateringar för Chromium eftersom maskinvaran inte längre stöds.</translation> <translation id="2648074677641340862">Ett operativsystemsfel inträffade under installationen. Ladda ned Chromium igen.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Det finns en ny version av Chromium och den är snabbare än någonsin.</translation> <translation id="6063093106622310249">&Öppna i Chromium</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> har lagts till i Chromium</translation> +<translation id="608006075545470555">Lägg till en jobbprofil i den här webbläsaren</translation> <translation id="608189560609172163">Chromium kunde inte synkronisera data på grund av ett fel vid inloggningen.</translation> <translation id="6096348254544841612">Anpassa och styr Chromium. En uppdatering är tillgänglig.</translation> <translation id="6120345080069858279">Det här lösenordet sparas i ditt Google-konto. Du behöver inte komma ihåg det.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">Chromium är en webbläsare som kör webbsidor och appar blixtsnabbt. Den är snabb, stabil och lätt att använda. Surfa säkrare med Chromiums skydd mot skadliga program och lösenordsfiske.</translation> <translation id="6434250628340475518">Chromium OS-system</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium startas om om en sekund}other{Chromium startas om om # sekunder}}</translation> +<translation id="6464340581899189425">Om du har flera Google-konton kan du lägga till dem på <ph name="DEVICE_TYPE" />. Kontona blir tillgängliga i webbläsaren Chromium och Play Butik samt tjänster som Gmail, Drive och YouTube.<ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Det styr också vilken sida som visas när du startar Chromium.</translation> <translation id="6510925080656968729">Avinstallera Chromium</translation> <translation id="6570579332384693436">Chromium skickar det du skriver i textfält till Google för att kontrollera stavningen</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Du behöver OS X 10.11 eller senare för att få kommande uppdateringar av Chromium. OS X 10.10 används på datorn.</translation> <translation id="7867198900892795913">Det gick inte att uppdatera Chromium till den senaste versionen. Därför går du miste om nya funktioner och säkerhetskorrigeringar.</translation> <translation id="7898472181347242998">Om du vill se om enheten är uppdaterad öppnar du <ph name="LINK_BEGIN" />inställningarna för Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">Chromium OS stängdes inte av på rätt sätt.</translation> <translation id="7937630085815544518">Du var inloggad i Chromium som <ph name="USER_EMAIL_ADDRESS" />. Använd samma konto när du loggar in igen.</translation> <translation id="7975919845073681630">Det här är en sekundär installation av Chromium. Det går inte att göra den till standardwebbläsare.</translation> <translation id="7979877361127045932">Dölj i Chromium-menyn</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Starta om Chromium inom en dag}other{Starta om Chromium inom # dagar}}</translation> <translation id="8453117565092476964">Arkivet för installationsfilen är skadat eller ogiltigt. Ladda ned Chromium igen.</translation> <translation id="8493179195440786826">Den här versionen av Chromium är inaktuell</translation> +<translation id="8550334526674375523">Jobbprofilen hålls helt åtskild från din privata profil.</translation> <translation id="8558383651099478961">Din förälder har inaktiverat Behörigheter för webbplatser, appar och tillägg för Chromium. Det är inte tillåtet att lägga till denna <ph name="EXTENSION_TYPE_PARAMETER" />.</translation> <translation id="8568283329061645092">Chromium kan kontrollera dina lösenord när du loggar in med Google-kontot</translation> <translation id="8586442755830160949">Upphovsrätt <ph name="YEAR" /> The Chromium Authors. Med ensamrätt.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">Skriv ditt lösenord i Windows om du vill tillåta att lösenord visas i Chromium.</translation> <translation id="8941642502866065432">Det gick inte att uppdatera Chromium</translation> <translation id="8974095189086268230">Chromium OS fungerar tack vare <ph name="BEGIN_LINK_CROS_OSS" />program med öppen källkod<ph name="END_LINK_CROS_OSS" />.</translation> +<translation id="8986207147630327271">Du lägger till en jobbprofil i den här webbläsaren och ger administratören kontrollen enbart över jobbprofilen.</translation> <translation id="9019929317751753759">Vi har gjort Chromium säkrare genom att inaktivera följande tillägg som inte anges i <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> och som kan ha lagts till utan att du vet om det.</translation> <translation id="9089354809943900324">Den här versionen av Chromium är inaktuell</translation> <translation id="9093206154853821181">{0,plural, =1{Om en timme startas Chromium om}other{Om # timmar startas Chromium om}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Vill du även ta bort din webbinformation?</translation> <translation id="9158494823179993217">Systemadministratören har konfigurerat Chromium så att <ph name="TARGET_URL_HOSTNAME" /> öppnas i en annan webbläsare.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS-system</translation> <translation id="93478295209880648">Chromium kanske inte fungerar ordentligt eftersom den inte längre stöds på Windows XP och Windows Vista</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> kräver att du läser och godkänner följande användarvillkor innan du använder enheten. Villkoren varken utökar, ändrar eller begränsar villkoren för Chromium OS.</translation> <translation id="965162752251293939">Vem ska använda Chromium?</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 2c3167e..c5026d0 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chromium OS మీ డేటాను సింక్ చేయలేకపోయింది.</translation> <translation id="2560420686485554789">ఫైల్లను డౌన్లోడ్ చేయడానికి Chromiumకు నిల్వ యాక్సెస్ అవసరం</translation> <translation id="2572494885440352020">Chromium సహాయకం</translation> +<translation id="2583187216237139145">ఈ ప్రొఫైల్ను ఉపయోగిస్తున్నప్పుడు జెనరేట్ అయిన ఏదైనా Chromium డేటాను (బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు, ఇంకా ఇతర సెట్టింగ్లు వంటివి క్రియేట్ చేయడం) వర్క్ ప్రొఫైల్ అడ్మినిస్ట్రేటర్ తీసివేయవచ్చు. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">అప్డేట్ను వర్తింపజేయడానికి Chromium OSను పునఃప్రారంభించాలి.</translation> <translation id="2615699638672665509">ఈ కంప్యూటర్ యొక్క హార్డ్వేర్కు మద్దతు లేని కారణంగా దీనిలో Chromium నవీకరణల స్వీకరణ త్వరలో ఆగిపోతుంది.</translation> <translation id="2648074677641340862">ఇనస్టలేషన్ సమయంలో ఆపరేటింగ్ సిస్టమ్ ఎర్రర్ సంభవించింది. దయచేసి Chromiumను మళ్లీ డౌన్లోడ్ చేయండి.</translation> @@ -139,6 +140,7 @@ <translation id="6055895534982063517">కొత్త Chromium వెర్షన్ అందుబాటులో ఉంది, ఇది మునుపటి కంటే వేగవంతంగా ఉంటుంది.</translation> <translation id="6063093106622310249">&Chromiumలో తెరవండి</translation> <translation id="6072279588547424923">Chromiumకు <ph name="EXTENSION_NAME" /> జోడించబడింది</translation> +<translation id="608006075545470555">ఈ బ్రౌజర్కు వర్క్ ప్రొఫైల్ను జోడించండి</translation> <translation id="608189560609172163">సైన్ ఇన్ చేయడంలో ఎర్రర్ కారణంగా Chromium మీ డేటాను సింక్ చేయలేకపోయింది.</translation> <translation id="6096348254544841612">Chromiumను అనుకూలీకరించండి మరియు నియంత్రించండి. అప్డేట్ అందుబాటులో ఉంది.</translation> <translation id="6120345080069858279">Chromium ఈ పాస్వర్డ్ను మీ Google ఖాతాలో సేవ్ చేస్తుంది. మీరు దీనిని గుర్తుంచుకోవాల్సిన అవసరం లేదు.</translation> @@ -159,6 +161,7 @@ <translation id="6403826409255603130">Chromium అనేది మెరుపు వేగంతో వెబ్పేజీలను మరియు యాప్లను అమలు చేసే వెబ్ బ్రౌజర్. ఇది వేగవంతమైనది, స్థిరమైనది మరియు ఉపయోగించడానికి సులభమైనది. Chromiumలో రూపొందించిన మాల్వేర్ మరియు ఫిషింగ్ రక్షణతో మరింత సురక్షితంగా వెబ్లో బ్రౌజ్ చేయండి.</translation> <translation id="6434250628340475518">Chromium OS సిస్టమ్</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 సెకనులో పునఃప్రారంభమవుతుంది}other{Chromium # సెకన్లలో పునఃప్రారంభమవుతుంది}}</translation> +<translation id="6464340581899189425">మీరు పలు Google ఖాతాలను కలిగి ఉంటే, మీరు వాటిని మీ <ph name="DEVICE_TYPE" />కు జోడించవచ్చు. మీ ఖాతాలు Chromium బ్రౌజర్, Play స్టోర్లోనే కాకుండా Gmail, Drive, ఇంకా YouTube వంటి సర్వీస్లలో కూడా అందుబాటులో ఉంటాయి.<ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="6475912303565314141">ఇది మీరు Chromiumని ప్రారంభించేటప్పుడు చూపబడే పేజీని కూడా నియంత్రిస్తుంది.</translation> <translation id="6510925080656968729">Chromiumను అన్ఇన్స్టాల్ చేయి</translation> <translation id="6570579332384693436">అక్షరక్రమ లోపాలను పరిష్కరించడానికి, మీరు వచన ఫీల్డ్లలో టైప్ చేసే వచనాన్ని, Chromium Googleకి పంపుతుంది</translation> @@ -216,6 +219,7 @@ <translation id="7857220146454061152">భవిష్యత్తు Chromium అప్డేట్లను పొందడానికి, మీకు OS X 10.11 లేదా ఆ తర్వాత వచ్చిన ఏదైనా వెర్షన్ అవసరం అవుతుంది. ఈ కంప్యూటర్ OS X 10.10ను ఉపయోగిస్తోంది.</translation> <translation id="7867198900892795913">Chromiumను తాజా వెర్షన్కు అప్డేట్ చేయడం సాధ్యం కాలేదు, కాబట్టి మీరు కొత్త ఫీచర్లు మరియు భద్రతా పరిష్కారాలను పొందడం లేదు.</translation> <translation id="7898472181347242998">మీ పరికరం అప్డేట్ చేయబడి ఉందని చూడటానికి <ph name="LINK_BEGIN" />Chromium OS సెట్టింగ్లు<ph name="LINK_END" />కు వెళ్లండి</translation> +<translation id="7907774600618164274">Chromium OS సరిగ్గా షట్ డౌన్ కాలేదు.</translation> <translation id="7937630085815544518">మీరు <ph name="USER_EMAIL_ADDRESS" />గా Chromiumకు సైన్ ఇన్ చేశారు. దయచేసి మళ్లీ సైన్ ఇన్ చేయడానికి ఇదే ఖాతాను ఉపయోగించండి.</translation> <translation id="7975919845073681630">ఇది Chromium రెండవ ఇనస్టలేషన్. దీన్ని మీ డిఫాల్ట్ బ్రౌజర్గా చేయడం సాధ్యపడదు.</translation> <translation id="7979877361127045932">Chromium మెనూలో దాచండి</translation> @@ -230,6 +234,7 @@ <translation id="8417404458978023919">{0,plural, =1{ఒక రోజులోపు Chromiumను తిరిగి ప్రారంభించండి}other{# రోజులలోపు Chromiumను తిరిగి ప్రారంభించండి}}</translation> <translation id="8453117565092476964">ఇన్స్టాలర్ ఆర్కైవ్ పాడైంది లేదా చెల్లదు. దయచేసి Chromiumను మళ్లీ డౌన్లోడ్ చేయండి.</translation> <translation id="8493179195440786826">Chromium కాలం చెల్లినది</translation> +<translation id="8550334526674375523">ఈ వర్క్ ప్రొఫైల్, మీ వ్యక్తిగత ప్రొఫైల్ నుండి పూర్తిగా భిన్నంగా ఉంది.</translation> <translation id="8558383651099478961">Chromiumలో సైట్లు, యాప్లు, ఎక్స్టెన్షన్లకు సంబంధించిన అనుమతులను మీ తల్లి/తండ్రి ఆఫ్ చేశారు. ఈ <ph name="EXTENSION_TYPE_PARAMETER" />ను జోడించడానికి అనుమతి లేదు.</translation> <translation id="8568283329061645092">మీరు మీ Google ఖాతాతో సైన్ ఇన్ చేసి ఉన్నప్పుడు, Chromium మీ పాస్వర్డ్లను చెక్ చేయగలుగుతుంది</translation> <translation id="8586442755830160949">కాపీరైట్ <ph name="YEAR" /> Chromium రచయితలు. అన్ని హక్కులు రిజర్వ్ చేయబడ్డాయి.</translation> @@ -246,6 +251,7 @@ <translation id="8907580949721785412">Chromium పాస్వర్డ్లను చూపడానికి ప్రయత్నిస్తోంది. దీన్ని అనుమతించడానికి మీ Windows పాస్వర్డ్ను టైప్ చేయండి.</translation> <translation id="8941642502866065432">Chromiumని అప్డేట్ చేయడం సాధ్యం కాదు</translation> <translation id="8974095189086268230">అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్వేర్<ph name="END_LINK_CROS_OSS" />పై Chromium OS ఎంతగానో ఆధారపడుతుంది.</translation> +<translation id="8986207147630327271">మీరు ఈ బ్రౌజర్కు వర్క్ ప్రొఫైల్ను జోడిస్తున్నారు, ఇంకా మీ అడ్మినిస్ట్రేటర్కు వర్క్ ప్రొఫైల్పై కంట్రోల్ ఇస్తున్నారు.</translation> <translation id="9019929317751753759">Chromiumని సురక్షితం చేయడానికి, మేము క్రింది పొడిగింపుని నిలిపివేసాము, ఇది <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />లో జాబితా చేయబడలేదు మరియు మీకు తెలియకుండా జోడించబడి ఉండవచ్చు.</translation> <translation id="9089354809943900324">Chromium కాలం చెల్లినది</translation> <translation id="9093206154853821181">{0,plural, =1{ఒక గంటలో Chromium తిరిగి ప్రారంభించబడుతుంది}other{# గంటల్లో Chromium తిరిగి ప్రారంభించబడుతుంది}}</translation> @@ -253,6 +259,7 @@ <translation id="911206726377975832">మీ బ్రౌజింగ్ డేటాను కూడా తొలగించాలా?</translation> <translation id="9158494823179993217"><ph name="TARGET_URL_HOSTNAME" />ను యాక్సెస్ చేయడం కోసం ఒక ప్రత్యామ్నాయ బ్రౌజర్ను తెరిచే విధంగా Chromiumను మీ సిస్టమ్ నిర్వాహకులు కాన్ఫిగర్ చేశారు.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS సిస్టమ్</translation> <translation id="93478295209880648">Chromiumకి ఇప్పుడు Windows XP లేదా Windows Vistaలో మద్దతు లేనందున ఇది సరిగ్గా పని చేయకపోవచ్చు</translation> <translation id="95514773681268843">మీరు ఈ పరికరాన్ని ఉపయోగించడానికి ముందు సేవా నిబంధనలను చదివి, అంగీకరించాలని <ph name="DOMAIN" /> కోరుతోంది. ఈ నిబంధనలు Chromium OS నిబంధనలను విస్తరింపజేయవు, సవరించవు లేదా పరిమితం చేయవు.</translation> <translation id="965162752251293939">Chromiumను ఎవరు ఉపయోగిస్తున్నారు?</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index 44255254..782c1487 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -40,6 +40,7 @@ <translation id="2535480412977113886">Chromium OS ma’lumotlaringizni sinxronlay olmadi, chunki hisobingiz haqidagi ma’lumotlar eskirgan.</translation> <translation id="2560420686485554789">Yuklab olish uchun Chromium brauzerida omborga saqlash ruxsati bo‘lishi zarur</translation> <translation id="2572494885440352020">Chromium yordamchisi</translation> +<translation id="2583187216237139145">Bu profil ishlatilganda yaratilgan har qanday Chromium maʼlumotlari (bukmarklar, tarix, parollar va boshqa sozlamalar kabi) ish profili administratori tomonidan tozalanishi mumkin. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">Yangilovni o‘rnatish uchun Chromium OS qaytadan ishga tushirilishi kerak.</translation> <translation id="2615699638672665509">Bu kompyuterdagi Chromium yangilanishlari tez orada to‘xtab qolishi mumkin, chunki bu kompyuterdagi qurilmalar ta’minoti boshqa qo‘llab-quvvatlanmaydi.</translation> <translation id="2648074677641340862">O‘rnatish vaqtida operatsion tizim xatoligi yuz berdi. Chromium‘ni qaytadan yuklab oling.</translation> @@ -139,6 +140,7 @@ <translation id="6055895534982063517">Chromium brauzerining yanada tezroq ishlaydigan yangi versiyasi chiqdi.</translation> <translation id="6063093106622310249">&Chromiumda ochish</translation> <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> kengaytmasi Chromiumga o‘rnatildi</translation> +<translation id="608006075545470555">Bu brauzerga ish profilini kiritish</translation> <translation id="608189560609172163">Hisobga kirishdagi xatolik sababli Chromium ma’lumotlarni sinxronlay olmadi.</translation> <translation id="6096348254544841612">Chromium uchun yangilanish chiqdi.</translation> <translation id="6120345080069858279">Chromium bu parolni Google hisobingizga saqlaydi. Uni eslab qolishingiz shart emas.</translation> @@ -159,6 +161,7 @@ <translation id="6403826409255603130">Chromium - veb sahifalarni va ilovalarni bir necha soniyada ochadigan brauzer. U tez, barqaror va undan foydalanish oson. Chromium brauzerining firibgarlik va zararli dasturlardan saqlovchi ichki o‘rnatilgan himoya vositasi Internetdagi faoliyatni maksimal havfsizlik bilan ta’minlaydi.</translation> <translation id="6434250628340475518">Chromium OS tizimi</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium 1 soniyada qayta ishga tushiriladi}other{Chromium # soniyada qayta ishga tushiriladi}}</translation> +<translation id="6464340581899189425">Agar bir necha Google hisoblaringiz boʻlsa, ularni <ph name="DEVICE_TYPE" /> qurilmangizga kiritishingiz mumkin. Hisoblaringizdan Chromium brauzerida, Play Marketda va Gmail, Drive va YouTube kabi xizmatlarda foydalana olasiz.<ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Bundan tashqari, kengaytma Chromium bosh sahifasini o‘zgarib qo‘ydi.</translation> <translation id="6510925080656968729">Chromium’ni o‘chirib tashlash</translation> <translation id="6570579332384693436">Imloni tekshirish uchun Chromium siz kiritgan matnni Google serverlariga yuboradi</translation> @@ -218,6 +221,7 @@ <translation id="7857220146454061152">Chromium yangilanishlari OS X 10.11 yoki undan yuqori versiyalarda ishlaydi. Bu kompyuterdagi versiya: OS X 10.10.</translation> <translation id="7867198900892795913">Chromium brauzerining so‘nggi versiyasini o‘rnatib bo‘lmadi. Xavfsizlik sozlamalariga kiritilgan tuzatishlar va yangi funksiyalardan bahramand bo‘la olmaysiz.</translation> <translation id="7898472181347242998">Qurilmangiz tizimi yangilanganligini <ph name="LINK_BEGIN" />Chromium OS sozlamalari<ph name="LINK_END" /> orqali bilish mumkin</translation> +<translation id="7907774600618164274">Chromium OS seansi xato yakunlangan.</translation> <translation id="7937630085815544518">Avvallari siz Chromium‘ga <ph name="USER_EMAIL_ADDRESS" /> hisobidan kirgandingiz. O‘sha hisobdan foydalanib yana qaytadan kiring.</translation> <translation id="7975919845073681630">Chromium takroran o‘rnatilgan, shuning uchun u asosiy brauzer bo‘la olmaydi.</translation> <translation id="7979877361127045932">Chromium menyusida ko‘rsatilmasin</translation> @@ -232,6 +236,7 @@ <translation id="8417404458978023919">{0,plural, =1{Chromiumni 1 kun ichida qayta ishga tushiring}other{Chromiumni # kun ichida qayta ishga tushiring}}</translation> <translation id="8453117565092476964">O‘rnatish dasturi arxivi shikastlangan. Chromium‘ni qaytadan yuklab oling.</translation> <translation id="8493179195440786826">Chromium versiyasi eskirgan</translation> +<translation id="8550334526674375523">Bu ish profili shaxsiy profilingizdan butunlay ajratilgan.</translation> <translation id="8558383651099478961">Chromiumdagi “Sayt, ilova va kengaytmalarga ruxsat” ota-onangiz tomonidan faolsizlantirilgan. <ph name="EXTENSION_TYPE_PARAMETER" /> kiritilishi taqiqlangan.</translation> <translation id="8568283329061645092">Google hisobingizga kirsangiz, Chromium parollaringizni tekshira oladi</translation> <translation id="8586442755830160949">© The Chromium Authors, <ph name="YEAR" />. Barcha huquqlar himoyalangan.</translation> @@ -248,6 +253,7 @@ <translation id="8907580949721785412">Chromium parollarni ko‘rsatishga urinmoqda. Ruxsat berish uchun Windows platformasidagi parolingizni kiriting.</translation> <translation id="8941642502866065432">Chromiumni yangilab bo‘lmadi</translation> <translation id="8974095189086268230">Chromium OS paydo bo‘lishida qo‘shimcha <ph name="BEGIN_LINK_CROS_OSS" />ochiq kodli dasturiy ta'minotlarning<ph name="END_LINK_CROS_OSS" /> katta o‘rni bor.</translation> +<translation id="8986207147630327271">Bu brauzerga ish profilini kiritish bilan siz administratorga ish profili orqali barcha boshqaruv ruxsatlarini berasiz.</translation> <translation id="9019929317751753759">Ma’lumotlaringiz xavfsizligini ta’minlash maqsadida ayrim kengaytmalarni o‘chirib qo‘ydik, chunki <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />da ular haqida hech qanday ma’lumot yo‘q (ya’ni, ular sizning ruxsatingizsiz o‘rnatilgan bo‘lishi mumkin).</translation> <translation id="9089354809943900324">Chromium versiyasi eskirdi</translation> <translation id="9093206154853821181">{0,plural, =1{Chromium bir soatda qayta ishga tushadi}other{Chromium # soatda qayta ishga tushadi}}</translation> @@ -255,6 +261,7 @@ <translation id="911206726377975832">Brauzer faoliyati haqidagi ma’lumotlar ham tozalansinmi?</translation> <translation id="9158494823179993217">Tizim administratori <ph name="TARGET_URL_HOSTNAME" /> havolasini muqobil brauzerda ochiladigan qilib sozlagan.</translation> <translation id="9190841055450128916">Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Chromium OS tizimi</translation> <translation id="93478295209880648">Chromium brauzeri Windows XP yoki Windows Vista tizimlarida ishlamay qolishi mumkin, chunki uning yangi versiyalarida bu tizimlar ta’minoti to‘xtatiladi</translation> <translation id="95514773681268843"><ph name="DOMAIN" /> bu qurilmadan foydalanishdan oldin quyidagi Xizmat shartlarini o‘qib, qabul qilishingizni talab qiladi. Bu shartlar Chromium OS shartlarini kengaytirmaydi, o‘zgartirmaydi yoki cheklamaydi.</translation> <translation id="965162752251293939">Chromiumni kim ochdi?</translation>
diff --git a/chrome/app/resources/chromium_strings_zu.xtb b/chrome/app/resources/chromium_strings_zu.xtb index cba2d04..6caae01d 100644 --- a/chrome/app/resources/chromium_strings_zu.xtb +++ b/chrome/app/resources/chromium_strings_zu.xtb
@@ -42,6 +42,7 @@ <translation id="2535480412977113886">I-Chromium OS ayikwazanga ukuvumelanisa idatha yakho ngoba imininingwane yokungena ngemvume kwi-akhawunti yakho iphelelwe isikhathi.</translation> <translation id="2560420686485554789">I-Chromium idinga ukufinyelela kusitoreji ukuze ilande amafayela</translation> <translation id="2572494885440352020">Isisizi se-Chromium</translation> +<translation id="2583187216237139145">Noma iyiphi idatha ye-Chromium ekhiqizwa ngesikhathi sokusetshenziswa kwale phrofayela (efana nokudalwa kwamabhukhimakhi, umlando, amaphasiwedi, namanye amasethingi) ingasuswa umlawuli wephrofayela yomsebenzi. <ph name="LEARN_MORE" /></translation> <translation id="2587578672395088481">I-Chromium OS idinga ukuphinda iqaliswe ukuze kusetshenziswe isibuyekezo.</translation> <translation id="2615699638672665509">Le khompyutha maduze nje izomisa ukwamukela izibuyekezo ze-Chromium ngoba izingxenyekazi zekhompyutha zayo azisasekelwa.</translation> <translation id="2648074677641340862">Iphutha le sistimu yokusebenza livele ngesikhathi sokufaka. Sicela uphinde ulande i-Chromium.</translation> @@ -143,6 +144,7 @@ <translation id="6055895534982063517">Kukhona inguqulo entsha ye-Chromium etholakalayo, futhi ishesha kakhulu kunakuqala.</translation> <translation id="6063093106622310249">&Vula ku-Chromium</translation> <translation id="6072279588547424923">I-<ph name="EXTENSION_NAME" /> ingezwe ku-Chromium</translation> +<translation id="608006075545470555">Engeza Iphrofayela Yomsebenzi kulesi siphequluli</translation> <translation id="608189560609172163">I-Chromium ayikwazanga ukuvumelanisa idatha yakho ngenxa yephutha lokungena ngemvume.</translation> <translation id="6096348254544841612">Enza ngendlela oyifisayo uphinde ulawule i-Chromium. Isibuyekezo siyatholakala.</translation> <translation id="6120345080069858279">I-Chromium izolondoloza le phasiwedi ku-akhawunti yakho ye-Google. Ngeke kudingeke ukuthi uyikhumbule.</translation> @@ -163,6 +165,7 @@ <translation id="6403826409255603130">I-Chromium yisiphequluli sewebhu esiqalisa amakhasi wewebhu nezinhlelo zokusebenza ngesivinini sombani. Iyashesha, izinzile, futhi isebenziseka kalula. Dlulisa amehlo kuwebhu ngokuvikeleke kakhulu ngokuvikelwa kuhlelo olungayilungele ikhompyutha nobugebengu bokweba imininingwane ebucayi eyakhelwe ku-Chromium.</translation> <translation id="6434250628340475518">Isistimu ye-Chromium OS</translation> <translation id="6457450909262716557">{SECONDS,plural, =1{I-Chromium izoqala kabusha kusekhondi elingu-1}one{I-Chromium izoqala kabusha kumasekhondi angu-#}other{I-Chromium izoqala kabusha kumasekhondi angu-#}}</translation> +<translation id="6464340581899189425">Uma unama-akhawunti amaningi e-Google, ungawangeza ku-<ph name="DEVICE_TYPE" /> yakho. Ama-akhawunti akho azotholakala kusiphequluli se-Chromium ne-Google Play Isitolo, kanye namasevisi afana ne-Gmail, Idrayivu, ne-YouTube.<ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="6475912303565314141">Iphinde ilawule ukuthi iliphi ikhasi eliboniswa lapho uqala i-Chromium.</translation> <translation id="6510925080656968729">Khipha i-Chromium</translation> <translation id="6570579332384693436">Ukuze kulungiswe amaphutha okupeletwa, i-Chromium ithumela umbhalo owuthayiphayo kuzinkambu zombhalo ku-Google</translation> @@ -222,6 +225,7 @@ <translation id="7857220146454061152">Ukuze uthole izibuyekezo zesikhathi esizayo ze-Chromium, uzodinga i-OS X 10.11 noma yakamuva. Le khompuyutha isebenzisa i-OS X 10.10.</translation> <translation id="7867198900892795913">I-Chromium ayikwazanga ukubuyekezela kwinguqulo yakamuva, ngakho-ke uyalahlekelwa kuzici ezintsha nokulungiswa kokuphepha.</translation> <translation id="7898472181347242998">Ukuze ubone uma ngabe idivayisi yakho isesikhathini, hamba <ph name="LINK_BEGIN" />kuzilungiselelo ze-Chromium OS<ph name="LINK_END" /></translation> +<translation id="7907774600618164274">I-Chromium OS ayizange ivaleke kahle.</translation> <translation id="7937630085815544518">Ubukade ungene ngemvume ku-Chromium njengo-<ph name="USER_EMAIL_ADDRESS" />. Sicela usebenzise i-akhawunti efanayo ukuze uphinde ungene ngemvume futhi.</translation> <translation id="7975919845073681630">Lokhu ukufakwa kwesibili kwe-Chromium, futhi akukwazi ukwenziwa isiphequluli sakho esizenzakalelayo.</translation> <translation id="7979877361127045932">Fihla kumenyu ye-Chromium</translation> @@ -236,6 +240,7 @@ <translation id="8417404458978023919">{0,plural, =1{Qalisa kabusha i-Chromium phakathi kosuku}one{Qalisa kabusha i-Chromium phakathi kwezinsuku ezingu-#}other{Qalisa kabusha i-Chromium phakathi kwezinsuku ezingu-#}}</translation> <translation id="8453117565092476964">Ingobo yomlando yesifaki yonakele noma ayivumelekile. Sicela ulande futhi i-Chromium.</translation> <translation id="8493179195440786826">I-Chromium ayikho kudethi</translation> +<translation id="8550334526674375523">Le phrofayela yomsebenzi ihluke ngokugcwele kusukela kuphrofayela yakho siqu.</translation> <translation id="8558383651099478961">Umzali wakho uvale "Izimvume zamasayithi, izinhlelo zokusebenza, nezandiso" ze-Chromium. Ukwengeza le <ph name="EXTENSION_TYPE_PARAMETER" /> akuvumelekile.</translation> <translation id="8568283329061645092">I-Chromium ingahlola amaphasiwedi akho uma ungena ngemvume nge-Akhawunti yakho ye-Google</translation> <translation id="8586442755830160949">Copyright <ph name="YEAR" /> Ababhali be-Chromium. Wonke amalungelo agciniwe.</translation> @@ -252,6 +257,7 @@ <translation id="8907580949721785412">I-Chromium izama ukubonisa amaphasiwedi. Thayipha iphasiwedi yakho ye-Windows ukuze uvumele lokhu.</translation> <translation id="8941642502866065432">Ayikwazi ukubuyekeza i-Chromium</translation> <translation id="8974095189086268230">I-Chromium OS yenziwa yenzeke yi-<ph name="BEGIN_LINK_CROS_OSS" />isofthiwe yomthombo ovulekile<ph name="END_LINK_CROS_OSS" /> engeziwe.</translation> +<translation id="8986207147630327271">Ungeza iphrofayela yomsebenzi kulesi siphequluli futhi unikeza umlawuli wakho ulawulo olungaphezulu nje kwephrofayela yomsebenzi.</translation> <translation id="9019929317751753759">Ukuze senze i-Chromium iphephe, sikhubaza isandiso esilandelayo esingafakiwe kuhlu lwe-<ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> futhi kungenzeka singezwe ngaphandle kolwazi lakho.</translation> <translation id="9089354809943900324">I-Chromium ayikho kudethi</translation> <translation id="9093206154853821181">{0,plural, =1{I-Chromium izoqalisa kabusha phakathi kwehora}one{I-Chromium izoqalisa kabusha emahoreni angu-#}other{I-Chromium izoqalisa kabusha emahoreni angu-#}}</translation> @@ -259,6 +265,7 @@ <translation id="911206726377975832">Phinda ususe idatha yakho yokudlulisa amehlo?</translation> <translation id="9158494823179993217">Umlawuli wesistimu yakho ulungise i-Chromium ukuthi ivule esinye isiphequluli ukufinyelela i-<ph name="TARGET_URL_HOSTNAME" />.</translation> <translation id="9190841055450128916">I-Chromium (mDNS-In)</translation> +<translation id="9214764063801632699">Isistimu ye-Chromium OS</translation> <translation id="93478295209880648">I-Chromium kungenzeka ingasebenzi kahle ngoba ayisasekelwa ku-Windows XP noma ku-Windows Vista</translation> <translation id="95514773681268843">I-<ph name="DOMAIN" /> idinga ukuthi ufunde uphinde wamukele Imigomo Yesevisi elandelayo ngaphambi kokusebenzisa le divayisi. Le migomo ayinwebeki, iguqule noma ikhawulele Imogomo ye-Chromium OS.</translation> <translation id="965162752251293939">Ubani osebenzisa i-Chromium?</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index b62ccb2..fbdd394 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Voorkeurinvoer</translation> <translation id="1335929031622236846">Skryf jou toestel in</translation> <translation id="1336902454946927954">Jou sekuriteitsleutel is gesluit omdat jou vingerafdruk nie herken kon word nie. Voer jou PIN in om dit te ontsluit.</translation> +<translation id="1337692097987160377">Deel hierdie oortjie</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> wil hierdie program oopmaak.</translation> <translation id="1338950911836659113">Vee tans uit …</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Programme</translation> <translation id="2805770823691782631">Bykomende besonderhede</translation> <translation id="2806372837663997957">Die toestel waarmee jy probeer deel, het dit nie aanvaar nie</translation> +<translation id="2806891468525657116">Kortpad bestaan reeds</translation> <translation id="2807517655263062534">Lêers wat jy aflaai, verskyn hier</translation> <translation id="2809586584051668049">en nog <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">As jy nie 'n uitbreiding herken nie, of as jou blaaier nie werk soos verwag nie, kan jy uitbreidings hier afskakel of pasmaak.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Om batterykrag te bespaar is “Ok Google” net aan wanneer jou toestel aan 'n kragbron gekoppel is. Gaan na Instellings toe om veranderinge te maak.</translation> <translation id="7497215489070763236">Bediener se CA-sertifikaat</translation> <translation id="7497981768003291373">Jy het geen onlangs vasgevangde WebRTC-teksloglêers nie.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> vra tans vir toestemming om die inhoud van hierdie oortjie vas te vang.</translation> <translation id="7502658306369382406">IPv6-adres</translation> <translation id="7503191893372251637">Netscape-sertifikaattipe</translation> <translation id="7503985202154027481">'n Rekord van jou besoek aan hierdie werf sal op jou sekuriteitsleutel gehou word.</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 765ff3a..aec9147 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">ተመራጭ ግቤት</translation> <translation id="1335929031622236846">መሣሪያዎን ያስመዝግቡ</translation> <translation id="1336902454946927954">የእርስዎ የደህነት ቁልፍ የእርስዎ የጣት አሻራ ተለይቶ ሊታወቅ ስለሚችል ተቆልፏል። ለመክፈት የእርስዎን ፒን ያስገቡ።</translation> +<translation id="1337692097987160377">ይህን ትር አጋራ</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ይህን መተግበሪያ መክፈት ይፈልጋል።</translation> <translation id="1338950911836659113">በመሰረዝ ላይ...</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">መተግበሪያዎች</translation> <translation id="2805770823691782631">ተጨማሪ ዝርዝሮች</translation> <translation id="2806372837663997957">ሊያጋሩት እየሞከሩት ያለው መሣሪያ አልተቀበለም</translation> +<translation id="2806891468525657116">አቋራጭ አስቀድሞ አለ</translation> <translation id="2807517655263062534">እርስዎ የሚያወርዷቸው ፋይሎች እዚህ ይመጣሉ</translation> <translation id="2809586584051668049">እና <ph name="NUMBER_ADDITIONAL_DISABLED" /> ተጨማሪ</translation> <translation id="2810390687497823527">ቅጥያን የማያውቁት ከሆነ ወይም የእርስዎ አሳሽ እንደሚጠበቀው እየሠራ ካልሆነ፣ ቅጥያዎችን እዚህ ላይ ማጥፋት ወይም ብጁ ማድረግ ይችላሉ።</translation> @@ -5598,6 +5600,7 @@ <translation id="7496732379142025470">ባትሪን ለመቆጠብ መሣሪያዎ ከኃይል ምንጭ ጋር ሲገናኝ ብቻ ነው «Ok Google» የሚበራው። ለውጦችን ለማድረግ ወደ ቅንብሮች ይሂዱ።</translation> <translation id="7497215489070763236">የአገልጋይ CA እውቅና ማረጋገጫ</translation> <translation id="7497981768003291373">ምንም በቅርብ ጊዜ የተቀረጹ WebRTC የጽሑፍ ምዝግብ ማስታወሻዎች የለዎትም።</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> የዚህን ትር ይዘቶች ለመያዝ ፈቃድ በመጠየቅ ላይ ነው።</translation> <translation id="7502658306369382406">የIPv6 አድራሻ</translation> <translation id="7503191893372251637">የNetscape ሰርቲፊኬት አይነት</translation> <translation id="7503985202154027481">ወደዚህ ጣቢያ ያደረጉት የጉብኝትዎ መዝገብ በደህንነት ቁልፍዎ ላይ ይቀመጣል።</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 056e09a..71441fb9 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -310,6 +310,7 @@ <translation id="133535873114485416">الإدخال المفضَّل</translation> <translation id="1335929031622236846">تسجيل الجهاز</translation> <translation id="1336902454946927954">تم قفل مفتاح الأمان لأنه لم يتم التعرّف على بصمة الإصبع. لفتح القفل، أدخِل رقم التعريف الشخصي.</translation> +<translation id="1337692097987160377">مشاركة علامة التبويب هذه</translation> <translation id="1338802252451106843">يريد <ph name="ORIGIN" /> فتح هذا التطبيق.</translation> <translation id="1338950911836659113">جارٍ الحذف...</translation> <translation id="13392265090583506">إمكانية الوصول</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">التطبيقات</translation> <translation id="2805770823691782631">تفاصيل إضافية</translation> <translation id="2806372837663997957">رفض الجهاز الذي تحاول تنفيذ المشاركة معه طلبك.</translation> +<translation id="2806891468525657116">الاختصار موجود من قَبل</translation> <translation id="2807517655263062534">هنا تظهر الملفات التي تم تنزيلها</translation> <translation id="2809586584051668049">و<ph name="NUMBER_ADDITIONAL_DISABLED" /> من الإضافات الأخرى</translation> <translation id="2810390687497823527">في حال عدم التعرُّف على إحدى الإضافات أو في حال كان متصفّحك لا يعمل كما هو متوقع، يمكنك إيقاف الإضافات أو تخصيصها هنا.</translation> @@ -5587,6 +5589,7 @@ <translation id="7496732379142025470">لتوفير طاقة البطارية، يتم تفعيل “Ok Google” فقط عند اتِّصال جهازك بمصدر طاقة. لإجراء التغييرات، يُرجى الانتقال إلى "الإعدادات".</translation> <translation id="7497215489070763236">شهادة CA للخادم</translation> <translation id="7497981768003291373">ليست لديك أي سجلَّات نصية WebRTC تم التقاطها مؤخرًا.</translation> +<translation id="7498614236023455416">يطلُب <ph name="TARGET_NAME" /> الإذن لرقمنة محتوى علامة التبويب هذه.</translation> <translation id="7502658306369382406">عنوان IPv6</translation> <translation id="7503191893372251637">نوع شهادات Netscape</translation> <translation id="7503985202154027481">سيتم حفظ سجلّ زيارتك لهذا الموقع في مفتاح الأمان.</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index b76a8484..25cfed0 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">পচন্দৰ ইনপুট</translation> <translation id="1335929031622236846">আপোনাৰ ডিভাইচটো পঞ্জীয়ন কৰক</translation> <translation id="1336902454946927954">আপোনাৰ ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব পৰা নগ’ল বাবে আপোনাৰ সুৰক্ষা সম্পর্কীয় চাবিটো লক কৰা হৈছে। এইটো আনলক কৰিবলৈ, আপোনাৰ পিনটো দিয়ক।</translation> +<translation id="1337692097987160377">এই টেবটো শ্বেয়াৰ কৰক</translation> <translation id="1338802252451106843"><ph name="ORIGIN" />এ এই এপ্লিকেশ্বনটো খুলিবলৈ বিচাৰে।</translation> <translation id="1338950911836659113">মচি থকা হৈছে…</translation> <translation id="13392265090583506">সাধ্য সুবিধাৰ ছেটিংসমূহ</translation> @@ -1608,6 +1609,7 @@ <translation id="2805756323405976993">এপ্</translation> <translation id="2805770823691782631">অতিৰিক্ত সবিশেষ</translation> <translation id="2806372837663997957">আপুনি যিটো ডিভাইচৰ সৈতে শ্বেয়াৰ কৰিবলৈ চেষ্টা কৰি আছে সেইটোৱে গ্ৰহণ নকৰিলে</translation> +<translation id="2806891468525657116">শ্বৰ্টকাট ইতিমধ্যে আছে</translation> <translation id="2807517655263062534">আপুনি ডাউনল’ড কৰা ফাইলসমূহ ইয়াত প্ৰদর্শিত হ’ব</translation> <translation id="2809586584051668049">আৰু <ph name="NUMBER_ADDITIONAL_DISABLED" />টা</translation> <translation id="2810390687497823527">আপুনি যদি কোনো এক্সটেনশ্বন চিনাক্ত কৰিব পৰা নাই অথবা আপোনাৰ ব্ৰাউজাৰটোৱে আশা কৰা ধৰণে কাম কৰা নাই, আপুনি ইয়াত এক্সটেনশ্বনসমূহ অফ অথবা কাষ্টমাইজ কৰিব পাৰে।</translation> @@ -5570,6 +5572,7 @@ <translation id="7496732379142025470">বেটাৰী ৰাহি কৰিবলৈ “Ok Google” আপোনাৰ ডিভাইচটো কোনো পাৱাৰ উৎসৰ সৈতে সংযুক্ত হ'লেহে অন হয়। সলনি কৰিবলৈ ছেটিংসমূহ-লৈ যাওক।</translation> <translation id="7497215489070763236">ছার্ভাৰ CA প্ৰমাণপত্ৰ</translation> <translation id="7497981768003291373">আপোনাৰ শেহতীয়াকৈ কেপশ্বাৰ কৰা কোনো WebRTC পাঠ লগ নাই।</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" />এ এই টেবটোৰ সমলখিনি কেপশ্বাৰ কৰিবলৈ অনুমতি বিচাৰিছে।</translation> <translation id="7502658306369382406">IPv6 ঠিকনা</translation> <translation id="7503191893372251637">Netscapeৰ প্ৰমাণপত্ৰৰ প্ৰকাৰ</translation> <translation id="7503985202154027481">আপুনি এই ছাইটলৈ যোৱাৰ এটা ৰেকৰ্ড আপোনাৰ সুৰক্ষা চাবিত ৰখা হ’ব।</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 56af11b2..7a5e8ac 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -305,6 +305,7 @@ <translation id="133535873114485416">Tərcih edilmiş daxiletmə</translation> <translation id="1335929031622236846">Cihazınızı qeydiyyatdan keçirin</translation> <translation id="1336902454946927954">Barmaq izinizi tanımaq mümkün olmadığı üçün təhlükəsizlik açarınız kilidləndi. Onu kiliddən çıxarmaq üçün PIN'nizi daxil edin.</translation> +<translation id="1337692097987160377">Bu tabı paylaşın</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> bu tətbiqi açmaq istəyir.</translation> <translation id="1338950911836659113">Silinir...</translation> <translation id="13392265090583506">A11y</translation> @@ -1609,6 +1610,7 @@ <translation id="2805756323405976993">Tətbiq</translation> <translation id="2805770823691782631">Əlavə məlumatlar</translation> <translation id="2806372837663997957">Paylaşım etmək istədiyiniz cihaz qəbul etmədi</translation> +<translation id="2806891468525657116">Qısayol artıq mövcuddur</translation> <translation id="2807517655263062534">Endirilən fayllar burada görünür</translation> <translation id="2809586584051668049">və <ph name="NUMBER_ADDITIONAL_DISABLED" /> daha</translation> <translation id="2810390687497823527">Artırmanı tanımırsınızsa və ya brauzeriniz qaydasında işləmirsə, artırmaları burada deaktiv edə və ya fərdiləşdirə bilərsiniz.</translation> @@ -5591,6 +5593,7 @@ <translation id="7496732379142025470">Enerjiyə qənaət üçün "OK Google" yalnız cihaz cərəyan mənbəyinə qoşulu olduqda aktiv olacaq. Dəyişiklik etmək üçün Ayarlara daxil olun.</translation> <translation id="7497215489070763236">Server CA sertifikatı</translation> <translation id="7497981768003291373">Son vaxtlar WebRTC mətn girişləri çəkməmisiniz.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> bu tabın məzmununu çəkmək üçün icazə istəyir.</translation> <translation id="7502658306369382406">IPv6 ünvanı</translation> <translation id="7503191893372251637">Netscape Sertifikat növü</translation> <translation id="7503985202154027481">Sayta girişiniz güvənlik açarında qeyd ediləcək.</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index eeb96eb..fe2fe8d 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Пажаданы спосаб уводу</translation> <translation id="1335929031622236846">Зарэгіструйце прыладу</translation> <translation id="1336902454946927954">Ключ бяспекі заблакіраваны, бо ваш адбітак пальца не быў распазнаны. Каб разблакіраваць ключ, увядзіце PIN-код.</translation> +<translation id="1337692097987160377">Абагуліць гэту ўкладку</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> збіраецца адкрыць гэту праграму.</translation> <translation id="1338950911836659113">Ідзе выдаленне...</translation> <translation id="13392265090583506">Даступнасць</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Праграмы</translation> <translation id="2805770823691782631">Падрабязныя звесткі</translation> <translation id="2806372837663997957">Прылада, з якою вы хацелі абагуліць файл, не прыняла яго.</translation> +<translation id="2806891468525657116">Ярлык ужо існуе</translation> <translation id="2807517655263062534">Файлы, якія вы спампоўваеце, з'яўляюцца тут</translation> <translation id="2809586584051668049">і яшчэ <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Тут вы можаце наладжваць пашырэнні або выключаць іх – у тым выпадку, калі вы не пазнаяце нейкае пашырэнне або калі браўзер перастае працаваць належным чынам.</translation> @@ -2071,7 +2073,7 @@ <translation id="3368922792935385530">Падключана</translation> <translation id="3369067987974711168">Паказаць іншыя дзеянні для гэтага порта</translation> <translation id="3369624026883419694">Вызначэнне хоста...</translation> -<translation id="3370260763947406229">Аўтакарэкцыя</translation> +<translation id="3370260763947406229">Аўтавыпраўленне</translation> <translation id="3371140690572404006">Прылада USB-C (пярэдні порт справа)</translation> <translation id="337286756654493126">Чытаць змесціва адкрытых папак у праграме</translation> <translation id="3378572629723696641">Гэта пашырэнне можа быць пашкоджана.</translation> @@ -5585,6 +5587,7 @@ <translation id="7496732379142025470">У мэтах эканоміі зараду акумулятара каманда "Ok Google" працуе, толькі калі прылада падключана да крыніцы сілкавання. Каб зрабіць патрэбныя змены, перайдзіце ў налады.</translation> <translation id="7497215489070763236">Сертыфікат ЦС сервера</translation> <translation id="7497981768003291373">У вас няма апошніх тэкставых журналаў WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> запытвае дазвол зрабіць здымак змесціва гэтай укладкі.</translation> <translation id="7502658306369382406">Адрас IPv6</translation> <translation id="7503191893372251637">Тып сертыфіката Netscape</translation> <translation id="7503985202154027481">На ключы бяспекі будзе пакінуты запіс пра наведванне вамі гэтага вэб-сайта.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index e655fce..9ded663 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Предпочитано въвеждане</translation> <translation id="1335929031622236846">Регистрирайте устройството си</translation> <translation id="1336902454946927954">Ключът ви за сигурност е заключен, защото пръстовият ви отпечатък не бе разпознат. Въведете ПИН кода си, за да отключите ключа.</translation> +<translation id="1337692097987160377">Споделяне на този раздел</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> иска да отвори това приложение.</translation> <translation id="1338950911836659113">Изтрива се...</translation> <translation id="13392265090583506">Настройки за достъпност</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Приложения</translation> <translation id="2805770823691782631">Допълнителни подробности</translation> <translation id="2806372837663997957">Устройството, с което се опитвате да споделите файла, не го прие</translation> +<translation id="2806891468525657116">Прекият път вече съществува</translation> <translation id="2807517655263062534">Тук се показват изтеглените от вас файлове</translation> <translation id="2809586584051668049">и още <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ако не разпознавате дадено разширение или браузърът ви не работи правилно, оттук можете да изключите или да персонализирате разширенията.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">С цел икономия на батерия функцията „Ok Google“ е включена само когато устройството е свързано със захранващ източник. За да извършите промени, отворете настройките.</translation> <translation id="7497215489070763236">Сертификат от сертифициращ орган за сървъра</translation> <translation id="7497981768003291373">Нямате наскоро записани регистрационни файлове за предаване на текст с WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> иска разрешение да запише съдържанието на този раздел.</translation> <translation id="7502658306369382406">IPv6 адрес</translation> <translation id="7503191893372251637">Тип на сертификата на Netscape</translation> <translation id="7503985202154027481">В ключа ви за сигурност ще се съхрани запис за посещението ви на този сайт.</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index d0a5a6ee..dbcf001fb 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">নেটওয়ার্ক নেই</translation> <translation id="1056898198331236512">সতর্কতা</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{নতুন পিন লিখুন। পিন কমপক্ষে একটি অক্ষরের হতে হবে এবং সেটিতে বর্ণ, সংখ্যা ও অন্যান্য অক্ষর থাকতে পারে।}one{নতুন পিন লিখুন। পিন কমপক্ষে #টি অক্ষরের হতে হবে এবং সেটিতে বর্ণ, সংখ্যা ও অন্যান্য অক্ষর থাকতে পারে।}other{নতুন পিন লিখুন। পিন কমপক্ষে #টি অক্ষরের হতে হবে এবং সেটিতে বর্ণ, সংখ্যা ও অন্যান্য অক্ষর থাকতে পারে।}}</translation> <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />'-এর জন্য <ph name="NUM" />টি ট্যাব পাওয়া গেছে</translation> <translation id="1060292118287751956">স্ক্রিন আপডেট হওয়ার ফ্রিকোয়েন্সি নির্ধারণ করে</translation> <translation id="1061904396131502319">বিরতির সময় হতে চলেছে</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">পছন্দের ইনপুট</translation> <translation id="1335929031622236846">আপনার ডিভাইস এনরোল করুন</translation> <translation id="1336902454946927954">আপনার 'নিরাপত্তা' কী লক করে রাখা হয়েছে, কারণ আপনার ফিঙ্গারপ্রিন্ট শনাক্ত করা যায়নি। এটি আনলক করতে, আপনার পিন এন্টার করুন।</translation> +<translation id="1337692097987160377">এই ট্যাব শেয়ার করুন</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> এই অ্যাপ্লিকেশন খুলতে চায়।</translation> <translation id="1338950911836659113">মোছা হচ্ছে...</translation> <translation id="13392265090583506">অ্যাক্সেসিবিলিটি সেটিংস</translation> @@ -636,9 +638,11 @@ <translation id="1688935057616748272">একটি অক্ষর টাইপ করুন</translation> <translation id="168991973552362966">আশেপাশের একটি প্রিন্টার যোগ করুন</translation> <translation id="1689945336726856614">ওইউআরএল কপি করুন</translation> +<translation id="1690248886740053041">মোবাইল নেটওয়ার্কের সাথে কানেক্ট করা যাচ্ছে না। প্রযুক্তিগত সহায়তা পেতে আপনার পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।</translation> <translation id="1692115862433274081">অন্য অ্যাকাউন্ট ব্যবহার করুন</translation> <translation id="1692118695553449118">সিঙ্ক চালু রয়েছে</translation> <translation id="1692210323591458290">গাঢ় বেগুনি</translation> +<translation id="169279809881363536">কোনও প্রোফাইল পাওয়া যায়নি। নতুন নেটওয়ার্ক সেট-আপ করতে, ডিভাইস ক্যামেরা ব্যবহার করে QR কোড স্ক্যান করুন অথবা পরিষেবা প্রদানকারীর থেকে পাওয়া অ্যাক্টিভেশন কোড লিখুন।</translation> <translation id="1697150536837697295">শিল্পকলা</translation> <translation id="1697686431566694143">ফাইল এডিট করতে পারবে</translation> <translation id="1698122934742150150">শুধুমাত্র বর্তমান ছদ্মবেশী সেশন</translation> @@ -1574,6 +1578,7 @@ <translation id="2770465223704140727">তালিকা থেকে সরান</translation> <translation id="2770690685823456775">আপনার পাসওয়ার্ড অন্য ফোল্ডারে এক্সপোর্ট করুন</translation> <translation id="2770929488047004208">মনিটরের রেজোলিউশন</translation> +<translation id="2770954829020464827">স্ক্রিন শেয়ার করার সময় বিজ্ঞপ্তির কন্টেন্ট লুকিয়ে রাখা হয়</translation> <translation id="2771268254788431918">মোবাইল ডেটা সক্রিয় করা হয়েছে</translation> <translation id="2771816809568414714">চিজ</translation> <translation id="2772936498786524345">নিনজা</translation> @@ -1610,6 +1615,7 @@ <translation id="2805756323405976993">অ্যাপ্স</translation> <translation id="2805770823691782631">অতিরিক্ত বিবরণ</translation> <translation id="2806372837663997957">আপনি যে ডিভাইসের সাথে শেয়ার করার চেষ্টা করছেন সেটিতে এই অনুরোধ গ্রহণ করা হয়নি</translation> +<translation id="2806891468525657116">শর্টকাটটি আগে থেকেই আছে</translation> <translation id="2807517655263062534">ডাউনলোড করা ফাইল এখানে দেখা যাবে</translation> <translation id="2809586584051668049">এবং আরও <ph name="NUMBER_ADDITIONAL_DISABLED" />টি</translation> <translation id="2810390687497823527">আপনি যদি এক্সটেনশন শনাক্ত করতে না পারেন অথবা আপনার ব্রাউজার প্রত্যাশা অনুয়ায়ী কাজ না করলে, এখান থেকে এক্সটেনশন বন্ধ বা কাস্টমাইজ করতে পারেন।</translation> @@ -1941,6 +1947,7 @@ <translation id="3201422919974259695">উপলভ্য ইউএসবি ডিভাইসগুলি এখানে দেখা যাবে।</translation> <translation id="3202131003361292969">পাথ</translation> <translation id="3202173864863109533">এই ট্যাবের অডিও মিউট করা হচ্ছে৷</translation> +<translation id="3202218848974251205">Privacy Sandbox</translation> <translation id="3208321278970793882">অ্যাপ</translation> <translation id="3208584281581115441">এখনই চেক করুন</translation> <translation id="3208703785962634733">অনিশ্চিত</translation> @@ -2161,6 +2168,7 @@ <translation id="3459697287128633276">আপনার অ্যাকাউন্ট থেকে Google Play স্টোর অ্যাক্সেস করার জন্য অনুগ্রহ করে পরিচয় প্রদানকারীর মাধ্যমে প্রমাণীকরণ দিন।</translation> <translation id="3462311546193741693">আপনাকে অধিকাংশ সাইট থেকে সাইন-আউট করে দেয়। আপনি আপনার Google অ্যাকাউন্টে সাইন-ইন করে থাকুন যাতে আপনার সিঙ্ক হওয়া ডেটা খালি করা যায়।</translation> <translation id="3462413494201477527">অ্যাকাউন্ট সেট-আপ বাতিল করবেন?</translation> +<translation id="3464145797867108663">অফিস প্রোফাইল যোগ করুন</translation> <translation id="346431825526753">এটি <ph name="CUSTODIAN_EMAIL" />-এর দ্বারা পরিচালিত বাচ্চাদের জন্য একটি অ্যাকাউন্ট৷</translation> <translation id="3468298837301810372">লেবেল</translation> <translation id="3468999815377931311">Android ফোন</translation> @@ -2282,6 +2290,7 @@ <translation id="360180734785106144">নতুন ফিচার উপলভ্য হলেই তা অফার করে</translation> <translation id="3602290021589620013">প্রিভিউ</translation> <translation id="3603622770190368340">নেটওয়ার্ক সার্টিফিকেট প্রাপ্ত করুন</translation> +<translation id="3604193429970465812">সেকেন্ডারি অ্যাকাউন্ট</translation> <translation id="3604713164406837697">ওয়ালপেপার পরিবর্তন করুন</translation> <translation id="3605780360466892872">বটনডাউন</translation> <translation id="3608576286259426129">ব্যবহারকারীর ছবির পূর্বদৃশ্য</translation> @@ -2605,6 +2614,7 @@ আপনি কি <ph name="CONTROL_PANEL_APPLET_NAME" /> শুরু করতে চান?</translation> <translation id="394183848452296464">শর্টকাট তৈরি করা যাবে না</translation> +<translation id="3943494825379372497">অ্যাপ ও পৃষ্ঠা ফিরিয়ে আনতে চান?</translation> <translation id="3943582379552582368">&ফিরুন</translation> <translation id="3943857333388298514">পেস্ট করুন</translation> <translation id="3948116654032448504">&ইমেজের জন্য <ph name="SEARCH_ENGINE" /> সার্চ করুন</translation> @@ -2690,6 +2700,7 @@ <translation id="4046013316139505482">এই এক্সটেনশনগুলির এই সাইটের তথ্য দেখা ও পরিবর্তন করার দরকার নেই।</translation> <translation id="4046123991198612571">পরবর্তী ট্র্যাক</translation> <translation id="4047726037116394521">'হোম' স্ক্রিনে যান</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{#টি পরিচিতি উপলভ্য নেই। তার সাথে 'নিয়ারবাই শেয়ার' ফিচার ব্যবহার করতে, তার Google অ্যাকাউন্টের সাথে যুক্ত ইমেল আইডি আপনার পরিচিতিতে যোগ করুন।}one{#টি পরিচিতি উপলভ্য নেই। তাদের সাথে 'নিয়ারবাই শেয়ার' ফিচার ব্যবহার করতে, তাদের Google অ্যাকাউন্টের সাথে যুক্ত ইমেল আইডিগুলি আপনার পরিচিতিতে যোগ করুন।}other{#টি পরিচিতি উপলভ্য নেই। তাদের সাথে 'নিয়ারবাই শেয়ার' ফিচার ব্যবহার করতে, তাদের Google অ্যাকাউন্টের সাথে যুক্ত ইমেল আইডিগুলি আপনার পরিচিতিতে যোগ করুন।}}</translation> <translation id="4050225813016893843">যাচাইকরণের পদ্ধতি</translation> <translation id="4052120076834320548">অতি ক্ষুদ্র</translation> <translation id="4056908315660577142"><ph name="APP_NAME" />-এর জন্য আপনার অভিভাবক যে সময়সীমা সেট করেছেন তা পার হয়ে গেছে। আগামীকাল আপনি আবার এটি <ph name="TIME_LIMIT" />-এর জন্য ব্যবহার করতে পারবেন।</translation> @@ -3336,6 +3347,7 @@ <translation id="4863769717153320198">মনে হচ্ছে <ph name="WIDTH" /> x <ph name="HEIGHT" /> (সাধারণ)</translation> <translation id="4864369630010738180">প্রবেশ করা হচ্ছে...</translation> <translation id="4864805589453749318">সেই অভিভাবককে বেছে নিন যিনি স্কুল অ্যাকাউন্ট যোগ করার জন্য অনুমতি দিয়েছেন।</translation> +<translation id="4866265760644917470">প্রোফাইল যোগ করা হয়েছে।</translation> <translation id="486635084936119914">নির্দিষ্ট কিছু প্রকারের ফাইল ডাউনলোডের পরে স্বয়ংক্রিয়ভাবে খুলুন</translation> <translation id="48704129375571883">অতিরিক্ত বৈশিষ্ট্যগুলি যোগ করুন</translation> <translation id="4870758487381879312">কনফিগারেশনের তথ্য পেতে অ্যাডমিনের দেওয়া পাসওয়ার্ড লিখুন</translation> @@ -3619,6 +3631,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{চুরি হয়ে যাওয়া পাসওয়ার্ড পরিবর্তন করা হয়েছে। আপনার আরও #টি পাসওয়ার্ড চুরি হয়েছে। Chrome আপনাকে এই পাসওয়ার্ড এখনই চেক করতে সাজেস্ট করছে।}one{চুরি হয়ে যাওয়া পাসওয়ার্ড পরিবর্তন করা হয়েছে। আপনার আরও #টি পাসওয়ার্ড চুরি হয়েছে। Chrome আপনাকে এই পাসওয়ার্ড এখনই চেক করতে সাজেস্ট করছে।}other{চুরি হয়ে যাওয়া পাসওয়ার্ড পরিবর্তন করা হয়েছে। আপনার আরও #টি পাসওয়ার্ড চুরি হয়েছে। Chrome আপনাকে এই পাসওয়ার্ডগুলি এখনই চেক করতে সাজেস্ট করছে।}}</translation> <translation id="5207949376430453814">পাঠ্যের কার্সার হাইলাইট করুন</translation> <translation id="5209320130288484488">কোনো ডিভাইস খুঁজে পাওয়া যায়নি</translation> +<translation id="5209572028385096813">এই অ্যাকাউন্ট Family Link দিয়ে ম্যানেজ করা হয়</translation> <translation id="5210365745912300556">ট্যাব বন্ধ করুন</translation> <translation id="5213481667492808996">আপনার '<ph name="NAME" />' ডেটা পরিষেবা ব্যবহারের জন্য প্রস্তুত</translation> <translation id="5213891612754844763">প্রক্সি সেটিংস দেখুন</translation> @@ -3704,6 +3717,7 @@ <translation id="5302048478445481009">ভাষা</translation> <translation id="5302932258331363306">প্রতিস্থাপনের প্যানেল দেখুন</translation> <translation id="5304276686222516262">পরিচিতি তালিকা ডাউনলোড করা যাচ্ছে না। অনুগ্রহ করে আপনার নেটওয়ার্ক কানেকশন চেক করুন অথবা <a href="#" id="tryAgainLink">আবার চেষ্টা করুন</a>।</translation> +<translation id="5305145881844743843">এই অ্যাকাউন্ট <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> ম্যানেজ করছে</translation> <translation id="5305688511332277257">কিছুই ইনস্টল নেই</translation> <translation id="5307030433605830021">সোর্সটি সমর্থিত নয়</translation> <translation id="5308380583665731573">সংযুক্ত করুন</translation> @@ -4086,6 +4100,7 @@ <translation id="5740820643029013514">অপেক্ষাকৃত কম শব্দযুক্ত মেসেজের বিকল্প বেছে নিন (সাজেস্ট করা হয়েছে)</translation> <translation id="574104302965107104">ডিসপ্লে মিররিং</translation> <translation id="574209121243317957">পিচ</translation> +<translation id="5742505912938664543">আপনি এখানে সেকেন্ডারি অ্যাকাউন্ট যোগ করলে সেটির মাধ্যমে ওয়েব ব্রাউজ, অ্যাপ ডাউনলোড, Gmail চেক ও অন্যান্য Google পরিষেবা ব্যবহার করতে পারবেন।</translation> <translation id="5746169159649715125">পিডিএফ হিসেবে সেভ করুন</translation> <translation id="5747552184818312860">মেয়াদ শেষ হবে</translation> <translation id="5747785204778348146">ডেভেলপার - অস্থায়ী</translation> @@ -4426,6 +4441,7 @@ <translation id="6129953537138746214">ব্যবধান</translation> <translation id="6130692320435119637">ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করুন</translation> <translation id="6136114942382973861">ডাউনলোড বার বন্ধ করুন</translation> +<translation id="6136287496450963112">আপনার নিরাপত্তা কী কোনও পিন দ্বারা সুরক্ষিত নেই। আঙ্গুলের ছাপ ম্যানেজ করতে, প্রথমে পিন তৈরি করুন।</translation> <translation id="6137767437444130246">ব্যবহারকারীর সার্টিফিকেট</translation> <translation id="6138680304137685902">SHA-384 সহ X9.62 ECDSA স্বাক্ষর</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, কোনও নেটওয়ার্ক নেই</translation> @@ -4607,6 +4623,7 @@ <translation id="6331566915566907158">Chrome OS-এর ফিচার ও পারফরম্যান্স আরও উন্নত করে তুলতে সাহায্য করুন</translation> <translation id="6331818708794917058">MIDI ডিভাইসের সাথে কানেক্ট করতে, সাইট অনুমতি চাইতে পারে</translation> <translation id="6333064448949140209">ফাইল ডিবাগ করার জন্য Google-এ পাঠানো হবে</translation> +<translation id="6334444530352320327">এই অ্যাকাউন্ট ব্যবহার করে সাইন-ইন করা সব Chromebooks-এ আপনার অ্যাপ ও OS সেটিংস সিঙ্ক করা থাকবে।<ph name="LINK_BEGIN" />সেটিংস সিঙ্ক করুন<ph name="LINK_END" /></translation> <translation id="6338981933082930623">সব সাইটই আপনাকে যেকোনও ধরনের বিজ্ঞাপন দেখাতে পারে</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> এর জন্য একটি নতুন প্রোফাইল তৈরি করুন</translation> <translation id="6340017061976355871">সার্ভারে সংযোগ করা যায়নি। অনুগ্রহ করে আপনার নেটওয়ার্ক সংযোগ যাচাই করে আবার চেষ্টা করুন। যদি সমস্যাটি চলতে থাকে তাহলে আপনার Chromebook রিস্টার্ট করুন।</translation> @@ -4908,6 +4925,7 @@ <translation id="6709133671862442373">News</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ব্যবহার করে সংযোগ করুন</translation> <translation id="6710213216561001401">আগের</translation> +<translation id="6713233729292711163">অফিস প্রোফাইল যোগ করুন</translation> <translation id="6715803357256707211">আপনার Linux অ্যাপ ইনস্টল করার সময় কোনও একটি সমস্যা হয়েছে। বিস্তারিত জানতে বিজ্ঞপ্তিতে ক্লিক করুন।</translation> <translation id="671619610707606484">এর ফলে সাইটগুলির স্টোর করা <ph name="TOTAL_USAGE" /> ডেটা মুছে যাবে</translation> <translation id="671928215901716392">স্ক্রিন লক করুন</translation> @@ -5276,6 +5294,7 @@ <translation id="7121362699166175603">অ্যাড্রেস বারের ইতিহাস এবং অটোকমপ্লিট তথ্য মুছে ফেলে। <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে।</translation> <translation id="7121438501124788993">ডেভেলপার মোড</translation> <translation id="7121728544325372695">স্মার্ট ড্যাশ</translation> +<translation id="7122353087820324370">অ্যাপ ও OS সেটিংস সেকেন্ডারি অ্যাকাউন্টের সাথে সিঙ্ক করা হয় না।</translation> <translation id="7123030151043029868">একাধিক ফাইল অটোমেটিক ডাউনলোড করার অনুমতি দেওয়া হয়েছে</translation> <translation id="7123360114020465152">আর সমর্থিত নয়</translation> <translation id="7125148293026877011">Crostini মুছুন</translation> @@ -5584,12 +5603,14 @@ <translation id="7496732379142025470">ব্যাটারির চার্জ যাতে কমে না যায় তার জন্য আপনার ডিভাইস চার্জে লাগানো থাকলে তবেই “হ্যালো Google” চালু থাকে। পরিবর্তন করার জন্য সেটিংসে যান।</translation> <translation id="7497215489070763236">সার্ভার CA সার্টিফিকেট</translation> <translation id="7497981768003291373">আপনার সাম্প্রতিক কোনও ক্যাপচার করা WebRTC টেক্সট লগ নেই।</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> এই ট্যাবের কন্টেন্ট ক্যাপচার করার জন্য অনুমতি চাইছে।</translation> <translation id="7502658306369382406">IPv6 ঠিকানা</translation> <translation id="7503191893372251637">Netscape সার্টিফিকেটের প্রকার</translation> <translation id="7503985202154027481">আপনার এই সাইটে যাওয়ার রেকর্ড নিরাপত্তা কীয়ে সেভ করা থাকবে।</translation> <translation id="750509436279396091">ডাউনলোড ফোল্ডার খুলুন</translation> <translation id="7506093026325926984">এই পাসওয়ার্ড ডিভাইসে সেভ করা হবে</translation> <translation id="7506130076368211615">নতুন নেটওয়ার্ক সেট আপ করুন</translation> +<translation id="7506242536428928412">নতুন নিরাপত্তা কী ব্যবহার করতে, নতুন পিন সেট করুন</translation> <translation id="7506541170099744506">আপনার <ph name="DEVICE_TYPE" /> এন্টারপ্রাইজ পরিচালনার জন্য সফলভাবে নথিভুক্ত হয়েছে।</translation> <translation id="7507207699631365376">এই পরিষেবা প্রদানকারীর <ph name="BEGIN_LINK" />গোপনীয়তা নীতি<ph name="END_LINK" /> দেখুন</translation> <translation id="7507930499305566459">স্থিতি প্রতিক্রিয়া সার্টিফিকেট</translation> @@ -5753,6 +5774,7 @@ <translation id="7691077781194517083">এই নিরাপত্তা কী রিসেট করা যাবে না। সমস্যা <ph name="ERROR_CODE" />।</translation> <translation id="7691698019618282776">Crostini আপগ্রেড করা</translation> <translation id="7696063401938172191">আপনার '<ph name="PHONE_NAME" />' এ:</translation> +<translation id="7697166915480294040">স্ক্রিন শেয়ার করার সময় বিজ্ঞপ্তির কন্টেন্ট লুকিয়ে রাখা হয়</translation> <translation id="7697598343108519171">QR কোড স্ক্যান করতে ক্যামেরা ব্যবহার করুন</translation> <translation id="7699968112832915395">অ্যাকাউন্ট যোগ করা যাচ্ছে না</translation> <translation id="7701040980221191251">কিছু নেই</translation> @@ -6208,6 +6230,8 @@ <translation id="8184472985242519288">সব জায়গায় একরকম</translation> <translation id="8186609076106987817">সার্ভার ফাইলটি খুঁজে পায়নি৷</translation> <translation id="8188389033983459049">আপনার ডিভাইসের সেটিংস চেক করুন এবং চালিয়ে যেতে এটি চালু করুন</translation> +<translation id="8189306097519446565">স্কুল অ্যাকাউন্ট</translation> +<translation id="8189750580333936930">Privacy Sandbox</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />-তে সংযুক্ত হচ্ছে</translation> <translation id="8191230140820435481">আপনার অ্যাপ্লিকেশন, এক্সটেনশন, এবং থিম পরিচালনা করুন</translation> <translation id="8195027750202970175">ডিস্কের মাপ</translation> @@ -6900,6 +6924,7 @@ <translation id="8986362086234534611">ভুলে যান</translation> <translation id="8986494364107987395">ব্যবহারের পরিসংখ্যান এবং ক্র্যাশ প্রতিবেদনগুলি স্বয়ংক্রিয়ভাবে Google-এ পাঠান</translation> <translation id="8987927404178983737">মাস</translation> +<translation id="8989823300731803443">আপনি যেখানে ছেড়ে গিয়েছিলেন সেখান থেকেই আবার শুরু করুন।</translation> <translation id="8990209962746788689">QR কোড তৈরি করা যায়নি</translation> <translation id="8991520179165052608">সাইটটি আপনার মাইক্রোফোন ব্যবহার করতে পারে</translation> <translation id="8992117551007229513">{COUNT,plural, =1{১টি আইটেম}one{#টি আইটেম}other{#টি আইটেম}}</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 7b387f24..88975844 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -57,7 +57,7 @@ <translation id="1056775291175587022">Nema mreže</translation> <translation id="1056898198331236512">Upozorenje</translation> <translation id="1058262162121953039">PUK</translation> -<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Unesite novi PIN. PIN mora imati najmanje jedan znak i može sadržavati slova, brojke i druge znakove.}one{Unesite novi PIN. PIN mora imati najmanje # znak i može sadržavati slova, brojke i druge znakove.}few{Unesite novi PIN. PIN mora imati najmanje # znaka i može sadržavati slova, brojke i druge znakove.}other{Unesite novi PIN. PIN mora imati najmanje # znakova i može sadržavati slova, brojke i druge znakove.}}</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Unesite novi PIN. PIN se mora sastojati od najmanje jednog znaka i može sadržavati slova, brojeve i druge znakove.}one{Unesite novi PIN. PIN se mora sastojati od najmanje # znaka i može sadržavati slova, brojeve i druge znakove.}few{Unesite novi PIN. PIN se mora sastojati od najmanje # znaka i može sadržavati slova, brojeve i druge znakove.}other{Unesite novi PIN. PIN se mora sastojati od najmanje # znakova i može sadržavati slova, brojeve i druge znakove.}}</translation> <translation id="1059944192885972544">Za upit "<ph name="SEARCH_TEXT" />" je pronađen sljedeći broj kartica: <ph name="NUM" /></translation> <translation id="1060292118287751956">Određuje frekvenciju ažuriranja ekrana</translation> <translation id="1061904396131502319">Uskoro će vrijeme za odmor</translation> @@ -309,6 +309,7 @@ <translation id="133535873114485416">Preferirani način unosa</translation> <translation id="1335929031622236846">Prijavite uređaj</translation> <translation id="1336902454946927954">Vaš sigurnosni ključ je zaključan jer prepoznavanje vašeg otiska prsta nije uspjelo. Da ga otključate, unesite PIN.</translation> +<translation id="1337692097987160377">Dijeli ovu karticu</translation> <translation id="1338802252451106843">Web lokacija <ph name="ORIGIN" /> želi otvoriti ovu aplikaciju.</translation> <translation id="1338950911836659113">Brisanje...</translation> <translation id="13392265090583506">Pristupačnost</translation> @@ -638,11 +639,11 @@ <translation id="1688935057616748272">Napišite slovo</translation> <translation id="168991973552362966">Dodajte štampač u blizini</translation> <translation id="1689945336726856614">Kopiraj &URL</translation> -<translation id="1690248886740053041">Povezivanje s mobilnom mrežom nije uspjelo. Tehničku podršku zatražite od svojeg mobilnog operatera.</translation> +<translation id="1690248886740053041">Povezivanje s mobilnom mrežom nije uspjelo. Za tehničku podršku kontaktirajte mobilnog operatera.</translation> <translation id="1692115862433274081">Koristi drugi račun</translation> <translation id="1692118695553449118">Sinhronizacija je uključena</translation> <translation id="1692210323591458290">Tamnoljubičasta</translation> -<translation id="169279809881363536">Nije otkriven nijedan profil. Da biste postavili novu mrežu, skenirajte QR kôd pomoću fotoaparata uređaja ili unesite aktivacijski kôd koji ste dobili od mobilnog operatera.</translation> +<translation id="169279809881363536">Nijedan profil nije otkriven. Da postavite novu mrežu, skenirajte QR kôd pomoću kamere uređaja ili unesite kôd za aktivaciju koji pruža vaš mobilni operater.</translation> <translation id="1697150536837697295">Umjetnost</translation> <translation id="1697686431566694143">Uredi fajl</translation> <translation id="1698122934742150150">Samo trenutačna anonimna sesija</translation> @@ -1579,7 +1580,7 @@ <translation id="2770465223704140727">Ukloni s liste</translation> <translation id="2770690685823456775">Izvezite svoje lozinke u drugi folder</translation> <translation id="2770929488047004208">Rezolucija monitora</translation> -<translation id="2770954829020464827">Pojedinosti su skrivene dok dijelite zaslon</translation> +<translation id="2770954829020464827">Detalji će biti skriveni tokom dijeljenja ekrana</translation> <translation id="2771268254788431918">Prijenos podataka na mobilnoj mreži je aktiviran</translation> <translation id="2771816809568414714">Sir</translation> <translation id="2772936498786524345">Tajni</translation> @@ -1616,6 +1617,7 @@ <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatni detalji</translation> <translation id="2806372837663997957">Uređaj s kojim pokušavate podijeliti fajl nije prihvatio zahtjev</translation> +<translation id="2806891468525657116">Prečica već postoji</translation> <translation id="2807517655263062534">Fajlovi koje preuzmete će se pojaviti ovdje</translation> <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ako ne prepoznajete ekstenziju ili ako vaš preglednik ne funkcionira kako bi trebalo, ovdje možete isključiti ili prilagoditi ekstenzije.</translation> @@ -1947,7 +1949,7 @@ <translation id="3201422919974259695">Dostupni USB uređaji pojavit će se ovdje.</translation> <translation id="3202131003361292969">Putanja</translation> <translation id="3202173864863109533">Zvuk kartice je isključen.</translation> -<translation id="3202218848974251205">Privacy Sandbox</translation> +<translation id="3202218848974251205">Zaštićeno okruženje za privatnost</translation> <translation id="3208321278970793882">Aplikacija</translation> <translation id="3208584281581115441">Provjeri sada</translation> <translation id="3208703785962634733">Nepotvrđeno</translation> @@ -2168,7 +2170,7 @@ <translation id="3459697287128633276">Da bi vaš račun mogao pristupiti Google Play trgovini, potvrdite svoj identitet pomoću pružaoca identiteta.</translation> <translation id="3462311546193741693">Odjavljuje vas s većine stranica Ostat ćete prijavljeni na Google računu, stoga se vaši sinhronizirani podaci mogu obrisati.</translation> <translation id="3462413494201477527">Otkazati postavljanje računa?</translation> -<translation id="3464145797867108663">Dodaj poslovni profil</translation> +<translation id="3464145797867108663">Dodaj radni profil</translation> <translation id="346431825526753">Ovo je račun za djecu kojim upravlja <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Oznaka</translation> <translation id="3468999815377931311">Android telefon</translation> @@ -2615,7 +2617,7 @@ Želite li pokrenuti aplikaciju <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Nije moguće izraditi prečac</translation> -<translation id="3943494825379372497">Želite li vratiti aplikacije i stranice?</translation> +<translation id="3943494825379372497">Vratiti aplikacije i stranice?</translation> <translation id="3943582379552582368">&Nazad</translation> <translation id="3943857333388298514">Zalijepi</translation> <translation id="3948116654032448504">Traženje slike koristeći <ph name="SEARCH_ENGINE" /></translation> @@ -2701,7 +2703,7 @@ <translation id="4046013316139505482">Ove ekstenzije ne moraju pregledati i mijenjati podatke na ovoj web lokaciji.</translation> <translation id="4046123991198612571">Sljedeća pjesma</translation> <translation id="4047726037116394521">Odlazak na početnu stranicu</translation> -<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt nije dostupan. Da biste s tim kontaktom koristili Dijeljenje s Android uređajima, u kontakte dodajte e-adresu povezanu s njegovim Google računom.}one{# kontakt nije dostupan. Da biste s tim kontaktima koristili Dijeljenje s Android uređajima, u kontakte dodajte e-adrese povezane s njihovim Google računima.}few{# kontakta nisu dostupna. Da biste s tim kontaktima koristili Dijeljenje s Android uređajima, u kontakte dodajte e-adrese povezane s njihovim Google računima.}other{# kontakata nije dostupno. Da biste s tim kontaktima koristili Dijeljenje s Android uređajima, u kontakte dodajte e-adrese povezane s njihovim Google računima.}}</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt nije dostupan. Da s tom osobom koristite Dijeljenje u blizini, u kontakte dodajte adresu e-pošte povezanu s Google računom tog kontakta.}one{# kontakt nije dostupan. Da s tim osobama koristite Dijeljenje u blizini, u kontakte dodajte adrese e-pošte povezane s njihovim Google računima.}few{# kontakta nisu dostupna. Da s tim osobama koristite Dijeljenje u blizini, u kontakte dodajte adrese e-pošte povezane s njihovim Google računima.}other{# kontakata nije dostupno. Da s tim osobama koristite Dijeljenje u blizini, u kontakte dodajte adrese e-pošte povezane s njihovim Google računima.}}</translation> <translation id="4050225813016893843">Metoda autentifikacije</translation> <translation id="4052120076834320548">Malo</translation> <translation id="4056908315660577142">Dostignuto je vremensko ograničenje koje je tvoj roditelj postavio za Chrome aplikaciju <ph name="APP_NAME" />. Sutra je možeš koristiti <ph name="TIME_LIMIT" />.</translation> @@ -3632,7 +3634,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Ugrožena lozinka je uspješno promijenjena. Imate još # ugroženu lozinku. Chrome preporučuje da odmah provjerite tu lozinku.}one{Ugrožena lozinka je uspješno promijenjena. Imate još # ugroženu lozinku. Chrome preporučuje da odmah provjerite te lozinke.}few{Ugrožena lozinka je uspješno promijenjena. Imate još # ugrožene lozinke. Chrome preporučuje da odmah provjerite te lozinke.}other{Ugrožena lozinka je uspješno promijenjena. Imate još # ugroženih lozinki. Chrome preporučuje da odmah provjerite te lozinke.}}</translation> <translation id="5207949376430453814">Istakni kursor u tekstu</translation> <translation id="5209320130288484488">Nije pronađen nijedan uređaj</translation> -<translation id="5209572028385096813">Tim korisnikom upravlja Family Link</translation> +<translation id="5209572028385096813">Ovim korisnikom upravlja Family Link</translation> <translation id="5210365745912300556">Zatvorite karticu.</translation> <translation id="5213481667492808996">Vaša usluga za prijenos podataka "<ph name="NAME" />" je spremna za upotrebu</translation> <translation id="5213891612754844763">Prikaži postavke proksi servera</translation> @@ -4100,7 +4102,7 @@ <translation id="5740820643029013514">Koristi tišu razmjenu poruka (preporučeno)</translation> <translation id="574104302965107104">Preslikavanje ekrana</translation> <translation id="574209121243317957">Visina</translation> -<translation id="5742505912938664543">Kad dodate sekundarni račun, možete pregledavati web, preuzimati aplikacije, provjeravati Gmail i druge Googleove usluge pomoću tog računa.</translation> +<translation id="5742505912938664543">Kada ovdje dodate sekundarni račun, moći ćete pregledati web, preuzimati aplikacije, provjeravati Gmail i druge Googleove usluge na kojima koristite taj račun.</translation> <translation id="5746169159649715125">Sačuvaj kao PDF</translation> <translation id="5747552184818312860">Ističe</translation> <translation id="5747785204778348146">Programer - nestabilno</translation> @@ -4441,7 +4443,7 @@ <translation id="6129953537138746214">Razmaknica</translation> <translation id="6130692320435119637">Dodaj WiFi</translation> <translation id="6136114942382973861">Zatvori traku preuzetih fajlova</translation> -<translation id="6136287496450963112">Vaš sigurnosni ključ nije zaštićen PIN-om. Za upravljanje otiscima prstiju najprije izradite PIN.</translation> +<translation id="6136287496450963112">Vaš sigurnosni ključ nije zaštićen PIN-om. Da upravljate otiscima prstiju, najprije kreirajte PIN.</translation> <translation id="6137767437444130246">Korisnički certifikat</translation> <translation id="6138680304137685902">X9.62 ECDSA potpis uz SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nema mreže</translation> @@ -4622,7 +4624,7 @@ <translation id="6331566915566907158">Pomozite nam da poboljšamo funkcije i performanse Chrome OS-a</translation> <translation id="6331818708794917058">Web lokacije mogu tražiti da se povežu s MIDI uređajima</translation> <translation id="6333064448949140209">Fajl će se poslati Googleu radi otklanjanje grešaka</translation> -<translation id="6334444530352320327">Vaše aplikacije i postavke OS-a sinkronizirat će se na svim Chromebookovima na koje ste prijavljeni ovim računom.<ph name="LINK_BEGIN" />Postavke sinkronizacije<ph name="LINK_END" /></translation> +<translation id="6334444530352320327">Vaše aplikacije i postavke OS-a će se sinhronizirati na svim Chromebook uređajima na kojima ste prijavljeni putem ovog računa.<ph name="LINK_BEGIN" />Postavke sinhronizacije<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Sve web lokacije vam mogu prikazivati bilo koje oglase</translation> <translation id="6339668969738228384">Kreirajte novi profil za <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Povezivanje na server nije uspjelo. Provjerite mrežnu vezu i pokušajte ponovo. Ako se problem ne riješi, ponovo pokrenite Chromebook.</translation> @@ -4924,7 +4926,7 @@ <translation id="6709133671862442373">Vijesti</translation> <translation id="6709357832553498500">Poveži se na mrežu pomoću dodatka <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Nazad</translation> -<translation id="6713233729292711163">Dodaj poslovni profil</translation> +<translation id="6713233729292711163">Dodaj radni profil</translation> <translation id="6715803357256707211">Došlo je do greške prilikom instalacije Linux aplikacije. Kliknite na obavještenje za detalje.</translation> <translation id="671619610707606484">Ovim će se obrisati <ph name="TOTAL_USAGE" /> podataka koje su pohranile web lokacije</translation> <translation id="671928215901716392">Zaključaj zaslon</translation> @@ -5293,7 +5295,7 @@ <translation id="7121362699166175603">Briše historiju i automatsko dovršavanje na traci za adresu. Vaš Google račun može imati druge oblike historije pregledanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Način rada za programere</translation> <translation id="7121728544325372695">Pametne crtice</translation> -<translation id="7122353087820324370">Aplikacije i postavke OS-a ne sinkroniziraju se sa sekundarnim računima.</translation> +<translation id="7122353087820324370">Aplikacije i postavke OS-a se ne sinhroniziraju sa sekundarnim računima.</translation> <translation id="7123030151043029868">Dozvoljeno je automatsko preuzimanje više fajlova</translation> <translation id="7123360114020465152">Više nije podržan</translation> <translation id="7125148293026877011">Izbrišite Crostini</translation> @@ -5602,13 +5604,14 @@ <translation id="7496732379142025470">Zbog uštede baterije “Ok Google” je uključen samo kada je uređaj povezan na izvor napajanja. Da ovo promijenite, idite u Postavke.</translation> <translation id="7497215489070763236">CA certifikat servera</translation> <translation id="7497981768003291373">Nemate nedavno snimljenih tekstualnih zapisnika WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> traži odobrenje da snima sadržaj ove kartice.</translation> <translation id="7502658306369382406">IPv6 adresa</translation> <translation id="7503191893372251637">Vrsta potvrde Netscapea</translation> <translation id="7503985202154027481">Evidencija o vašoj posjeti ovoj web lokaciji čuvat će se na vašem sigurnosnom ključu.</translation> <translation id="750509436279396091">Otvori folder Preuzimanja</translation> <translation id="7506093026325926984">Ova lozinka će se sačuvati na ovom uređaju</translation> <translation id="7506130076368211615">Postavite novu mrežu</translation> -<translation id="7506242536428928412">Za upotrebu novog sigurnosnog ključa postavite novi PIN</translation> +<translation id="7506242536428928412">Da koristite novi sigurnosni ključ, postavite novi PIN</translation> <translation id="7506541170099744506">Vaš uređaj <ph name="DEVICE_TYPE" /> je uspješno prijavljen za upravljanje koje vrši preduzeće.</translation> <translation id="7507207699631365376">Pogledajte <ph name="BEGIN_LINK" />pravila privatnosti<ph name="END_LINK" /> pružaoca usluga</translation> <translation id="7507930499305566459">Potvrda automatskog odgovora statusa</translation> @@ -5772,7 +5775,7 @@ <translation id="7691077781194517083">Nije moguće poništiti ovaj sigurnosni ključ. Greška <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Nadogradnja Crostinija</translation> <translation id="7696063401938172191">Na vašem "<ph name="PHONE_NAME" />" telefonu:</translation> -<translation id="7697166915480294040">Pojedinosti su skrivene dok dijelite zaslon</translation> +<translation id="7697166915480294040">Detalji će biti skriveni tokom dijeljenja ekrana</translation> <translation id="7697598343108519171">Kamerom skenirajte QR kôd</translation> <translation id="7699968112832915395">Nije moguće dodati račun</translation> <translation id="7701040980221191251">Nema</translation> @@ -6231,7 +6234,7 @@ <translation id="8186609076106987817">Server nije mogao pronaći fajl.</translation> <translation id="8188389033983459049">Pregledajte postavke uređaja i uključite ga da biste nastavili</translation> <translation id="8189306097519446565">Školski računi</translation> -<translation id="8189750580333936930">Testno okruženje za privatnost</translation> +<translation id="8189750580333936930">Zaštićeno okruženje za privatnost</translation> <translation id="8190193592390505034">Povezivanje na mrežu <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Upravljajte aplikacijama, ekstenzijama i temama</translation> <translation id="8195027750202970175">Veličina na disku</translation> @@ -6925,7 +6928,7 @@ <translation id="8986362086234534611">Zaboravi</translation> <translation id="8986494364107987395">Automatski šaljite statistiku korištenja i izvještaje o padovima aplikacije Googleu</translation> <translation id="8987927404178983737">Mjesec</translation> -<translation id="8989823300731803443">Nastavite tamo gdje ste stali.</translation> +<translation id="8989823300731803443">Nastavite gdje ste stali.</translation> <translation id="8990209962746788689">Nije moguće kreirati QR kôd</translation> <translation id="8991520179165052608">Web lokacija može koristiti vaš mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 stavka}one{# stavka}few{# stavke}other{# stavki}}</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index 7a5f3c6..25e0046 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Mètode d'introducció preferit</translation> <translation id="1335929031622236846">Inscriu el dispositiu</translation> <translation id="1336902454946927954">La clau de seguretat està bloquejada perquè la teva empremta digital no s'ha pogut reconèixer. Per desbloquejar-la, introdueix el PIN.</translation> +<translation id="1337692097987160377">Comparteix aquesta pestanya</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vol obrir aquesta aplicació.</translation> <translation id="1338950911836659113">S'està suprimint...</translation> <translation id="13392265090583506">Accessibilitat</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Aplicacions</translation> <translation id="2805770823691782631">Detalls addicionals</translation> <translation id="2806372837663997957">El dispositiu amb què proves de compartir el fitxer no ha acceptat</translation> +<translation id="2806891468525657116">Aquesta drecera ja existeix</translation> <translation id="2807517655263062534">Aquí es mostren els fitxers baixats</translation> <translation id="2809586584051668049">i <ph name="NUMBER_ADDITIONAL_DISABLED" /> més</translation> <translation id="2810390687497823527">Si no reconeixes una extensió o si el navegador no funciona de la manera esperada, pots desactivar o personalitzar les extensions aquí.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Per estalviar bateria, la funció "Ok Google" només estarà activada quan el dispositiu estigui connectat a una font d'alimentació. Per fer canvis, ves a Configuració.</translation> <translation id="7497215489070763236">Certificat de CA del servidor</translation> <translation id="7497981768003291373">No s'ha capturat cap registre de text de WebRTC recentment.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ha demanat permís per capturar el contingut d'aquesta pestanya.</translation> <translation id="7502658306369382406">Adreça IPv6</translation> <translation id="7503191893372251637">Tipus de certificat de Netscape</translation> <translation id="7503985202154027481">La clau de seguretat conservarà un registre de la teva visita en aquest lloc web.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 9352dfd3b..5f5c111 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">Preferovaná metoda zadávání</translation> <translation id="1335929031622236846">Zaregistrujte své zařízení</translation> <translation id="1336902454946927954">Bezpečnostní klíč je uzamčen, protože se nepodařilo rozpoznat váš otisk prstu. Chcete-li ho odemknout, zadejte PIN.</translation> +<translation id="1337692097987160377">Sdílet tuto kartu</translation> <translation id="1338802252451106843">Tuto aplikaci chce otevřít web <ph name="ORIGIN" />.</translation> <translation id="1338950911836659113">Mazání...</translation> <translation id="13392265090583506">Přístupnost</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Aplikace</translation> <translation id="2805770823691782631">Další podrobnosti</translation> <translation id="2806372837663997957">Cílové zařízení sdílený soubor nepřijalo</translation> +<translation id="2806891468525657116">Zkratka už existuje</translation> <translation id="2807517655263062534">Zde se zobrazují stažené soubory</translation> <translation id="2809586584051668049">a další (<ph name="NUMBER_ADDITIONAL_DISABLED" />)</translation> <translation id="2810390687497823527">Pokud nějaké rozšíření nepoznáváte nebo prohlížeč nefunguje podle očekávání, můžete zde rozšíření vypnout nebo si je přizpůsobit.</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">Kvůli úspoře baterie je příkaz „Ok Google“ zapnutý, jen když je zařízení připojené ke zdroji napájení. Toto chování můžete změnit v Nastavení.</translation> <translation id="7497215489070763236">Certifikát CA serveru</translation> <translation id="7497981768003291373">Nemáte žádné nedávno zaznamenané textové protokoly WebRTC.</translation> +<translation id="7498614236023455416">Web <ph name="TARGET_NAME" /> žádá o oprávnění k zaznamenávání obsahu této karty.</translation> <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7503191893372251637">Certifikát typu Netscape</translation> <translation id="7503985202154027481">Na bezpečnostním klíči zůstane záznam o návštěvě tohoto webu.</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 1da6785..aa77a34 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">Foretrukket input</translation> <translation id="1335929031622236846">Tilmeld din enhed</translation> <translation id="1336902454946927954">Din sikkerhedsnøgle er låst, fordi dit fingeraftryk ikke blev genkendt. Du kan låse den op ved at angive din pinkode.</translation> +<translation id="1337692097987160377">Del denne fane</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vil gerne åbne denne app.</translation> <translation id="1338950911836659113">Sletter...</translation> <translation id="13392265090583506">A11y</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Yderligere oplysninger</translation> <translation id="2806372837663997957">Den enhed, du forsøger at dele med, accepterede ikke</translation> +<translation id="2806891468525657116">Genvejen findes allerede</translation> <translation id="2807517655263062534">Dine downloadede filer vises her</translation> <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> mere</translation> <translation id="2810390687497823527">Hvis du ikke kan genkende en udvidelse, eller hvis din browser ikke fungerer som forventet, kan du deaktivere eller tilpasse udvidelser her.</translation> @@ -5602,6 +5604,7 @@ <translation id="7496732379142025470">For at spare på batteriet er “Hey Google” kun aktiveret, når din enhed er sluttet til en strømkilde. Gå til Indstillinger for at foretage ændringer.</translation> <translation id="7497215489070763236">Serverens CA-certifikat</translation> <translation id="7497981768003291373">Du har ingen nyligt registrerede WebRTC-tekstlogfiler.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> anmoder om tilladelse til at indfange indholdet på denne fane.</translation> <translation id="7502658306369382406">IPv6-adresse</translation> <translation id="7503191893372251637">Netscape-certifikatstype</translation> <translation id="7503985202154027481">En registrering af dit besøg på dette website gemmes på din sikkerhedsnøgle.</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 6240ff0..0409930 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Bevorzugte Eingabe</translation> <translation id="1335929031622236846">Gerät registrieren</translation> <translation id="1336902454946927954">Ihr Sicherheitsschlüssel ist gesperrt, weil Ihr Fingerabdruck nicht erkannt werden konnte. Geben Sie Ihre PIN ein, um ihn zu entsperren.</translation> +<translation id="1337692097987160377">Tab teilen</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> möchte diese Anwendung öffnen.</translation> <translation id="1338950911836659113">Wird gelöscht...</translation> <translation id="13392265090583506">Barrierefreiheit</translation> @@ -1606,6 +1607,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Zusätzliche Informationen</translation> <translation id="2806372837663997957">Das Gerät, für das du Dateien freigeben möchtest, hat diese nicht angenommen</translation> +<translation id="2806891468525657116">Verknüpfung ist bereits vorhanden</translation> <translation id="2807517655263062534">Hier werden heruntergeladene Dateien angezeigt</translation> <translation id="2809586584051668049">und <ph name="NUMBER_ADDITIONAL_DISABLED" /> weitere</translation> <translation id="2810390687497823527">Wenn Sie eine Erweiterung nicht wiedererkennen oder Ihr Browser nicht wie erwartet funktioniert, können Sie die Erweiterungen hier deaktivieren oder anpassen.</translation> @@ -5579,6 +5581,7 @@ <translation id="7496732379142025470">Damit der Akku geschont wird, wird "Ok Google" nur aktiviert, wenn Ihr Gerät an eine Stromquelle angeschlossen ist. Änderungen können Sie in den "Einstellungen" vornehmen.</translation> <translation id="7497215489070763236">CA-Serverzertifikat</translation> <translation id="7497981768003291373">Es sind keine kürzlich erfassten WebRTC-Textprotokolle vorhanden.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> bittet um Erlaubnis, den Inhalt dieses Tabs zu lesen.</translation> <translation id="7502658306369382406">IPv6-Adresse</translation> <translation id="7503191893372251637">Netscape-Zertifikatstyp</translation> <translation id="7503985202154027481">Auf Ihrem Sicherheitsschlüssel wird zum Besuch dieser Website ein Datensatz angelegt.</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index ec83a39c..3db45d25 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Προτιμώμενη εισαγωγή</translation> <translation id="1335929031622236846">Εγγραφή της συσκευής σας</translation> <translation id="1336902454946927954">Το κλειδί ασφαλείας σας είναι κλειδωμένο επειδή δεν ήταν δυνατή η αναγνώριση του δακτυλικού σας αποτυπώματος. Για να το ξεκλειδώσετε, εισαγάγετε το PIN σας.</translation> +<translation id="1337692097987160377">Κοινοποίηση αυτής της καρτέλας</translation> <translation id="1338802252451106843">Το <ph name="ORIGIN" /> θέλει να ανοίξει αυτήν την εφαρμογή.</translation> <translation id="1338950911836659113">Γίνεται διαγραφή…</translation> <translation id="13392265090583506">Προσβασιμότητα</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Εφαρμογές </translation> <translation id="2805770823691782631">Πρόσθετες λεπτομέρειες</translation> <translation id="2806372837663997957">Η συσκευή στην οποία θέλετε να κάνετε κοινοποίηση δεν αποδέχτηκε το αίτημα</translation> +<translation id="2806891468525657116">Η συντόμευση υπάρχει ήδη</translation> <translation id="2807517655263062534">Τα αρχεία που κατεβάζετε εμφανίζονται εδώ</translation> <translation id="2809586584051668049">και ακόμη <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Εάν δεν αναγνωρίζετε κάποια επέκταση ή αν το πρόγραμμα περιήγησης δεν λειτουργεί με τον αναμενόμενο τρόπο, μπορείτε να απενεργοποιήσετε ή να προσαρμόσετε τις επεκτάσεις εδώ.</translation> @@ -5601,6 +5603,7 @@ <translation id="7496732379142025470">Για λόγους εξοικονόμησης μπαταρίας, η λειτουργία "Ok Google" ενεργοποιείται μόνο όταν η συσκευή σας είναι συνδεδεμένη σε κάποια πηγή ενέργειας. Για να κάνετε αλλαγές, μεταβείτε στις Ρυθμίσεις.</translation> <translation id="7497215489070763236">Πιστοποιητικό διακομιστή CA</translation> <translation id="7497981768003291373">Δεν υπάρχουν αρχεία καταγραφής κειμένου WebRTC τα οποία λήφθηκαν πρόσφατα.</translation> +<translation id="7498614236023455416">Η διεύθυνση <ph name="TARGET_NAME" /> ζητά άδεια για την εγγραφή του περιεχομένου αυτής της καρτέλας.</translation> <translation id="7502658306369382406">Διεύθυνση IPv6</translation> <translation id="7503191893372251637">Τύπος πιστοποιητικού Netscape</translation> <translation id="7503985202154027481">Μια καταγραφή της επίσκεψής σας σε αυτόν τον ιστότοπο θα διατηρηθεί στο κλειδί ασφαλείας.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 3240ba20..2fa6bda 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Preferred input</translation> <translation id="1335929031622236846">Enrol your device</translation> <translation id="1336902454946927954">Your security key is locked because your fingerprint couldn't be recognised. To unlock it, enter your PIN.</translation> +<translation id="1337692097987160377">Share this tab</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> wants to open this application.</translation> <translation id="1338950911836659113">Deleting...</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Additional details</translation> <translation id="2806372837663997957">The device that you’re trying to share with did not accept</translation> +<translation id="2806891468525657116">Shortcut already exists</translation> <translation id="2807517655263062534">Files you download appear here</translation> <translation id="2809586584051668049">and <ph name="NUMBER_ADDITIONAL_DISABLED" /> more</translation> <translation id="2810390687497823527">If you don't recognise an extension, or if your browser isn't working as expected, you can turn off or customise extensions here.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">To save battery, “Ok Google” is on only when your device is connected to a power source. To make changes, go to Settings.</translation> <translation id="7497215489070763236">Server CA certificate</translation> <translation id="7497981768003291373">You have no recently captured WebRTC text logs.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> is asking for permission to capture the contents of this tab.</translation> <translation id="7502658306369382406">IPv6 address</translation> <translation id="7503191893372251637">Netscape Certificate Type</translation> <translation id="7503985202154027481">A record of your visit to this site will be kept on your security key.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index 706dd34..f359d98d 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Método de entrada preferido</translation> <translation id="1335929031622236846">Inscribe tu dispositivo</translation> <translation id="1336902454946927954">Se bloqueó la llave de seguridad porque no se reconoció tu huella digital. Para desbloquearla, ingresa el PIN.</translation> +<translation id="1337692097987160377">Compartir esta pestaña</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> quiere abrir esta app.</translation> <translation id="1338950911836659113">Eliminando…</translation> <translation id="13392265090583506">Accesibilidad</translation> @@ -1607,6 +1608,7 @@ <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805770823691782631">Detalles adicionales</translation> <translation id="2806372837663997957">El dispositivo con el que quieres compartir contenido no lo aceptó.</translation> +<translation id="2806891468525657116">El acceso directo ya existe</translation> <translation id="2807517655263062534">Los archivos que descargas aparecen aquí</translation> <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation> <translation id="2810390687497823527">Si no reconoces una extensión o si navegador no funciona correctamente, puedes desactivar o personalizar extensiones aquí.</translation> @@ -5580,6 +5582,7 @@ <translation id="7496732379142025470">Para ahorrar batería, "Ok Google" solo se activa cuando tu dispositivo está conectado a una fuente de energía. Para hacer cambios, ve a la configuración.</translation> <translation id="7497215489070763236">Certificado de CA del servidor</translation> <translation id="7497981768003291373">No capturaste ningún registro de texto de WebRTC recientemente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> pide permiso para capturar el contenido de esta pestaña.</translation> <translation id="7502658306369382406">Dirección IPv6</translation> <translation id="7503191893372251637">Tipo de certificado Netscape</translation> <translation id="7503985202154027481">En tu llave de seguridad, se guardará un registro de tu visita a este sitio.</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 620d0c5..a7272477 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Método de introducción preferido</translation> <translation id="1335929031622236846">Registra el dispositivo</translation> <translation id="1336902454946927954">Tu llave de seguridad está bloqueada porque no se ha podido reconocer tu huella digital. Para desbloquearla, escribe tu PIN.</translation> +<translation id="1337692097987160377">Compartir esta pestaña</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> quiere abrir esta aplicación.</translation> <translation id="1338950911836659113">Eliminando...</translation> <translation id="13392265090583506">Ajustes de accesibilidad</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2805770823691782631">Información adicional</translation> <translation id="2806372837663997957">El dispositivo con el que intentas compartir contenido no lo ha aceptado</translation> +<translation id="2806891468525657116">El acceso directo ya existe</translation> <translation id="2807517655263062534">Los archivos que descargues aparecen aquí</translation> <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation> <translation id="2810390687497823527">Si no reconoces una extensión o el navegador no funciona correctamente, aquí puedes desactivar o personalizar las extensiones.</translation> @@ -5582,6 +5584,7 @@ <translation id="7496732379142025470">Para ahorrar batería, solo está activada la frase "Ok Google" cuando el dispositivo está conectado a una fuente de alimentación. Para realizar algún cambio, ve a Ajustes.</translation> <translation id="7497215489070763236">Certificado AC del servidor</translation> <translation id="7497981768003291373">No has capturado ningún registro de texto de WebRTC recientemente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> solicita permiso para hacer capturas del contenido de esta pestaña.</translation> <translation id="7502658306369382406">Dirección IPv6</translation> <translation id="7503191893372251637">Tipo de certificado de Netscape</translation> <translation id="7503985202154027481">Se guardará un registro de tu visita a este sitio web en tu llave de seguridad.</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 2cafc30..fe71e8d 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Eelistatud sisend</translation> <translation id="1335929031622236846">Seadme registreerimine</translation> <translation id="1336902454946927954">Teie turvavõti on lukustatud, kuna teie sõrmejälge ei õnnestunud tuvastada. Selle avamiseks sisestage oma PIN-kood.</translation> +<translation id="1337692097987160377">Jaga seda vahekaarti</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> soovib selle rakenduse avada.</translation> <translation id="1338950911836659113">Kustutamine ...</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Rakendused</translation> <translation id="2805770823691782631">Täiendavad üksikasjad</translation> <translation id="2806372837663997957">Seade, millega üritate faili jagada, ei võtnud seda vastu</translation> +<translation id="2806891468525657116">Otsetee on juba olemas</translation> <translation id="2807517655263062534">Siin kuvatakse teie allalaaditud failid</translation> <translation id="2809586584051668049">ja veel <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Kui laiendus on teile võõras või brauser ei tööta ootuspäraselt, saate siin laiendusi kohandada või need välja lülitada.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Aku säästmiseks toimib „Ok Google” ainult juhul, kui seade on ühendatud toiteallikaga. Muutmiseks avage jaotis Seaded.</translation> <translation id="7497215489070763236">Serveri CA-sertifikaat</translation> <translation id="7497981768003291373">Teil pole ühtegi hiljuti jäädvustatud WebRTC tekstilogi.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> palub luba selle vahelehe sisu jäädvustamiseks.</translation> <translation id="7502658306369382406">IPv6 aadress</translation> <translation id="7503191893372251637">Netscape'i sertifikaadi tüüp</translation> <translation id="7503985202154027481">Kirje teie külastusest sellele saidile säilitatakse turvavõtmes.</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index a8dca43..17509f6 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Sarerik ez</translation> <translation id="1056898198331236512">Abisua</translation> <translation id="1058262162121953039">PUK kodea</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Idatzi PIN kode berria. PIN kodeak karaktere bat izan behar du gutxienez, eta hizkiak, zenbakiak eta bestelako karaktereak eduki ditzake.}other{Idatzi PIN kode berria. PIN kodeak # karaktere izan behar ditu gutxienez, eta hizkiak, zenbakiak eta bestelako karaktereak eduki ditzake.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> fitxa aurkitu dira "<ph name="SEARCH_TEXT" />" bilaketarako</translation> <translation id="1060292118287751956">Pantaila eguneratzeko maiztasuna zehazten du</translation> <translation id="1061904396131502319">Atseden hartzeko garaia izango da laster</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Sarrerako metodo hobetsia</translation> <translation id="1335929031622236846">Erregistratu gailua</translation> <translation id="1336902454946927954">Segurtasun-giltza blokeatu egin da ez delako ezagutu hatz-marka. Desblokeatzeko, idatzi PIN kodea.</translation> +<translation id="1337692097987160377">Partekatu fitxa hau</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> webguneak aplikazio hau ireki nahi du.</translation> <translation id="1338950911836659113">Ezabatzen…</translation> <translation id="13392265090583506">Erabilerraztasun-ezarpenak</translation> @@ -635,9 +637,11 @@ <translation id="1688935057616748272">Idatzi letra bat</translation> <translation id="168991973552362966">Gehitu inguruko inprimagailu bat</translation> <translation id="1689945336726856614">Kopiatu &URLa</translation> +<translation id="1690248886740053041">Ezin da konektatu sare mugikor batera. Laguntza teknikoa eskuratzeko, jarri harremanetan operadorearekin.</translation> <translation id="1692115862433274081">Erabili beste kontu bat</translation> <translation id="1692118695553449118">Sinkronizazioa aktibatuta dago</translation> <translation id="1692210323591458290">More iluna</translation> +<translation id="169279809881363536">Ez da aurkitu profilik. Beste sare bat konfiguratzeko, eskaneatu QR kodea gailuaren kamera erabiliz edo idatzi operadoreak emandako aktibazio-kodea.</translation> <translation id="1697150536837697295">Artea</translation> <translation id="1697686431566694143">Editatu fitxategia</translation> <translation id="1698122934742150150">Uneko ezkutuko saioan soilik</translation> @@ -1574,6 +1578,7 @@ <translation id="2770465223704140727">Kendu zerrendatik</translation> <translation id="2770690685823456775">Esportatu pasahitzak beste karpeta batera</translation> <translation id="2770929488047004208">Monitorearen bereizmena</translation> +<translation id="2770954829020464827">Xehetasunak ezkutatu egingo dira pantaila partekatzen ari zaren bitartean</translation> <translation id="2771268254788431918">Aktibatu da datu-konexioa</translation> <translation id="2771816809568414714">Gazta</translation> <translation id="2772936498786524345">Ninja</translation> @@ -1610,6 +1615,7 @@ <translation id="2805756323405976993">Aplikazioak</translation> <translation id="2805770823691782631">Xehetasun gehigarriak</translation> <translation id="2806372837663997957">Gailuak ez du onartu partekatzen saiatzen ari zaren fitxategia</translation> +<translation id="2806891468525657116">Jada badago lasterbide hori</translation> <translation id="2807517655263062534">Deskargatutako fitxategiak agertuko dira hemen</translation> <translation id="2809586584051668049">eta beste <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Luzapenen bat ezagutzen ez baduzu edo arakatzaileak ez badu funtzionatzen behar bezala, desaktibatu edo pertsonalizatu luzapenak hemen.</translation> @@ -1941,6 +1947,7 @@ <translation id="3201422919974259695">Hemen agertuko dira erabilgarri dauden USB gailuak.</translation> <translation id="3202131003361292969">Bide-izena</translation> <translation id="3202173864863109533">Fitxaren audioa desaktibatuta dago.</translation> +<translation id="3202218848974251205">Pribatutasunaren sandbox-a</translation> <translation id="3208321278970793882">Aplikazioa</translation> <translation id="3208584281581115441">Egiaztatu</translation> <translation id="3208703785962634733">Berretsi gabe</translation> @@ -2161,6 +2168,7 @@ <translation id="3459697287128633276">Kontuarekin Google Play Store atzitu ahal izateko, autentifika zaitez identitate-hornitzailearen bidez.</translation> <translation id="3462311546193741693">Webgune gehienetako saioa amaitzen du. Google-ko kontuan saioa hasita jarraituko duzu, sinkronizatutako datuak garbitu ahal izateko.</translation> <translation id="3462413494201477527">Kontuaren konfigurazioa utzi nahi duzu?</translation> +<translation id="3464145797867108663">Gehitu laneko profila</translation> <translation id="346431825526753">Haurrentzako kontua da hau. Kudeatzailea: <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Etiketa</translation> <translation id="3468999815377931311">Android-eko telefonoa</translation> @@ -2282,6 +2290,7 @@ <translation id="360180734785106144">Eskuratu eginbide berriak erabilgarri dauden bezain laster</translation> <translation id="3602290021589620013">Aurrebista</translation> <translation id="3603622770190368340">Eskuratu sareko ziurtagiria</translation> +<translation id="3604193429970465812">Bigarren mailako kontuak</translation> <translation id="3604713164406837697">Aldatu horma-papera</translation> <translation id="3605780360466892872">Enpresaria</translation> <translation id="3608576286259426129">Erabili irudiaren aurrebista</translation> @@ -2606,6 +2615,7 @@ <ph name="CONTROL_PANEL_APPLET_NAME" /> abiarazi nahi duzu?</translation> <translation id="394183848452296464">Ezin da sortu lasterbidea</translation> +<translation id="3943494825379372497">Aplikazioak eta orriak leheneratu nahi dituzu?</translation> <translation id="3943582379552582368">&Atzera</translation> <translation id="3943857333388298514">Itsatsi</translation> <translation id="3948116654032448504">&Bilatu irudia <ph name="SEARCH_ENGINE" /> bilatzailean</translation> @@ -2691,6 +2701,7 @@ <translation id="4046013316139505482">Luzapen hauek ez daukate webgune honetako informazioa ikusi eta aldatzeko beharrik.</translation> <translation id="4046123991198612571">Hurrengo pista</translation> <translation id="4047726037116394521">Joan orri nagusira</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# kontaktu ez dago erabilgarri. Nearby Share kontaktu horrekin erabiltzeko, gehitu kontaktuetan haren Google-ko kontuarekin lotutako helbide elektronikoa.}other{# kontaktu ez daude erabilgarri. Nearby Share kontaktu horrekin erabiltzeko, gehitu kontaktuetan haien Google-ko kontuarekin lotutako helbide elektronikoa.}}</translation> <translation id="4050225813016893843">Autentifikazio-metodoa</translation> <translation id="4052120076834320548">Oso txikia</translation> <translation id="4056908315660577142">Iritsi zara gurasoak Chrome-ren <ph name="APP_NAME" /> aplikazioa erabiltzeko ezarritako denbora-mugara. Bihar, <ph name="TIME_LIMIT" /> izango dituzu hura erabiltzeko.</translation> @@ -3114,7 +3125,7 @@ <translation id="457386861538956877">Gehiago…</translation> <translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation> <translation id="457564749856982089">Profilean ikastetxeko kontu bat gehituz gero, haurrak erraz hasi ahalko du saioa ikasle gisa webgune, luzapen eta aplikazioetan, baina gurasoen murriztapenen mende egoteari utzi gabe. Horrela, ezingo ditu atzitu ikastetxeko kontuarekin sinkronizatutako laster-markak, pasahitzak edo bestelako arakatze-datuak.<br><br> -Haurrak ikastetxean Chromebook bat erabiltzen badu, eta etxean ere ikastetxeko baldintza beretan lan egiteko aukera eskaini nahi badiozu behar duen material guztietarako sarbidea izan dezan, amaitu saioa Family Link-eko kontu honetan eta hasi saioa ikastetxeko kontuarekin Chrome OS-ko kontuen orrian (oharra: ez dira aplikatuko Family Link-en gurasoen murriztapenak).<br><br> +Haurrak ikastetxean Chromebook bat erabiltzen badu, eta etxean ere ikastetxeko baldintza beretan lan egiteko aukera eskaini nahi badiozu behar duen material guztietarako sarbidea izan dezan, amaitu saioa Family Link-eko kontu honetan eta hasi saioa ikastetxeko kontuarekin Chrome OS-eko kontuen orrian (oharra: ez dira aplikatuko Family Link-en gurasoen murriztapenak).<br><br> Haurrak ikastetxean ez badu Chromebook-ik erabiltzen, edo nahiago baduzu etxean egiten duena Family Link-en bidez kudeatu, sakatu behean dagoen Hurrengoa botoia eta gehitu ikastetxeko kontu bat profil honetan.</translation> <translation id="4576541033847873020">Parekatu Bluetooth bidezko gailua</translation> <translation id="4579453506923101210">Ahaztu konektatutako telefonoa</translation> @@ -3337,6 +3348,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> dirudi (lehenetsia)</translation> <translation id="4864369630010738180">Saioa hasten…</translation> <translation id="4864805589453749318">Hautatu zer gurasok emango duen baimena ikastetxeko kontu bat gehitzeko.</translation> +<translation id="4866265760644917470">Gehitu da profila.</translation> <translation id="486635084936119914">Ireki fitxategi mota jakin batzuk deskargatu bezain laster</translation> <translation id="48704129375571883">Gehitu eginbide gehiago</translation> <translation id="4870758487381879312">Konfigurazioari buruzko informazioa lortzeko, idatzi administratzaileak emandako pasahitza</translation> @@ -3620,6 +3632,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Aldatu da arriskuan zegoen pasahitza. Arriskuan dauden # pasahitz gehiago daukazu. Pasahitz hori orain egiaztatzea gomendatzen dizu Chrome-k.}other{Aldatu da arriskuan zegoen pasahitza. Arriskuan dauden # pasahitz gehiago dauzkazu. Pasahitz horiek orain egiaztatzea gomendatzen dizu Chrome-k.}}</translation> <translation id="5207949376430453814">Nabarmendu testu-kurtsorea</translation> <translation id="5209320130288484488">Ez da aurkitu gailurik</translation> +<translation id="5209572028385096813">Erabiltzailea Family Link bidez kudeatzen da</translation> <translation id="5210365745912300556">Itxi fitxa</translation> <translation id="5213481667492808996">"<ph name="NAME" />" datu-zerbitzua erabiltzeko prest dago</translation> <translation id="5213891612754844763">Erakutsi proxy-ezarpenak</translation> @@ -3705,6 +3718,7 @@ <translation id="5302048478445481009">Hizkuntza</translation> <translation id="5302932258331363306">Erakutsi ordezkapenen panela</translation> <translation id="5304276686222516262">Ezin da deskargatu kontaktuen zerrenda. Egiaztatu sarera konektatuta zaudela edo <a href="#" id="tryAgainLink">saiatu berriro</a>.</translation> +<translation id="5305145881844743843"><ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> da kontuaren kudeatzailea</translation> <translation id="5305688511332277257">Ez dago ziurtagiririk instalatuta</translation> <translation id="5307030433605830021">Ez da onartzen iturburua</translation> <translation id="5308380583665731573">Konektatu</translation> @@ -4085,6 +4099,7 @@ <translation id="5740820643029013514">Erabili mezularitza isilagoa (gomendatua)</translation> <translation id="574104302965107104">Pantaila islatzeko modua</translation> <translation id="574209121243317957">Tonua</translation> +<translation id="5742505912938664543">Bigarren mailako kontu bat gehitzen baduzu, kontu hori erabili ahal izango duzu sarean ibiltzeko, aplikazioak deskargatzeko, Gmail-eko mezuak ikusteko eta Google-ren beste zerbitzu batzuk erabiltzeko.</translation> <translation id="5746169159649715125">Gorde PDF gisa</translation> <translation id="5747552184818312860">Iraungitze-data</translation> <translation id="5747785204778348146">Garatzailea; egoera ezegonkorra</translation> @@ -4425,6 +4440,7 @@ <translation id="6129953537138746214">Zuriunea</translation> <translation id="6130692320435119637">Gehitu wifi-sarea</translation> <translation id="6136114942382973861">Itxi deskargen barra</translation> +<translation id="6136287496450963112">Segurtasun-giltza ez daukazu PIN kodearekin babestuta. Erreferentzia-gako digitalak kudeatzeko, sortu PIN bat.</translation> <translation id="6137767437444130246">Erabiltzaile-ziurtagiria</translation> <translation id="6138680304137685902">SHA-384 ziurtagiria duen X9.62 ECDSA sinadura</translation> <translation id="6138894911715675297">Ez dago sarerik (<ph name="NETWORK_TYPE" />)</translation> @@ -4605,6 +4621,7 @@ <translation id="6331566915566907158">Lagundu Chrome OS sistemaren eginbideak eta funtzionamendua hobetzen</translation> <translation id="6331818708794917058">Webguneek MIDI gailuetara konektatzea eska dezakete</translation> <translation id="6333064448949140209">Google-ra bidaliko da fitxategia, hura araztu ahal izateko</translation> +<translation id="6334444530352320327">Kontu honekin saioa hasten duzunean, aplikazioak eta sistema eragileko ezarpenak sinkronizatu egingo dira Chromebook batetik bestera.<ph name="LINK_BEGIN" />Sinkronizazio-ezarpenak<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Webgune guztiek mota guztietako iragarkiak erakuts diezazkizukete</translation> <translation id="6339668969738228384">Sortu beste profil bat <ph name="USER_EMAIL_ADDRESS" /> helbiderako</translation> <translation id="6340017061976355871">Ezin izan da konektatu zerbitzarira. Egiaztatu sarera konektatuta zaudela eta saiatu berriro. Arazoak badirau, berrabiarazi Chromebook-a.</translation> @@ -4906,6 +4923,7 @@ <translation id="6709133671862442373">Albisteak</translation> <translation id="6709357832553498500">Konektatu <ph name="EXTENSIONNAME" /> erabilita</translation> <translation id="6710213216561001401">Aurrekoa</translation> +<translation id="6713233729292711163">Gehitu laneko profila</translation> <translation id="6715803357256707211">Errore bat gertatu da Linux aplikazioa instalatzean. Xehetasunak ikusteko, sakatu jakinarazpena.</translation> <translation id="671619610707606484">Webguneek gordetako datuen <ph name="TOTAL_USAGE" /> garbituko dira</translation> <translation id="671928215901716392">Pantaila blokeatua</translation> @@ -5274,6 +5292,7 @@ <translation id="7121362699166175603">Helbide-barrako historia eta osatze automatikoak garbitzen ditu. Google-ko kontuko historia arakatzeko beste modu batzuk aurki zenitzake <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webgunean.</translation> <translation id="7121438501124788993">Garatzaileen modua</translation> <translation id="7121728544325372695">Marra adimendunak</translation> +<translation id="7122353087820324370">Aplikazioak eta sistema-eragilearen ezarpenak ez daude sinkronizatuta bigarren mailako kontuekin.</translation> <translation id="7123030151043029868">Hainbat fitxategi deskarga ditzakete automatikoki</translation> <translation id="7123360114020465152">Ez da onartzen jada</translation> <translation id="7125148293026877011">Ezabatu Crostini</translation> @@ -5582,12 +5601,14 @@ <translation id="7496732379142025470">Bateria aurrezteko, gailua energia-iturburu batera konektatuta dagoenean soilik aktibatzen da "Ok Google". Aldaketak egiteko, joan Ezarpenak atalera.</translation> <translation id="7497215489070763236">Zerbitzariaren CA ziurtagiria</translation> <translation id="7497981768003291373">Ez duzu duela gutxi hartutako WebRTC testu-erregistrorik.</translation> +<translation id="7498614236023455416">Fitxa honetako edukiei argazkia ateratzeko baimena eskatzen ari da <ph name="TARGET_NAME" />.</translation> <translation id="7502658306369382406">IPv6 helbidea</translation> <translation id="7503191893372251637">Netscape ziurtagiri mota</translation> <translation id="7503985202154027481">Webgune hau bisitatu izana erregistratu egingo da segurtasun-giltzan.</translation> <translation id="750509436279396091">Ireki deskargen karpeta</translation> <translation id="7506093026325926984">Gailu honetan gordeko da pasahitza</translation> <translation id="7506130076368211615">Konfiguratu beste sare bat</translation> +<translation id="7506242536428928412">Segurtasun-giltza berria erabiltzeko, konfiguratu PIN berri bat</translation> <translation id="7506541170099744506">Erregistratu duzu <ph name="DEVICE_TYPE" /> enpresak kudeatzeko.</translation> <translation id="7507207699631365376">Ikusi hornitzailearen <ph name="BEGIN_LINK" />pribatutasun-gidalerroak<ph name="END_LINK" /></translation> <translation id="7507930499305566459">Egoera-erantzulearen ziurtagiria</translation> @@ -5751,6 +5772,7 @@ <translation id="7691077781194517083">Ezin da berrezarri segurtasun-giltza. <ph name="ERROR_CODE" /> errorea.</translation> <translation id="7691698019618282776">Crostini-ren bertsio-berritzea</translation> <translation id="7696063401938172191">"<ph name="PHONE_NAME" />" telefonoan:</translation> +<translation id="7697166915480294040">Xehetasunak ezkutatu egingo dira pantaila partekatzen ari zaren bitartean</translation> <translation id="7697598343108519171">Erabili kamera QR kodea eskaneatzeko</translation> <translation id="7699968112832915395">Ezin da gehitu kontua</translation> <translation id="7701040980221191251">Bat ere ez</translation> @@ -6207,6 +6229,8 @@ <translation id="8184472985242519288">Uniformea</translation> <translation id="8186609076106987817">Zerbitzariak ezin izan du fitxategia aurkitu.</translation> <translation id="8188389033983459049">Aurrera egiteko, egiaztatu gailuaren ezarpenak eta aktibatu giltza</translation> +<translation id="8189306097519446565">Ikastetxeko kontuak</translation> +<translation id="8189750580333936930">Pribatutasunaren proba-eremua</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> hornitzailera konektatzen</translation> <translation id="8191230140820435481">Kudeatu aplikazioak, luzapenak eta gaiak</translation> <translation id="8195027750202970175">Diskoko tamaina</translation> @@ -6898,6 +6922,7 @@ <translation id="8986362086234534611">Ahaztu</translation> <translation id="8986494364107987395">Bidali automatikoki erabilera-estatistikak eta hutsegite-txostenak Google-ra</translation> <translation id="8987927404178983737">Hilabetea</translation> +<translation id="8989823300731803443">Jarraitu utzi zenuen tokitik.</translation> <translation id="8990209962746788689">Ezin da sortu QR kodea</translation> <translation id="8991520179165052608">Webguneak mikrofonoa erabil dezake</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 elementu}other{# elementu}}</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 1d893f6..9157359 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">شبکهای وجود ندارد</translation> <translation id="1056898198331236512">اخطار</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{پین جدید را وارد کنید. پین باید حداقل یک نویسه داشته باشد و میتواند حاوی حرف، عدد، و دیگر نویسهها باشد.}one{پین جدید را وارد کنید. پین باید حداقل # نویسه داشته باشد و میتواند حاوی حرف، عدد، و دیگر نویسهها باشد.}other{پین جدید را وارد کنید. پین باید حداقل # نویسه داشته باشد و میتواند حاوی حرف، عدد، و دیگر نویسهها باشد.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> برگه برای «<ph name="SEARCH_TEXT" />» پیدا شد</translation> <translation id="1060292118287751956">بسامد بهروزرسانیهای صفحهنمایش را مشخص میکند</translation> <translation id="1061904396131502319">تقریباً زمان استراحت است</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">ورودی ترجیحی</translation> <translation id="1335929031622236846">دستگاهتان را ثبتنام کنید</translation> <translation id="1336902454946927954">کلید امنیتی شما قفل شده است زیرا اثر انگشتتان تشخیص داده نشد. برای باز کردن قفل آن، پین را وارد کنید.</translation> +<translation id="1337692097987160377">همرسانی این برگه</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> میخواهد این برنامه را باز کند.</translation> <translation id="1338950911836659113">در حال حذف...</translation> <translation id="13392265090583506">A11y</translation> @@ -633,9 +635,11 @@ <translation id="1688935057616748272">حرفی تایپ کنید</translation> <translation id="168991973552362966">افزودن چاپگری در این اطراف</translation> <translation id="1689945336726856614">کپی کردن &نشانی وب</translation> +<translation id="1690248886740053041">اتصال به شبکه تلفن همراه ممکن نیست. برای پشتیبانی فنی، لطفاً با شرکت مخابراتیتان تماس بگیرید.</translation> <translation id="1692115862433274081">استفاده از حسابی دیگر</translation> <translation id="1692118695553449118">همگامسازی روشن است</translation> <translation id="1692210323591458290">بنفش تیره</translation> +<translation id="169279809881363536">هیچ نمایهای کاوش نشد. برای راهاندازی شبکه جدید، رمزینه پاسخسریع را بااستفاده از دوربین دستگاه اسکن کنید یا کد فعالسازی ارائهشده توسط شرکت مخابراتیتان را وارد کنید.</translation> <translation id="1697150536837697295">هنری</translation> <translation id="1697686431566694143">ویرایش فایل</translation> <translation id="1698122934742150150">فقط جلسه ناشناس کنونی</translation> @@ -1572,6 +1576,7 @@ <translation id="2770465223704140727">حذف از فهرست</translation> <translation id="2770690685823456775">گذرواژهها را به پوشه دیگری صادر کنید</translation> <translation id="2770929488047004208">وضوح نمایشگر</translation> +<translation id="2770954829020464827">درحین همرسانی صفحهنمایش، جزئیات پنهان میشود</translation> <translation id="2771268254788431918">داده تلفن همراه فعال شد</translation> <translation id="2771816809568414714">پنیر</translation> <translation id="2772936498786524345">مأمور مخفی</translation> @@ -1608,6 +1613,7 @@ <translation id="2805756323405976993">برنامهها</translation> <translation id="2805770823691782631">جزئیات دیگر</translation> <translation id="2806372837663997957">دستگاهی که میخواهید با آن همرسانی کنید درخواست را نپذیرفت</translation> +<translation id="2806891468525657116">میانبر از قبل وجود دارد</translation> <translation id="2807517655263062534">فایلهایی که بارگیری میکنید اینجا نشان داده میشود</translation> <translation id="2809586584051668049">و <ph name="NUMBER_ADDITIONAL_DISABLED" /> مورد دیگر</translation> <translation id="2810390687497823527">اگر افزونهای برایتان آشنا نیست یا اگر مرورگری طبق انتظار کار نمیکند، میتوانید افزونهها را در اینجا خاموش یا سفارشی کنید.</translation> @@ -1939,6 +1945,7 @@ <translation id="3201422919974259695">دستگاههای USB دردسترس در اینجا نشان داده میشود.</translation> <translation id="3202131003361292969">مسیر</translation> <translation id="3202173864863109533">صدای این برگه قطع شده است.</translation> +<translation id="3202218848974251205">جعبه ایمنی حریمخصوصی</translation> <translation id="3208321278970793882">برنامه</translation> <translation id="3208584281581115441">اکنون بررسی شود</translation> <translation id="3208703785962634733">تأیید نشده</translation> @@ -2159,6 +2166,7 @@ <translation id="3459697287128633276">برای فعال کردن حسابتان جهت دسترسی به «فروشگاه Google Play»، لطفاً با استفاده از «ارائهدهنده هویت» اصالتسنجی کنید.</translation> <translation id="3462311546193741693">شما از سیستم بیشتر سایتها خارج میکند. از حساب Google خارج نخواهید شد بنابراین میتوانید دادههای همگامسازیشدهتان را پاک کنید.</translation> <translation id="3462413494201477527">راهاندازی حساب لغو شود؟</translation> +<translation id="3464145797867108663">افزودن نمایه کاری</translation> <translation id="346431825526753">این یک حساب مخصوص بچهها است که توسط <ph name="CUSTODIAN_EMAIL" /> مدیریت میشود.</translation> <translation id="3468298837301810372">برچسب</translation> <translation id="3468999815377931311">تلفن Android</translation> @@ -2280,6 +2288,7 @@ <translation id="360180734785106144">پیشنهاد ویژگیهای جدید بهمحض دردسترس قرار گرفتن</translation> <translation id="3602290021589620013">پیشنمایش</translation> <translation id="3603622770190368340">دریافت گواهینامه شبکه</translation> +<translation id="3604193429970465812">حسابهای ثانویه</translation> <translation id="3604713164406837697">تغییر کاغذدیواری</translation> <translation id="3605780360466892872">تاجر</translation> <translation id="3608576286259426129">پیشنمایش تصویر کاربر</translation> @@ -2604,6 +2613,7 @@ آیا میخواهید <ph name="CONTROL_PANEL_APPLET_NAME" /> را شروع کنید؟</translation> <translation id="394183848452296464">نمیتوان میانبر ایجاد کرد</translation> +<translation id="3943494825379372497">برنامهها و صفحهها بازیابی شوند؟</translation> <translation id="3943582379552582368">&برگشت</translation> <translation id="3943857333388298514">جاگذاری</translation> <translation id="3948116654032448504">&جستجوی <ph name="SEARCH_ENGINE" /> برای تصویر</translation> @@ -2689,6 +2699,7 @@ <translation id="4046013316139505482">این افزونهها نیازی به مشاهده و تغییر اطلاعات در این سایت ندارند.</translation> <translation id="4046123991198612571">آهنگ بعدی</translation> <translation id="4047726037116394521">رفتن به صفحه اصلی</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# مخاطب دردسترس نیست. برای استفاده از «همرسانی با اطراف» با این مخاطب، نشانی ایمیل مرتبط با «حساب Google» او را به مخاطبین خود اضافه کنید.}one{# مخاطب دردسترس نیست. برای استفاده از «همرسانی با اطراف» با این مخاطب، نشانی ایمیل مرتبط با «حساب Google» او را به مخاطبین خود اضافه کنید.}other{# مخاطب دردسترس نیستند. برای استفاده از «همرسانی با اطراف» با این مخاطبین، نشانیهای ایمیل مرتبط با «حسابهای Google» آنها را به مخاطبین خود اضافه کنید.}}</translation> <translation id="4050225813016893843">روش اصالتسنجی</translation> <translation id="4052120076834320548">بسیار کوچک</translation> <translation id="4056908315660577142">به حداکثر زمانی که ولیتان برای برنامه Chrome <ph name="APP_NAME" /> تنظیم کرده است رسیدهاید. میتوانید فردا بهمدت <ph name="TIME_LIMIT" /> از آن استفاده کنید.</translation> @@ -3335,6 +3346,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> × <ph name="HEIGHT" /> بهنظر میرسد (پیشفرض)</translation> <translation id="4864369630010738180">در حال ورود به سیستم...</translation> <translation id="4864805589453749318">ولیای را که میخواهید به او اجازه دهید حساب محل تحصیل اضافه کند، انتخاب کنید.</translation> +<translation id="4866265760644917470">نمایه باموفقیت اضافه شد.</translation> <translation id="486635084936119914">باز شدن خودکار برخی از انواع فایل بعد از بارگیری</translation> <translation id="48704129375571883">افزودن قابلیتهای بیشتر</translation> <translation id="4870758487381879312">برای دریافت اطلاعات پیکربندی، گذرواژه ارائهشده توسط سرپرست را وارد کنید</translation> @@ -3618,6 +3630,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه میکند این گذرواژه را اکنون بررسی کنید.}one{گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه میکند این گذرواژه را اکنون بررسی کنید.}other{گذرواژه لورفته باموفقیت تغییر کرد. # گذرواژه لورفته دیگر دارید. Chrome توصیه میکند این گذرواژهها را اکنون بررسی کنید.}}</translation> <translation id="5207949376430453814">برجسته کردن هشتک نوشتار</translation> <translation id="5209320130288484488">دستگاهی یافت نشد</translation> +<translation id="5209572028385096813">این کاربر با Family Link مدیریت میشود</translation> <translation id="5210365745912300556">بستن برگه</translation> <translation id="5213481667492808996">سرویس داده «<ph name="NAME" />» شما آماده استفاده است</translation> <translation id="5213891612754844763">نمایش تنظیمات پروکسی</translation> @@ -3703,6 +3716,7 @@ <translation id="5302048478445481009">زبان</translation> <translation id="5302932258331363306">نمایش جایگزینها</translation> <translation id="5304276686222516262">فهرست مخاطبین بارگیری نشد. لطفاً اتصال شبکه را بررسی کنید، یا <a href="#" id="tryAgainLink">دوباره امتحان کنید</a>.</translation> +<translation id="5305145881844743843">این حساب تحتمدیریت <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> است</translation> <translation id="5305688511332277257">چیزی نصب نشده است</translation> <translation id="5307030433605830021">منبع پشتیبانی نمیشود</translation> <translation id="5308380583665731573">اتصال</translation> @@ -4084,6 +4098,7 @@ <translation id="5740820643029013514">استفاده از پیامرسانی کمصداتر (توصیهشده)</translation> <translation id="574104302965107104">نمایش صفحه نمایش روی دستگاه دیگر</translation> <translation id="574209121243317957">زیروبمی صدا</translation> +<translation id="5742505912938664543">وقتی حساب ثانویهای اینجا اضافه میکنید، میتوانید بااستفاده از آن حسابْ وب را مرور کنید، برنامه بارگیری کنید، و به Gmail و سرویسهای Google دیگر سر بزنید.</translation> <translation id="5746169159649715125">ذخیره بهعنوان PDF</translation> <translation id="5747552184818312860">تاریخ انقضا</translation> <translation id="5747785204778348146">برنامهنویس - ناپایدار</translation> @@ -4424,6 +4439,7 @@ <translation id="6129953537138746214">فاصله</translation> <translation id="6130692320435119637">افزودن Wi-Fi</translation> <translation id="6136114942382973861">بستن نوار بارگیری</translation> +<translation id="6136287496450963112">کلید امنیتیتان پین ندارد و محافظتشده نیست. برای مدیریت اثر انگشت، ابتدا پین ایجاد کنید.</translation> <translation id="6137767437444130246">گواهی کاربر</translation> <translation id="6138680304137685902">امضای X9.62 ECDSA با SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، بدون شبکه</translation> @@ -4604,6 +4620,7 @@ <translation id="6331566915566907158">کمک به بهبود ویژگیها و عملکرد سیستمعامل Chrome</translation> <translation id="6331818708794917058">سایتها میتوانند اتصال به دستگاههای MIDI را درخواست کنند</translation> <translation id="6333064448949140209">فایل برای اشکالزدایی به Google ارسال خواهد شد</translation> +<translation id="6334444530352320327">تنظیمات برنامهها و سیستمعامل در دستگاههای Chromebook که در آنها با این حساب به سیستم وارد شدهاید همگامسازی میشود.<ph name="LINK_BEGIN" />همگامسازی تنظیمات<ph name="LINK_END" /></translation> <translation id="6338981933082930623">همه سایتها میتوانند هرگونه آگهی را نمایش دهند</translation> <translation id="6339668969738228384">ایجاد نمایه جدیدی برای <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">به سرور متصل نشد. لطفاً اتصال شبکهتان را بررسی کرده و دوباره امتحان کنید. اگر مشکل برطرف نشد، Chromebook خود را بازراهاندازی کنید.</translation> @@ -4905,6 +4922,7 @@ <translation id="6709133671862442373">اخبار</translation> <translation id="6709357832553498500">اتصال با استفاده از <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">قبلی</translation> +<translation id="6713233729292711163">افزودن نمایه کاری</translation> <translation id="6715803357256707211">هنگام نصب برنامه Linux خطایی روی داد. برای جزئیات بیشتر، روی اعلان کلیک کنید.</translation> <translation id="671619610707606484">با این کار <ph name="TOTAL_USAGE" /> از دادههایی که سایتها ذخیره کردهاند پاک میشود</translation> <translation id="671928215901716392">قفل صفحه</translation> @@ -5273,6 +5291,7 @@ <translation id="7121362699166175603">سابقه و تکمیلهای خودکار را در نوار نشانی پاک میکند. ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد.</translation> <translation id="7121438501124788993">حالت تولیدکننده</translation> <translation id="7121728544325372695">خط تیرههای هوشمند</translation> +<translation id="7122353087820324370">تنظیمات برنامهها و سیستمعامل با حسابهای ثانویه همگامسازی نشدهاند.</translation> <translation id="7123030151043029868">اجازه دارد چند فایل را بهطور خودکار بارگیری کند</translation> <translation id="7123360114020465152">دیگر پشتیبانی نمیشود</translation> <translation id="7125148293026877011">حذف Crostini</translation> @@ -5581,12 +5600,14 @@ <translation id="7496732379142025470">برای صرفهجویی در مصرف باتری، «Ok Google» فقط زمانی روشن است که دستگاهتان به برق متصل باشد. برای انجام تغییرات به «تنظیمات» بروید.</translation> <translation id="7497215489070763236">گواهینامه مرکز صدور گواهی سرور</translation> <translation id="7497981768003291373">هیچ گزارش نوشتاری WebRTC که اخیراً ثبت شده باشد ندارید.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> اجازه میخواهد تا محتوای این برگه را ثبت کند.</translation> <translation id="7502658306369382406">نشانی IPv6</translation> <translation id="7503191893372251637">نوع گواهی Netscape</translation> <translation id="7503985202154027481">سابقه بازدیدتان از این سایت در کلید امنیتیتان نگهداری میشود.</translation> <translation id="750509436279396091">باز کردن پوشه بارگیریها</translation> <translation id="7506093026325926984">این گذرواژه در این دستگاه ذخیره خواهد شد</translation> <translation id="7506130076368211615">راهاندازی شبکه جدید</translation> +<translation id="7506242536428928412">برای استفاده از کلید امنیتی جدید، پین جدیدی تنظیم کنید</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> شما باموفقیت برای مدیریت شرکت ثبت شد.</translation> <translation id="7507207699631365376">به <ph name="BEGIN_LINK" />خطمشی رازداری<ph name="END_LINK" /> این ارائهدهنده بروید</translation> <translation id="7507930499305566459">گواهی وضعیت پاسخگو</translation> @@ -5750,6 +5771,7 @@ <translation id="7691077781194517083">نمیتوان این کلید امنیتی را بازنشانی کرد. خطای <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">ارتقا دادن Crostini</translation> <translation id="7696063401938172191">در «<ph name="PHONE_NAME" />»:</translation> +<translation id="7697166915480294040">درحین همرسانی صفحهنمایش، جزئیات پنهان میشود</translation> <translation id="7697598343108519171">برای اسکن رمزینه پاسخسریع از دوربین استفاده کنید</translation> <translation id="7699968112832915395">افزودن حساب ممکن نیست</translation> <translation id="7701040980221191251">هیچکدام</translation> @@ -6207,6 +6229,8 @@ <translation id="8184472985242519288">یکسان</translation> <translation id="8186609076106987817">سرور نتوانست فایل را پیدا کند.</translation> <translation id="8188389033983459049">تنظیمات دستگاه را بررسی کنید و برای ادامه، آن را روشن کنید</translation> +<translation id="8189306097519446565">حسابهای مدرسه</translation> +<translation id="8189750580333936930">جعبه ایمنی حریمخصوصی</translation> <translation id="8190193592390505034">اتصال به <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">مدیریت برنامهها، افزونهها و طرحهای زمینه</translation> <translation id="8195027750202970175">اندازه روی دیسک</translation> @@ -6899,6 +6923,7 @@ <translation id="8986362086234534611">فراموش شود</translation> <translation id="8986494364107987395">ارسال خودکار آمار کاربرد و گزارشهای خرابی به Google</translation> <translation id="8987927404178983737">ماه</translation> +<translation id="8989823300731803443">از جایی که کار را متوقف کردید ادامه دهید.</translation> <translation id="8990209962746788689">رمزینه پاسخسریع ایجاد نمیشود</translation> <translation id="8991520179165052608">سایت میتواند از میکروفن شما استفاده کند</translation> <translation id="8992117551007229513">{COUNT,plural, =1{۱ مورد}one{# مورد}other{# مورد}}</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index 1390d20d..ca52c5d 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Syöttötapa</translation> <translation id="1335929031622236846">Rekisteröi laite</translation> <translation id="1336902454946927954">Suojausavaimesi on lukittu, koska sormenjälkeäsi ei voitu tunnistaa. Avaa lukitus lisäämällä PIN-koodisi.</translation> +<translation id="1337692097987160377">Jaa tämä välilehti</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> haluaa avata tämän sovelluksen.</translation> <translation id="1338950911836659113">Poistetaan…</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Sovellukset</translation> <translation id="2805770823691782631">Lisätietoja</translation> <translation id="2806372837663997957">Laite, jolle yrität jakaa, ei hyväksynyt</translation> +<translation id="2806891468525657116">Pikakuvake on jo olemassa</translation> <translation id="2807517655263062534">Lataamasi tiedostot näytetään tässä.</translation> <translation id="2809586584051668049">ja <ph name="NUMBER_ADDITIONAL_DISABLED" /> muuta</translation> <translation id="2810390687497823527">Jos et tunnista laajennusta tai selain ei toimi odotetusti, täällä voit muokata tai asettaa pois päältä laajennuksia.</translation> @@ -5599,6 +5601,7 @@ <translation id="7496732379142025470">Jos haluat säästää virtaa, Ok Google on käytössä vain, kun laitteesi on yhdistetty virtalähteeseen. Jos haluat tehdä muutoksia, avaa Asetukset.</translation> <translation id="7497215489070763236">Palvelimen CA-varmenne</translation> <translation id="7497981768003291373">Sinulla ei ole äskettäin tallennettuja WebRTC-tekstilokeja.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> pyytää lupaa ottaa kuvakaappaus tämän välilehden sisällöstä</translation> <translation id="7502658306369382406">IPv6-osoite</translation> <translation id="7503191893372251637">Netscape-varmennetyyppi</translation> <translation id="7503985202154027481">Tieto käynnistäsi tällä sivustolla tallentuu suojausavaimeesi.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 81e620f..f191254 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">Gustong input</translation> <translation id="1335929031622236846">Ipa-enroll ang iyong device</translation> <translation id="1336902454946927954">Naka-lock ang iyong security key dahil hindi makilala ang fingerprint mo. Para i-unlock ito, ilagay ang iyong PIN.</translation> +<translation id="1337692097987160377">Ibahagi ang tab na ito</translation> <translation id="1338802252451106843">Gustong buksan ng <ph name="ORIGIN" /> ang application na ito.</translation> <translation id="1338950911836659113">Nagtatanggal...</translation> <translation id="13392265090583506">A11y</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">Mga App</translation> <translation id="2805770823691782631">Mga karagdagang detalye</translation> <translation id="2806372837663997957">Hindi tinanggap ng device na sinusubukan mong bahaginan</translation> +<translation id="2806891468525657116">Mayroon nang ganitong shortcut</translation> <translation id="2807517655263062534">Dito lalabas ang mga file na iyong ida-download</translation> <translation id="2809586584051668049">at <ph name="NUMBER_ADDITIONAL_DISABLED" /> pa</translation> <translation id="2810390687497823527">Kung hindi mo nakikilala ang isang extension, o kung hindi gumagana ang iyong browser gaya nang inaasahan, puwede mong i-off o i-customize ang mga extension dito.</translation> @@ -5601,6 +5603,7 @@ <translation id="7496732379142025470">Para makatipid ng baterya, naka-on lang ang “Ok Google” kapag nakasaksak ang iyong device. Para gumawa ng mga pagbabago, pumunta sa Mga Setting.</translation> <translation id="7497215489070763236">CA certificate ng server</translation> <translation id="7497981768003291373">Wala kang kamakailang nakuhang log ng text ng WebRTC.</translation> +<translation id="7498614236023455416">Humihingi ng pahintulot ang <ph name="TARGET_NAME" /> na i-capture ang mga content ng tab na ito.</translation> <translation id="7502658306369382406">IPv6 address</translation> <translation id="7503191893372251637">Uri ng Netscape Certificate</translation> <translation id="7503985202154027481">Itatabi sa iyong security key ang tala ng pagbisita mo sa site na ito.</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index b18b9d8..b7af956 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Aucun réseau</translation> <translation id="1056898198331236512">Avertissement</translation> <translation id="1058262162121953039">Clé PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Entrez votre nouveau NIP. Un NIP doit comprendre au moins un caractère. Il peut contenir des lettres, des numéros et d'autres caractères.}one{Entrez votre nouveau NIP. Un NIP doit comprendre au moins # caractère. Il peut contenir des lettres, des numéros et d'autres caractères.}many{Entrez votre nouveau NIP. Un NIP doit comprendre au moins # caractères. Il peut contenir des lettres, des numéros et d'autres caractères.}other{Entrez votre nouveau NIP. Un NIP doit comprendre au moins # caractères. Il peut contenir des lettres, des numéros et d'autres caractères.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> onglets trouvés pour « <ph name="SEARCH_TEXT" /> »</translation> <translation id="1060292118287751956">Détermine la fréquence à laquelle l'écran est actualisé</translation> <translation id="1061904396131502319">C'est bientôt le moment de prendre une pause</translation> @@ -308,6 +309,7 @@ <translation id="133535873114485416">Entrée préférée</translation> <translation id="1335929031622236846">Inscrivez votre appareil</translation> <translation id="1336902454946927954">Votre clé de sécurité est verrouillée parce que votre empreinte digitale n'a pas été reconnue. Pour la déverrouiller, entrez votre NIP.</translation> +<translation id="1337692097987160377">Partager cet onglet</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> souhaite ouvrir cette application.</translation> <translation id="1338950911836659113">Suppression en cours…</translation> <translation id="13392265090583506">Accessibilité</translation> @@ -637,9 +639,11 @@ <translation id="1688935057616748272">Entrez une lettre</translation> <translation id="168991973552362966">Ajouter une imprimante à proximité</translation> <translation id="1689945336726856614">Copier l'&URL</translation> +<translation id="1690248886740053041">Impossible de se connecter à un réseau cellulaire. Pour obtenir de l'assistance technique, veuillez communiquer avec votre fournisseur de services.</translation> <translation id="1692115862433274081">Utiliser un autre compte</translation> <translation id="1692118695553449118">La synchronisation est activée</translation> <translation id="1692210323591458290">Violet foncé</translation> +<translation id="169279809881363536">Aucun profil n'a été trouvé. Pour configurer un nouveau réseau, numérisez le code QR à l'aide de l'appareil photo de votre appareil ou entrez le code d'activation fourni par votre fournisseur de services.</translation> <translation id="1697150536837697295">Art</translation> <translation id="1697686431566694143">Modifier le fichier</translation> <translation id="1698122934742150150">Session de navigation privée active uniquement</translation> @@ -1577,6 +1581,7 @@ <translation id="2770465223704140727">Retirer de la liste</translation> <translation id="2770690685823456775">Exportez vos mots de passe dans un autre dossier</translation> <translation id="2770929488047004208">Résolution du moniteur</translation> +<translation id="2770954829020464827">Les renseignements sont masqués quand vous partagez votre écran</translation> <translation id="2771268254788431918">Données mobiles activées</translation> <translation id="2771816809568414714">Fromage</translation> <translation id="2772936498786524345">Sournois</translation> @@ -1613,6 +1618,7 @@ <translation id="2805756323405976993">Applications</translation> <translation id="2805770823691782631">Détails supplémentaires</translation> <translation id="2806372837663997957">L'appareil avec lequel vous tentez de partager le fichier n'a pas accepté cette opération</translation> +<translation id="2806891468525657116">Le raccourci existe déjà</translation> <translation id="2807517655263062534">Les fichiers que vous téléchargez apparaissent ici</translation> <translation id="2809586584051668049">et <ph name="NUMBER_ADDITIONAL_DISABLED" /> autres</translation> <translation id="2810390687497823527">Si vous ne reconnaissez pas une extension, ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez désactiver ou personnaliser les extensions ici.</translation> @@ -1944,6 +1950,7 @@ <translation id="3201422919974259695">Les appareils USB disponibles s'afficheront ici.</translation> <translation id="3202131003361292969">Chemin d'accès</translation> <translation id="3202173864863109533">L'audio de cet onglet est désactivé.</translation> +<translation id="3202218848974251205">Le bac à sable de confidentialité</translation> <translation id="3208321278970793882">Application</translation> <translation id="3208584281581115441">Vérifier maintenant</translation> <translation id="3208703785962634733">Non confirmé</translation> @@ -2164,6 +2171,7 @@ <translation id="3459697287128633276">Pour autoriser votre compte à accéder à la boutique Google Play Store, veuillez vous authentifier auprès de votre fournisseur d'identité.</translation> <translation id="3462311546193741693">Vous déconnecte de la plupart des sites. Vous resterez connecté à votre compte Google afin que vos données synchronisées puissent être effacées.</translation> <translation id="3462413494201477527">Annuler la configuration du compte?</translation> +<translation id="3464145797867108663">Ajouter un profil professionnel</translation> <translation id="346431825526753">Ce compte est destiné aux enfants. Il est géré par <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Étiquette</translation> <translation id="3468999815377931311">Téléphone Android</translation> @@ -2285,6 +2293,7 @@ <translation id="360180734785106144">Proposer de nouvelles fonctionnalités lorsqu'elles sont accessibles</translation> <translation id="3602290021589620013">Aperçu</translation> <translation id="3603622770190368340">Obtenir un certificat réseau</translation> +<translation id="3604193429970465812">Comptes secondaires</translation> <translation id="3604713164406837697">Changer de fond d'écran</translation> <translation id="3605780360466892872">Businessman</translation> <translation id="3608576286259426129">Aperçu de l'image de l'utilisateur</translation> @@ -2609,6 +2618,7 @@ Souhaitez-vous lancer <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Impossible de créer le raccourci</translation> +<translation id="3943494825379372497">Restaurer les applications et les pages?</translation> <translation id="3943582379552582368">&Retour</translation> <translation id="3943857333388298514">Coller</translation> <translation id="3948116654032448504">&Rechercher une image avec <ph name="SEARCH_ENGINE" /></translation> @@ -2694,6 +2704,7 @@ <translation id="4046013316139505482">Ces extensions n'ont pas besoin de consulter ni de modifier l'information sur ce site.</translation> <translation id="4046123991198612571">Chanson suivante</translation> <translation id="4047726037116394521">Accéder à la page d'accueil</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# contact n'est pas accessible. Pour utiliser la fonctionnalité Partage à proximité avec cette personne, ajoutez l'adresse de courriel associée à son compte Google dans vos contacts.}one{# contact n'est pas accessible. Pour utiliser la fonctionnalité Partage à proximité avec cette personne, ajoutez l'adresse de courriel associée à son compte Google dans vos contacts.}many{# contacts ne sont pas accessibles. Pour utiliser la fonctionnalité Partage à proximité avec ces personnes, ajoutez l'adresse de courriel associée à leur compte Google dans vos contacts.}other{# contacts ne sont pas accessibles. Pour utiliser la fonctionnalité Partage à proximité avec ces personnes, ajoutez l'adresse de courriel associée à leur compte Google dans vos contacts.}}</translation> <translation id="4050225813016893843">Méthode d'authentification</translation> <translation id="4052120076834320548">Très petite</translation> <translation id="4056908315660577142">Tu as atteint la durée limite que ton parent a définie pour l'application Chrome <ph name="APP_NAME" />. Tu pourras l'utiliser de nouveau pendant <ph name="TIME_LIMIT" /> demain.</translation> @@ -3340,6 +3351,7 @@ <translation id="4863769717153320198">Semblable à <ph name="WIDTH" /> x <ph name="HEIGHT" /> (résolution par défaut)</translation> <translation id="4864369630010738180">Connexion en cours…</translation> <translation id="4864805589453749318">Sélectionne le parent qui t'accorde l'autorisation d'ajouter un compte scolaire.</translation> +<translation id="4866265760644917470">Le profil a été ajouté.</translation> <translation id="486635084936119914">Ouvrir automatiquement certains types de fichiers après le téléchargement</translation> <translation id="48704129375571883">Ajouter des fonctionnalités supplémentaires</translation> <translation id="4870758487381879312">Entrez le mot de passe fourni par l'administrateur pour obtenir les informations de configuration</translation> @@ -3623,6 +3635,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Le mot de passe compromis a été changé. Vous avez # autre mot de passe compromis. Chrome recommande de vérifier ce mot de passe maintenant.}one{Le mot de passe compromis a été changé. Vous avez # autre mot de passe compromis. Chrome recommande de vérifier ce mot de passe maintenant.}many{Successfully changed the compromised password. You have # more compromised passwords. Chrome recommends checking these passwords now.}other{Le mot de passe compromis a été changé. Vous avez # autres mots de passe compromis. Chrome recommande de vérifier ces mots de passe maintenant.}}</translation> <translation id="5207949376430453814">Mettre le point d'insertion de texte en surbrillance</translation> <translation id="5209320130288484488">Aucun appareil trouvé</translation> +<translation id="5209572028385096813">Cet utilisateur est géré par Family Link</translation> <translation id="5210365745912300556">Fermer l'onglet</translation> <translation id="5213481667492808996">Vous pouvez utiliser votre service de données « <ph name="NAME" /> »</translation> <translation id="5213891612754844763">Afficher les paramètres de mandataire</translation> @@ -3708,6 +3721,7 @@ <translation id="5302048478445481009">Langue</translation> <translation id="5302932258331363306">Afficher les substitutions</translation> <translation id="5304276686222516262">Impossible de télécharger la liste de contacts. Veuillez vérifier votre connexion réseau ou <a href="#" id="tryAgainLink">réessayer</a>.</translation> +<translation id="5305145881844743843">Ce compte est géré par <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Aucun certificat installé</translation> <translation id="5307030433605830021">Source non prise en charge</translation> <translation id="5308380583665731573">Connecter</translation> @@ -4088,6 +4102,7 @@ <translation id="5740820643029013514">Utiliser la messagerie plus discrète (recommandé)</translation> <translation id="574104302965107104">Duplication d'écran</translation> <translation id="574209121243317957">Timbre de la voix</translation> +<translation id="5742505912938664543">Lorsque vous ajoutez un compte secondaire ici, vous pouvez naviguer sur le Web, télécharger des applications, consulter vos courriels dans Gmail et utiliser d'autres services Google à l'aide de ce compte.</translation> <translation id="5746169159649715125">Enregistrer au format PDF</translation> <translation id="5747552184818312860">Date d'expiration</translation> <translation id="5747785204778348146">Développeur (instable)</translation> @@ -4428,6 +4443,7 @@ <translation id="6129953537138746214">Espace</translation> <translation id="6130692320435119637">Ajouter un réseau Wi-Fi</translation> <translation id="6136114942382973861">Fermer la barre des téléchargements</translation> +<translation id="6136287496450963112">Votre clé de sécurité n'est pas protégée par un NIP. Pour gérer les empreintes digitales, commencez par créer un NIP.</translation> <translation id="6137767437444130246">Certificat utilisateur</translation> <translation id="6138680304137685902">Signature X9.62 ECDSA avec SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />; aucun réseau</translation> @@ -4608,6 +4624,7 @@ <translation id="6331566915566907158">Contribuer à améliorer les fonctionnalités et les performances de Chrome OS</translation> <translation id="6331818708794917058">Les sites peuvent demander à se connecter à des appareils MIDI</translation> <translation id="6333064448949140209">Le fichier sera envoyé à Google pour débogage</translation> +<translation id="6334444530352320327">Vos applications et vos paramètres liés au SE seront synchronisés sur tous les Chromebook sur lesquels vous êtes connecté avec ce compte.<ph name="LINK_BEGIN" />Paramètres de synchronisation<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Tous les sites peuvent afficher n'importe quelle annonce</translation> <translation id="6339668969738228384">Créer un autre profil pour <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Impossible de se connecter au serveur. Veuillez vérifier votre connexion réseau et réessayer. Si le problème persiste, redémarrez votre Chromebook.</translation> @@ -4909,6 +4926,7 @@ <translation id="6709133671862442373">Actualités</translation> <translation id="6709357832553498500">Se connecter à l'aide de <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Précédent</translation> +<translation id="6713233729292711163">Ajouter un profil professionnel</translation> <translation id="6715803357256707211">Une erreur s'est produite lors de l'installation de votre application Linux. Cliquez sur la notification pour en savoir plus.</translation> <translation id="671619610707606484">Cette action effacera <ph name="TOTAL_USAGE" /> des données stockées par les sites</translation> <translation id="671928215901716392">Verrouiller l'écran</translation> @@ -5277,6 +5295,7 @@ <translation id="7121362699166175603">Efface l'historique et les saisies semi-automatiques dans la barre d'adresse. D'autres formes d'historique de navigation peuvent exister sur votre compte Google à l'adresse <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Mode Concepteur</translation> <translation id="7121728544325372695">Tirets intelligents</translation> +<translation id="7122353087820324370">Les applications et les paramètres du SE ne sont pas synchronisés avec les comptes secondaires.</translation> <translation id="7123030151043029868">Autorisés à télécharger automatiquement plusieurs fichiers</translation> <translation id="7123360114020465152">N'est plus prise en charge</translation> <translation id="7125148293026877011">Supprimer Crostini</translation> @@ -5585,12 +5604,14 @@ <translation id="7496732379142025470">Pour économiser la pile, « Ok Google » est activé seulement quand votre appareil est connecté à une source d'alimentation. Pour apporter des modifications, accédez au menu Paramètres.</translation> <translation id="7497215489070763236">Certificat de l'autorité de certification du serveur</translation> <translation id="7497981768003291373">Aucun journal de texte WebRTC n'a été créé récemment.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> demande l'autorisation de capturer le contenu de cet onglet.</translation> <translation id="7502658306369382406">Adresse IPv6</translation> <translation id="7503191893372251637">Type de certificat Netscape</translation> <translation id="7503985202154027481">Une trace de votre visite sur ce site sera enregistrée sur votre clé de sécurité.</translation> <translation id="750509436279396091">Ouvrir le dossier des téléchargements</translation> <translation id="7506093026325926984">Ce mot de passe sera enregistré sur cet appareil</translation> <translation id="7506130076368211615">Configurer un nouveau réseau</translation> +<translation id="7506242536428928412">Pour utiliser votre nouvelle clé de sécurité, définissez un nouveau NIP</translation> <translation id="7506541170099744506">Votre <ph name="DEVICE_TYPE" /> est bien enregistré pour la gestion d'entreprise.</translation> <translation id="7507207699631365376">Consulter la <ph name="BEGIN_LINK" />politique de confidentialité<ph name="END_LINK" /> de ce fournisseur</translation> <translation id="7507930499305566459">Certificat du répondeur d'état</translation> @@ -5754,6 +5775,7 @@ <translation id="7691077781194517083">Impossible de réinitialiser cette clé de sécurité. Erreur <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Mise à niveau de Crostini</translation> <translation id="7696063401938172191">Sur votre « <ph name="PHONE_NAME" /> » :</translation> +<translation id="7697166915480294040">Les renseignements sont masqués quand vous partagez votre écran</translation> <translation id="7697598343108519171">Utiliser l'appareil photo pour numériser le code QR</translation> <translation id="7699968112832915395">Impossible d'ajouter le compte</translation> <translation id="7701040980221191251">Aucun</translation> @@ -6210,6 +6232,8 @@ <translation id="8184472985242519288">Uniforme</translation> <translation id="8186609076106987817">Le serveur n'a pas trouvé le fichier.</translation> <translation id="8188389033983459049">Vérifiez les paramètres de votre appareil et activez cette option pour continuer</translation> +<translation id="8189306097519446565">Comptes scolaires</translation> +<translation id="8189750580333936930">Bac à sable de confidentialité</translation> <translation id="8190193592390505034">Connexion à <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Gérer vos applications, vos extensions et vos thèmes</translation> <translation id="8195027750202970175">Taille sur le disque</translation> @@ -6903,6 +6927,7 @@ <translation id="8986362086234534611">Supprimer</translation> <translation id="8986494364107987395">Envoyer automatiquement les statistiques d'utilisation et les rapports d'erreur à Google</translation> <translation id="8987927404178983737">Mois</translation> +<translation id="8989823300731803443">Reprendre là où vous en étiez.</translation> <translation id="8990209962746788689">Impossible de créer un code QR</translation> <translation id="8991520179165052608">Le site peut utiliser votre microphone</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 élément}one{# élément}many{# items}other{# éléments}}</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index c8af7c6c..f515825 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">Mode de saisie préféré</translation> <translation id="1335929031622236846">Enregistrer l'appareil</translation> <translation id="1336902454946927954">Empreinte digitale non reconnue. Votre clé de sécurité a été verrouillée. Pour la déverrouiller, saisissez votre code.</translation> +<translation id="1337692097987160377">Partager cet onglet</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> souhaite ouvrir cette application.</translation> <translation id="1338950911836659113">Suppression en cours...</translation> <translation id="13392265090583506">Paramètres d'accessibilité</translation> @@ -1612,6 +1613,7 @@ <translation id="2805756323405976993">Applications</translation> <translation id="2805770823691782631">Informations supplémentaires</translation> <translation id="2806372837663997957">L'appareil avec lequel vous tentez de partager le fichier n'a pas accepté cette opération</translation> +<translation id="2806891468525657116">Le raccourci existe déjà</translation> <translation id="2807517655263062534">Les fichiers téléchargés s'affichent ici</translation> <translation id="2809586584051668049">ainsi que <ph name="NUMBER_ADDITIONAL_DISABLED" /> autre(s) extension(s)</translation> <translation id="2810390687497823527">Si vous ne reconnaissez pas une extension ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez désactiver ou personnaliser les extensions ici.</translation> @@ -5586,6 +5588,7 @@ <translation id="7496732379142025470">Pour économiser la batterie, la détection du mot clé "Ok Google" n'est activée que lorsque vous branchez votre appareil sur une source d'alimentation externe. Pour apporter des modifications, accédez aux paramètres.</translation> <translation id="7497215489070763236">Certificat de l'autorité de certification du serveur</translation> <translation id="7497981768003291373">Aucun journal texte WebRTC n'a été créé récemment.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> demande l'autorisation d'enregistrer le contenu de cet onglet.</translation> <translation id="7502658306369382406">Adresse IPv6</translation> <translation id="7503191893372251637">Type de certificat Netscape</translation> <translation id="7503985202154027481">Une trace de votre visite sur le site sera conservée sur votre clé de sécurité.</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index efb1620..2d50c5d 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Non se atoparon redes</translation> <translation id="1056898198331236512">Advertencia</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Escribe o teu novo PIN. Debe ter como mínimo 1 carácter, que pode ser unha letra, un número ou un carácter doutro tipo.}other{Escribe o teu novo PIN. Debe ter como mínimo de # caracteres, que poden ser letras, números ou caracteres doutros tipos.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> pestanas atopadas para "<ph name="SEARCH_TEXT" />"</translation> <translation id="1060292118287751956">Determina a frecuencia coa que se actualiza a pantalla</translation> <translation id="1061904396131502319">Xa case é hora de facer unha pausa</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Entrada de voz preferida</translation> <translation id="1335929031622236846">Inscribir o teu dispositivo</translation> <translation id="1336902454946927954">Bloqueouse a chave de seguranza porque non se puido recoñecer a túa impresión dixital. Para desbloqueala, escribe o PIN.</translation> +<translation id="1337692097987160377">Compartir esta pestana</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> quere abrir esta aplicación.</translation> <translation id="1338950911836659113">Eliminando...</translation> <translation id="13392265090583506">Accesibilidade</translation> @@ -634,9 +636,11 @@ <translation id="1688935057616748272">Escribe unha letra</translation> <translation id="168991973552362966">Engadir unha impresora que estea cerca</translation> <translation id="1689945336726856614">Copiar &URL</translation> +<translation id="1690248886740053041">Non se puido conectar cunha rede de telefonía móbil. Para obter asistencia técnica, ponte en contacto co teu operador.</translation> <translation id="1692115862433274081">Utilizar outra conta</translation> <translation id="1692118695553449118">A sincronización está activada</translation> <translation id="1692210323591458290">Púrpura escuro</translation> +<translation id="169279809881363536">Non se atopou ningún perfil. Para configurar unha rede nova, escanea o código QR coa cámara do dispositivo ou escribe o código de activación que che proporcionou o teu operador.</translation> <translation id="1697150536837697295">Arte</translation> <translation id="1697686431566694143">Editar ficheiro</translation> <translation id="1698122934742150150">Só sesión do modo de incógnito actual</translation> @@ -1573,6 +1577,7 @@ <translation id="2770465223704140727">Eliminar da lista</translation> <translation id="2770690685823456775">Exporta os teus contrasinais a outro cartafol</translation> <translation id="2770929488047004208">Resolución do monitor</translation> +<translation id="2770954829020464827">Os detalles ocúltanse mentres compartes a pantalla</translation> <translation id="2771268254788431918">Activáronse os datos móbiles</translation> <translation id="2771816809568414714">Queixo</translation> <translation id="2772936498786524345">Ninja</translation> @@ -1609,6 +1614,7 @@ <translation id="2805756323405976993">Aplicacións</translation> <translation id="2805770823691782631">Detalles adicionais</translation> <translation id="2806372837663997957">O dispositivo co que estás tentando compartir o ficheiro non o aceptou</translation> +<translation id="2806891468525657116">O atallo xa existe</translation> <translation id="2807517655263062534">Os ficheiros que descargas aparecen aquí</translation> <translation id="2809586584051668049">e <ph name="NUMBER_ADDITIONAL_DISABLED" /> máis</translation> <translation id="2810390687497823527">Se non recoñeces unha extensión ou se o navegador non funciona como debería, podes desactivar ou personalizar as extensións aquí.</translation> @@ -1940,6 +1946,7 @@ <translation id="3201422919974259695">Os dispositivos USB dispoñibles aparecerán aquí.</translation> <translation id="3202131003361292969">Ruta</translation> <translation id="3202173864863109533">Estase silenciando o audio desta pestana.</translation> +<translation id="3202218848974251205">Illamento de procesos de privacidade</translation> <translation id="3208321278970793882">Aplicación</translation> <translation id="3208584281581115441">Comprobar agora</translation> <translation id="3208703785962634733">Sen confirmar</translation> @@ -2160,6 +2167,7 @@ <translation id="3459697287128633276">Para permitir que a túa conta acceda a Google Play Store, debes autenticala co teu provedor de identidade.</translation> <translation id="3462311546193741693">Pecharase sesión na maioría dos sitios, pero seguirás tendo a sesión iniciada na túa Conta de Google. Por este motivo poden borrarse os datos sincronizados.</translation> <translation id="3462413494201477527">Queres cancelar a configuración da conta?</translation> +<translation id="3464145797867108663">Engadir perfil de traballo</translation> <translation id="346431825526753">Esta é unha conta para nenos xestionada por <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Etiqueta</translation> <translation id="3468999815377931311">Teléfono Android</translation> @@ -2281,6 +2289,7 @@ <translation id="360180734785106144">Ofrecerche funcións novas a medida que estean dispoñibles</translation> <translation id="3602290021589620013">Previsualizar</translation> <translation id="3603622770190368340">Obter certificado de rede</translation> +<translation id="3604193429970465812">Contas secundarias</translation> <translation id="3604713164406837697">Cambiar fondo de pantalla</translation> <translation id="3605780360466892872">Home de negocios</translation> <translation id="3608576286259426129">Vista previa da imaxe do usuario</translation> @@ -2605,6 +2614,7 @@ Queres iniciar <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Non se puido crear o atallo</translation> +<translation id="3943494825379372497">Queres restaurar as aplicacións e as páxinas?</translation> <translation id="3943582379552582368">&Atrás</translation> <translation id="3943857333388298514">Pegar</translation> <translation id="3948116654032448504">&Buscar imaxe en <ph name="SEARCH_ENGINE" /></translation> @@ -2690,6 +2700,7 @@ <translation id="4046013316139505482">Estas extensións non necesitan ver nin cambiar a información deste sitio.</translation> <translation id="4046123991198612571">Pista seguinte</translation> <translation id="4047726037116394521">Ir á páxina de inicio</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# contacto non está dispoñible. Para utilizar con el a función Compartir por Nearby, engade aos teus contactos os enderezos de correo electrónico asociados á súa Conta de Google.}other{# contactos non están dispoñibles. Para utilizar con eles a función Compartir por Nearby, engádelles os enderezos de correo electrónico asociados ás súas Contas de Google.}}</translation> <translation id="4050225813016893843">Método de autenticación</translation> <translation id="4052120076834320548">Minúsculo</translation> <translation id="4056908315660577142">Chegaches ao límite que definiu teu pai ou túa nai para a aplicación de Chrome <ph name="APP_NAME" />. Mañá poderás utilizala durante <ph name="TIME_LIMIT" />.</translation> @@ -3336,6 +3347,7 @@ <translation id="4863769717153320198">A resolución parece de <ph name="WIDTH" /> x <ph name="HEIGHT" /> (predeterminada)</translation> <translation id="4864369630010738180">Iniciando sesión...</translation> <translation id="4864805589453749318">Indica se será o teu pai ou a túa nai quen che dará permiso para engadir unha conta de centro educativo.</translation> +<translation id="4866265760644917470">O perfil engadiuse correctamente.</translation> <translation id="486635084936119914">Abre determinados tipos de ficheiro automaticamente despois da descarga</translation> <translation id="48704129375571883">Engadir funcións adicionais</translation> <translation id="4870758487381879312">Introduce o contrasinal indicado polo administrador para obter información de configuración</translation> @@ -3619,6 +3631,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Cambiouse correctamente o contrasinal vulnerado. Quédache # máis. Chrome recomenda comprobar este contrasinal agora.}other{Cambiouse correctamente o contrasinal vulnerado. Quédanche # máis. Chrome recomenda comprobar estes contrasinais agora.}}</translation> <translation id="5207949376430453814">Destacar o cursor de texto</translation> <translation id="5209320130288484488">Non se atopou ningún dispositivo</translation> +<translation id="5209572028385096813">Family Link xestiona este usuario</translation> <translation id="5210365745912300556">Pechar pestana</translation> <translation id="5213481667492808996">Xa podes usar o servizo de datos <ph name="NAME" /></translation> <translation id="5213891612754844763">Mostrar configuración de proxy</translation> @@ -3704,6 +3717,7 @@ <translation id="5302048478445481009">Idioma</translation> <translation id="5302932258331363306">Mostrar substitucións</translation> <translation id="5304276686222516262">Non se puido descargar a lista de contactos. Comproba a conexión de rede ou proba a <a href="#" id="tryAgainLink">tentalo de novo</a>.</translation> +<translation id="5305145881844743843"><ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> xestiona esta conta</translation> <translation id="5305688511332277257">Ningún instalado</translation> <translation id="5307030433605830021">A fonte non é compatible</translation> <translation id="5308380583665731573">Conectar</translation> @@ -4084,6 +4098,7 @@ <translation id="5740820643029013514">Usar mensaxaría máis silenciosa (recomendado)</translation> <translation id="574104302965107104">Proxección da pantalla</translation> <translation id="574209121243317957">Ton</translation> +<translation id="5742505912938664543">Ao engadir aquí unha conta secundaria, podes usala para navegar pola Web e descargar aplicacións, así como para consultar a túa conta de Gmail e outros servizos de Google.</translation> <translation id="5746169159649715125">Gardar como PDF</translation> <translation id="5747552184818312860">Data de caducidade</translation> <translation id="5747785204778348146">Programador: inestable</translation> @@ -4424,6 +4439,7 @@ <translation id="6129953537138746214">Espazo</translation> <translation id="6130692320435119637">Engadir wifi</translation> <translation id="6136114942382973861">Pechar barra de descargas</translation> +<translation id="6136287496450963112">A túa chave de seguranza non está protexida cun PIN. Para xestionar as impresións dixitais, primeiro crea un PIN.</translation> <translation id="6137767437444130246">Certificado de usuario</translation> <translation id="6138680304137685902">Sinatura X9.62 ECDSA con SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, sen rede dispoñible</translation> @@ -4604,6 +4620,7 @@ <translation id="6331566915566907158">Axudar a mellorar funcións e rendemento de Chrome OS</translation> <translation id="6331818708794917058">Os sitios poden pedirche permiso para conectarse aos dispositivos MIDI</translation> <translation id="6333064448949140209">Enviarase o ficheiro a Google para proceder á depuración</translation> +<translation id="6334444530352320327">As aplicacións e a configuración do sistema operativo sincronizaranse cos Chromebook nos que teñas a sesión iniciada con esta conta. <ph name="LINK_BEGIN" />Configuración de sincronización<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Todos os sitios poden mostrarche calquera anuncio</translation> <translation id="6339668969738228384">Crea un novo perfil para <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Non se puido establecer conexión co servidor. Comproba a conexión de rede e téntao de novo. Se o problema persiste, reinicia o dispositivo Chromebook.</translation> @@ -4905,6 +4922,7 @@ <translation id="6709133671862442373">Noticias</translation> <translation id="6709357832553498500">Conectar a través de <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Anterior</translation> +<translation id="6713233729292711163">Engadir perfil de traballo</translation> <translation id="6715803357256707211">Produciuse un erro durante a instalación da aplicación Linux. Fai clic na notificación para ver os detalles.</translation> <translation id="671619610707606484">Esta acción borrará <ph name="TOTAL_USAGE" /> de datos almacenados polos sitios</translation> <translation id="671928215901716392">Bloquear pantalla</translation> @@ -5273,6 +5291,7 @@ <translation id="7121362699166175603">Borra o historial e os completados automáticos na barra de enderezos. É posible que a túa conta de Google teña outras formas do historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Modo de programador</translation> <translation id="7121728544325372695">Trazos intelixentes</translation> +<translation id="7122353087820324370">As aplicacións e a configuración do sistema operativo non se sincronizan coas contas secundarias.</translation> <translation id="7123030151043029868">Sitios que poden descargar automaticamente varios ficheiros</translation> <translation id="7123360114020465152">A impresora xa non é compatible</translation> <translation id="7125148293026877011">Eliminar Crostini</translation> @@ -5581,12 +5600,14 @@ <translation id="7496732379142025470">Para aforrar batería, "Ok Google" só funciona cando o dispositivo está conectado á corrente. Para facer cambios, vai a Configuración.</translation> <translation id="7497215489070763236">Certificado de CA do servidor</translation> <translation id="7497981768003291373">Non se capturou ningún rexistro WebRTC recentemente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> solicita permiso para capturar os contidos desta pestana.</translation> <translation id="7502658306369382406">Enderezo IPv6</translation> <translation id="7503191893372251637">Tipo de certificado de Netscape</translation> <translation id="7503985202154027481">Conservarase un rexistro da túa visita a este sitio na túa chave de seguranza.</translation> <translation id="750509436279396091">Abrir cartafol de descargas</translation> <translation id="7506093026325926984">Este contrasinal gardarase neste dispositivo</translation> <translation id="7506130076368211615">Configurar nova rede</translation> +<translation id="7506242536428928412">Para usar a túa nova chave de seguranza, configura un PIN novo</translation> <translation id="7506541170099744506">O teu <ph name="DEVICE_TYPE" /> inscribiuse correctamente para a xestión de empresas.</translation> <translation id="7507207699631365376">Consulta a <ph name="BEGIN_LINK" />Política de privacidade<ph name="END_LINK" /> deste fornecedor</translation> <translation id="7507930499305566459">Certificado de resposta de estado</translation> @@ -5750,6 +5771,7 @@ <translation id="7691077781194517083">Non se puido restablecer esta chave de seguranza. Código de erro: <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Actualización de Crostini</translation> <translation id="7696063401938172191">No teu teléfono <ph name="PHONE_NAME" />:</translation> +<translation id="7697166915480294040">Os detalles ocúltanse mentres compartes a pantalla</translation> <translation id="7697598343108519171">Utilizar cámara para escanear código QR</translation> <translation id="7699968112832915395">Non se puido engadir a conta</translation> <translation id="7701040980221191251">Ningunha</translation> @@ -6206,6 +6228,8 @@ <translation id="8184472985242519288">Uniforme</translation> <translation id="8186609076106987817">O servidor non puido atopar o ficheiro.</translation> <translation id="8188389033983459049">Comproba a configuración do teu dispositivo e activa a función para continuar</translation> +<translation id="8189306097519446565">Contas de centro educativo</translation> +<translation id="8189750580333936930">Illamento de procesos de privacidade</translation> <translation id="8190193592390505034">Establecendo conexión con <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Xestiona as túas aplicacións, extensións e temas</translation> <translation id="8195027750202970175">Tamaño en disco</translation> @@ -6897,6 +6921,7 @@ <translation id="8986362086234534611">Borrar</translation> <translation id="8986494364107987395">Enviar estatísticas de uso e informes de erros a Google automaticamente</translation> <translation id="8987927404178983737">Mes</translation> +<translation id="8989823300731803443">Continúa onde o deixaches.</translation> <translation id="8990209962746788689">Non se puido crear o código QR</translation> <translation id="8991520179165052608">O sitio pode usar o teu micrófono</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 artigo}other{# artigos}}</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index a7feee2..7d7102d 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">પસંદગીનું ઇનપુટ</translation> <translation id="1335929031622236846">તમારા ડિવાઇસની નોંધણી કરાવો</translation> <translation id="1336902454946927954">તમારી સિક્યુરિટી કી લૉક કરેલી હોવાને કારણે તમારી ફિંગરપ્રિન્ટ ઓળખી શક્યાં નહીં. તેને અનલૉક કરવા માટે, તમારો પિન દાખલ કરો.</translation> +<translation id="1337692097987160377">આ ટૅબ શેર કરો</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> આ ઍપ્લિકેશન ખોલવા માગે છે.</translation> <translation id="1338950911836659113">કાઢી રહ્યું છે ...</translation> <translation id="13392265090583506">ઍક્સેસિબિલિટી</translation> @@ -1607,6 +1608,7 @@ <translation id="2805756323405976993">એપ્સ</translation> <translation id="2805770823691782631">વધારાની વિગતો</translation> <translation id="2806372837663997957">તમે જે ડિવાઇસ સાથે શેર કરવાનો પ્રયાસ કરો છો, તેણે વિનંતી સ્વીકારી નથી</translation> +<translation id="2806891468525657116">શૉર્ટકટ પહેલેથી અસ્તિત્વમાં છે</translation> <translation id="2807517655263062534">તમે ડાઉનલોડ કરેલી ફાઇલો અહીં દેખાશે</translation> <translation id="2809586584051668049">અને <ph name="NUMBER_ADDITIONAL_DISABLED" /> વધુ</translation> <translation id="2810390687497823527">જો તમે એક્સ્ટેંશનને ઓળખતા ન હો અથવા તમારું બ્રાઉઝર અપેક્ષા પ્રમાણે કામ ન કરતું હોય, તો તમે અહીં એક્સ્ટેંશનને કસ્ટમાઇઝ કરી શકો છો અથવા બંધ કરી શકો છો.</translation> @@ -5582,6 +5584,7 @@ <translation id="7496732379142025470">બૅટરીની બચત કરવા માટે, જ્યારે તમારું ડિવાઇસ પાવર સ્રોત સાથે કનેક્ટ કરેલું હોય ત્યારે જ "ઓકે Google” ચાલુ હોય છે. ફેરફારો કરવા માટે, સેટિંગ પર જાઓ.</translation> <translation id="7497215489070763236">સર્વર CA પ્રમાણપત્ર</translation> <translation id="7497981768003291373">તમારી પાસે તાજેતરમાં કૅપ્ચર કરેલ કોઈ WebRTC ટેક્સ્ટ લૉગ નથી.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> આ ટૅબના કન્ટેન્ટને કૅપ્ચર કરવા માટે પરવાનગી માગી રહ્યાં છે.</translation> <translation id="7502658306369382406">IPv6 સરનામું</translation> <translation id="7503191893372251637">નેટસ્કેપ પ્રમાણપત્રનો પ્રકાર</translation> <translation id="7503985202154027481">આ સાઇટની તમારી મુલાકાતનો રેકોર્ડ તમારા સુરક્ષા કોડ પર રાખવામાં આવશે.</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index c301dc1..d8b01c3 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">पसंदीदा इनपुट</translation> <translation id="1335929031622236846">अपना डिवाइस रजिस्टर करें</translation> <translation id="1336902454946927954">फ़िंगरप्रिंट की पहचान न होने की वजह से आपकी सुरक्षा कुंजी लॉक कर दी गई है. इसे अनलॉक करने के लिए, अपना पिन डालें.</translation> +<translation id="1337692097987160377">इस टैब को शेयर करें</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> इस ऐप्लिकेशन को खोलना चाहता है.</translation> <translation id="1338950911836659113">हटाए जा रहे हैं...</translation> <translation id="13392265090583506">सुलभता सेटिंग</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">ऐप्स</translation> <translation id="2805770823691782631">ज़्यादा जानकारी</translation> <translation id="2806372837663997957">आप जिस डिवाइस के साथ फ़ाइल को शेयर करना चाहते हैं उसने इस फ़ाइल को अस्वीकार कर दिया है</translation> +<translation id="2806891468525657116">शॉर्टकट पहले से मौजूद है</translation> <translation id="2807517655263062534">आपकी डाउनलोड की गई फ़ाइलें यहां दिखाई देती हैं</translation> <translation id="2809586584051668049">और <ph name="NUMBER_ADDITIONAL_DISABLED" /> और</translation> <translation id="2810390687497823527">अगर आप किसी एक्सटेंशन को नहीं पहचानते हैं या आपका ब्राउज़र उम्मीद के मुताबिक काम नहीं कर रहा है, तो आप यहां एक्सटेंशन को बंद कर सकते हैं या उन्हें पसंद के मुताबिक बना सकते हैं.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">बैटरी बचाने के लिए, “Ok Google” सिर्फ़ तब चालू होता है जब आपका डिवाइस चार्जिंग पर लगा होता है. बदलाव करने के लिए, सेटिंग पर जाएं.</translation> <translation id="7497215489070763236">सर्वर CA प्रमाणपत्र</translation> <translation id="7497981768003291373">आपके पास हाल ही में कैप्चर किया गया कोई WebRTC लेख लॉग नहीं है.</translation> +<translation id="7498614236023455416">इस टैब के कॉन्टेंट को कैप्चर करने के लिए, <ph name="TARGET_NAME" /> अनुमति मांग रहा है.</translation> <translation id="7502658306369382406">IPv6 पता</translation> <translation id="7503191893372251637">Netscape प्रमाणपत्र प्रकार</translation> <translation id="7503985202154027481">आपके इस साइट पर आने का रिकॉर्ड आपकी सुरक्षा कुंजी पर रह जाएगा.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index d2c51a5c..b223f55 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Preferirani unos</translation> <translation id="1335929031622236846">Registrirajte svoj uređaj</translation> <translation id="1336902454946927954">Sigurnosni je ključ zaključan jer vaš otisak prsta nije prepoznat. Da biste ga otključali, unesite PIN.</translation> +<translation id="1337692097987160377">Dijeli ovu karticu</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> želi otvoriti ovu aplikaciju.</translation> <translation id="1338950911836659113">Brisanje...</translation> <translation id="13392265090583506">Pristupačnost</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatne pojedinosti</translation> <translation id="2806372837663997957">Uređaj s kojim pokušavate dijeliti nije prihvatio</translation> +<translation id="2806891468525657116">Prečac već postoji</translation> <translation id="2807517655263062534">Ovdje se prikazuju datoteke koje ste preuzeli</translation> <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ako ne prepoznajete proširenje ili ako vaš preglednik ne radi kako treba, ovdje možete isključiti proširenja ili ih prilagoditi.</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 9148955..0a3b153e 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Elsődleges bevitel</translation> <translation id="1335929031622236846">Az eszköz regisztrálása</translation> <translation id="1336902454946927954">A biztonsági kulcsot zároltuk, mert nem tudtuk azonosítani az ujjlenyomatot. A feloldáshoz adja meg a PIN-kódot.</translation> +<translation id="1337692097987160377">Lap megosztása</translation> <translation id="1338802252451106843">A(z) <ph name="ORIGIN" /> meg akarja nyitni ezt az alkalmazást.</translation> <translation id="1338950911836659113">Törlés…</translation> <translation id="13392265090583506">Kisegítő lehetőségek</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Alkalmazások</translation> <translation id="2805770823691782631">További adatok</translation> <translation id="2806372837663997957">A másik eszköz nem fogadta el a megosztást</translation> +<translation id="2806891468525657116">Ez a billentyűparancs már létezik</translation> <translation id="2807517655263062534">A letöltött fájlok itt jelennek meg</translation> <translation id="2809586584051668049">és <ph name="NUMBER_ADDITIONAL_DISABLED" /> további</translation> <translation id="2810390687497823527">Ha nem ismeri fel valamelyik bővítményt, vagy ha a böngésző nem a vártnak megfelelően működik, itt kikapcsolhatja és személyre szabhatja a bővítményeket.</translation> @@ -5601,6 +5603,7 @@ <translation id="7496732379142025470">Az akkumulátor üzemidejének növelése érdekében az „Ok Google” csak akkor van bekapcsolva, amikor az eszköz áramforrásra csatlakozik. Ezt a viselkedést a Beállítások menüben módosíthatja.</translation> <translation id="7497215489070763236">Szerver CA tanúsítványa</translation> <translation id="7497981768003291373">Nincsenek mostanában rögzített szöveges WebRTC-naplói.</translation> +<translation id="7498614236023455416">A(z) <ph name="TARGET_NAME" /> engedélyt kér az ezen a lapon szereplő tartalmak rögzítéséhez.</translation> <translation id="7502658306369382406">IPv6-cím</translation> <translation id="7503191893372251637">Netscape-tanúsítvány típusa</translation> <translation id="7503985202154027481">A biztonsági hardverkulcs tárolni fogja, hogy Ön felkereste ezt a webhelyet.</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index a4489736c..95374b8 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Ցանց չկա</translation> <translation id="1056898198331236512">Զգուշացում</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Մուտքագրեք ձեր նոր PIN կոդը։ PIN կոդը պետք է կազմված լինի առնվազն մեկ նիշից և կարող է պարունակել տառեր, թվեր և այլ նշաններ։}one{Մուտքագրեք ձեր նոր PIN կոդը։ PIN կոդը պետք է կազմված լինի առնվազն # նիշից և կարող է պարունակել տառեր, թվեր և այլ նշաններ։}other{Մուտքագրեք ձեր նոր PIN կոդը։ PIN կոդը պետք է կազմված լինի առնվազն # նիշից և կարող է պարունակել տառեր, թվեր և այլ նշաններ։}}</translation> <translation id="1059944192885972544">«<ph name="SEARCH_TEXT" />» հարցումով որոնման համար գտնվել է <ph name="NUM" /> ներդիր</translation> <translation id="1060292118287751956">Սահմանում է էկրանի թարմացման հաճախականությունը</translation> <translation id="1061904396131502319">Շուտով ընդմիջման ժամն է</translation> @@ -308,6 +309,7 @@ <translation id="133535873114485416">Ներածման նախընտրելի եղանակ</translation> <translation id="1335929031622236846">Գրանցեք ձեր սարքը</translation> <translation id="1336902454946927954">Անվտանգության բանալին կողպված է, քանի որ չի հաջողվել ճանաչել ձեր մատնահետքը։ Ապակողպելու համար մուտքագրեք ձեր PIN կոդը։</translation> +<translation id="1337692097987160377">Կիսվել</translation> <translation id="1338802252451106843">Կայքին (<ph name="ORIGIN" />) անհրաժեշտ է բացել այս հավելվածը:</translation> <translation id="1338950911836659113">Ջնջում…</translation> <translation id="13392265090583506">Հատուկ գործառույթներ</translation> @@ -637,9 +639,11 @@ <translation id="1688935057616748272">Մուտքագրեք տառ</translation> <translation id="168991973552362966">Ավելացրեք մոտակայքում գտնվող տպիչ</translation> <translation id="1689945336726856614">Պատճենել &URL-ը</translation> +<translation id="1690248886740053041">Չհաջողվեց միանալ բջջային ցանցին։ Տեխնիկական աջակցության համար կապվեք օպերատորի հետ։</translation> <translation id="1692115862433274081">Օգտագործել այլ հաշիվ</translation> <translation id="1692118695553449118">Համաժամացումը միացված է</translation> <translation id="1692210323591458290">Մուգ մանուշակագույն</translation> +<translation id="169279809881363536">Պրոֆիլներ չեն գտնվել։ Նոր ցանց կարգավորելու համար սկանավորեք QR կոդը սարքի տեսախցիկի միջոցով կամ մուտքագրեք օպերատորի տրամադրած ակտիվացման կոդը։</translation> <translation id="1697150536837697295">Արվեստ</translation> <translation id="1697686431566694143">Փոփոխել ֆայլը</translation> <translation id="1698122934742150150">Միայն ընթացիկ ինկոգնիտո աշխատաշրջանում</translation> @@ -1576,6 +1580,7 @@ <translation id="2770465223704140727">Հեռացնել ցանկից</translation> <translation id="2770690685823456775">Արտահանեք ձեր գաղտնաբառերը այլ պանակ</translation> <translation id="2770929488047004208">Էկրանի լուծաչափը</translation> +<translation id="2770954829020464827">Էկրանի ցուցադրման ժամանակ ծանուցումների մանրամասները թաքցվում են</translation> <translation id="2771268254788431918">Բջջային ինտերնետը միացված է</translation> <translation id="2771816809568414714">Պանիր</translation> <translation id="2772936498786524345">Խորամանկ</translation> @@ -1612,6 +1617,7 @@ <translation id="2805756323405976993">Հավելվածներ</translation> <translation id="2805770823691782631">Լրացուցիչ տեղեկություններ</translation> <translation id="2806372837663997957">Սարքը, որի հետ փորձում եք կիսվել ֆայլով, չի ընդունում այն։</translation> +<translation id="2806891468525657116">Դյուրանցումն արդեն գոյություն ունի</translation> <translation id="2807517655263062534">Ձեր ներբեռնած ֆայլերը կցուցադրվեն այստեղ</translation> <translation id="2809586584051668049">ու ևս <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Եթե ընդլայնումը ձեզ անծանոթ է, կամ եթե ձեր դիտարկիչը սխալներով է աշխատում, կարող եք անջատել կամ կարգավորել ընդլայնումներն այստեղ։</translation> @@ -1943,6 +1949,7 @@ <translation id="3201422919974259695">Հասանելի USB սարքերը կցուցադրվեն այստեղ:</translation> <translation id="3202131003361292969">Ուղի</translation> <translation id="3202173864863109533">Այս ներդիրի ձայնն անջատված է:</translation> +<translation id="3202218848974251205">Գաղտնիության պաշտպանված միջավայր</translation> <translation id="3208321278970793882">Հավելված</translation> <translation id="3208584281581115441">Ստուգել հիմա</translation> <translation id="3208703785962634733">Չհաստատված</translation> @@ -2163,6 +2170,7 @@ <translation id="3459697287128633276">Google Play Խանութը ձեր հաշվին հասանելի դարձնելու համար մուտքագրեք նույնակացնացման մատակարարի կողմից տրամադրված տվյալները։</translation> <translation id="3462311546193741693">Դուք դուրս կգրվեք կայքերի մեծ մասից, սակայն կմնաք Google հաշվում, որպեսզի համաժամացված տվյալները հնարավոր լինի ջնջել:</translation> <translation id="3462413494201477527">Չեղարկե՞լ հաշվի կարգավորումը:</translation> +<translation id="3464145797867108663">Ավելացնել աշխատանքային պրոֆիլ</translation> <translation id="346431825526753">Սա երեխայի հաշիվ է, որը կառավարվում է <ph name="CUSTODIAN_EMAIL" />-ի կողմից:</translation> <translation id="3468298837301810372">Պիտակ</translation> <translation id="3468999815377931311">Android հեռախոս</translation> @@ -2284,6 +2292,7 @@ <translation id="360180734785106144">Առաջարկել նոր գործառույթներ, հենց որ դրանք հասանելի լինեն</translation> <translation id="3602290021589620013">Նախադիտում</translation> <translation id="3603622770190368340">Ցանցային վկայագրի ստացում</translation> +<translation id="3604193429970465812">Երկրորդական հաշիվներ</translation> <translation id="3604713164406837697">Փոխել պաստառը</translation> <translation id="3605780360466892872">Գործարար</translation> <translation id="3608576286259426129">Օգտատիրոջ պատկերի նախադիտում</translation> @@ -2608,6 +2617,7 @@ Ցանկանո՞ւմ եք անցնել <ph name="CONTROL_PANEL_APPLET_NAME" />:</translation> <translation id="394183848452296464">Չհաջողվեց դյուրանցում ստեղծել</translation> +<translation id="3943494825379372497">Վերականգնե՞լ հավելվածներն ու էջերը</translation> <translation id="3943582379552582368">&Հետ</translation> <translation id="3943857333388298514">Տեղադրել</translation> <translation id="3948116654032448504">Որոնել պատկեր <ph name="SEARCH_ENGINE" />-ում</translation> @@ -2693,6 +2703,7 @@ <translation id="4046013316139505482">Այս ընդլայնումներին անհրաժեշտ չէ տեսնել և փոխել այս կայքի տվյալները։</translation> <translation id="4046123991198612571">Հաջորդը</translation> <translation id="4047726037116394521">Անցնել հիմնական էկրան</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# կոնտակտ հասանելի չէ։ Այդ կոնտակտի հետ ֆայլեր փոխանակելու համար նրա Google հաշվի հետ կապված էլ․ հասցեն ավելացրեք ձեր կոնտակտներում։}one{# կոնտակտ հասանելի չէ։ Այդ կոնտակտի հետ ֆայլեր փոխանակելու համար նրա Google հաշվի հետ կապված էլ․ հասցեն ավելացրեք ձեր կոնտակտներում։}other{# կոնտակտ հասանելի չէ։ Այդ կոնտակտների հետ ֆայլեր փոխանակելու համար նրանց Google հաշվի հետ կապված էլ․ հասցեներն ավելացրեք ձեր կոնտակտներում։}}</translation> <translation id="4050225813016893843">Նույնականացման եղանակը</translation> <translation id="4052120076834320548">Շատ փոքր</translation> <translation id="4056908315660577142">Դուք սպառել եք ձեր ծնողի կողմից <ph name="APP_NAME" /> հավելվածի համար սահմանված ժամանակը։ Վաղը կարող եք օգտագործել այն <ph name="TIME_LIMIT" />։</translation> @@ -3339,6 +3350,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" />x<ph name="HEIGHT" /> (կանխադրված)</translation> <translation id="4864369630010738180">Մուտք...</translation> <translation id="4864805589453749318">Ընտրեք ծնողին, որը ուսումնական հաշիվ ավելացնելու թույլտվություն է տալիս։</translation> +<translation id="4866265760644917470">Պրոֆիլն ավելացվեց։</translation> <translation id="486635084936119914">Ֆայլերի որոշակի տեսակներ ներբեռնումից հետո ավտոմատ բացել</translation> <translation id="48704129375571883">Ավելացնել լրացուցիչ գործառույթներ</translation> <translation id="4870758487381879312">Մուտքագրեք ադմինիստրատորի տրամադրած գաղտնաբառը՝ կազմաձևման մասին տեղեկությունները տեսնելու համար</translation> @@ -3623,6 +3635,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Կոտրված գաղտնաբառը փոխվեց։ Դուք ունեք ևս # կոտրված գաղտնաբառ։ Chrome-ը խորհուրդ է տալիս անհապաղ ստուգել այս գաղտնաբառը։}one{Կոտրված գաղտնաբառը փոխվեց։ Դուք ունեք ևս # կոտրված գաղտնաբառ։ Chrome-ը խորհուրդ է տալիս անհապաղ ստուգել այս գաղտնաբառերը։}other{Կոտրված գաղտնաբառը փոխվեց։ Դուք ունեք ևս # կոտրված գաղտնաբառ։ Chrome-ը խորհուրդ է տալիս անհապաղ ստուգել այս գաղտնաբառերը։}}</translation> <translation id="5207949376430453814">Ընդգծել տեքստի նշորդը</translation> <translation id="5209320130288484488">Սարքեր չեն գտնվել</translation> +<translation id="5209572028385096813">Այս օգտատերը կառավարվում է Family Link-ի կողմից</translation> <translation id="5210365745912300556">Փակել ներդիրը</translation> <translation id="5213481667492808996">Տվյալների փոխանցման «<ph name="NAME" />» ծառայությունը պատրաստ է օգտագործման</translation> <translation id="5213891612754844763">Ցուցադրել միջնորդ սերվերի կարգավորումները</translation> @@ -3710,6 +3723,7 @@ <translation id="5302048478445481009">Լեզու</translation> <translation id="5302932258331363306">Ցուցադրել փոխարինողներին</translation> <translation id="5304276686222516262">Չհաջողվեց ներբեռնել կոնտակտների ցանկը։ Ստուգեք կապը կամ <a href="#" id="tryAgainLink">նորից փորձեք</a>։</translation> +<translation id="5305145881844743843">Այս հաշիվը կառավարվում է <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> տիրույթի կողմից</translation> <translation id="5305688511332277257">Տեղադրված չկա</translation> <translation id="5307030433605830021">Աղբյուրը չի աջակցվում</translation> <translation id="5308380583665731573">Կապակցվել</translation> @@ -4090,6 +4104,7 @@ <translation id="5740820643029013514">Օգտագործել անձայն հաղորդագրությունները (խորհուրդ է տրվում)</translation> <translation id="574104302965107104">Էկրանի հայելապատճենում</translation> <translation id="574209121243317957">Ձայնի մակարդակը</translation> +<translation id="5742505912938664543">Եթե դուք երկրորդական հաշիվ ավելացնեք այստեղ, կկարողանաք այն օգտագործել կայքեր այցելելու, հավելվածներ ներբեռնելու, ինչպես նաև Gmail-ի և Google-ի այլ ծառայությունների հետ աշխատելու համար։</translation> <translation id="5746169159649715125">Պահել որպես PDF</translation> <translation id="5747552184818312860">Սպառվում է</translation> <translation id="5747785204778348146">Մշակողների վարկած - անկայուն</translation> @@ -4430,6 +4445,7 @@ <translation id="6129953537138746214">Բացատ</translation> <translation id="6130692320435119637">Ավելացնել Wi-Fi</translation> <translation id="6136114942382973861">Փակել ներբեռնումների գոտին</translation> +<translation id="6136287496450963112">Անվտանգության բանալին պաշտպանված չէ PIN-ով: Մատնահետքերի տվյալները կառավարելու համար նախ ստեղծեք PIN կոդ:</translation> <translation id="6137767437444130246">Օգտատիրոջ հավաստագիր</translation> <translation id="6138680304137685902">X9.62 ECDSA ստորագրություն SHA-384-ով</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ցանց չկա</translation> @@ -4610,6 +4626,7 @@ <translation id="6331566915566907158">Օգնել ավելի լավը դարձնել Chrome OS-ի գործառույթներն ու աշխատանքը</translation> <translation id="6331818708794917058">Կայքերը կարող են MIDI սարքերին միանալու թույլտվություն խնդրել</translation> <translation id="6333064448949140209">Վրիպազերծման համար ֆայլը կուղարկվի Google-ին</translation> +<translation id="6334444530352320327">Ձեր հավելվածները և OS-ի կարգավորումները կհամաժամացվեն բոլոր Chromebook սարքերում, որոնցում մտել եք այս հաշիվ։<ph name="LINK_BEGIN" />Համաժամացման կարգավորումներ<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Բոլոր կայքերը կարող են գովազդ ցուցադրել</translation> <translation id="6339668969738228384">Ստեղծել նոր պրոֆիլ <ph name="USER_EMAIL_ADDRESS" />-ի համար</translation> <translation id="6340017061976355871">Չհաջողվեց միանալ սերվերին։ Ստուգեք կապը և նորից փորձեք: Եթե խնդիրը չվերանա, վերաբեռնեք Chromebook-ը։</translation> @@ -4911,6 +4928,7 @@ <translation id="6709133671862442373">Նորություններ</translation> <translation id="6709357832553498500">Միանալ՝ օգտագործելով <ph name="EXTENSIONNAME" />-ը</translation> <translation id="6710213216561001401">Նախորդը</translation> +<translation id="6713233729292711163">Ավելացնել աշխատանքային պրոֆիլ</translation> <translation id="6715803357256707211">Լինուքսի հավելվածը տեղադրելիս սխալ առաջացավ։ Մանրամասների համար սեղմեք ծանուցման վրա։</translation> <translation id="671619610707606484">Կայքերի կողմից պահված <ph name="TOTAL_USAGE" /> ծավալով տվյալները կջնջվեն։</translation> <translation id="671928215901716392">Կողպել էկրանը</translation> @@ -5279,6 +5297,7 @@ <translation id="7121362699166175603">Մաքրում է պատմությունն ու ինքնալրացումները հասցեագոտում: Ձեր Google հաշվում կարող են լինել այցելությունների պատմության այլ ձևեր ևս: Դրանք կարող եք գտնել <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> էջում:</translation> <translation id="7121438501124788993">Մշակողի ռեժիմ</translation> <translation id="7121728544325372695">Խելացի գծիկներ</translation> +<translation id="7122353087820324370">Հավելվածներն ու OS-ի կարգավորումները չեն համաժամացվում երկրորդական հաշիվների հետ։</translation> <translation id="7123030151043029868">Թույլատրվում է ավտոմատ ներբեռնել մի քանի ֆայլ</translation> <translation id="7123360114020465152">Այլևս չի աջակցվում</translation> <translation id="7125148293026877011">Ջնջել Crostini-ն</translation> @@ -5587,12 +5606,14 @@ <translation id="7496732379142025470">Մարտկոցի լիցքը տնտեսելու համար «Ok Google» գործառույթն ակտիվ է, միայն երբ սարքը միացված է սնուցման աղբյուրին: Փոփոխություններ անելու համար անցեք կարգավորումներ:</translation> <translation id="7497215489070763236">Սերվերի CA հավաստագիր</translation> <translation id="7497981768003291373">Վերջերս ստեղծված WebRTC տեքստային մատյաններ չկան:</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> կայքին անհրաժեշտ է թույլտվություն՝ ներդիրների բովանդակությունը առբերելու համար։</translation> <translation id="7502658306369382406">IPv6 հասցե</translation> <translation id="7503191893372251637">Netscape-ի վկայագրի տեսակ</translation> <translation id="7503985202154027481">Անվտանգության բանալու վրա կպահվի նշում այս կայքի այցելության մասին:</translation> <translation id="750509436279396091">Բացել ներբեռնումների պանակը</translation> <translation id="7506093026325926984">Այս գաղտնաբառը կպահվի այս սարքում</translation> <translation id="7506130076368211615">Նոր ցանցի կարգավորում</translation> +<translation id="7506242536428928412">Անվտանգության նոր բանալին օգտագործելու համար մուտքագրեք ձեր նոր PIN կոդը։</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> սարքը բարեհաջող գրանցվել է ձեռնարկության կողմից կառավարման համար:</translation> <translation id="7507207699631365376">Տեսնել այս մատակարարի <ph name="BEGIN_LINK" />գաղտնիության քաղաքականությունը<ph name="END_LINK" /></translation> <translation id="7507930499305566459">Կարգավիճակի պատասխանիչի վկայագիր</translation> @@ -5756,6 +5777,7 @@ <translation id="7691077781194517083">Չհաջողվեց զրոյացնել անվտանգության բանալու կարգավորումները։ Սխալի կոդը՝ <ph name="ERROR_CODE" />:</translation> <translation id="7691698019618282776">Crostini-ի նորացում</translation> <translation id="7696063401938172191">Ձեր «<ph name="PHONE_NAME" />» հեռախոսում՝</translation> +<translation id="7697166915480294040">Էկրանի ցուցադրման ժամանակ ծանուցումների մանրամասները թաքցվում են</translation> <translation id="7697598343108519171">Սկանավորել QR կոդը տեսախցիկի միջոցով</translation> <translation id="7699968112832915395">Չհաջողվեց ավելացնել հաշիվը</translation> <translation id="7701040980221191251">Չկա</translation> @@ -6211,6 +6233,8 @@ <translation id="8184472985242519288">Միանման</translation> <translation id="8186609076106987817">Սերվերը չկարողացավ գտնել ֆայլը:</translation> <translation id="8188389033983459049">Շարունակելու համար ստուգեք սարքի կարգավորումները և միացրեք Bluetooth-ը</translation> +<translation id="8189306097519446565">Ուսումնական հաշիվներ</translation> +<translation id="8189750580333936930">Գաղտնիության պաշտպանված միջավայր</translation> <translation id="8190193592390505034">Կապակցվում է <ph name="PROVIDER_NAME" />-ին</translation> <translation id="8191230140820435481">Կառավարել հավելվածները, ընդլայնումները և թեմաները</translation> <translation id="8195027750202970175">Սկավառակի տարածքը</translation> @@ -6903,6 +6927,7 @@ <translation id="8986362086234534611">Հեռացնել</translation> <translation id="8986494364107987395">Ավտոմատ Google-ին ուղարկել օգտագործման վիճակագրությունները և խափանումների մասին հաշվետվությունները</translation> <translation id="8987927404178983737">Ամիս</translation> +<translation id="8989823300731803443">Շարունակեք աշխատանքը նույն տեղից։</translation> <translation id="8990209962746788689">Չհաջողվեց ստեղծել QR կոդը</translation> <translation id="8991520179165052608">Կայքը կարող է օգտագործել ձեր խոսափողը</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 տարր}one{# տարր}other{# տարր}}</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index d637782e..17a1957 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Preferensi masukan</translation> <translation id="1335929031622236846">Daftarkan perangkat Anda</translation> <translation id="1336902454946927954">Kunci keamanan Anda dikunci karena sidik jari Anda tidak dapat dikenali. Untuk membuka kuncinya, masukkan PIN.</translation> +<translation id="1337692097987160377">Bagikan tab ini</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ingin membuka aplikasi ini.</translation> <translation id="1338950911836659113">Menghapus...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">Apl</translation> <translation id="2805770823691782631">Detail tambahan</translation> <translation id="2806372837663997957">Perangkat yang Anda coba ajak berbagi tidak menerima</translation> +<translation id="2806891468525657116">Pintasan sudah ada</translation> <translation id="2807517655263062534">File yang Anda download muncul di sini</translation> <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lainnya</translation> <translation id="2810390687497823527">Jika Anda tidak mengenali ekstensi, atau jika browser tidak berfungsi sesuai harapan, Anda dapat menonaktifkan atau menyesuaikan ekstensi di sini.</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">Untuk menghemat baterai, “Ok Google” hanya akan aktif saat perangkat terhubung ke sumber listrik. Untuk melakukan perubahan, buka Setelan.</translation> <translation id="7497215489070763236">Sertifikat CA server</translation> <translation id="7497981768003291373">Anda tidak memiliki log teks WebRTC yang direkam baru-baru ini.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> meminta izin untuk merekam konten tab ini.</translation> <translation id="7502658306369382406">Alamat IPv6</translation> <translation id="7503191893372251637">Netscape Certificate Type</translation> <translation id="7503985202154027481">Data kunjungan Anda ke situs ini akan disimpan di kunci keamanan.</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 846793d..58b0b659 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Engin net</translation> <translation id="1056898198331236512">Viðvörun</translation> <translation id="1058262162121953039">PUK-númer</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Sláðu inn nýja PIN-númerið þitt. PIN-númer verður að vera að minnsta kosti einn stafur og má innihalda bókstafi, tölustafi og aðra stafi.}one{Sláðu inn nýja PIN-númerið þitt. PIN-númer verður að vera að minnsta kosti # stafur og má innihalda bókstafi, tölustafi og aðra stafi.}other{Sláðu inn nýja PIN-númerið þitt. PIN-númer verður að vera að minnsta kosti # stafir og má innihalda bókstafi, tölustafi og aðra stafi.}}</translation> <translation id="1059944192885972544">Fann <ph name="NUM" /> flipa fyrir „<ph name="SEARCH_TEXT" />“</translation> <translation id="1060292118287751956">Segir fyrir um hve hratt skjárinn uppfærist</translation> <translation id="1061904396131502319">Það fer að koma tími til að taka sér hlé</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">Inntak sem skal nota</translation> <translation id="1335929031622236846">Skráðu tækið þitt</translation> <translation id="1336902454946927954">Öryggislykillinn þinn er læstur vegna þess að fingrafarið þitt þekktist ekki. Sláðu inn PIN-númerið þitt til að opna hann.</translation> +<translation id="1337692097987160377">Deila þessum flipa</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vill opna þetta forrit.</translation> <translation id="1338950911836659113">Eyðir...</translation> <translation id="13392265090583506">A11y</translation> @@ -636,9 +638,11 @@ <translation id="1688935057616748272">Sláðu inn staf</translation> <translation id="168991973552362966">Bæta nálægum prentara við</translation> <translation id="1689945336726856614">Afrita &vefslóð</translation> +<translation id="1690248886740053041">Ekki er hægt að tengjast farsímakerfi. Hafðu samband við símafyrirtækið þitt til að fá tæknilega aðstoð.</translation> <translation id="1692115862433274081">Nota annan reikning</translation> <translation id="1692118695553449118">Kveikt er á samstillingu</translation> <translation id="1692210323591458290">Dökkfjólublár</translation> +<translation id="169279809881363536">Engir prófílar fundust. Til að setja upp nýtt netkerfi skaltu skanna QR-kóðann með myndavél tækisins eða slá inn virkjunarkóða frá símafyrirtækinu þínu.</translation> <translation id="1697150536837697295">List</translation> <translation id="1697686431566694143">Breyta skrá</translation> <translation id="1698122934742150150">Aðeins yfirstandandi huliðslota</translation> @@ -1575,6 +1579,7 @@ <translation id="2770465223704140727">Fjarlægja af lista</translation> <translation id="2770690685823456775">Flyttu aðgangsorðin út í aðra möppu</translation> <translation id="2770929488047004208">Skjáupplausn</translation> +<translation id="2770954829020464827">Upplýsingar eru faldar á meðan þú deilir skjánum</translation> <translation id="2771268254788431918">Kveikt á farsímagögnum</translation> <translation id="2771816809568414714">Ostur</translation> <translation id="2772936498786524345">Ninja</translation> @@ -1611,6 +1616,7 @@ <translation id="2805756323405976993">Forrit</translation> <translation id="2805770823691782631">Viðbótarupplýsingar</translation> <translation id="2806372837663997957">Tækið sem þú reynir að deila með samþykkti það ekki</translation> +<translation id="2806891468525657116">Flýtileið er þegar til</translation> <translation id="2807517655263062534">Skrár sem þú hleður niður birtast hér</translation> <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> í viðbót</translation> <translation id="2810390687497823527">Ef þú þekkir ekki viðbót eða vafrinn virkar ekki eins og hann á að gera geturðu slökkt á viðbótum eða sérstillt þær hér.</translation> @@ -1942,6 +1948,7 @@ <translation id="3201422919974259695">USB-tæki í boði birtast hér.</translation> <translation id="3202131003361292969">Slóð</translation> <translation id="3202173864863109533">Slökkt er á hljóði þessa flipa.</translation> +<translation id="3202218848974251205">Persónuverndarsandkassinn</translation> <translation id="3208321278970793882">Forrit</translation> <translation id="3208584281581115441">Athuga núna</translation> <translation id="3208703785962634733">Óstaðfest</translation> @@ -2162,6 +2169,7 @@ <translation id="3459697287128633276">Til að virkja aðgang reikningsins þíns að Google Play Store skaltu auðkenna þig með þínum útgefanda auðkennis.</translation> <translation id="3462311546193741693">Skráir þig út af flestum vefsvæðum. Þú verður áfram skráð(ur) inn á Google reikninginn þinn svo hægt sé að hreinsa samstillt gögn.</translation> <translation id="3462413494201477527">Hætta við uppsetningu reiknings?</translation> +<translation id="3464145797867108663">Bæta við vinnuprófíl</translation> <translation id="346431825526753">Þetta er reikningur fyrir börn sem <ph name="CUSTODIAN_EMAIL" /> stjórnar.</translation> <translation id="3468298837301810372">Merki</translation> <translation id="3468999815377931311">Android sími</translation> @@ -2283,6 +2291,7 @@ <translation id="360180734785106144">Boðið upp á nýja eiginleika þegar þeir eru tiltækir</translation> <translation id="3602290021589620013">Forskoða</translation> <translation id="3603622770190368340">Fá netvottorð</translation> +<translation id="3604193429970465812">Aukareikningar</translation> <translation id="3604713164406837697">Skipta um veggfóður</translation> <translation id="3605780360466892872">Hvítflibbi</translation> <translation id="3608576286259426129">Forskoðun notandamyndar</translation> @@ -2607,6 +2616,7 @@ Viltu ræsa <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Ekki er hægt að búa til flýtileið</translation> +<translation id="3943494825379372497">Endurheimta forrit og síður?</translation> <translation id="3943582379552582368">Til &baka</translation> <translation id="3943857333388298514">Líma</translation> <translation id="3948116654032448504">&Leita að mynd á <ph name="SEARCH_ENGINE" /></translation> @@ -2692,6 +2702,7 @@ <translation id="4046013316139505482">Þessar viðbætur þurfa ekki að sjá og skiptast á upplýsingum á þessu vefsvæði.</translation> <translation id="4046123991198612571">Næsta lag</translation> <translation id="4047726037116394521">Fara á upphafssíðu</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# tengiliður er ekki tiltækur. Til að nota nærdeilingu með þessum tengilið skaltu bæta netfanginu sem er tengt Google reikningi viðkomandi við tengiliðina þína.}one{# tengiliður er ekki tiltækur. Til að nota nærdeilingu með þessum tengiliðum skaltu bæta netföngunum sem eru tengd Google reikningum þeirra við tengiliðina þína.}other{# tengiliðir eru ekki tiltækir. Til að nota nærdeilingu með þessum tengiliðum skaltu bæta netföngunum sem eru tengd Google reikningum þeirra við tengiliðina þína.}}</translation> <translation id="4050225813016893843">Auðkenningaraðferð</translation> <translation id="4052120076834320548">Örsmátt</translation> <translation id="4056908315660577142">Þú hefur náð tímamörkunum sem foreldri þitt stillti fyrir <ph name="APP_NAME" /> Chrome forritið. Þú getur notað það í <ph name="TIME_LIMIT" /> á morgun.</translation> @@ -3338,6 +3349,7 @@ <translation id="4863769717153320198">Virðist vera <ph name="WIDTH" /> x <ph name="HEIGHT" /> (sjálfgefið)</translation> <translation id="4864369630010738180">Skráir inn...</translation> <translation id="4864805589453749318">Veldu foreldrið sem gefur heimild til að bæta við skólareikningi.</translation> +<translation id="4866265760644917470">Prófíl var bætt við.</translation> <translation id="486635084936119914">Opna tilteknar tegundir skráa sjálfkrafa að niðurhali loknu</translation> <translation id="48704129375571883">Bæta við frekari eiginleikum</translation> <translation id="4870758487381879312">Sláðu inn aðgangsorð frá kerfisstjóra til að fá stillingaupplýsingar</translation> @@ -3621,6 +3633,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Aðgangsorði í hættu var breytt. # aðgangsorð í viðbót er í hættu. Chrome mælir með að þú athugir þetta aðgangsorð núna.}one{Aðgangsorði í hættu var breytt. # aðgangsorð í viðbót er í hættu. Chrome mælir með að þú athugir þessi aðgangsorð núna.}other{Aðgangsorði í hættu var breytt. # aðgangsorð í viðbót eru í hættu. Chrome mælir með að þú athugir þessi aðgangsorð núna.}}</translation> <translation id="5207949376430453814">Auðkenna textainnskotsmerki</translation> <translation id="5209320130288484488">Engin tæki fundust</translation> +<translation id="5209572028385096813">Þessi notandi er í umsjón Family Link</translation> <translation id="5210365745912300556">Loka flipa</translation> <translation id="5213481667492808996">Gagnaþjónustan þín hjá <ph name="NAME" /> er tilbúin til notkunar</translation> <translation id="5213891612754844763">Sýna stillingar staðgengilsþjóns</translation> @@ -3706,6 +3719,7 @@ <translation id="5302048478445481009">Tungumál</translation> <translation id="5302932258331363306">Sýna staðgengla</translation> <translation id="5304276686222516262">Ekki er hægt að sækja tengiliðalista. Athugaðu nettenginguna eða <a href="#" id="tryAgainLink">reyndu aftur</a>.</translation> +<translation id="5305145881844743843">Þessi reikningur er í umsjón <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Engin uppsett</translation> <translation id="5307030433605830021">Efnisveita er ekki studd</translation> <translation id="5308380583665731573">Tengjast</translation> @@ -4086,6 +4100,7 @@ <translation id="5740820643029013514">Nota hljóðlátari skilaboð (ráðlagt)</translation> <translation id="574104302965107104">Skjáspeglun</translation> <translation id="574209121243317957">Tónhæð</translation> +<translation id="5742505912938664543">Þegar þú bætir aukareikningi við hér geturðu flett á vefnum, sótt forrit, skoðað Gmail og aðrar Google þjónustur með þeim reikningi.</translation> <translation id="5746169159649715125">Vista sem PDF</translation> <translation id="5747552184818312860">Rennur út</translation> <translation id="5747785204778348146">Forritari – óstöðugt</translation> @@ -4426,6 +4441,7 @@ <translation id="6129953537138746214">Bil</translation> <translation id="6130692320435119637">Bæta Wi-Fi við</translation> <translation id="6136114942382973861">Loka niðurhalsstiku</translation> +<translation id="6136287496450963112">Öryggislykillinn þinn er ekki varinn með PIN-númeri. Til að hafa umsjón með fingraförum þarftu að búa til PIN-númer.</translation> <translation id="6137767437444130246">Notandavottorð</translation> <translation id="6138680304137685902">X9.62 ECDSA undirskrift með SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ekkert net</translation> @@ -4606,6 +4622,7 @@ <translation id="6331566915566907158">Hjálpa til við að bæta eiginleika og afköst Chrome OS</translation> <translation id="6331818708794917058">Vefsvæði geta beðið um að fá að tengjast MIDI-tækjum</translation> <translation id="6333064448949140209">Skráin verður send til villuleitar hjá Google</translation> +<translation id="6334444530352320327">Forritin þín og stýrikerfisstillingar verða samstillt í þeim Chromebook sem þú ert skráð(ur) inn á með þessum reikningi.<ph name="LINK_BEGIN" />Samstilla stillingar<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Öll vefsvæði geta birt þér hvaða auglýsingu sem er</translation> <translation id="6339668969738228384">Stofna nýjan prófíl fyrir <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Ekki tókst að tengjast þjóninum. Athugaðu nettenginguna og reyndu aftur. Ef vandinn er viðvarandi skaltu endurræsa Chromebook.</translation> @@ -4907,6 +4924,7 @@ <translation id="6709133671862442373">Fréttir</translation> <translation id="6709357832553498500">Tengjast með <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Til baka</translation> +<translation id="6713233729292711163">Bæta við vinnuprófíl</translation> <translation id="6715803357256707211">Villa kom upp við uppsetningu Linux-forritsins. Smelltu á tilkynninguna til að fá nánari upplýsingar.</translation> <translation id="671619610707606484">Þetta hreinsar <ph name="TOTAL_USAGE" /> af gögnum sem vefsvæði geyma</translation> <translation id="671928215901716392">Læsa skjánum</translation> @@ -5275,6 +5293,7 @@ <translation id="7121362699166175603">Hreinsar ferilinn og sjálfvirka útfyllingu í veffangastikunni. Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil á <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Forritarastilling</translation> <translation id="7121728544325372695">Sjálfvirk bandstrik</translation> +<translation id="7122353087820324370">Forrit og stillingar stýrikefis eru ekki samstillt aukareikningum.</translation> <translation id="7123030151043029868">Mega sækja margar skrár sjálfkrafa</translation> <translation id="7123360114020465152">Ekki lengur stutt</translation> <translation id="7125148293026877011">Eyða Crostini</translation> @@ -5583,12 +5602,14 @@ <translation id="7496732379142025470">Til að spara rafhlöðuna er aðeins kveikt á „Ok Google“ þegar tækið þitt er tengt við aflgjafa. Þú getur breytt þessu í stillingunum.</translation> <translation id="7497215489070763236">CA-vottorð þjóns</translation> <translation id="7497981768003291373">Þú ert ekki með neina nýlega WebRTC-textaannála.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> biður um leyfi til að mynda það sem er á þessum flipa.</translation> <translation id="7502658306369382406">IPv6-veffang</translation> <translation id="7503191893372251637">Tegund Netscape-vottorðs</translation> <translation id="7503985202154027481">Færsla um heimsókn þína á þetta vefsvæði verður vistuð á öryggislyklinum þínum.</translation> <translation id="750509436279396091">Opna niðurhalsmöppu</translation> <translation id="7506093026325926984">Þetta aðgangsorð verður vistað í þessu tæki</translation> <translation id="7506130076368211615">Setja upp nýtt net</translation> +<translation id="7506242536428928412">Stilltu nýtt PIN-númer til að geta notað nýja öryggislykilinn</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> var skráð í umsjón fyrirtækis.</translation> <translation id="7507207699631365376">Sjá <ph name="BEGIN_LINK" />persónuverndarstefnu<ph name="END_LINK" /> þjónustuveitu</translation> <translation id="7507930499305566459">Vottorð stöðusvarveitu</translation> @@ -5752,6 +5773,7 @@ <translation id="7691077781194517083">Ekki er hægt að endurstilla þennan öryggislykil. Villa <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Uppfærsla á Crostini</translation> <translation id="7696063401938172191">Í „<ph name="PHONE_NAME" />“:</translation> +<translation id="7697166915480294040">Upplýsingar eru faldar á meðan þú deilir skjánum</translation> <translation id="7697598343108519171">Notaðu myndavélina til að skanna QR-kóða</translation> <translation id="7699968112832915395">Ekki tókst að bæta reikningi við</translation> <translation id="7701040980221191251">Ekkert</translation> @@ -6208,6 +6230,8 @@ <translation id="8184472985242519288">Jafnt</translation> <translation id="8186609076106987817">Þjónninn fann ekki skrána.</translation> <translation id="8188389033983459049">Athugaðu tækjastillingar þínar og kveiktu á Bluetooth til að halda áfram</translation> +<translation id="8189306097519446565">Skólareikningar</translation> +<translation id="8189750580333936930">Persónuverndarsandkassi</translation> <translation id="8190193592390505034">Tengist <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Stjórna forritunum þínum, viðbótum og þemum</translation> <translation id="8195027750202970175">Stærð á diski</translation> @@ -6900,6 +6924,7 @@ <translation id="8986362086234534611">Gleyma</translation> <translation id="8986494364107987395">Senda sjálfkrafa talnagögn um notkun og tilkynningar um hrun til Google</translation> <translation id="8987927404178983737">Mánuður</translation> +<translation id="8989823300731803443">Halda áfram þaðan sem frá var horfið.</translation> <translation id="8990209962746788689">Ekki hægt að búa til QR-kóða</translation> <translation id="8991520179165052608">Vefsvæði getur notað hljóðnemann þinn</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 atriði}one{# atriði}other{# atriði}}</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 61929bb..5a6b98a 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Nessuna rete</translation> <translation id="1056898198331236512">Avviso</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Inserisci il nuovo PIN. Il PIN deve contenere almeno un carattere e può includere lettere, numeri e altri caratteri.}other{Inserisci il nuovo PIN. Il PIN deve contenere almeno # caratteri e può includere lettere, numeri e altri caratteri.}}</translation> <translation id="1059944192885972544">Sono state trovate <ph name="NUM" /> schede per "<ph name="SEARCH_TEXT" />"</translation> <translation id="1060292118287751956">Consente di stabilire la frequenza di aggiornamento dello schermo</translation> <translation id="1061904396131502319">È quasi ora di fare una pausa</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Metodo di immissione preferito</translation> <translation id="1335929031622236846">Registra il tuo dispositivo</translation> <translation id="1336902454946927954">Il token di sicurezza è bloccato perché non è stato possibile riconoscere la tua impronta. Per sbloccarlo, inserisci il PIN.</translation> +<translation id="1337692097987160377">Condividi questa scheda</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vuole aprire questa applicazione.</translation> <translation id="1338950911836659113">Eliminazione in corso...</translation> <translation id="13392265090583506">Impostazioni di accessibilità</translation> @@ -635,9 +637,11 @@ <translation id="1688935057616748272">Digita una lettera</translation> <translation id="168991973552362966">Aggiungi una stampante vicina</translation> <translation id="1689945336726856614">Copia &URL</translation> +<translation id="1690248886740053041">Impossibile connettersi a una rete mobile. Per assistenza tecnica, contatta il tuo operatore.</translation> <translation id="1692115862433274081">Utilizza un altro account</translation> <translation id="1692118695553449118">La sincronizzazione è attiva</translation> <translation id="1692210323591458290">Viola scuro</translation> +<translation id="169279809881363536">Nessun profilo rilevato. Per configurare una nuova rete, scansiona il codice QR utilizzando la fotocamera del dispositivo oppure inserisci il codice di attivazione fornito dall'operatore.</translation> <translation id="1697150536837697295">Arte</translation> <translation id="1697686431566694143">Modifica file</translation> <translation id="1698122934742150150">Solo per la sessione di navigazione in incognito corrente</translation> @@ -1573,6 +1577,7 @@ <translation id="2770465223704140727">Rimuovi dall'elenco</translation> <translation id="2770690685823456775">Esporta le password in un'altra cartella</translation> <translation id="2770929488047004208">Risoluzione del monitor</translation> +<translation id="2770954829020464827">I dettagli sono nascosti durante la condivisione dello schermo</translation> <translation id="2771268254788431918">Dati mobili attivati</translation> <translation id="2771816809568414714">Formaggio</translation> <translation id="2772936498786524345">Molla</translation> @@ -1609,6 +1614,7 @@ <translation id="2805756323405976993">App</translation> <translation id="2805770823691782631">Dettagli aggiuntivi</translation> <translation id="2806372837663997957">Il dispositivo con cui stai tentando di condividere il file non ha accettato</translation> +<translation id="2806891468525657116">Scorciatoia già presente</translation> <translation id="2807517655263062534">I file scaricati vengono mostrati qui</translation> <translation id="2809586584051668049">e altre <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Se non riconosci un'estensione o se il browser non funziona come previsto, puoi disattivare o personalizzare le estensioni qui.</translation> @@ -1940,6 +1946,7 @@ <translation id="3201422919974259695">I dispositivi USB disponibili vengono indicati qui.</translation> <translation id="3202131003361292969">Percorso</translation> <translation id="3202173864863109533">L'audio di questa scheda sta per essere disattivato.</translation> +<translation id="3202218848974251205">La Privacy Sandbox</translation> <translation id="3208321278970793882">App</translation> <translation id="3208584281581115441">Controlla ora</translation> <translation id="3208703785962634733">Non confermato</translation> @@ -2160,6 +2167,7 @@ <translation id="3459697287128633276">Per accedere al Google Play Store con il tuo account, esegui l'autenticazione con il tuo provider di identità.</translation> <translation id="3462311546193741693">Verrai disconnesso dalla maggior parte dei siti, ma non dal tuo Account Google, quindi i dati sincronizzati possono essere cancellati.</translation> <translation id="3462413494201477527">Annullare la creazione dell'account?</translation> +<translation id="3464145797867108663">Aggiungi profilo di lavoro</translation> <translation id="346431825526753">Si tratta di un account di minori gestito da <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Etichetta</translation> <translation id="3468999815377931311">Telefono Android</translation> @@ -2281,6 +2289,7 @@ <translation id="360180734785106144">Offrire nuove funzionalità quando diventano disponibili.</translation> <translation id="3602290021589620013">Anteprima</translation> <translation id="3603622770190368340">Ottieni certificato di rete</translation> +<translation id="3604193429970465812">Account secondari</translation> <translation id="3604713164406837697">Cambiare sfondo</translation> <translation id="3605780360466892872">Ventiquattrore</translation> <translation id="3608576286259426129">Anteprima immagine utente</translation> @@ -2605,6 +2614,7 @@ Vuoi avviare <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Impossibile creare scorciatoie</translation> +<translation id="3943494825379372497">Vuoi ripristinare app e pagine?</translation> <translation id="3943582379552582368">&Indietro</translation> <translation id="3943857333388298514">Incolla</translation> <translation id="3948116654032448504">&Cerca l'immagine su <ph name="SEARCH_ENGINE" /></translation> @@ -2690,6 +2700,7 @@ <translation id="4046013316139505482">Queste estensioni non devono vedere e modificare le informazioni su questo sito.</translation> <translation id="4046123991198612571">Traccia successiva</translation> <translation id="4047726037116394521">Vai alla Home page</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# contatto non disponibile. Per usare la funzionalità Condivisione nelle vicinanze con questa persona, aggiungi ai tuoi contatti l'indirizzo email associato al suo Account Google.}other{# contatti non disponibili. Per usare la funzionalità Condivisione nelle vicinanze con queste persone, aggiungi ai tuoi contatti gli indirizzi email associati ai loro Account Google.}}</translation> <translation id="4050225813016893843">Metodo di autenticazione</translation> <translation id="4052120076834320548">Minuscolo</translation> <translation id="4056908315660577142">Hai raggiunto il tempo massimo impostato dal genitore per l'app di Chrome <ph name="APP_NAME" />. Domani potrai utilizzare l'app per <ph name="TIME_LIMIT" />.</translation> @@ -3336,6 +3347,7 @@ <translation id="4863769717153320198">Risoluzione di <ph name="WIDTH" /> x <ph name="HEIGHT" /> (valore predefinito)</translation> <translation id="4864369630010738180">Accesso in corso...</translation> <translation id="4864805589453749318">Seleziona il genitore che sta concedendo l'autorizzazione per aggiungere un account della scuola.</translation> +<translation id="4866265760644917470">Il profilo è stato aggiunto correttamente.</translation> <translation id="486635084936119914">Apri automaticamente determinati tipi di file dopo il download</translation> <translation id="48704129375571883">Aggiungi altre funzioni</translation> <translation id="4870758487381879312">Inserisci la password fornita dall'amministratore per ricevere informazioni sulla configurazione</translation> @@ -3619,6 +3631,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Password compromessa cambiata. Hai # altra password compromessa. Chrome consiglia di controllarla subito.}other{Password compromessa cambiata. Hai altre # password compromesse. Chrome consiglia di controllarle subito.}}</translation> <translation id="5207949376430453814">Evidenzia il cursore di testo</translation> <translation id="5209320130288484488">Nessun dispositivo trovato</translation> +<translation id="5209572028385096813">Questo utente è gestito da Family Link</translation> <translation id="5210365745912300556">Chiudi scheda</translation> <translation id="5213481667492808996">Il tuo servizio dati "<ph name="NAME" />" è pronto all'uso</translation> <translation id="5213891612754844763">Mostra impostazioni proxy</translation> @@ -3704,6 +3717,7 @@ <translation id="5302048478445481009">Lingua</translation> <translation id="5302932258331363306">Mostra sostituzioni</translation> <translation id="5304276686222516262">Impossibile scaricare l'elenco contatti. Controlla la connessione di rete o <a href="#" id="tryAgainLink">riprova</a>.</translation> +<translation id="5305145881844743843">Questo account è gestito da <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Nessuno installato</translation> <translation id="5307030433605830021">Fonte non supportata</translation> <translation id="5308380583665731573">Connessione</translation> @@ -4085,6 +4099,7 @@ <translation id="5740820643029013514">Usa messaggi più discreti (opzione consigliata)</translation> <translation id="574104302965107104">Mirroring del display</translation> <translation id="574209121243317957">Tono</translation> +<translation id="5742505912938664543">Se aggiungi qui un account secondario, puoi navigare sul Web, scaricare app, controllare la tua posta in Gmail e utilizzare altri servizi Google con quell'account.</translation> <translation id="5746169159649715125">Salva come PDF</translation> <translation id="5747552184818312860">Scadenza</translation> <translation id="5747785204778348146">Sviluppatore - non stabile</translation> @@ -4425,6 +4440,7 @@ <translation id="6129953537138746214">Spazio</translation> <translation id="6130692320435119637">Aggiungi Wi-Fi</translation> <translation id="6136114942382973861">Chiudi la barra dei download</translation> +<translation id="6136287496450963112">Il token di sicurezza non è protetto tramite PIN. Per gestire le impronte, devi prima creare un PIN.</translation> <translation id="6137767437444130246">Certificato utente</translation> <translation id="6138680304137685902">Firma X9.62 ECDSA con SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nessuna rete</translation> @@ -4605,6 +4621,7 @@ <translation id="6331566915566907158">Contribuisci a migliorare le funzionalità e le prestazioni di Chrome OS</translation> <translation id="6331818708794917058">I siti possono chiedere di connettersi ai dispositivi MIDI</translation> <translation id="6333064448949140209">Il file sarà inviato a Google per il debug</translation> +<translation id="6334444530352320327">Le app e le impostazioni del sistema operativo verranno sincronizzate sui Chromebook su cui hai eseguito l'accesso con questo account.<ph name="LINK_BEGIN" />Impostazioni di sincronizzazione<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Tutti i siti possono mostrarti qualsiasi annuncio</translation> <translation id="6339668969738228384">Crea un nuovo profilo per <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Impossibile connettersi al server. Controlla la connessione di rete e riprova. Se il problema persiste, riavvia il Chromebook.</translation> @@ -4906,6 +4923,7 @@ <translation id="6709133671862442373">Notizie</translation> <translation id="6709357832553498500">Connettiti utilizzando <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Precedente</translation> +<translation id="6713233729292711163">Aggiungi profilo di lavoro</translation> <translation id="6715803357256707211">Si è verificato un errore durante l'installazione della tua applicazione Linux. Per informazioni dettagliate, fai clic sulla notifica.</translation> <translation id="671619610707606484">Verranno cancellati <ph name="TOTAL_USAGE" /> di dati memorizzati dai siti</translation> <translation id="671928215901716392">Blocca schermo</translation> @@ -5274,6 +5292,7 @@ <translation id="7121362699166175603">Consente di cancellare la cronologia e i completamenti automatici nella barra degli indirizzi. Il tuo Account Google potrebbe avere altri tipi di cronologia di navigazione all'indirizzo <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Modalità sviluppatore</translation> <translation id="7121728544325372695">Trattini smart</translation> +<translation id="7122353087820324370">Le app e le impostazioni del sistema operativo non sono sincronizzate con gli account secondari.</translation> <translation id="7123030151043029868">Possono scaricare automaticamente più file</translation> <translation id="7123360114020465152">La stampante non è più supportata</translation> <translation id="7125148293026877011">Eliminare Crostini</translation> @@ -5582,12 +5601,14 @@ <translation id="7496732379142025470">Per consumare meno batteria, la hotword "Ok Google" è attiva solo quando il dispositivo è collegato a una fonte di alimentazione. Per apportare modifiche, usa le Impostazioni.</translation> <translation id="7497215489070763236">Certificato CA del server</translation> <translation id="7497981768003291373">Nessun log di testo WebRTC acquisito di recente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> chiede l'autorizzazione per acquisire i contenuti di questa scheda.</translation> <translation id="7502658306369382406">Indirizzo IPv6</translation> <translation id="7503191893372251637">Tipo di certificato Netscape</translation> <translation id="7503985202154027481">Sul tuo token di sicurezza verrà memorizzato un record della tua visita a questo sito.</translation> <translation id="750509436279396091">Apri cartella dei download</translation> <translation id="7506093026325926984">La password verrà salvata su questo dispositivo</translation> <translation id="7506130076368211615">Configura una nuova rete</translation> +<translation id="7506242536428928412">Imposta un nuovo PIN per utilizzare il nuovo token di sicurezza</translation> <translation id="7506541170099744506">Il dispositivo <ph name="DEVICE_TYPE" /> è stato registrato correttamente per la gestione aziendale.</translation> <translation id="7507207699631365376">Vedi le <ph name="BEGIN_LINK" />norme sulla privacy<ph name="END_LINK" /> del fornitore di servizi</translation> <translation id="7507930499305566459">Certificato risponditore stato</translation> @@ -5751,6 +5772,7 @@ <translation id="7691077781194517083">Impossibile reimpostare questo token di sicurezza. Errore <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Upgrade di Crostini</translation> <translation id="7696063401938172191">Sul tuo telefono "<ph name="PHONE_NAME" />":</translation> +<translation id="7697166915480294040">I dettagli sono nascosti durante la condivisione dello schermo</translation> <translation id="7697598343108519171">Utilizza la fotocamera per scansionare il codice QR</translation> <translation id="7699968112832915395">Impossibile aggiungere l'account</translation> <translation id="7701040980221191251">Nulla</translation> @@ -6207,6 +6229,8 @@ <translation id="8184472985242519288">Uniforme</translation> <translation id="8186609076106987817">Impossibile trovare il file sul server.</translation> <translation id="8188389033983459049">Controlla le impostazioni sul dispositivo e attivalo per continuare</translation> +<translation id="8189306097519446565">Account della scuola</translation> +<translation id="8189750580333936930">Privacy Sandbox</translation> <translation id="8190193592390505034">Connessione a <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Gestire applicazioni, estensioni e temi</translation> <translation id="8195027750202970175">Dimensioni su disco</translation> @@ -6898,6 +6922,7 @@ <translation id="8986362086234534611">Elimina</translation> <translation id="8986494364107987395">Invia automaticamente a Google statistiche sull'utilizzo e rapporti sugli arresti anomali</translation> <translation id="8987927404178983737">Mese</translation> +<translation id="8989823300731803443">Continua da dove hai interrotto.</translation> <translation id="8990209962746788689">Impossibile creare codice QR</translation> <translation id="8991520179165052608">Il sito può usare il microfono</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 elemento}other{# elementi}}</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index c5deac1..cba43e5f 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">קלט מועדף</translation> <translation id="1335929031622236846">רישום המכשיר שלך</translation> <translation id="1336902454946927954">מפתח האבטחה נעול מאחר שאי אפשר לזהות את טביעת האצבע שלך. כדי לבטל את הנעילה, יש להזין את קוד האימות.</translation> +<translation id="1337692097987160377">שיתוף הכרטיסייה הזו</translation> <translation id="1338802252451106843">האתר <ph name="ORIGIN" /> רוצה לפתוח את האפליקציה הזו.</translation> <translation id="1338950911836659113">המחיקה מתבצעת...</translation> <translation id="13392265090583506">נגישות</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">אפליקציות</translation> <translation id="2805770823691782631">פרטים נוספים</translation> <translation id="2806372837663997957">המכשיר שעמו ניסית לשתף לא אישר</translation> +<translation id="2806891468525657116">קיצור הדרך כבר קיים</translation> <translation id="2807517655263062534">קבצים שמורידים יופיעו כאן</translation> <translation id="2809586584051668049">ועוד <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">אם לא מזהים תוסף כלשהו או אם הדפדפן לא פועל בצורה תקינה, אפשר להשבית את התוספים או להתאים אותם אישית מכאן.</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">כדי לחסוך בסוללה, הזיהוי של "Ok Google" מופעל רק כשהמכשיר מחובר למקור חשמל. אפשר לשנות את ההתנהגות הזאת דרך ההגדרות.</translation> <translation id="7497215489070763236">אישור CA של שרת</translation> <translation id="7497981768003291373">אין לך יומני טקסט של WebRTC שתועדו לאחרונה.</translation> +<translation id="7498614236023455416">לכתובת <ph name="TARGET_NAME" /> נדרשת הרשאה לתיעוד התכנים בכרטיסיה הזו.</translation> <translation id="7502658306369382406">כתובת IPv6</translation> <translation id="7503191893372251637">סוג אישור Netscape</translation> <translation id="7503985202154027481">תיעוד של ביקורך באתר יישמר במפתח האבטחה שלך.</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index d8dba4e4..43be388 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">優先する入力</translation> <translation id="1335929031622236846">デバイスを登録する</translation> <translation id="1336902454946927954">指紋を認識できなかったため、セキュリティ キーがロックされています。ロックを解除するには PIN を入力してください。</translation> +<translation id="1337692097987160377">このタブを共有</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> がこのアプリケーションを開く許可を求めています。</translation> <translation id="1338950911836659113">削除しています...</translation> <translation id="13392265090583506">ユーザー補助設定</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">アプリ</translation> <translation id="2805770823691782631">詳細</translation> <translation id="2806372837663997957">共有先のデバイス側で承認されませんでした</translation> +<translation id="2806891468525657116">ショートカットがすでに存在します</translation> <translation id="2807517655263062534">ダウンロードしたファイルがここに表示されます</translation> <translation id="2809586584051668049">、他 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 件</translation> <translation id="2810390687497823527">拡張機能が認識されないかブラウザが想定どおり動作しない場合は、ここで拡張機能を無効にするかカスタマイズできます。</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">バッテリー消費を抑えるため、ご使用のデバイスがコンセントに接続されている場合にのみ「OK Google」に反応します。設定を変更するには、[設定] に移動してください。</translation> <translation id="7497215489070763236">サーバーの CA 証明書</translation> <translation id="7497981768003291373">最近記録された WebRTC テキストログはありません。</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> から、このタブのコンテンツをキャプチャする許可を求められています。</translation> <translation id="7502658306369382406">IPv6 アドレス</translation> <translation id="7503191893372251637">Netscape 証明書タイプ</translation> <translation id="7503985202154027481">このサイトへのアクセスの記録がセキュリティ キーに保存されます。</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 931b6365..da5c6b85 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">შეყვანის სასურველი მეთოდი</translation> <translation id="1335929031622236846">თქვენი მოწყობილობის რეგისტრაცია</translation> <translation id="1336902454946927954">თქვენი უსაფრთხოების გასაღები ჩაკეტილია, რადგან თითის ანაბეჭდის ამოცნობა ვერ მოხერხდა. განსაბლოკად შეიყვანეთ PIN-კოდი.</translation> +<translation id="1337692097987160377">ამ ჩანართის გაზიარება</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ითხოვს ამ აპლიკაციის გახსნას.</translation> <translation id="1338950911836659113">წაშლა…</translation> <translation id="13392265090583506">A11y</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">პროგრამები</translation> <translation id="2805770823691782631">დამატებითი დეტალები</translation> <translation id="2806372837663997957">მოწყობილობა, რომელთანაც გაზიარებას ცდილობთ, არ დაეთანხმა</translation> +<translation id="2806891468525657116">მალსახმობი უკვე არსებობს</translation> <translation id="2807517655263062534">თქვენ მიერ ჩამოტვირთული ფაილები აქ გამოჩნდება</translation> <translation id="2809586584051668049">და <ph name="NUMBER_ADDITIONAL_DISABLED" /> მეტი</translation> <translation id="2810390687497823527">თუ გაფართოებას ვერ ცნობთ ან ბრაუზერი მოლოდინისამებრ არ მუშაობს, აქ შეგიძლიათ გამორთოთ ან მოირგოთ გაფართოებები.</translation> @@ -5598,6 +5600,7 @@ <translation id="7496732379142025470">ბატარეის დაზოგვის მიზნით, „Ok Google“ ჩართულია მხოლოდ მაშინ, როცა თქვენი მოწყობილობა მიერთებულია ელკვების წყაროსთან. ცვლილებების შეტანად გადადით პარამეტრებზე.</translation> <translation id="7497215489070763236">სერვერის CA სერტიფიკატი</translation> <translation id="7497981768003291373">ახლახან აღბეჭდილი WebRTC-ის ტექსტური ჟურნალები არ არის.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ითხოვს ამ ჩანართის კონტენტის აღბეჭდვის ნებართვას.</translation> <translation id="7502658306369382406">IPv6 მისამართი</translation> <translation id="7503191893372251637">Netscape სერტიფიკატის ტიპი</translation> <translation id="7503985202154027481">თქვენს უსაფრთხოების გასაღებზე ჩაიწერება ამ საიტზე ვიზიტი.</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index d61debae..6bd943e 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Желі табылмады</translation> <translation id="1056898198331236512">Ескерту</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Жаңа PIN кодыңызды енгізіңіз. PIN коды кемінде бір таңбадан, оның ішінде әріптерден, сандардан және тағы басқа таңбалардан тұруы қажет.}other{Жаңа PIN кодыңызды енгізіңіз. PIN коды кемінде # таңбадан, оның ішінде әріптерден, сандардан және тағы басқа таңбалардан тұруы қажет.}}</translation> <translation id="1059944192885972544">"<ph name="SEARCH_TEXT" />" үшін <ph name="NUM" /> қойынды табылды.</translation> <translation id="1060292118287751956">Экранның жаңару жиілігін анықтайды.</translation> <translation id="1061904396131502319">Үзіліс уақыты келіп қалды</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Қалаған енгізу әдісі</translation> <translation id="1335929031622236846">Құрылғыны тіркеу</translation> <translation id="1336902454946927954">Саусағыңыздың ізі танылмағандықтан, қауіпсіздік кілті құлыптаулы тұр. Оның құлпын ашу үшін PIN кодыңызды енгізіңіз.</translation> +<translation id="1337692097987160377">Осы қойындыны бөлісу</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> осы қолданбаны ашқысы келеді.</translation> <translation id="1338950911836659113">Жойылуда…</translation> <translation id="13392265090583506">A11y</translation> @@ -632,9 +634,11 @@ <translation id="1688935057616748272">Әріп енгізіңіз</translation> <translation id="168991973552362966">Маңайдағы принтерді енгізу</translation> <translation id="1689945336726856614">&URL мекенжайын көшіру</translation> +<translation id="1690248886740053041">Мобильдік желіге қосылу мүмкін емес. Техникалық қолдау керек болса, операторға хабарласыңыз.</translation> <translation id="1692115862433274081">Басқа есептік жазбаны пайдалану</translation> <translation id="1692118695553449118">Синхрондау қосылған</translation> <translation id="1692210323591458290">Қою күлгін</translation> +<translation id="169279809881363536">Профильдер анықталмады. Жаңа желіні реттеу үшін құрылғының камерасымен QR кодын сканерлеңіз немесе оператор берген белсендіру кодын енгізіңіз.</translation> <translation id="1697150536837697295">Өнер</translation> <translation id="1697686431566694143">Файлды өңдеу</translation> <translation id="1698122934742150150">Тек ағымдағы инкогнито сеансы</translation> @@ -1571,6 +1575,7 @@ <translation id="2770465223704140727">Тізімнен алып тастау</translation> <translation id="2770690685823456775">Құпия сөздерді басқа қалтаға экспорттаңыз</translation> <translation id="2770929488047004208">Монитор ажыратымдылығы</translation> +<translation id="2770954829020464827">Экраныңызды бөлісіп жатқанда, мәліметтер жасырын тұрады.</translation> <translation id="2771268254788431918">Мобильдік деректер қосылды</translation> <translation id="2771816809568414714">Ірімшік</translation> <translation id="2772936498786524345">Sneaky</translation> @@ -1607,6 +1612,7 @@ <translation id="2805756323405976993">Қолданбалар</translation> <translation id="2805770823691782631">Қосымша мәліметтер</translation> <translation id="2806372837663997957">Бөліскіңіз келген құрылғы қабылдамады.</translation> +<translation id="2806891468525657116">Таңбаша бұрыннан бар</translation> <translation id="2807517655263062534">Сіз жүктеп алатын файлдар осында шығады</translation> <translation id="2809586584051668049">және тағы <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Егер кеңейтімді анықтай алмасаңыз немесе браузер дұрыс жұмыс істемей тұрса, кеңейтімдерді осы жерден өшіруіңізге немесе реттеуіңізге болады.</translation> @@ -1938,6 +1944,7 @@ <translation id="3201422919974259695">Қолжетімді USB құрылғылары осы жерге шығады.</translation> <translation id="3202131003361292969">Жолы</translation> <translation id="3202173864863109533">Бұл қойынды аудиосының дыбысы өшірілуде.</translation> +<translation id="3202218848974251205">Privacy Sandbox</translation> <translation id="3208321278970793882">Қолданба</translation> <translation id="3208584281581115441">Қазір тексеру</translation> <translation id="3208703785962634733">Расталмаған</translation> @@ -2158,6 +2165,7 @@ <translation id="3459697287128633276">Есептік жазбаңыз Google Play Store дүкеніне кіре алуы үшін идентификатор провайдері арқылы аутентификациялаңыз.</translation> <translation id="3462311546193741693">Көп сайттардан шығарады. Google есептік жазбаңызда қаласыз және синхрондалған деректер өшіріледі.</translation> <translation id="3462413494201477527">Есептік жазбаны орнатудан бас тарту қажет пе?</translation> +<translation id="3464145797867108663">Жұмыс профилін қосу</translation> <translation id="346431825526753">Бұл <ph name="CUSTODIAN_EMAIL" /> басқаратын балаларға арналған есептік жазба.</translation> <translation id="3468298837301810372">Белгі</translation> <translation id="3468999815377931311">Android телефоны</translation> @@ -2279,6 +2287,7 @@ <translation id="360180734785106144">Жаңа функцияларды бірден ұсыну</translation> <translation id="3602290021589620013">Алдын ала қарау</translation> <translation id="3603622770190368340">Желі сертификатын алу</translation> +<translation id="3604193429970465812">Көмекші есептік жазбалар</translation> <translation id="3604713164406837697">Тұсқағазды өзгерту</translation> <translation id="3605780360466892872">Бизнесмен</translation> <translation id="3608576286259426129">Пайдаланушы кескінін алдын ала көру</translation> @@ -2603,6 +2612,7 @@ <ph name="CONTROL_PANEL_APPLET_NAME" /> іске қосқыңыз келе ме?</translation> <translation id="394183848452296464">Таңбаша жасалмады</translation> +<translation id="3943494825379372497">Қолданбалар мен беттерді қалпына келтіру керек пе?</translation> <translation id="3943582379552582368">&Артқа</translation> <translation id="3943857333388298514">Қою</translation> <translation id="3948116654032448504">Кескінді <ph name="SEARCH_ENGINE" /> арқылы &іздеу</translation> @@ -2688,6 +2698,7 @@ <translation id="4046013316139505482">Бұл кеңейтімдерге осы сайттағы ақпаратты көрудің және өзгертудің қажеті жоқ.</translation> <translation id="4046123991198612571">Келесі аудиотрек</translation> <translation id="4047726037116394521">Негізгі экранға өту</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# контакт қолжетімді емес. Nearby Share функциясын пайдалану үшін олардың Google есептік жазбасымен байланыстырылған электрондық пошта мекенжайын контактілеріңізге енгізіңіз.}other{# контакт қолжетімді емес. Nearby Share функциясын осы контактілермен пайдалану үшін олардың Google есептік жазбаларымен байланыстырылған электрондық пошта мекенжайларын контактілеріңізге қосыңыз.}}</translation> <translation id="4050225813016893843">Аутентификация әдісі</translation> <translation id="4052120076834320548">Кішкентай</translation> <translation id="4056908315660577142">Ата-анаңыз <ph name="APP_NAME" /> Chrome қолданбасы үшін белгілеген уақыт шегіне жеттіңіз. Оны ертең <ph name="TIME_LIMIT" /> бойы пайдалана аласыз.</translation> @@ -3334,6 +3345,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (әдепкі) болып көрінеді</translation> <translation id="4864369630010738180">Жүйеге кіруде…</translation> <translation id="4864805589453749318">Оқу есептік жазбасын енгізуге рұқсат беретін ата-ананы таңдаңыз.</translation> +<translation id="4866265760644917470">Профиль қосылды.</translation> <translation id="486635084936119914">Белгілі бір файл түрлерін жүктеп алғаннан кейін автоматты түрде ашу</translation> <translation id="48704129375571883">Қосымша мүмкіндіктерді қосу</translation> <translation id="4870758487381879312">Конфигурация туралы ақпарат алу үшін әкімші берген құпия сөзді енгізіңіз</translation> @@ -3617,6 +3629,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Ұрланған құпия сөз өзгертілді. Тағы # құпия сөзіңіз ұрланған. Chrome осы құпия сөзді қазір тексеруге кеңес береді.}other{Ұрланған құпия сөз өзгертілді. Тағы # құпия сөзіңіз ұрланған. Chrome осы құпия сөздерді қазір тексеруге кеңес береді.}}</translation> <translation id="5207949376430453814">Мәтін курсорын бөлектеу</translation> <translation id="5209320130288484488">Құрылғылар табылмады</translation> +<translation id="5209572028385096813">Бұл пайдаланушы Family Link арқылы басқарылады.</translation> <translation id="5210365745912300556">Қойындыны жабу</translation> <translation id="5213481667492808996">"<ph name="NAME" />" деректер қызметі пайдалануға дайын</translation> <translation id="5213891612754844763">Прокси-сервер параметрлерін көрсету</translation> @@ -3702,6 +3715,7 @@ <translation id="5302048478445481009">Тіл</translation> <translation id="5302932258331363306">Ауыстыру таблосын көрсету</translation> <translation id="5304276686222516262">Контактілер тізімін жүктеп алу мүмкін емес. Интернет байланысыңызды тексеріңіз немесе <a href="#" id="tryAgainLink">қайталап көріңіз</a>.</translation> +<translation id="5305145881844743843">Бұл есептік жазба <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> арқылы басқарылады.</translation> <translation id="5305688511332277257">Ешбірі орнатылмаған</translation> <translation id="5307030433605830021">Дереккөзге қолдау көрсетілмейді</translation> <translation id="5308380583665731573">Қосылу</translation> @@ -4082,6 +4096,7 @@ <translation id="5740820643029013514">Дыбысы бәсең шығатын хабарларды пайдаланыңыз (ұсынылады).</translation> <translation id="574104302965107104">Дисплейдің экран көшірмесін көрсету</translation> <translation id="574209121243317957">Дыбыс биіктігі</translation> +<translation id="5742505912938664543">Бұл жерге көмекші есептік жазба қоссаңыз, осы есептік жазбамен Интернетті шола, қолданбаларды жүктей, Gmail мен басқа да Google қызметтерін тексере аласыз.</translation> <translation id="5746169159649715125">PDF ретінде сақтау</translation> <translation id="5747552184818312860">Мерзімі бітеді</translation> <translation id="5747785204778348146">Әзірлеуші – тұрақсыз</translation> @@ -4422,6 +4437,7 @@ <translation id="6129953537138746214">Бос орын</translation> <translation id="6130692320435119637">Wi-Fi желісін қосу</translation> <translation id="6136114942382973861">Жүктеп алынғандар жолағын жабу</translation> +<translation id="6136287496450963112">Қауіпсіздік кілтіңіз PIN кодымен қорғалмаған. Саусақ іздерін басқару үшін алдымен PIN кодын жасаңыз.</translation> <translation id="6137767437444130246">Пайдаланушы сертификаты</translation> <translation id="6138680304137685902">X9.62 ECDSA, SHA-384 алгоритмімен қол қою</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, желі жоқ</translation> @@ -4602,6 +4618,7 @@ <translation id="6331566915566907158">Chrome операциялық жүйесінің функцияларын және жұмыс өнімділігін жақсартуға көмектесу</translation> <translation id="6331818708794917058">Сайттар MIDI құрылғыларына қосылуға рұқсат сұрайды.</translation> <translation id="6333064448949140209">Қатесі түзетілуі үшін файл Google қызметіне жіберіледі</translation> +<translation id="6334444530352320327">Қолданбаларыңыз бен операциялық жүйе параметрлері сіз осы есептік жазбамен кірген Chromebook құрылғылары арасында синхрондалады.<ph name="LINK_BEGIN" />Синхрондау параметрлері<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Сайттардың барлығы сізге кез келген жарнаманы көрсете алады.</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> үшін жаңа профиль жасау</translation> <translation id="6340017061976355871">Серверге қосылмады. Желі байланысын тексеріп, әрекетті қайталаңыз. Егер мәселе жойылмаса, Chromebook құрылғысын қайта жүктеңіз.</translation> @@ -4903,6 +4920,7 @@ <translation id="6709133671862442373">Жаңалықтар</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> арқылы қосылу</translation> <translation id="6710213216561001401">Алдыңғы</translation> +<translation id="6713233729292711163">Жұмыс профилін қосу</translation> <translation id="6715803357256707211">Linux қолданбасын орнату кезінде қате кетті. Толық ақпарат алу үшін хабарландыруды басыңыз.</translation> <translation id="671619610707606484">Сайттарда сақталған <ph name="TOTAL_USAGE" /> дерек өшіріледі.</translation> <translation id="671928215901716392">Экранды құлыптау</translation> @@ -5271,6 +5289,7 @@ <translation id="7121362699166175603">Мекенжай жолағында тарих пен автотолтыруларды өшіреді. <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> сайтында Google есептік жазбасымен шолу тарихының басқа да үлгілері болуы мүмкін.</translation> <translation id="7121438501124788993">Әзірлеуші режимі</translation> <translation id="7121728544325372695">Смарт сызықшалар</translation> +<translation id="7122353087820324370">Қолданбалар мен операциялық жүйе параметрлері көмекші есептік жазбалармен синхрондалмайды.</translation> <translation id="7123030151043029868">Бірнеше файлды автоматты түрде жүктеп алуға рұқсаты барлар</translation> <translation id="7123360114020465152">Бұдан былай қолдау көрсетілмейді</translation> <translation id="7125148293026877011">Crostini жүйесін жою</translation> @@ -5579,12 +5598,14 @@ <translation id="7496732379142025470">Батарея зарядын үнемдеу мақсатында "Ok Google" пәрмені, құрылғы қуат көзіне жалғанғанда ғана, іске қосылады. Өзгерту үшін "Параметрлер" бөліміне өтіңіз.</translation> <translation id="7497215489070763236">Сервер CA сертификаты</translation> <translation id="7497981768003291373">Жақында WebRTC мәтіндік журналдарын жазып алмадыңыз.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> осы қойындыдағы мазмұнды түсіріп алуға рұқсат сұрап жатыр.</translation> <translation id="7502658306369382406">IPv6 мекенжайы</translation> <translation id="7503191893372251637">Netscape сертификат түрі</translation> <translation id="7503985202154027481">Осы сайтқа кіргеніңіз туралы жазба қауіпсіздік кілтінде сақталады.</translation> <translation id="750509436279396091">Жүктеулер қалтасын ашу</translation> <translation id="7506093026325926984">Бұл құпия сөз осы құрылғыда сақталады</translation> <translation id="7506130076368211615">Жаңа желіні реттеу</translation> +<translation id="7506242536428928412">Жаңа қауіпсіздік кілтін пайдалану үшін жаңа PIN кодын орнатыңыз.</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> құрылғысы кәсіпорын басқаруы үшін тіркелді.</translation> <translation id="7507207699631365376">Бұл провайдердің <ph name="BEGIN_LINK" />құпиялылық саясатын<ph name="END_LINK" /> көру</translation> <translation id="7507930499305566459">Күй жауапшысының сертификаты</translation> @@ -5748,6 +5769,7 @@ <translation id="7691077781194517083">Қауіпсіздік кілтін бастапқы күйіне қайтару мүмкін емес. Қате: <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Crostini жүйесін жаңарту</translation> <translation id="7696063401938172191">"<ph name="PHONE_NAME" />" телефонында:</translation> +<translation id="7697166915480294040">Экраныңызды бөлісіп жатқанда, мәліметтер жасырын тұрады.</translation> <translation id="7697598343108519171">QR кодын сканерлеу үшін камераны пайдалану</translation> <translation id="7699968112832915395">Есептік жазба енгізілмейді</translation> <translation id="7701040980221191251">Жоқ</translation> @@ -6204,6 +6226,8 @@ <translation id="8184472985242519288">Бірыңғай</translation> <translation id="8186609076106987817">Сервер файлды таба алмады.</translation> <translation id="8188389033983459049">Құрылғы параметрлерін тексеріңіз және жалғастыру үшін оны іске қосыңыз</translation> +<translation id="8189306097519446565">Мектеп есептік жазбалары</translation> +<translation id="8189750580333936930">Privacy Sandbox</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> провайдеріне қосылу</translation> <translation id="8191230140820435481">Қолданбаларыңызды, кеңейтімдеріңізді және тақырыптарыңызды басқару</translation> <translation id="8195027750202970175">Дискідегі көлемі</translation> @@ -6895,6 +6919,7 @@ <translation id="8986362086234534611">Ұмыту</translation> <translation id="8986494364107987395">Қолданыс статистикасы мен жаңылыс туралы есептерді Google компаниясына автоматты түрде жіберу</translation> <translation id="8987927404178983737">Ай</translation> +<translation id="8989823300731803443">Тоқтаған жерден жалғастырыңыз.</translation> <translation id="8990209962746788689">QR кодын жасау мүмкін емес</translation> <translation id="8991520179165052608">Сайт микрофонды пайдалана алады</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 элемент}other{# элемент}}</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 8e7a7ea..91bbeadb 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">ការបញ្ចូលតាមចំណូលចិត្ត</translation> <translation id="1335929031622236846">ចុះឈ្មោះឧបករណ៍របស់អ្នក</translation> <translation id="1336902454946927954">សោសុវត្ថិភាពរបស់អ្នកត្រូវបានចាក់សោ ដោយសារមិនអាចសម្គាល់ស្នាមម្រាមដៃរបស់អ្នក។ ដើម្បីដោះសោសុវត្ថិភាពនេះ សូមបញ្ចូលកូដ PIN របស់អ្នក។</translation> +<translation id="1337692097987160377">ចែករំលែកផ្ទាំងនេះ</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ចង់បើកកម្មវិធីនេះ។</translation> <translation id="1338950911836659113">កំពុងលុប...</translation> <translation id="13392265090583506">ភាពងាយស្រួល</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">កម្មវិធី</translation> <translation id="2805770823691782631">ព័ត៌មានលម្អិតបន្ថែម</translation> <translation id="2806372837663997957">ឧបករណ៍ដែលអ្នកកំពុងព្យាយាមចែករំលែកជាមួយ មិនបានទទួលយកទេ</translation> +<translation id="2806891468525657116">ផ្លូវកាត់មានរួចហើយ</translation> <translation id="2807517655263062534">ឯកសារដែលអ្នកទាញយកបង្ហាញនៅទីនេះ</translation> <translation id="2809586584051668049">និង <ph name="NUMBER_ADDITIONAL_DISABLED" /> ទៀត</translation> <translation id="2810390687497823527">ប្រសិនបើអ្នកមិនស្គាល់កម្មវិធីបន្ថែម ឬប្រសិនបើកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់អ្នកមិនដំណើរការដូចការរំពឹងទុកទេ អ្នកអាចបិទ ឬប្ដូរកម្មវិធីបន្ថែមតាមបំណងនៅទីនេះ។</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">ដើម្បីសន្សំសំចៃថ្ម “Ok Google” បើកតែនៅពេលឧបករណ៍របស់អ្នកភ្ជាប់ទៅប្រភពថាមពលប៉ុណ្ណោះ។ ដើម្បីធ្វើការផ្លាស់ប្ដូរ សូមចូលទៅកាន់ការកំណត់។</translation> <translation id="7497215489070763236">វិញ្ញាបនបត្រ CA ម៉ាស៊ីនមេ</translation> <translation id="7497981768003291373">អ្នកមិនមានកំណត់ហេតុអត្ថបទ WebRTC ដែលបានថតថ្មីៗនេះទេ។</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> កំពុងស្នើសុំការអនុញ្ញាត ដើម្បីថតខ្លឹមសាររបស់ផ្ទាំងនេះ។</translation> <translation id="7502658306369382406">អាសយដ្ឋាន IPv6</translation> <translation id="7503191893372251637">ប្រភេទវិញ្ញាបនប័ត្រ Netscape</translation> <translation id="7503985202154027481">កំណត់ត្រាដែលអ្នកចូលមើលគេហទំព័រនេះនឹងត្រូវបានរក្សាទុកនៅក្នុងសោសុវត្ថិភាពរបស់អ្នក។</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index d2cb1364..646ef1f 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">ನೆಟ್ವರ್ಕ್ ಇಲ್ಲ</translation> <translation id="1056898198331236512">ಎಚ್ಚರಿಕೆ</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{ನಿಮ್ಮ ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ. ಪಿನ್ ಕನಿಷ್ಠ ಒಂದು ಅಕ್ಷರ ಹೊಂದಿರಬೇಕು ಮತ್ತು ಅಕ್ಷರಗಳು, ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಇತರ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು.}one{ನಿಮ್ಮ ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ. ಪಿನ್ನಲ್ಲಿ ಕನಿಷ್ಠ # ಅಕ್ಷರಗಳಿರಬೇಕು ಮತ್ತು ಅದರಲ್ಲಿ ಅಕ್ಷರಗಳು, ಅಂಕಿಗಳು ಹಾಗೂ ಇತರ ಅಕ್ಷರಗಳು ಇರಬಹುದು.}other{ನಿಮ್ಮ ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ. ಪಿನ್ನಲ್ಲಿ ಕನಿಷ್ಠ # ಅಕ್ಷರಗಳಿರಬೇಕು ಮತ್ತು ಅದರಲ್ಲಿ ಅಕ್ಷರಗಳು, ಅಂಕಿಗಳು ಹಾಗೂ ಇತರ ಅಕ್ಷರಗಳು ಇರಬಹುದು.}}</translation> <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' ಗಾಗಿ <ph name="NUM" /> ಟ್ಯಾಬ್ಗಳು ಕಂಡುಬಂದಿವೆ</translation> <translation id="1060292118287751956">ಸ್ಕ್ರೀನ್ ಅಪ್ಡೇಟ್ಗಳ ಫ್ರೀಕ್ವೆನ್ಸಿ ಅನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ</translation> <translation id="1061904396131502319">ಬಹುತೇಕ ವಿರಾಮದ ಸಮಯ</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">ಆದ್ಯತೆಯ ಇನ್ಪುಟ್</translation> <translation id="1335929031622236846">ನಿಮ್ಮ ಸಾಧನವನ್ನು ನೋಂದಾಯಿಸಿಕೊಳ್ಳಿ</translation> <translation id="1336902454946927954">ನಿಮ್ಮ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದ ಕಾರಣ, ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀ ಲಾಕ್ ಆಗಿದೆ. ಇದನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು, ನಿಮ್ಮ ಪಿನ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation> +<translation id="1337692097987160377">ಈ ಟ್ಯಾಬ್ ಹಂಚಿಕೊಳ್ಳಿ</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ತೆರೆಯಲು ಬಯಸುತ್ತಿದೆ.</translation> <translation id="1338950911836659113">ಅಳಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="13392265090583506">A11y</translation> @@ -637,9 +639,11 @@ <translation id="1688935057616748272">ಅಕ್ಷರವನ್ನು ಟೈಪ್ ಮಾಡಿ</translation> <translation id="168991973552362966">ಸಮೀಪದಲ್ಲಿರುವ ಪ್ರಿಂಟರ್ ಸೇರಿಸಿ</translation> <translation id="1689945336726856614">&URL ನಕಲಿಸಿ</translation> +<translation id="1690248886740053041">ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ತಾಂತ್ರಿಕ ಬೆಂಬಲಕ್ಕಾಗಿ, ನಿಮ್ಮ ಕ್ಯಾರಿಯರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation> <translation id="1692115862433274081">ಬೇರೊಂದು ಖಾತೆಯನ್ನು ಬಳಸಿ</translation> <translation id="1692118695553449118">ಸಿಂಕ್ ಆನ್ ಆಗಿದೆ</translation> <translation id="1692210323591458290">ಗಾಢ ನೇರಳೆ</translation> +<translation id="169279809881363536">ಯಾವುದೇ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಅನ್ವೇಷಿಸಲಾಗಿಲ್ಲ. ಹೊಸ ನೆಟ್ವರ್ಕ್ ಸೆಟಪ್ ಮಾಡಲು, ಸಾಧನ ಕ್ಯಾಮರಾ ಬಳಸಿ QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ ಅಥವಾ ನಿಮ್ಮ ಕ್ಯಾರಿಯರ್ ಒದಗಿಸಿದ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ</translation> <translation id="1697150536837697295">ಕಲೆ</translation> <translation id="1697686431566694143">ಫೈಲ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="1698122934742150150">ಪ್ರಸ್ತುತ ಅದೃಶ್ಯ ಸೆಶನ್ ಮಾತ್ರ</translation> @@ -1575,6 +1579,7 @@ <translation id="2770465223704140727">ಪಟ್ಟಿಯಿಂದ ತೆಗೆದುಹಾಕಿ</translation> <translation id="2770690685823456775">ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಇನ್ನೊಂದು ಫೋಲ್ಡರ್ಗೆ ಎಕ್ಸ್ಪೋರ್ಟ್ ಮಾಡಿ</translation> <translation id="2770929488047004208">ಮಾನಿಟರ್ ರೆಸಲ್ಯೂಷನ್</translation> +<translation id="2770954829020464827">ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವಾಗ ವಿವರಗಳನ್ನು ಮರೆಮಾಡಲಾಗುತ್ತದೆ</translation> <translation id="2771268254788431918">ಮೊಬೈಲ್ ಡೇಟಾ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="2771816809568414714">ಚೀಸ್</translation> <translation id="2772936498786524345">ಸ್ನೀಕಿ</translation> @@ -1611,6 +1616,7 @@ <translation id="2805756323405976993">ಆಪ್ಸ್</translation> <translation id="2805770823691782631">ಹೆಚ್ಚುವರಿ ವಿವರಗಳು</translation> <translation id="2806372837663997957">ನೀವು ಯಾವ ಸಾಧನದೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಿರೋ ಅದು ಸ್ವೀಕರಿಸಲಿಲ್ಲ</translation> +<translation id="2806891468525657116">ಶಾರ್ಟ್ಕಟ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation> <translation id="2807517655263062534">ನೀವು ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation> <translation id="2809586584051668049">ಮತ್ತು <ph name="NUMBER_ADDITIONAL_DISABLED" /> ಇನ್ನಷ್ಟು</translation> <translation id="2810390687497823527">ನಿಮಗೆ ವಿಸ್ತರಣೆಯೊಂದನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅಥವಾ ನಿಮ್ಮ ಬ್ರೌಸರ್ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿದ್ದರೆ, ನೀವು ವಿಸ್ತರಣೆಗಳನ್ನು ಇಲ್ಲಿ ಆಫ್ ಮಾಡಬಹುದು ಅಥವಾ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು.</translation> @@ -1942,6 +1948,7 @@ <translation id="3201422919974259695">ಲಭ್ಯವಿರುವ USB ಸಾಧನಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ.</translation> <translation id="3202131003361292969">ಪಾಥ್</translation> <translation id="3202173864863109533">ಈ ಟ್ಯಾಬ್ನ ಆಡಿಯೋವನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation> +<translation id="3202218848974251205">ಗೌಪ್ಯತೆ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್</translation> <translation id="3208321278970793882">ಆ್ಯಪ್</translation> <translation id="3208584281581115441">ಈಗಲೇ ಪರಿಶೀಲಿಸಿ</translation> <translation id="3208703785962634733">ದೃಢೀಕರಿಸಲಾಗಿಲ್ಲ</translation> @@ -2162,6 +2169,7 @@ <translation id="3459697287128633276">Google Play ಸ್ಟೋರ್ ಪ್ರವೇಶಿಸಿಲು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ನಿಮ್ಮ ಗುರುತು ಒದಗಿಸುವವರ ಮೂಲಕ ದೃಢೀಕರಿಸಿ.</translation> <translation id="3462311546193741693">ಬಹುತೇಕ ಸೈಟ್ಗಳಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ Google ಖಾತೆಗೆ ನೀವು ಸೈನ್ ಇನ್ ಆಗಿಯೇ ಇರುವಿರಿ, ಈ ಮೂಲಕ ಸಿಂಕ್ ಮಾಡಿರುವ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಬಹುದು.</translation> <translation id="3462413494201477527">ಖಾತೆ ಸೆಟಪ್ ರದ್ದುಗೊಳಿಸುವುದೇ?</translation> +<translation id="3464145797867108663">ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಸೇರಿಸಿ</translation> <translation id="346431825526753"><ph name="CUSTODIAN_EMAIL" /> ಅವರು ನಿರ್ವಹಿಸುವ ಮಕ್ಕಳಿಗೆ ಖಾತೆಯಾಗಿದೆ.</translation> <translation id="3468298837301810372">ಲೇಬಲ್</translation> <translation id="3468999815377931311">Android ಫೋನ್</translation> @@ -2283,6 +2291,7 @@ <translation id="360180734785106144">ಲಭ್ಯವಿರುವಾಗ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆಫರ್ ಮಾಡುತ್ತದೆ</translation> <translation id="3602290021589620013">ಪೂರ್ವವೀಕ್ಷಣೆ</translation> <translation id="3603622770190368340">ನೆಟ್ವರ್ಕ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪಡೆದುಕೊಳ್ಳಿ</translation> +<translation id="3604193429970465812">ದ್ವಿತೀಯ ಖಾತೆಗಳು</translation> <translation id="3604713164406837697">ವಾಲ್ಪೇಪರ್ ಬದಲಿಸಿ</translation> <translation id="3605780360466892872">ಬಟನ್ಡೌನ್</translation> <translation id="3608576286259426129">ಬಳಕೆದಾರರ ಚಿತ್ರದ ಪೂರ್ವವೀಕ್ಷಣೆ</translation> @@ -2607,6 +2616,7 @@ ನೀವು <ph name="CONTROL_PANEL_APPLET_NAME" /> ಪ್ರಾರಂಭಿಸಲು ಬಯಸುವಿರಾ?</translation> <translation id="394183848452296464">ಶಾರ್ಟ್ಕಟ್ ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> +<translation id="3943494825379372497">ಆ್ಯಪ್ಗಳು ಮತ್ತು ಪುಟಗಳನ್ನು ಮರುಸ್ಥಾಪನೆ ಮಾಡಬೇಕೆ?</translation> <translation id="3943582379552582368">&ಹಿಂದೆ</translation> <translation id="3943857333388298514">ಅಂಟಿಸು</translation> <translation id="3948116654032448504">ಚಿತ್ರಕ್ಕಾಗಿ <ph name="SEARCH_ENGINE" /> ಹುಡು&ಕಿ</translation> @@ -2692,6 +2702,7 @@ <translation id="4046013316139505482">ಈ ವಿಸ್ತರಣೆಗಳು ಈ ಸೈಟ್ನಲ್ಲಿನ ಮಾಹಿತಿಯನ್ನು ವೀಕ್ಷಿಸುವುದು ಮತ್ತು ಬದಲಾಯಿಸುವುದು ಅಗತ್ಯವಿಲ್ಲ.</translation> <translation id="4046123991198612571">ಮುಂದಿನ ಟ್ರ್ಯಾಕ್</translation> <translation id="4047726037116394521">ಮುಖಪುಟಕ್ಕೆ ಹೋಗಿ</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# ಸಂಪರ್ಕ ಲಭ್ಯವಿಲ್ಲ. ಅವರ ಜೊತೆಗೆ Nearby ಶೇರ್ ಅನ್ನು ಬಳಸಲು, ಅವರ Google ಖಾತೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಿ.}one{# ಸಂಪರ್ಕಗಳು ಲಭ್ಯವಿಲ್ಲ. ಅವರೊಂದಿಗೆ Nearby ಶೇರ್ ಬಳಸಲು, ಅವರ Google ಖಾತೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಿ.}other{# ಸಂಪರ್ಕಗಳು ಲಭ್ಯವಿಲ್ಲ. ಅವರೊಂದಿಗೆ Nearby ಶೇರ್ ಬಳಸಲು, ಅವರ Google ಖಾತೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸಿ.}}</translation> <translation id="4050225813016893843">ದೃಢೀಕರಣ ವಿಧಾನ</translation> <translation id="4052120076834320548">ಚಿಕ್ಕದು</translation> <translation id="4056908315660577142"><ph name="APP_NAME" /> Chrome ಆ್ಯಪ್ಗೆ ನಿಮ್ಮ ಪೋಷಕರು ಹೊಂದಿಸಿದ ಸಮಯ-ಮಿತಿಯನ್ನು ನೀವು ತಲುಪಿದ್ದೀರಿ. ನಾಳೆ ಇದನ್ನು <ph name="TIME_LIMIT" /> ಸಮಯದವರೆಗೆ ಬಳಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ.</translation> @@ -3339,6 +3350,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ಡಿಫಾಲ್ಟ್) ನಂತೆ ತೋರುತ್ತಿದೆ</translation> <translation id="4864369630010738180">ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation> <translation id="4864805589453749318">ಶಾಲಾ ಖಾತೆಯನ್ನು ಸೇರಿಸಲು ಅನುಮತಿ ಒದಗಿಸುತ್ತಿರುವ ಪೋಷಕರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.</translation> +<translation id="4866265760644917470">ಪ್ರೊಫೈಲ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಗಿದೆ.</translation> <translation id="486635084936119914">ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ನಂತರ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕೆಲವು ಫೈಲ್ ಪ್ರಕಾರಗಳನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="48704129375571883">ಹೆಚ್ಚುವರಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸೇರಿಸಿ</translation> <translation id="4870758487381879312">ಕಾನ್ಫಿಗರೇಶನ್ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ನಿರ್ವಾಹಕರು ನೀಡಿದ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> @@ -3622,6 +3634,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ. ನೀವು ಇನ್ನೂ # ಅಪಾಯಕ್ಕೀಡಾಗಿದ ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿರುವಿರಿ. ಈಗಲೇ ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.}one{ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ. ನೀವು ಇನ್ನೂ # ಅಪಾಯಕ್ಕೀಡಾಗಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಹೊಂದಿರುವಿರಿ. ಈಗಲೇ ಈ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.}other{ಅಪಾಯಕ್ಕೀಡಾದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ. ನೀವು ಇನ್ನೂ # ಅಪಾಯಕ್ಕೀಡಾಗಿದ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಹೊಂದಿರುವಿರಿ. ಈಗಲೇ ಈ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.}}</translation> <translation id="5207949376430453814">ಪಠ್ಯದಲ್ಲಿ ಕೆರೆಟ್ ಅನ್ನು ಎದ್ದುಗಾಣಿಸಿ</translation> <translation id="5209320130288484488">ಯಾವ ಸಾಧನಗಳೂ ಕಂಡುಬಂದಿಲ್ಲ</translation> +<translation id="5209572028385096813">ಈ ಬಳಕೆದಾರರನ್ನು Family Link ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗಿದೆ</translation> <translation id="5210365745912300556">ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿ</translation> <translation id="5213481667492808996">ನಿಮ್ಮ '<ph name="NAME" />' ಡೇಟಾ ಸೇವೆಯು ಬಳಕೆಗೆ ಸಿದ್ಧವಾಗಿದೆ</translation> <translation id="5213891612754844763">ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೋರಿಸಿ</translation> @@ -3707,6 +3720,7 @@ <translation id="5302048478445481009">ಭಾಷೆ</translation> <translation id="5302932258331363306">ಬದಲಿಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="5304276686222516262">ಸಂಪರ್ಕ ಪಟ್ಟಿಯನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ, ಅಥವಾ <a href="#" id="tryAgainLink">ಪುನಃ ಪ್ರಯ್ನತಿಸಿ</a>.</translation> +<translation id="5305145881844743843">ಈ ಖಾತೆಯನ್ನು <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗಿದೆ</translation> <translation id="5305688511332277257">ಯಾವುದನ್ನೂ ಸ್ಥಾಪನೆ ಮಾಡಲಾಗಿಲ್ಲ</translation> <translation id="5307030433605830021">ಬಿತ್ತರಿಸುವಿಕೆ ಮೂಲಕ್ಕೆ ಬೆಂಬಲವಿಲ್ಲ</translation> <translation id="5308380583665731573">ಸಂಪರ್ಕಿಸು</translation> @@ -4089,6 +4103,7 @@ <translation id="5740820643029013514">ನಿಶ್ಯಬ್ದ ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಬಳಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿರುವುದು)</translation> <translation id="574104302965107104">ಡಿಸ್ಪ್ಲೇ ಪ್ರತಿಬಿಂಬಿಸುವಿಕೆ</translation> <translation id="574209121243317957">ಪಿಚ್</translation> +<translation id="5742505912938664543">ನೀವು ಇಲ್ಲಿ ದ್ವಿತೀಯ ಖಾತೆಯನ್ನು ಸೇರಿಸಿದಾಗ, ನೀವು ವೆಬ್ ಬ್ರೌಸ್ ಮಾಡಲು, ಆ್ಯಪ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಮತ್ತು Gmail ಪರಿಶೀಲಿಸಲು ಹಾಗೂ ಇತರ Google ಸೇವೆಗಳನ್ನು ಬಳಸಲು ಆ ಖಾತೆಯನ್ನು ಬಳಸಬಹುದು.</translation> <translation id="5746169159649715125">PDF ನಂತೆ ಉಳಿಸಿ</translation> <translation id="5747552184818312860">ಅವಧಿ ಮೀರುವುದು</translation> <translation id="5747785204778348146">ಡೆವಲಪರ್ - ಅಸ್ಥಿರ</translation> @@ -4429,6 +4444,7 @@ <translation id="6129953537138746214">ಸ್ಪೇಸ್</translation> <translation id="6130692320435119637">ವೈ-ಫೈ ಸೇರಿಸಿ</translation> <translation id="6136114942382973861">ಡೌನ್ಲೋಡ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಮುಚ್ಚಿ</translation> +<translation id="6136287496450963112">ನಿಮ್ಮ ಭದ್ರತೆ ಕೀ ಪಿನ್ ಸಂರಕ್ಷಿತವಾಗಿಲ್ಲ. ಫಿಂಗರ್ಪ್ರಿಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು, ಮೊದಲು ಪಿನ್ ಅನ್ನು ರಚಿಸಿ.</translation> <translation id="6137767437444130246">ಬಳಕೆದಾರರ ಪ್ರಮಾಣಪತ್ರ</translation> <translation id="6138680304137685902">SHA-384 ಜೊತೆಗೆ X9.62 ECDSA ಸಹಿ</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ನೆಟ್ವರ್ಕ್ ಇಲ್ಲ</translation> @@ -4609,6 +4625,7 @@ <translation id="6331566915566907158">Chrome OS ನ ವೈಶಿಷ್ಟ್ಯಗಳು ಹಾಗೂ ಕೆಲಸ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡಿ</translation> <translation id="6331818708794917058">ಸೈಟ್ಗಳು MIDI ಸಾಧನಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಕೇಳಬಹುದು</translation> <translation id="6333064448949140209">ಡೀಬಗ್ ಮಾಡಲು Google ಗೆ ಫೈಲ್ ಕಳುಹಿಸಲಾಗುತ್ತದೆ</translation> +<translation id="6334444530352320327">ನಿಮ್ಮ ಆ್ಯಪ್ಗಳು ಮತ್ತು OS ಸೆಟ್ಟಿಂಗ್ಗಳು ನೀವು ಈ ಖಾತೆಯನ್ನು ಬಳಸಿ ಸೈನ್ ಇನ್ ಆಗಿರುವ Chromebook ಗಳಾದ್ಯಂತ ಸಿಂಕ್ ಆಗುತ್ತದೆ.<ph name="LINK_BEGIN" />ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡಿ<ph name="LINK_END" /></translation> <translation id="6338981933082930623">ಎಲ್ಲಾ ಸೈಟ್ಗಳು ನಿಮಗೆ ಯಾವುದಾದರೂ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸಬಹುದು</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> ಗೆ ಹೊಸ ಪ್ರೊಫೈಲ್ ಅನ್ನು ರಚಿಸಿ</translation> <translation id="6340017061976355871">ಸರ್ವರ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ. ಸಮಸ್ಯೆ ಮುಂದುವರಿದರೆ, ನಿಮ್ಮ Chromebook ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ.</translation> @@ -4910,6 +4927,7 @@ <translation id="6709133671862442373">News</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ಬಳಸುವ ಮೂಲಕ ಸಂಪರ್ಕಪಡಿಸು</translation> <translation id="6710213216561001401">ಹಿಂದಿನದು</translation> +<translation id="6713233729292711163">ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಸೇರಿಸಿ</translation> <translation id="6715803357256707211">ನಿಮ್ಮ Linux ಆ್ಯಪ್ ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ದೋಷವೊಂದು ಸಂಭವಿಸಿದೆ. ವಿವರಗಳಿಗಾಗಿ ಅಧಿಸೂಚನೆಯ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ.</translation> <translation id="671619610707606484">ಸೈಟ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ <ph name="TOTAL_USAGE" /> ಡೇಟಾವನ್ನು ಇದು ತೆರವುಗೊಳಿಸುತ್ತದೆ</translation> <translation id="671928215901716392">ಪರದೆಯನ್ನು ಲಾಕ್ ಮಾಡಿ</translation> @@ -5279,6 +5297,7 @@ <translation id="7121362699166175603">ವಿಳಾಸ ಪಟ್ಟಿಯ ಇತಿಹಾಸ ಮತ್ತು ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು.</translation> <translation id="7121438501124788993">ಡೆವೆಲಪರ್ ಮೋಡ್</translation> <translation id="7121728544325372695">ಸ್ಮಾರ್ಟ್ ಡ್ಯಾಶ್ಗಳು</translation> +<translation id="7122353087820324370">ಆ್ಯಪ್ಗಳು ಮತ್ತು OS ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ದ್ವಿತೀಯ ಖಾತೆಗಳಿಗೆ ಸಿಂಕ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="7123030151043029868">ಬಹು ಫೈಲ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಈ ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="7123360114020465152">ಇನ್ನು ಮುಂದೆ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ</translation> <translation id="7125148293026877011">Crostini ಅನ್ನು ಅಳಿಸಿ</translation> @@ -5587,12 +5606,14 @@ <translation id="7496732379142025470">ಬ್ಯಾಟರಿಯನ್ನು ಉಳಿಸಲು, ನಿಮ್ಮ ಸಾಧನವು ವಿದ್ಯುತ್ ಮೂಲಕ್ಕೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವಾಗ ಮಾತ್ರವೇ “Ok Google” ಆನ್ ಆಗಿರುತ್ತದೆ. ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ.</translation> <translation id="7497215489070763236">ಸರ್ವರ್ CA ಪ್ರಮಾಣಪತ್ರ</translation> <translation id="7497981768003291373">ನಿಮ್ಮಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಕ್ಯಾಪ್ಚರ್ ಆಗಿರುವ WebRTC ಪಠ್ಯ ಲಾಗ್ಗಳು ಇಲ್ಲ.</translation> +<translation id="7498614236023455416">ಈ ಟ್ಯಾಬ್ನ ವಿಷಯಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು <ph name="TARGET_NAME" /> ಅನುಮತಿಯನ್ನು ಕೇಳುತ್ತಿದೆ.</translation> <translation id="7502658306369382406">IPv6 ವಿಳಾಸ</translation> <translation id="7503191893372251637">Netscape ಪ್ರಮಾಣಪತ್ರ ಪ್ರಕಾರ</translation> <translation id="7503985202154027481">ನೀವು ಈ ಸೈಟ್ಗೆ ಭೇಟಿ ನೀಡಿರುವ ಕುರಿತಾದ ದಾಖಲೆಗಳನ್ನು ನಿಮ್ಮ ಭದ್ರತೆ ಕೀಯಲ್ಲಿ ಉಳಿಸಲಾಗಿರುತ್ತದೆ.</translation> <translation id="750509436279396091">ಡೌನ್ಲೋಡ್ಗಳ ಫೋಲ್ಡರ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation> <translation id="7506093026325926984">ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಈ ಸಾಧನದಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ</translation> <translation id="7506130076368211615">ಹೊಸ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಹೊಂದಿಸಿ</translation> +<translation id="7506242536428928412">ನಿಮ್ಮ ಹೊಸ ಭದ್ರತಾ ಕೀ ಬಳಸಲು, ಹೊಸ ಪಿನ್ ಹೊಂದಿಸಿ</translation> <translation id="7506541170099744506">ಎಂಟರ್ಪ್ರೈಸ್ ನಿರ್ವಹಣೆಗಾಗಿ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ದಾಖಲಿಸಲಾಗಿದೆ.</translation> <translation id="7507207699631365376">ಈ ಪೂರೈಕೆದಾರರ <ph name="BEGIN_LINK" />ಗೌಪ್ಯತೆ ನೀತಿಯನ್ನು<ph name="END_LINK" /> ನೋಡಿ</translation> <translation id="7507930499305566459">ಸ್ಥಿತಿ ಪ್ರತಿಕ್ರಿಯೆ ನೀಡುವವರ ಪ್ರಮಾಣಪತ್ರ</translation> @@ -5756,6 +5777,7 @@ <translation id="7691077781194517083">ಈ ಭದ್ರತೆ ಕೀ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದೋಷ <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Crostini ಅನ್ನು ಅಪ್ಗ್ರೇಡ್ ಮಾಡಿ</translation> <translation id="7696063401938172191">ನಿಮ್ಮ'<ph name="PHONE_NAME" />' ನಲ್ಲಿ:</translation> +<translation id="7697166915480294040">ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುವಾಗ ವಿವರಗಳನ್ನು ಮರೆಮಾಡಲಾಗುತ್ತದೆ</translation> <translation id="7697598343108519171">QR ಕೋಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಕ್ಯಾಮರಾ ಬಳಸಿ</translation> <translation id="7699968112832915395">ಖಾತೆಯನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="7701040980221191251">ಯಾವುದೂ ಇಲ್ಲ</translation> @@ -6209,6 +6231,8 @@ <translation id="8184472985242519288">ಏಕರೂಪ</translation> <translation id="8186609076106987817">ಸರ್ವರ್ಗೆ ಫೈಲ್ ಅನ್ನು ಕಂಡುಹಿಡಿಯಲಾಗಲಿಲ್ಲ.</translation> <translation id="8188389033983459049">ನಿಮ್ಮ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಮುಂದುವರಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation> +<translation id="8189306097519446565">ಶಾಲಾ ಖಾತೆಗಳು</translation> +<translation id="8189750580333936930">ಗೌಪ್ಯತೆ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="8191230140820435481">ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ವಿಸ್ತರಣೆಗಳು, ಮತ್ತು ಥೀಮ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="8195027750202970175">ಡಿಸ್ಕ್ನಲ್ಲಿನ ಗಾತ್ರ</translation> @@ -6901,6 +6925,7 @@ <translation id="8986362086234534611">ಮರೆತುಹೋಗು</translation> <translation id="8986494364107987395">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಮತ್ತು ಕ್ರಾಶ್ ವರದಿಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರವಾನಿಸು</translation> <translation id="8987927404178983737">ತಿಂಗಳು</translation> +<translation id="8989823300731803443">ಎಲ್ಲಿ ಬಿಡಲಾಗಿದೆಯೋ ಅಲ್ಲಿಂದಲೇ ಮುಂದುವರೆಯಿರಿ.</translation> <translation id="8990209962746788689">QR ಕೋಡ್ ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="8991520179165052608">ನಿಮ್ಮ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ಸೈಟ್ ಬಳಸಿಕೊಳ್ಳಬಹುದು</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 ಐಟಂ}one{# ಐಟಂಗಳು}other{# ಐಟಂಗಳು}}</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index a11544d..f9297810 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">선호하는 입력 방식</translation> <translation id="1335929031622236846">기기 등록</translation> <translation id="1336902454946927954">지문을 인식할 수 없어 보안 키가 잠겼습니다. 보안 키를 잠금 해제하려면 PIN을 입력하세요.</translation> +<translation id="1337692097987160377">탭 공유</translation> <translation id="1338802252451106843"><ph name="ORIGIN" />에서 이 애플리케이션을 열려고 합니다.</translation> <translation id="1338950911836659113">삭제 중...</translation> <translation id="13392265090583506">접근성</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">앱</translation> <translation id="2805770823691782631">추가 세부정보</translation> <translation id="2806372837663997957">공유하려는 기기에서 수락하지 않았습니다.</translation> +<translation id="2806891468525657116">바로가기가 이미 존재합니다.</translation> <translation id="2807517655263062534">다운로드한 파일이 여기에 표시됩니다.</translation> <translation id="2809586584051668049">외 <ph name="NUMBER_ADDITIONAL_DISABLED" />개</translation> <translation id="2810390687497823527">알 수 없는 확장 프로그램이 있거나 브라우저가 예상대로 작동하지 않는다면 여기에서 확장 프로그램을 사용 중지하거나 맞춤설정할 수 있습니다.</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">배터리를 절약하기 위하여 기기가 전원에 연결된 경우에만 “Ok Google” 기능이 켜집니다. 변경하려면 설정으로 이동하세요.</translation> <translation id="7497215489070763236">서버 CA 인증서</translation> <translation id="7497981768003291373">최근 캡처한 WebRTC 텍스트 로그가 없습니다.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" />에서 탭 내용을 캡처할 권한을 요청합니다.</translation> <translation id="7502658306369382406">IPv6 주소</translation> <translation id="7503191893372251637">Netscape Certificate Type</translation> <translation id="7503985202154027481">이 사이트를 방문한 기록이 보안 키에 보관됩니다.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index ed6f560..5a2cd37 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Тармактар жок</translation> <translation id="1056898198331236512">Эскертүү</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Жаңы PIN кодуңузду киргизиңиз. PIN код кеминде бир символдон туруп, анда тамгаларды, сандарды жана башка символдорду колдонууга болот.}other{Жаңы PIN кодуңузду киргизиңиз. PIN код кеминде # символдон туруп, анда тамгаларды, сандарды жана башка символдорду колдонууга болот.}}</translation> <translation id="1059944192885972544">"<ph name="SEARCH_TEXT" />" үчүн <ph name="NUM" /> өтмөк табылды</translation> <translation id="1060292118287751956">Экрандын жаңыртуу жыштыгын аныктайт</translation> <translation id="1061904396131502319">Тыныгууга убакыт келип калды</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Тандалган киргизүү</translation> <translation id="1335929031622236846">Түзмөгүңүздү каттаңыз</translation> <translation id="1336902454946927954">Коопсуздук ачкычыңыз кулпуланды, анткени манжа изиңиз таанылган жок. Анын кулпусун ачуу үчүн PIN кодуңузду киргизиңиз.</translation> +<translation id="1337692097987160377">Бул өтмөктү бөлүшүү</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> бул колдонмону ачканы жатат.</translation> <translation id="1338950911836659113">Жок кылынууда…</translation> <translation id="13392265090583506">Атайын мүмкүнчүлүктөр</translation> @@ -635,9 +637,11 @@ <translation id="1688935057616748272">Тамганы териңиз</translation> <translation id="168991973552362966">Жакын арадагы принтерди кошуу</translation> <translation id="1689945336726856614">&URLди көчүрүү</translation> +<translation id="1690248886740053041">Мобилдик тармакка туташкан жок. Техникалык колдоо көрүү үчүн байланыш операторуна кайрылыңыз.</translation> <translation id="1692115862433274081">Башка аккаунтту колдонуу</translation> <translation id="1692118695553449118">Шайкештештирүү күйүк</translation> <translation id="1692210323591458290">Күңүрт кызгылт көгүш</translation> +<translation id="169279809881363536">Профилдер табылган жок. Жаңы тармакты жөндөө үчүн түзмөктөгү камеранын жардамы менен QR кодун скандаңыз же байланыш операторуңуз берген жандандыруу кодун киргизиңиз.</translation> <translation id="1697150536837697295">Көркөм өнөрчүлүк</translation> <translation id="1697686431566694143">Файлды түзөтүү</translation> <translation id="1698122934742150150">Учурдагы жашыруун режимдеги сеанс гана</translation> @@ -1574,6 +1578,7 @@ <translation id="2770465223704140727">Тизмеден чыгарып салуу</translation> <translation id="2770690685823456775">Сырсөздөрүңүздү башка папкага экспорттоңуз</translation> <translation id="2770929488047004208">Монитордун дааналыгы</translation> +<translation id="2770954829020464827">Экраныңызды бөлүшүп жатканда чоо-жайы жашырылып турат</translation> <translation id="2771268254788431918">Мобилдик Интернет жандырылды</translation> <translation id="2771816809568414714">Сыр</translation> <translation id="2772936498786524345">Коркок</translation> @@ -1610,6 +1615,7 @@ <translation id="2805756323405976993">Колдонмолор</translation> <translation id="2805770823691782631">Кошумча маалымат</translation> <translation id="2806372837663997957">Түзмөк бөлүшкүңүз келген файлды кабыл алган жок</translation> +<translation id="2806891468525657116">Кыска жол мурунтан бар</translation> <translation id="2807517655263062534">Жүктөлүп алынган файлдар бул жерде көрүнөт</translation> <translation id="2809586584051668049">жана дагы <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Эгер кеңейтүү тааныш көрүнбөсө же серепчиңиз ойдогудай иштебей жатса, кеңейтүүлөрдү бул жерден өчүрүп же ыңгайлаштырып алсаңыз болот.</translation> @@ -1941,6 +1947,7 @@ <translation id="3201422919974259695">Жеткиликтүү USB түзмөктөрү ушул жерде көрүнөт.</translation> <translation id="3202131003361292969">Жол</translation> <translation id="3202173864863109533">Бул өтмөктүн үнү өчүрүлүүдө.</translation> +<translation id="3202218848974251205">Купуя сыноо чөйрөсү</translation> <translation id="3208321278970793882">Колдонмо</translation> <translation id="3208584281581115441">Азыр текшерүү</translation> <translation id="3208703785962634733">Ырасталбаган</translation> @@ -2161,6 +2168,7 @@ <translation id="3459697287128633276">Аккаунтуңуз менен Google Play Store´го кире алуу үчүн идентификациялык маалыматты камсыздагыч берген маалыматты киргизишиңиз керек.</translation> <translation id="3462311546193741693">Көпчүлүк сайттардагы аккаунттарыңыздан чыгарыласыз. Шайкештирилген дайындарыңыздын тазаланышы үчүн Google аккаунтуңуздан чыгарылбайсыз.</translation> <translation id="3462413494201477527">Аккаунтту орнотуу жокко чыгарылсынбы?</translation> +<translation id="3464145797867108663">Жумуш профилин кошуу</translation> <translation id="346431825526753">Бул <ph name="CUSTODIAN_EMAIL" /> тарабынан башкарылган балдардын каттоо эсеби.</translation> <translation id="3468298837301810372">Энбелги</translation> <translation id="3468999815377931311">Android телефону</translation> @@ -2282,6 +2290,7 @@ <translation id="360180734785106144">Жаңы функциялар чыкканда, аларды сунуштап турат</translation> <translation id="3602290021589620013">Алдн-ала көз жүгртүү</translation> <translation id="3603622770190368340">Тармактык тастыктама алыңыз</translation> +<translation id="3604193429970465812">Кошумча аккаунттар</translation> <translation id="3604713164406837697">Тушкагазды өзгөртүп алыңыз</translation> <translation id="3605780360466892872">Топчуланган</translation> <translation id="3608576286259426129">Колдонуучунун сүрөтүн алдын ала карап көрүү</translation> @@ -2606,6 +2615,7 @@ <ph name="CONTROL_PANEL_APPLET_NAME" /> баштай бересизби?</translation> <translation id="394183848452296464">Кыска жол түзүлбөй жатат</translation> +<translation id="3943494825379372497">Колдонмолор менен барактар калыбына келтирилсинби?</translation> <translation id="3943582379552582368">&Артка</translation> <translation id="3943857333388298514">Чаптоо</translation> <translation id="3948116654032448504">&Сүрөт <ph name="SEARCH_ENGINE" /> издөө</translation> @@ -2691,6 +2701,7 @@ <translation id="4046013316139505482">Бул кеңейтүүлөр ушул сайттагы маалыматты көрүп, өзгөртө алышпайт.</translation> <translation id="4046123991198612571">Кийинки трек</translation> <translation id="4047726037116394521">Башкы бетке өтүү</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# байланыш жеткиликсиз. Алар менен Nearby Share аркылуу бөлүшүү үчүн байланыштарыңызга алардын Google аккаунту менен байланышкан электрондук почта дарегин кошуңуз.}other{# байланыш жеткиликсиз. Алар менен Nearby Share аркылуу бөлүшүү үчүн байланыштарыңызга алардын Google аккаунттары менен байланышкан электрондук почта даректерин кошуңуз.}}</translation> <translation id="4050225813016893843">Аныктыгын текшерүү ыкмасы</translation> <translation id="4052120076834320548">Кымындай</translation> <translation id="4056908315660577142">Ата-энең Chrome'дун <ph name="APP_NAME" /> колдонмосуна койгон чекке жеттиң. Аны эртең <ph name="TIME_LIMIT" /> колдоно аласың.</translation> @@ -3337,6 +3348,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> сыяктуу көрүнөт (демейки дааналыгы)</translation> <translation id="4864369630010738180">Кирүүдө…</translation> <translation id="4864805589453749318">Мектеп аккаунтун кошуу үчүн уруксат берип жаткан ата-энени тандаңыз.</translation> +<translation id="4866265760644917470">Профиль ийгиликтүү кошулду.</translation> <translation id="486635084936119914">Айрым файл форматтары жүктөлүп алынгандан кийин автоматтык түрдө ачуу</translation> <translation id="48704129375571883">Кошумча элементтерди кошуу</translation> <translation id="4870758487381879312">Конфигурация тууралуу маалыматты алуу үчүн администратор берген сырсөздү киргизиңиз</translation> @@ -3620,6 +3632,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Уурдалган сырсөз ийгиликтүү өзгөртүлдү. Дагы # уурдалган сырсөз бар. Chrome бул сырсөздү азыр текшерүүнү сунуштайт.}other{Уурдалган сырсөз ийгиликтүү өзгөртүлдү. Дагы # уурдалган сырсөз бар. Chrome бул сырсөздөрдү азыр текшерүүнү сунуштайт.}}</translation> <translation id="5207949376430453814">Текст киргизүү учурунда курсор баса белгиленсин</translation> <translation id="5209320130288484488">Түзмөктөр табылган жок</translation> +<translation id="5209572028385096813">Бул колдонуучу Family Link аркылуу башкарылат</translation> <translation id="5210365745912300556">Өтмөктү жабуу</translation> <translation id="5213481667492808996">"<ph name="NAME" />" дайындарды өткөрүү кызматын колдонуп баштасаңыз болот</translation> <translation id="5213891612754844763">Прокси жөндөөлөрүн көрсөтүү</translation> @@ -3705,6 +3718,7 @@ <translation id="5302048478445481009">Тил</translation> <translation id="5302932258331363306">Алмаштыруу варианттарын көрсөтүү</translation> <translation id="5304276686222516262">Байланыштар тизмеси жүктөлгөн жок. Тармакка туташууну текшериңиз же <a href="#" id="tryAgainLink">кайталаңыз</a>.</translation> +<translation id="5305145881844743843">Бул аккаунтту <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> башкарат</translation> <translation id="5305688511332277257">Эч бири орнотулган жок</translation> <translation id="5307030433605830021">Булак колдоого алынбайт</translation> <translation id="5308380583665731573">Туташуу</translation> @@ -4085,6 +4099,7 @@ <translation id="5740820643029013514">Үнсүз жазышууну колдонуу (сунушталат)</translation> <translation id="574104302965107104">Дисплейди күзгүдөй чагылдыруу</translation> <translation id="574209121243317957">Тон</translation> +<translation id="5742505912938664543">Бул жерге кошумча аккаунтту кошсоңуз, анын жардамы менен вебди серептеп, колдонмолорду жүктөп алып, Gmail'ди жана башка Google кызматтарын колдоно аласыз.</translation> <translation id="5746169159649715125">PDF катары сактоо</translation> <translation id="5747552184818312860">Жарамдуулук мөөнөтү</translation> <translation id="5747785204778348146">Иштеп чыгуучу – туруктуу эмес</translation> @@ -4425,6 +4440,7 @@ <translation id="6129953537138746214">Боштук</translation> <translation id="6130692320435119637">Wi-Fi кошуу</translation> <translation id="6136114942382973861">Жүктөлүп алынгандар тилкесин жабуу</translation> +<translation id="6136287496450963112">Коопсуздук ачкычы PIN код менен корголгон эмес. Манжа издерин башкаруу үчүн, адегенде PIN кодду тузуңуз.</translation> <translation id="6137767437444130246">Колдонуучунун тастыктамасы</translation> <translation id="6138680304137685902">X9.62 ECDSA Колтамгасы SHA-384 менен</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, тармак жок</translation> @@ -4605,6 +4621,7 @@ <translation id="6331566915566907158">Chrome OS'тин функцияларын жана өндүрүмдүүлүгүн өркүндөтүүгө жардам бериңиз</translation> <translation id="6331818708794917058">Сайттар MIDI түзмөктөрүнө сиздин уруксатыңыз менен туташа алат</translation> <translation id="6333064448949140209">Файл мүчүлүштүктөрдү оңдоо үчүн Google'га жөнөтүлөт</translation> +<translation id="6334444530352320327">Колдонмолор менен OS жөндөөлөрү ушул аккаунт менен кирип турган бардык Chromebook'тарда шайкештирилет.<ph name="LINK_BEGIN" />Жөндөөлөрдү шайкештирүү<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Бардык сайттар ар кандай жарнамаларды көрсөтө алат</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> үчүн жаңы профиль түзүү</translation> <translation id="6340017061976355871">Серверге туташпай калды. Интернетке туташууңузду текшерип, кайталап көрүңүз. Эгер маселе чечилбесе, Chromebook'уңузду өчүрүп күйгүзүңүз.</translation> @@ -4906,6 +4923,7 @@ <translation id="6709133671862442373">Жаңылыктар</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> менен туташуу</translation> <translation id="6710213216561001401">Мурунку</translation> +<translation id="6713233729292711163">Жумуш профилин кошуу</translation> <translation id="6715803357256707211">Linux колдонмосун орнотуу учурунда ката кетти. Чоо-жайын билгиңиз келсе, билдирмени чыкылдатыңыз.</translation> <translation id="671619610707606484">Ушуну менен сайттар ээлеп турган <ph name="TOTAL_USAGE" /> орун бошотулат</translation> <translation id="671928215901716392">Кулпу экраны</translation> @@ -5274,6 +5292,7 @@ <translation id="7121362699166175603">Таржымал жана дарек тилкесиндеги автоматтык түрдө бүтүрүлгөн сөздөр тазаланат. Google аккаунтуңуздун серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation> <translation id="7121438501124788993">Иштеп чыгуучу режими</translation> <translation id="7121728544325372695">Акылдуу тирелер</translation> +<translation id="7122353087820324370">Колдонмолор менен OS жөндөөлөрү кошумча аккаунттар менен шайкештирилген жок.</translation> <translation id="7123030151043029868">Бир нече файлды автоматтык түрдө жүктөп ала алат</translation> <translation id="7123360114020465152">Мындан ары колдоого алынбайт</translation> <translation id="7125148293026877011">Crostini'ни жок кылуу</translation> @@ -5582,12 +5601,14 @@ <translation id="7496732379142025470">Батареяны үнөмдөө максатында, "Окей Google" буйругу түзмөгүңүз кубат булагына туташкан учурда гана иштейт. Өзгөртүү үчүн, Жөндөөлөргө өтүңүз.</translation> <translation id="7497215489070763236">Сервердин CA тастыктамасы</translation> <translation id="7497981768003291373">Текст түрүндө сакталган акыркы WebRTC таржымалдары жок.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ушул өтмөктөгү мазмунду сүрөткө тартып алууга уруксат сурап жатат.</translation> <translation id="7502658306369382406">IPv6 дареги</translation> <translation id="7503191893372251637">Netscape тастыктамасынын түрү</translation> <translation id="7503985202154027481">Бул вебсайтка киргениңиз тууралуу маалымат коопсуздук ачкычыңызга жазылат.</translation> <translation id="750509436279396091">Жүктөлүп алынгандар куржунун ачуу</translation> <translation id="7506093026325926984">Бул сырсөз ушул түзмөктө сакталат</translation> <translation id="7506130076368211615">Жаңы тармакты жөндөө</translation> +<translation id="7506242536428928412">Жаңы коопсуздук ачкычын колдонуу үчүн жаңы PIN кодду түзүңүз</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> түзмөгүңүз ишкана башкаруусуна ийгиликтүү кабыл алынды.</translation> <translation id="7507207699631365376">Бул кызмат көрсөтүүчүнүн <ph name="BEGIN_LINK" />купуялык саясатын<ph name="END_LINK" /> көрүңүз</translation> <translation id="7507930499305566459">Статуска жооп берүүчү тастыктама</translation> @@ -5751,6 +5772,7 @@ <translation id="7691077781194517083">Бул коопсуздук ачкычы баштапкы абалга келтирилбей жатат. <ph name="ERROR_CODE" /> катасы.</translation> <translation id="7691698019618282776">Crostini'ни жаңыртуу</translation> <translation id="7696063401938172191">"<ph name="PHONE_NAME" />" телефонуңузда:</translation> +<translation id="7697166915480294040">Экраныңызды бөлүшүп жатканда чоо-жайы жашырылып турат</translation> <translation id="7697598343108519171">QR кодду камеранын жардамы менен скандаңыз</translation> <translation id="7699968112832915395">Аккаунт кошулбай жатат</translation> <translation id="7701040980221191251">Эч бир</translation> @@ -6207,6 +6229,8 @@ <translation id="8184472985242519288">Бир ыктай</translation> <translation id="8186609076106987817">Сервер файлды тапкан жок.</translation> <translation id="8188389033983459049">Түзмөгүңүздүн жөндөөлөрүн текшерип, улантуу үчүн аны күйгүзүңүз</translation> +<translation id="8189306097519446565">Мектептин аккаунттары</translation> +<translation id="8189750580333936930">Купуя сыноо чөйрөсү</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> менен туташууда</translation> <translation id="8191230140820435481">Колдонмолоруңузду, кеңейтүүлөрүңүздү жана темаларыңызды башкарыңыз</translation> <translation id="8195027750202970175">Дисктин көлөмү</translation> @@ -6898,6 +6922,7 @@ <translation id="8986362086234534611">Унутуу</translation> <translation id="8986494364107987395">Google'га автоматтык түрдө колдонуу статистикасы жана каталар жөнүндө кабар берүү.</translation> <translation id="8987927404178983737">Ай</translation> +<translation id="8989823300731803443">Чыгып кеткен жерден улантыңыз.</translation> <translation id="8990209962746788689">QR коду түзүлгөн жок</translation> <translation id="8991520179165052608">Сайт микрофонуңузду колдоно алат</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 нерсе}other{# нерсе}}</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index c969321..d89ceba 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">ການປ້ອນຂໍ້ມູນທີ່ຕ້ອງການ</translation> <translation id="1335929031622236846">ລົງທະບຽນອຸປະກອນຂອງທ່ານ</translation> <translation id="1336902454946927954">ກະແຈຄວາມປອດໄພຂອງທ່ານຖືກລັອກ ເພາະວ່າບໍ່ສາມາດຮັບຮູ້ລາຍນິ້ວມືຂອງທ່ານໄດ້. ເພື່ອປົດລັອກມັນ, ກະລຸນາປ້ອນ PIN ຂອງທ່ານ.</translation> +<translation id="1337692097987160377">ແບ່ງປັນແຖບນີ້</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ຕ້ອງການເປີດແອັບພລິເຄຊັນນີ້.</translation> <translation id="1338950911836659113">ກໍາລັງລຶບ...</translation> <translation id="13392265090583506">A11y</translation> @@ -1612,6 +1613,7 @@ <translation id="2805756323405976993">ແອັບ</translation> <translation id="2805770823691782631">ລາຍລະອຽດເພີ່ມເຕີມ</translation> <translation id="2806372837663997957">ອຸປະກອນທີ່ທ່ານກຳລັງພະຍາຍາມແບ່ງປັນກັບບໍ່ຕອບຮັບ</translation> +<translation id="2806891468525657116">ມີທາງລັດນັ້ນຢູ່ກ່ອນແລ້ວ</translation> <translation id="2807517655263062534">ໄຟລ໌ທີ່ທ່ານດາວໂຫຼດປາກົດຢູ່ບ່ອນນີ້</translation> <translation id="2809586584051668049">ແລະ <ph name="NUMBER_ADDITIONAL_DISABLED" /> ເພີ່ມອີກ</translation> <translation id="2810390687497823527">ຖ້າທ່ານບໍ່ຮູ້ຈັກສ່ວນຂະຫຍາຍໃດໜຶ່ງ ຫຼື ຖ້າໂປຣແກຣມທ່ອງເວັບຂອງທ່ານບໍ່ເຮັດວຽກຕາມທີ່ຄາດໄວ້, ທ່ານສາມາດປິດ ຫຼື ປັບແຕ່ງສ່ວນຂະຫຍາຍໄດ້ຢູ່ບ່ອນນີ້.</translation> @@ -5597,6 +5599,7 @@ <translation id="7496732379142025470">ເພື່ອປະຢັດແບັດເຕີຣີ, “Ok Google” ພຽງແຕ່ເປີດເມື່ອອຸປະກອນເຊື່ອມຕໍ່ກັບແຫຼ່ງຈ່າຍໄຟເທົ່ານັ້ນ. ເພື່ອປ່ຽນແປງ, ກະລຸນາໄປທີ່ການຕັ້ງຄ່າ.</translation> <translation id="7497215489070763236">ໃບຢັ້ງຢືນ CA ຂອງເຊີບເວີ</translation> <translation id="7497981768003291373">ທ່ານບໍ່ມີບັນທຶກຂໍ້ຄວາມ WebRTC ທີ່ບັນທຶກໄວ້ເມື່ອບໍ່ດົນມານີ້.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ກຳລັງຂໍການອະນຸຍາດຖ່າຍຮູບເນື້ອຫາຂອງແຖບນີ້.</translation> <translation id="7502658306369382406">ທີ່ຢູ່ IPv6</translation> <translation id="7503191893372251637">ປະເພດໃບຢັ້ງຢືນ Netscape</translation> <translation id="7503985202154027481">ບັນທຶກການເຂົ້າເບິ່ງເວັບໄຊນີ້ຂອງທ່ານຈະຖືກຮັກສາໄວ້ໃນກະແຈຄວາມປອດໄພຂອງທ່ານ.</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 9c4766786..15531c4 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Pageidaujama įvestis</translation> <translation id="1335929031622236846">Įrenginio registracija</translation> <translation id="1336902454946927954">Jūsų saugos raktas užrakintas, nes nepavyko atpažinti kontrolinio kodo. Kad jį atrakintumėte, įveskite PIN kodą.</translation> +<translation id="1337692097987160377">Bendrinti šį skirtuką</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> nori atidaryti šią programą.</translation> <translation id="1338950911836659113">Ištrinama...</translation> <translation id="13392265090583506">Pritaikomumas</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Taikomosios programos</translation> <translation id="2805770823691782631">Papildoma informacija</translation> <translation id="2806372837663997957">Įrenginys, su kuriuo norite bendrinti, nepriima turinio</translation> +<translation id="2806891468525657116">Spartusis klavišas jau yra</translation> <translation id="2807517655263062534">Atsisiųsti failai rodomi čia</translation> <translation id="2809586584051668049">ir dar <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Jei neatpažįstate plėtinio arba jei jūsų naršyklė neveikia, kaip numatyta, galite išjungti arba tinkinti plėtinius čia.</translation> @@ -5587,6 +5589,7 @@ <translation id="7496732379142025470">Siekiant tausoti akumuliatoriaus energiją, funkcija „Ok Google“ įjungiama, tik kai įrenginys prijungtas prie maitinimo šaltinio. Jei norite pakeisti, eikite į „Nustatymų“ skiltį.</translation> <translation id="7497215489070763236">Serverio CA sertifikatas</translation> <translation id="7497981768003291373">Neturite neseniai užfiksuotų „WebRTC“ teksto žurnalų.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> prašo leidimo užfiksuoti šio skirtuko turinį.</translation> <translation id="7502658306369382406">„IPv6“ adresas</translation> <translation id="7503191893372251637">„Netscape“ sertifikato tipas</translation> <translation id="7503985202154027481">Saugos rakte bus saugomas įrašas apie apsilankymą šioje svetainėje.</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index eb3e601..dffcc13 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Vēlamā ievade</translation> <translation id="1335929031622236846">Ierīces reģistrēšana</translation> <translation id="1336902454946927954">Jūsu drošības atslēga ir bloķēta, jo nevarēja atpazīt jūsu pirksta nospiedumu. Lai atbloķētu drošības atslēgu, ievadiet PIN.</translation> +<translation id="1337692097987160377">Koplietot šo cilni</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vēlas atvērt šo lietojumprogrammu.</translation> <translation id="1338950911836659113">Notiek dzēšana...</translation> <translation id="13392265090583506">Pieejamības iestatījumi</translation> @@ -1616,6 +1617,7 @@ <translation id="2805756323405976993">Lietotnes</translation> <translation id="2805770823691782631">Papildinformācija</translation> <translation id="2806372837663997957">Ierīce, ar kuru mēģinājāt kopīgot saturu, to nepieņēma.</translation> +<translation id="2806891468525657116">Saīsne jau pastāv</translation> <translation id="2807517655263062534">Šeit ir redzami lejupielādētie faili.</translation> <translation id="2809586584051668049">un vēl <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ja neatpazīstat kādu paplašinājumu vai ja pārlūkprogramma nedarbojas, kā paredzēts, šeit varat izslēgt vai pielāgot paplašinājumus.</translation> @@ -5602,6 +5604,7 @@ <translation id="7496732379142025470">Lai paildzinātu akumulatora darbības laiku, komanda “Ok Google” ir iespējota tikai tad, kad ierīce ir pievienota barošanas avotam. Lai veiktu izmaiņas, dodieties uz sadaļu Iestatījumi.</translation> <translation id="7497215489070763236">Servera CA sertifikāts</translation> <translation id="7497981768003291373">Jums nav nesen ierakstītu WebRTC tekstu žurnālu.</translation> +<translation id="7498614236023455416">Vietne <ph name="TARGET_NAME" /> pieprasa atļauju tvert šīs cilnes satura uzņēmumu.</translation> <translation id="7502658306369382406">IPv6 adrese</translation> <translation id="7503191893372251637">Netscape sertifikāta veids</translation> <translation id="7503985202154027481">Ieraksts par jūsu apmeklējumu šajā vietnē tiks reģistrēts jūsu drošības atslēgā.</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 40c74742..5302e7c4 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -254,7 +254,7 @@ <translation id="1272079795634619415">Запри</translation> <translation id="1272293450992660632">PIN-вредностите не се совпаѓаат.</translation> <translation id="1272978324304772054">Корисничката сметка не му припаѓа на доменот за кој е запишан овој уред. Доколку сакате да го запишете на друг домен, потребно е прво да ја поминете обновата на уредот.</translation> -<translation id="1274997165432133392">Колачиња и други податоци за локација</translation> +<translation id="1274997165432133392">Колачиња и други податоци за сајтовите</translation> <translation id="1275718070701477396">Избран</translation> <translation id="1276994519141842946">Не може да се деинсталира <ph name="APP_NAME" /></translation> <translation id="127946606521051357">Уред во близина споделува</translation> @@ -308,6 +308,7 @@ <translation id="133535873114485416">Претпочитан влез</translation> <translation id="1335929031622236846">Регистрирајте го уредот</translation> <translation id="1336902454946927954">Вашиот безбедносен клуч е заклучен бидејќи вашиот отпечаток не може да се препознае. За да го отклучите, внесете го вашиот PIN.</translation> +<translation id="1337692097987160377">Сподели ја картичкава</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> сака да ја отвори апликацијава.</translation> <translation id="1338950911836659113">Се брише...</translation> <translation id="13392265090583506">Пристапност</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">Апликации</translation> <translation id="2805770823691782631">Дополнителни детали</translation> <translation id="2806372837663997957">Уредот со којшто сакате да споделите не прифати</translation> +<translation id="2806891468525657116">Кратенката веќе постои</translation> <translation id="2807517655263062534">Датотеките што ги преземате се појавуваат тука</translation> <translation id="2809586584051668049">и уште <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ако не ја препознавате екстензијата или ако вашиот прелистувач не работи според очекувањата, може да ги исклучите или приспособите екстензиите тука.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Заради заштеда на батеријата, „Ok Google“ е вклучен само кога уредот е поврзан на извор на напојување. За да извршите промени, одете во „Поставки“.</translation> <translation id="7497215489070763236">Сертификат ЦА на сервер</translation> <translation id="7497981768003291373">Немате неодамна снимена текстуална евиденција на WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> бара дозвола да ги преземе содржините на картичкава.</translation> <translation id="7502658306369382406">IPv6-адреса</translation> <translation id="7503191893372251637">Тип сертификат за Netscape</translation> <translation id="7503985202154027481">Запис за вашата посета на сајтов ќе се чува на вашиот безбедносен клуч.</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 7d7b110f..f8faaf24 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">തിരഞ്ഞെടുത്ത ഇൻപുട്ട്</translation> <translation id="1335929031622236846">നിങ്ങളുടെ ഉപകരണം എൻറോൾ ചെയ്യുക</translation> <translation id="1336902454946927954">ഫിംഗർപ്രിന്റ് തിരിച്ചറിയാനാകാത്തതിനാൽ നിങ്ങളുടെ സുരക്ഷാ കീ ലോക്ക് ചെയ്തിരിക്കുന്നു. ഇത് അൺലോക്ക് ചെയ്യാൻ, പിൻ നൽകുക.</translation> +<translation id="1337692097987160377">ഈ ടാബ് പങ്കിടുക</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> എന്നതിന് ഈ ആപ്പ് തുറക്കണമെന്നുണ്ട്.</translation> <translation id="1338950911836659113">ഇല്ലാതാക്കുന്നു...</translation> <translation id="13392265090583506">A11y</translation> @@ -1607,6 +1608,7 @@ <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="2805770823691782631">കൂടുതൽ വിശദാംശങ്ങൾ</translation> <translation id="2806372837663997957">നിങ്ങൾ ഫയൽ പങ്കിടാൻ ശ്രമിച്ച ഉപകരണം അത് സ്വീകരിച്ചില്ല</translation> +<translation id="2806891468525657116">കുറുക്കുവഴി മുമ്പേ നിലവിലുണ്ട്</translation> <translation id="2807517655263062534">നിങ്ങൾ ഡൗൺലോഡ് ചെയ്യുന്ന ഫയലുകൾ ഇവിടെ ദൃശ്യമാകും</translation> <translation id="2809586584051668049">ഒപ്പം <ph name="NUMBER_ADDITIONAL_DISABLED" /> എണ്ണം കൂടി</translation> <translation id="2810390687497823527">നിങ്ങളൊരു വിപുലീകരണത്തെ തിരിച്ചറിയുന്നില്ലെങ്കിലോ നിങ്ങളുടെ ബ്രൗസർ പ്രതീക്ഷിച്ചത് പോലെ പ്രവർത്തിക്കുന്നില്ലെങ്കിലോ നിങ്ങൾക്കത് ഓഫാക്കാം, അല്ലെങ്കിൽ വിപുലീകരണങ്ങൾ ഇവിടെ ഇഷ്ടാനുസൃതമാക്കാം.</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">ബാറ്ററി ലാഭിക്കാൻ, നിങ്ങളുടെ ഉപകരണം ഒരു ഊർജ്ജ സ്രോതസുമായി കണക്റ്റ് ചെയ്യുമ്പോൾ മാത്രം “Ok Google” ഓണാകും. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക</translation> <translation id="7497215489070763236">സെർവർ CA സർട്ടിഫിക്കറ്റ്</translation> <translation id="7497981768003291373">നിങ്ങൾക്ക് അടുത്തിടെ രേഖപ്പെടുത്തിയ WebRTC ടെക്സ്റ്റ് ലോഗുകളൊന്നുമില്ല.</translation> +<translation id="7498614236023455416">ഈ ടാബിലെ ഉള്ളടക്കം ക്യാപ്ചർ ചെയ്യാൻ <ph name="TARGET_NAME" /> അനുമതി ചോദിക്കുന്നു.</translation> <translation id="7502658306369382406">IPv6 വിലാസം</translation> <translation id="7503191893372251637">നെറ്റ്സ്കേപ്പ് സര്ട്ടിഫിക്കറ്റ് തരം</translation> <translation id="7503985202154027481">നിങ്ങൾ ഈ സൈറ്റ് സന്ദർശിച്ചതിൻ്റെ റെക്കോർഡ് നിങ്ങളുടെ സുരക്ഷാ കീയിൽ സൂക്ഷിക്കും.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index b5c81cea..df8ef1b9 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -307,11 +307,12 @@ <translation id="133535873114485416">Давуу эрхтэй оролт</translation> <translation id="1335929031622236846">Төхөөрөмжөө бүртгүүлнэ үү</translation> <translation id="1336902454946927954">Таны хурууны хээг таньж чадаагүй тул таны аюулгүй байдлын түлхүүрийг түгжсэн. Түгжээг нь тайлахын тулд ПИН-ээ оруулна уу.</translation> +<translation id="1337692097987160377">Энэ табыг хуваалцах</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> нь энэ хэрэглээний программыг нээх хүсэлтэй байна.</translation> <translation id="1338950911836659113">Устгаж байна...</translation> <translation id="13392265090583506">A11y</translation> <translation id="1340527397989195812">Files app ашиглан төхөөрөмжөөс мэдээллийг хуулан авч хадгалах.</translation> -<translation id="1341988552785875222">Одоогийн ханын зургийг '<ph name="APP_NAME" />'-с тохируулсан. Та өөр ханын зураг сонгохдоо '<ph name="APP_NAME" />'-г идэвхгүй болгох шаардлагатай.</translation> +<translation id="1341988552785875222">Одоогийн дэлгэцийн зургийг '<ph name="APP_NAME" />'-с тохируулсан. Та өөр дэлгэцийн зураг сонгохдоо '<ph name="APP_NAME" />'-г идэвхгүй болгох шаардлагатай.</translation> <translation id="1343865611738742294">Linux аппад USB төхөөрөмжид хандах зөвшөөрөл өгнө үү. USB төхөөрөмжийг салгасны дараа Linux үүнийг санахгүй.</translation> <translation id="1346630054604077329">Баталгаажуулаад, дахин эхлүүлэх</translation> <translation id="1347256498747320987">Шинэчлэлтүүд болон аппуудыг суулгах. Үргэлжлүүлснээр та энэ төхөөрөмж нь Google, таны оператор компани, таны төхөөрөмжийн үйлдвэрлэгчээс шинэчлэлтүүд болон аппуудыг мөн адил автоматаар татаж, суулгаж (мобайл дата ашиглаж болзошгүй) болохыг зөвшөөрч байна. Эдгээр аппын зарим нь аппын худалдан авалтыг санал болгож болзошгүй. <ph name="BEGIN_LINK1" />Нэмэлт мэдээлэл авах<ph name="END_LINK1" /></translation> @@ -566,7 +567,7 @@ <translation id="1621729191093924223">Микрофон шаардлагатай онцлогууд ажиллахгүй</translation> <translation id="1621831347985899379"><ph name="DEVICE_TYPE" />-н өгөгдөл устана</translation> <translation id="1622054403950683339">Wi-Fi сүлжээг мартах</translation> -<translation id="1623132449929929218">Зураг одоогоор боломжгүй байна. Ханын зургийн цуглуулгыг харахын тулд интернэтэд дахин холбогдоно уу.</translation> +<translation id="1623132449929929218">Зураг одоогоор боломжгүй байна. Дэлгэцийн зургийн цуглуулгыг харахын тулд интернэтэд дахин холбогдоно уу.</translation> <translation id="1623723619460186680">Цэнхэр гэрлийн бууралт</translation> <translation id="1624012933569991823">Тохиргоо</translation> <translation id="1627276047960621195">Файл тодорхойлогч</translation> @@ -1609,6 +1610,7 @@ <translation id="2805756323405976993">Програм</translation> <translation id="2805770823691782631">Нэмэлт дэлгэрэнгүй мэдээлэл</translation> <translation id="2806372837663997957">Таны хуваалцахыг оролдож буй төхөөрөмж зөвшөөрсөнгүй</translation> +<translation id="2806891468525657116">Ижил товчлол ашиглалтад байна</translation> <translation id="2807517655263062534">Таны татаж авсан файл энд харагдана</translation> <translation id="2809586584051668049">ба <ph name="NUMBER_ADDITIONAL_DISABLED" /> дэлгэрэнгүй</translation> <translation id="2810390687497823527">Хэрэв та өргөтгөлийг танихгүй эсвэл таны хөтөч сайн ажиллахгүй байвал та өргөтгөлийг эндээс унтраах эсвэл өөрчлөх боломжтой.</translation> @@ -1748,7 +1750,7 @@ <translation id="296026337010986570">Боллоо! Аюултай программ хангамжийг устгасан. Өргөтгөлүүдийг буцааж асаахын тулд <a href="chrome://extensions">Өргөтгөлүүд</a> хэсэгт зочилно уу.</translation> <translation id="2961090598421146107"><ph name="CERTIFICATE_NAME" /> (өргөтгөл олгосон)</translation> <translation id="2961695502793809356">Үргэжлүүлэхээр бол дарж, түүхийг харахаар бол түр хүлээнэ үү</translation> -<translation id="2962131322798295505">Ханын зураг сонгогч</translation> +<translation id="2962131322798295505">Дэлгэцийн зураг сонгогч</translation> <translation id="2963151496262057773">Дараах нэмэлт өргөтгөлөөс хариу ирэхгүй байна: <ph name="PLUGIN_NAME" />Та үүнийг зогсоохыг хүсч байна уу?</translation> <translation id="2964193600955408481">Wi-Fi-г идэвхгүй болгох</translation> <translation id="2966937470348689686">Андройдын тохиргоог удирдах</translation> @@ -2284,7 +2286,7 @@ <translation id="3602290021589620013">Мэдээллийг урьдчилж харах</translation> <translation id="3603622770190368340">Сүлжээний сертификат авах</translation> <translation id="3604193429970465812">Хоёрдогч бүртгэлүүд</translation> -<translation id="3604713164406837697">Ханын зураг солих</translation> +<translation id="3604713164406837697">Дэлгэцийн зураг солих</translation> <translation id="3605780360466892872">Buttondown</translation> <translation id="3608576286259426129">Хэрэглэгчийн зургийг урьдчилан үзэх</translation> <translation id="3610369246614755442">Холбогчийн сэнсийг үйлчилгээнд хамруулах хэрэгтэй</translation> @@ -4365,7 +4367,7 @@ <translation id="6064217302520318294">Дэлгэцийн түгжээ</translation> <translation id="6065289257230303064">Certificate Subject Directory Attributes</translation> <translation id="6069464830445383022">Та Google Бүртгэлээрээ Chromebook-тээ нэвтэрнэ</translation> -<translation id="6069671174561668781">Ханын зураг тохируулах</translation> +<translation id="6069671174561668781">Дэлгэцийн зураг тохируулах</translation> <translation id="6071181508177083058">нууц үгийг баталгаажуулах</translation> <translation id="6071576563962215370">Систем төхөөрөмжийг суулгах хугацааны атрибутын түгжээг үүсгэж чадсангүй.</translation> <translation id="6072442788591997866"><ph name="APP_NAME" />-г энэ төхөөрөмжид зөвшөөрдөггүй. Администратортайгаа холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation> @@ -4523,7 +4525,7 @@ <translation id="6242574558232861452">Танай байгууллагын аюулгүй байдлын удирдамжуудад нийцэх эсэхийг шалгаж байна.</translation> <translation id="6242589501614145408">Аюулгүй байдлын түлхүүрээ шинэчлэх</translation> <translation id="6242852299490624841">Энэ табын фокусыг тохируулах</translation> -<translation id="6243280677745499710">Одоогийн тохируулсан ханын зураг</translation> +<translation id="6243280677745499710">Одоогийн тохируулсан дэлгэцийн зураг</translation> <translation id="6243774244933267674">Серверүүд боломжгүй байна</translation> <translation id="6244245036423700521">ONC файлыг импорт хийх</translation> <translation id="6246790815526961700">Төхөөрөмжөөс байршуулах</translation> @@ -4795,7 +4797,7 @@ <translation id="6555432686520421228">Бүх хэрэглэгчийн бүртгэлүүдийг устгаад <ph name="IDS_SHORT_PRODUCT_NAME" /> төхөөрөмжийнхөө тохиргоог дахин хийж шинэ юм шиг болгоорой.</translation> <translation id="6555810572223193255">Одоогоор цэвэрлэх боломжгүй байна</translation> <translation id="6556866813142980365">Дахин хийх</translation> -<translation id="6556903358015358733">Загвар, ханын зураг</translation> +<translation id="6556903358015358733">Загвар, дэлгэцийн зураг</translation> <translation id="6557290421156335491">Миний товчлол</translation> <translation id="6560151649238390891">Зөвлөмжийг оруулсан</translation> <translation id="6561560012278703671">Илүү чимээгүй мессежийг ашиглах (мэдэгдлийн сануулгад танд саад болохыг хориглодог)</translation> @@ -5384,7 +5386,7 @@ <translation id="7246947237293279874">FTP прокси</translation> <translation id="7249777306773517303">Энэ төхөөрөмжийг <ph name="DOMAIN" /> удирддаг бөгөөд танаас тухай бүрд нэвтрэхийг шаарддаг.</translation> <translation id="725109152065019550">Уучлаарай, таны администратор таны дансанд оролтын төхөөрөмжид дата хадгалахыг хаасан.</translation> -<translation id="7251346854160851420">Өгөгдмөл ханын зураг</translation> +<translation id="7251346854160851420">Өгөгдмөл дэлгэцийн зураг</translation> <translation id="7253521419891527137">& Дэлгэрэнгүй мэдээлэл</translation> <translation id="7254951428499890870">Та "<ph name="APP_NAME" />"-ийг оношлох горимд байхад нь эхлүүлэх гэж байгаадаа итгэлтэй байна уу?</translation> <translation id="7255002516883565667">Танд одоогоор зөвхөн энэ төхөөрөмж дээр ашиглах боломжтой нэг карт байна</translation> @@ -5413,7 +5415,7 @@ <translation id="7287143125007575591">Хандалтыг зөвшөөрөөгүй.</translation> <translation id="7287411021188441799">Өгөгдмөл дэвсгэрийг сэргээх</translation> <translation id="7288676996127329262"><ph name="HORIZONTAL_DPI" />х<ph name="VERTICAL_DPI" /> нэг инчэд ноогдох цэгийн тоо</translation> -<translation id="7289225569524511578">Ханын зургийн апп нээх</translation> +<translation id="7289225569524511578">Дэлгэцийн зургийн апп нээх</translation> <translation id="7290242001003353852"><ph name="SAML_DOMAIN" />-н хост хийсэн энэхүү нэвтрэх төхөөрөмж нь таны камерт хандаж байна.</translation> <translation id="7295614427631867477">Android, Play болон холбоотой аппууд нь өөрсдийн өгөгдлийн цуглуулга болон ашиглалтын удирдамжид захирагддаг болохыг анхаарна уу.</translation> <translation id="729583233778673644">AES болон RC4 шифрлэлтийг зөвшөөрнө үү. RC4 цифр нь аюултай учир энэхүү сонголтыг ашигласнаар таны эрсдэлийг нэмэгдүүлнэ.</translation> @@ -5593,6 +5595,7 @@ <translation id="7496732379142025470">Батарей хэмнэхийн тулд “Ok Google” зөвхөн таны төхөөрөмжийг тэжээлийн эх үүсвэрт залгасан үед асна. Өөрчлөхийн тулд Тохиргоо руу очно уу.</translation> <translation id="7497215489070763236">Серверийн CA сертификат</translation> <translation id="7497981768003291373">Танд саяхан авсан WebRTC текст лог алга.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> энэ табын контентын зургийг авах зөвшөөрөл хүсэж байна.</translation> <translation id="7502658306369382406">IPv6 хаяг</translation> <translation id="7503191893372251637">Нэтскейпийн гэрчилгээний төрөл</translation> <translation id="7503985202154027481">Таны энэ сайтад зочилсон бүртгэл аюулгүй байдлын түлхүүрт хадгалагдана.</translation> @@ -5859,7 +5862,7 @@ <translation id="7793098747275782155">Бараан хөх</translation> <translation id="7797571222998226653">Унтраалттай</translation> <translation id="7798844538707273832"><ph name="PERMISSION" />-г автоматаар блоклосон</translation> -<translation id="7799299114731150374">Ханын зургийг амжилттай тохируулсан</translation> +<translation id="7799299114731150374">Дэлгэцийн зургийг амжилттай тохируулсан</translation> <translation id="7800518121066352902">Цагийн зүүний эсрэг эргүүлэх</translation> <translation id="7802539296536804623">Энэ хуудсанд картуудыг бүү харуул</translation> <translation id="780301667611848630">Үгүй, баярлалаа</translation> @@ -6759,7 +6762,7 @@ <translation id="8815333263781723799">Энэ хуудсан дээр хамгаалагдсан медиа тоглуулахын тулд та Rosetta-г суулгах шаардлагатай.</translation> <translation id="881782782501875829">Портын дугаар нэмэх</translation> <translation id="881799181680267069">Бусдыг нуух</translation> -<translation id="8818152010000655963">Ханын зураг</translation> +<translation id="8818152010000655963">Дэлгэцийн зураг</translation> <translation id="8818958672113348984">Утаснаасаа баталгаажуулах</translation> <translation id="8820817407110198400">Хавчуургууд</translation> <translation id="8821045908425223359">IP хаягийг автоматаар тохируулах</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 56df91d9..7bdf78df 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">प्राधान्य असलेले इनपुट</translation> <translation id="1335929031622236846">तुमच्या डिव्हाइसची नोंदणी करा</translation> <translation id="1336902454946927954">तुमची फिंगरप्रिंट ओळखता न आल्यामुळे तुमची सिक्युरिटी की लॉक केली गेली आहे. ती अनलॉक करण्यासाठी, तुमचा पिन एंटर करा.</translation> +<translation id="1337692097987160377">हा टॅब शेअर करा</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ला हे ॲप्लिकेशन उघडायचे आहे.</translation> <translation id="1338950911836659113">हटवत आहे...</translation> <translation id="13392265090583506">A11y</translation> @@ -1609,6 +1610,7 @@ <translation id="2805756323405976993">ॲप्लिकेशन</translation> <translation id="2805770823691782631">अतिरिक्त तपशील</translation> <translation id="2806372837663997957">तुम्ही ज्या डिव्हाइससह शेअर करण्याचा प्रयत्न करत आहात त्याने स्वीकारले नाही</translation> +<translation id="2806891468525657116">शॉर्टकट आधीच अस्तित्वात आहे</translation> <translation id="2807517655263062534">तुम्ही डाउनलोड केलेल्या फाइल येथे दिसतात</translation> <translation id="2809586584051668049">आणि <ph name="NUMBER_ADDITIONAL_DISABLED" /> अधिक</translation> <translation id="2810390687497823527">तुम्हाला एखादे एक्स्टेंशन ओळखता येत नसल्यास किंवा तुमचा ब्राउझर अपेक्षेनुसार काम करत नसल्यास, तुम्ही येथे एक्स्टेंशन बंद किंवा कस्टमाइझ करू शकता.</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">बॅटरी सेव्ह करण्यासाठी, तुमचे डिव्हाइस एखाद्या पॉवर स्रोताशी कनेक्ट केलेले असेल तेव्हाच “Ok Google” सुरू होईल. बदल करण्यासाठी, सेटिंग्जवर जा.</translation> <translation id="7497215489070763236">सर्व्हर CA सर्टिफिकेट</translation> <translation id="7497981768003291373">तुमच्याकडे नुकतेच कॅप्चर केलेले कोणतेही WebRTC मजकूर लॉग नाहीत.</translation> +<translation id="7498614236023455416">या टॅबचे आशय कॅप्चर करण्यासाठी <ph name="TARGET_NAME" /> परवानगीची विनंती करत आहे.</translation> <translation id="7502658306369382406">IPv6 पत्ता</translation> <translation id="7503191893372251637">Netscape सर्टिफिकेट प्रकार</translation> <translation id="7503985202154027481">तुम्ही या साइटला भेट दिल्याचे रेकॉर्ड तुमच्या सिक्युरिटी कीवर ठेवले जातील.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index bfa9204..627bdf77 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Input pilihan</translation> <translation id="1335929031622236846">Daftarkan peranti anda</translation> <translation id="1336902454946927954">Kunci keselamatan anda dikunci kerana cap jari anda tidak dapat dikenal pasti. Untuk membuka kunci keselamatan itu, masukkan PIN anda.</translation> +<translation id="1337692097987160377">Kongsi tab ini</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ingin membuka aplikasi ini.</translation> <translation id="1338950911836659113">Memadamkan...</translation> <translation id="13392265090583506">A11y</translation> @@ -1614,6 +1615,7 @@ <translation id="2805756323405976993">Apl</translation> <translation id="2805770823691782631">Butiran tambahan</translation> <translation id="2806372837663997957">Peranti yang anda pilih untuk berkongsi fail tidak menerima perkongsian anda</translation> +<translation id="2806891468525657116">Pintasan sudah wujud</translation> <translation id="2807517655263062534">Fail yang anda muat turun dipaparkan di sini</translation> <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lagi</translation> <translation id="2810390687497823527">Jika anda tidak mengecam sambungan itu atau jika penyemak imbas anda tidak berfungsi seperti yang dijangkakan, anda boleh mematikan atau menyesuaikan sambungan di sini.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Untuk menjimatkan bateri, “Ok Google” hanya dihidupkan apabila peranti anda disambungkan kepada bekalan kuasa. Untuk membuat perubahan, pergi ke Tetapan.</translation> <translation id="7497215489070763236">Sijil CA pelayan</translation> <translation id="7497981768003291373">Anda tiada log teks WebRTC yang dirakam baru-baru ini.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> meminta kebenaran untuk menangkap kandungan tab ini.</translation> <translation id="7502658306369382406">Alamat IPv6</translation> <translation id="7503191893372251637">Jenis Sijil Netscape</translation> <translation id="7503985202154027481">Rekod lawatan anda ke tapak ini akan disimpan pada kunci keselamatan anda.</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 9bd3749c..5c2ca6e0 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">ဦးစားပေး စာရိုက်စနစ်</translation> <translation id="1335929031622236846">သင့်စက်ကို စာရင်းသွင်းခြင်း</translation> <translation id="1336902454946927954">သင့်လက်ဗွေကို မသိသောကြောင့် သင်၏လုံခြုံရေးကီးကို လော့ခ်ချလိုက်သည်။ ၎င်းကိုဖွင့်ရန် သင့်ပင်နံပါတ် ထည့်ပါ။</translation> +<translation id="1337692097987160377">ဤတဘ်ကို မျှဝေရန်</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> က ဤအပလီကေးရှင်းကို ဖွင့်လိုသည်။</translation> <translation id="1338950911836659113">ဖျက်နေ...</translation> <translation id="13392265090583506">A11y</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">အက်ပ်များ</translation> <translation id="2805770823691782631">နောက်ထပ် အသေးစိတ် အချက်အလက်များ</translation> <translation id="2806372837663997957">သင်မျှဝေမည့်ကိရိယာက လက်မခံပါ</translation> +<translation id="2806891468525657116">ဖြတ်လမ်းလင့်ခ် ရှိပြီးသားဖြစ်သည်</translation> <translation id="2807517655263062534">သင်ဒေါင်းလုဒ်လုပ်သော ဖိုင်များသည် ဤနေရာတွင် ပေါ်ပါသည်</translation> <translation id="2809586584051668049">နှင့် <ph name="NUMBER_ADDITIONAL_DISABLED" /> များစွာ</translation> <translation id="2810390687497823527">နောက်ဆက်တွဲတစ်ခုကို မမှတ်မိလျှင် သို့မဟုတ် သင့်ဘရောင်ဇာသည် ထင်ထားသည့်အတိုင်း အလုပ်လုပ်ခြင်းမရှိလျှင် ဤနေရာတွင် နောက်ဆက်တွဲများကို ပိတ်ခြင်း သို့မဟုတ် စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။</translation> @@ -5597,6 +5599,7 @@ <translation id="7496732379142025470">ဘက်ထရီချွေတာရန် သင့်စက်နှင့် ပါဝါရင်းမြစ် ချိတ်ဆက်ထားချိန်တွင်သာ “Ok Google” ကို ဖွင့်သည်။ အပြောင်းအလဲများ ပြုလုပ်ရန် 'ဆက်တင်များ' သို့သွားပါ။</translation> <translation id="7497215489070763236">ဆာဗာ CA အသိအမှတ်ပြုလက်မှတ်</translation> <translation id="7497981768003291373">သင့်ထံတွင် မကြာသေးခင်က မှတ်သားထားသည့် WebRTC စာသားမှတ်တမ်းများ မရှိပါ။</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> က ဤတဘ်ပါအကြောင်းအရာများကို ရိုက်ယူရန် ခွင့်ပြုချက်တောင်းနေသည်။</translation> <translation id="7502658306369382406">IPv6 လိပ်စာ</translation> <translation id="7503191893372251637">Netscape လက်မှတ် အမျိုးအစား</translation> <translation id="7503985202154027481">သင်၏ လုံခြုံရေးကီးတွင် ဤဝဘ်ဆိုက်ကို ဖွင့်ကြည့်သည့် မှတ်တမ်းတစ်ခု ရှိနေပါမည်။</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index df87d41..551a553 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -304,6 +304,7 @@ <translation id="133535873114485416">रुचाइएको इनपुट</translation> <translation id="1335929031622236846">आफ्नो यन्त्र दर्ता गर्नुहोस्</translation> <translation id="1336902454946927954">तपाईंको फिंगरप्रिन्ट पहिचान गर्न नसकिएकाले तपाईंको सुरक्षा साँचो लक गरिएको छ। यसलाई अनलक गर्न आफ्नो PIN प्रविष्टि गर्नुहोस्।</translation> +<translation id="1337692097987160377">यो ट्याब सेयर गर्नुहोस्</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ले यो एप खोल्न चाहन्छ।</translation> <translation id="1338950911836659113">मेट्दै...</translation> <translation id="13392265090583506">पहुँचसम्बन्धी सेटिङ</translation> @@ -1606,6 +1607,7 @@ <translation id="2805756323405976993">एप्स</translation> <translation id="2805770823691782631">अतिरिक्त विवरणहरू</translation> <translation id="2806372837663997957">तपाईं जुन यन्त्रमा फाइल सेयर गर्न खोजिरहनुभएको छ उक्त यन्त्रले फाइल सेयर गर्ने अनुमति स्वीकार गरेन</translation> +<translation id="2806891468525657116">सर्टकट पहिलेदेखि नै विद्यमान छ</translation> <translation id="2807517655263062534">तपाईंले डाउनलोड गरेका फाइलहरू यहाँ देखिन्छन्</translation> <translation id="2809586584051668049">र <ph name="NUMBER_ADDITIONAL_DISABLED" /> थप</translation> <translation id="2810390687497823527">तपाईंले कुनै एक्स्टेन्सन चिन्न सक्नुभएन भने वा तपाईंको ब्राउजरले अपेक्षा गरिएअनुसार काम गर्दै छैन भने तपाईं यहाँबाट एक्स्टेन्सनहरू निष्क्रिय पार्न वा तिनलाई आफूले रोजेअनुसार पार्न सक्नुहुन्छ।</translation> @@ -5577,6 +5579,7 @@ <translation id="7496732379142025470">ब्याट्रीको खपत कम गर्न तपाईंको यन्त्र ऊर्जाको कुनै स्रोतमा जोडिएका बेलामा मात्र “Ok Google” सक्रिय हुन्छ। परिवर्तन गर्न सेटिङहरूमा जानुहोस्।</translation> <translation id="7497215489070763236">सर्भरको CA को प्रमाणपत्र</translation> <translation id="7497981768003291373">तपाईंसँग हालै क्याप्चर गरिएको WebRTC पाठको कुनै पनि लग छैन।</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ले यो ट्याबमा रहेका सामग्री क्याप्चर गर्ने अनुमति माग्दै छ।</translation> <translation id="7502658306369382406">IPv6 ठेगाना</translation> <translation id="7503191893372251637">नेटस्केप प्रमाणपत्र प्रकार</translation> <translation id="7503985202154027481">तपाईंको सुरक्षा साँचोमा तपाईं यो साइटमा जानुभएको कुराको रेकर्ड राखिने छ।</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 3e9d8d73..b2fd390 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Voorkeursinvoer</translation> <translation id="1335929031622236846">Je apparaat inschrijven</translation> <translation id="1336902454946927954">Je beveiligingssleutel is vergrendeld omdat je vingerafdruk niet kan worden herkend. Geef je pincode op om de sleutel te ontgrendelen.</translation> +<translation id="1337692097987160377">Dit tabblad delen</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> wil deze app openen.</translation> <translation id="1338950911836659113">Verwijderen...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Aanvullende informatie</translation> <translation id="2806372837663997957">Het apparaat waarmee je probeert te delen, accepteert dit niet</translation> +<translation id="2806891468525657116">Snelkoppeling bestaat al</translation> <translation id="2807517655263062534">Bestanden die je downloadt, worden hier weergegeven</translation> <translation id="2809586584051668049">en <ph name="NUMBER_ADDITIONAL_DISABLED" /> meer</translation> <translation id="2810390687497823527">Als je een extensie niet herkent of als je browser niet werkt zoals verwacht, kun je extensies hier uitschakelen of aanpassen.</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">'Oké Google' is alleen ingeschakeld wanneer je apparaat op een voedingsbron is aangesloten om de batterij te sparen. Als je wijzigingen wilt aanbrengen, ga je naar Instellingen.</translation> <translation id="7497215489070763236">CA-certificaat van server</translation> <translation id="7497981768003291373">Je hebt geen onlangs vastgelegde WebRTC-tekstlogboeken.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> vraagt toestemming om de content van dit tabblad op te nemen.</translation> <translation id="7502658306369382406">IPv6-adres</translation> <translation id="7503191893372251637">Type Netscape-certificaat</translation> <translation id="7503985202154027481">Er wordt een record van je bezoek aan deze site geregistreerd in je beveiligingssleutel.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 2a3159c..5b88d8c 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Foretrukket inndatametode</translation> <translation id="1335929031622236846">Registrer enheten din</translation> <translation id="1336902454946927954">Sikkerhetsnøkkelen er låst fordi fingeravtrykket ikke ble gjenkjent. For å låse den opp, skriv inn PIN-koden.</translation> +<translation id="1337692097987160377">Del denne fanen</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vil åpne denne appen.</translation> <translation id="1338950911836659113">Sletter …</translation> <translation id="13392265090583506">A11y</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Apper</translation> <translation id="2805770823691782631">Flere detaljer</translation> <translation id="2806372837663997957">Enheten du prøver å dele med, godtok ikke delingen</translation> +<translation id="2806891468525657116">Snarveien finnes allerede</translation> <translation id="2807517655263062534">Filer du laster ned, vises her</translation> <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> til</translation> <translation id="2810390687497823527">Hvis det er utvidelser du ikke kjenner igjen, eller hvis nettleseren ikke fungerer som forventet, kan du slå av eller tilpasse utvidelser her.</translation> @@ -5595,6 +5597,7 @@ <translation id="7496732379142025470">For å spare batteri er «Ok Google» bare på når enheten er koblet til en strømkilde. For å gjøre endringer, gå til Innstillinger.</translation> <translation id="7497215489070763236">Tjenerens CA-sertifikat</translation> <translation id="7497981768003291373">Du har ingen nylig lagrede WebRTC-tekstlogger.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> spør om tillatelse til å ta bilde av innholdet på denne fanen.</translation> <translation id="7502658306369382406">IPv6-adresse</translation> <translation id="7503191893372251637">Netscape sertifikattype</translation> <translation id="7503985202154027481">Besøket ditt på dette nettstedet registreres på sikkerhetsnøkkelen.</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index e1cf4a8..1c4cc9d 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -305,6 +305,7 @@ <translation id="133535873114485416">ପସନ୍ଦ କରାଯାଇଥିବା ଇନ୍ପୁଟ୍</translation> <translation id="1335929031622236846">ଆପଣଙ୍କ ଡିଭାଇସ୍ ପଞ୍ଜିକରଣ କରନ୍ତୁ</translation> <translation id="1336902454946927954">ଆପଣଙ୍କର ଟିପଚିହ୍ନ ଚିହ୍ନଟ କରାଯାଇ ପାରିନଥିବାରୁ ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ'କୁ ଲକ୍ କରାଯାଇଛି। ଏହାକୁ ଅନଲକ୍ କରିବା ପାଇଁ ଆପଣଙ୍କର PIN ଲେଖନ୍ତୁ।</translation> +<translation id="1337692097987160377">ଏହି ଟାବ୍ ସେୟାର୍ କରନ୍ତୁ</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ଏହି ଆପ୍ଲିକେସନ୍କୁ ଖୋଲିବାକୁ ଚାହୁଁଛି।</translation> <translation id="1338950911836659113">ଡିଲିଟ୍ କରାଯାଉଛି…</translation> <translation id="13392265090583506">A11y</translation> @@ -1603,6 +1604,7 @@ <translation id="2805756323405976993">ଆପ୍ସ</translation> <translation id="2805770823691782631">ଅତିରିକ୍ତ ବିବରଣୀ</translation> <translation id="2806372837663997957">ଆପଣ ଯେଉଁ ଡିଭାଇସ ସହ ସେୟାର୍ କରିବାକୁ ଚେଷ୍ଟା କରୁଛନ୍ତି ସେହି ଡିଭାଇସ୍ ଏହାକୁ ଗ୍ରହଣ କଲା ନାହିଁ</translation> +<translation id="2806891468525657116">ସର୍ଟକଟ୍ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି</translation> <translation id="2807517655263062534">ଆପଣ ଡାଉନ୍ଲୋଡ୍ କରିଥିବା ଫାଇଲ୍ଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ</translation> <translation id="2809586584051668049">ଏବଂ ଆହୁରି <ph name="NUMBER_ADDITIONAL_DISABLED" /> ଜଣ</translation> <translation id="2810390687497823527">ଯଦି ଆପଣ କୌଣସି ଏକ୍ସଟେନ୍ସନ୍କୁ ଚିହ୍ନଟ କରିପାରୁନାହାଁନ୍ତି କିମ୍ବା ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ଆଶା ଅନୁଯାୟୀ କାର୍ଯ୍ୟ କରୁନାହିଁ, ତେବେ ଆପଣ ଏଠାରେ ଏକ୍ସଟେନ୍ସନ୍ଗୁଡ଼ିକୁ ବନ୍ଦ କରିପାରିବେ କିମ୍ବା କଷ୍ଟମାଇଜ୍ କରିପାରିବେ।</translation> @@ -5576,6 +5578,7 @@ <translation id="7496732379142025470">ବ୍ୟାଟେରୀ ସେଭ୍ କରିବା ପାଇଁ, “Ok Google” କେବଳ ସେତେବେଳେ ଚାଲୁ ହୋଇଥାଏ, ଯେତେବେଳେ ଆପଣଙ୍କର ଡିଭାଇସ୍ ଗୋଟିଏ ପାୱାର୍ ଉତ୍ସ ସହ ସଂଯୁକ୍ତ ଥାଏ। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ।</translation> <translation id="7497215489070763236">CA ସାର୍ଟିଫିକେଟ୍ ସର୍ଭର୍</translation> <translation id="7497981768003291373">ଆପଣଙ୍କ ପାଖରେ ନିକଟରେ କ୍ୟାପଚର୍ କରାଯାଇଥିବା କୌଣସି WebRTC ଇଭେଣ୍ଟ ଲଗ୍ ନାହିଁ।</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ଏହି ଟାବର ବିଷୟବସ୍ତୁଗୁଡ଼ିକୁ କ୍ୟାପଚର୍ କରିବା ପାଇଁ ଅନୁମତି ମାଗୁଛି।</translation> <translation id="7502658306369382406">IPv6 ଠିକଣା</translation> <translation id="7503191893372251637">Netscape ସାର୍ଟିଫିକେଟ୍ ପ୍ରକାର</translation> <translation id="7503985202154027481">ଏହି ସାଇଟ୍ରେ ଆପଣ ଭ୍ରମଣ କରିଥିବା ଏକ ରେକର୍ଡ ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ'ରେ ରଖାଯିବ।</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 3ed574b..c47e6a4 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">ਤਰਜੀਹੀ ਇਨਪੁੱਟ</translation> <translation id="1335929031622236846">ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਦਰਜ ਕਰੋ</translation> <translation id="1336902454946927954">ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਲਾਕ ਹੋ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਨੂੰ ਪਛਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ। ਇਸਨੂੰ ਅਣਲਾਕ ਕਰਨ ਲਈ, ਆਪਣਾ ਪਿੰਨ ਦਾਖਲ ਕਰੋ।</translation> +<translation id="1337692097987160377">ਇਸ ਟੈਬ ਨੂੰ ਸਾਂਝਾ ਕਰੋ</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ਵੈੱਬਸਾਈਟ ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਖੋਲ੍ਹਣਾ ਚਾਹੁੰਦੀ ਹੈ।</translation> <translation id="1338950911836659113">ਮਿਟਾ ਰਿਹਾ ਹੈ...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">ਐਪਸ</translation> <translation id="2805770823691782631">ਵਧੀਕ ਵੇਰਵੇ</translation> <translation id="2806372837663997957">ਜਿਸ ਡੀਵਾਈਸ ਨਾਲ ਤੁਸੀਂ ਸਾਂਝਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ, ਉਸ ਨੇ ਸਵੀਕਾਰ ਨਹੀਂ ਕੀਤਾ</translation> +<translation id="2806891468525657116">ਸ਼ਾਰਟਕੱਟ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ</translation> <translation id="2807517655263062534">ਤੁਹਾਡੇ ਵੱਲੋਂ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਫ਼ਾਈਲਾਂ ਇੱਥੇ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ</translation> <translation id="2809586584051668049">ਅਤੇ <ph name="NUMBER_ADDITIONAL_DISABLED" /> ਹੋਰ</translation> <translation id="2810390687497823527">ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ ਨਹੀਂ ਪਛਾਣਦੇ, ਜਾਂ ਤੁਹਾਡਾ ਬ੍ਰਾਊਜ਼ਰ ਉਮੀਦ ਮੁਤਾਬਕ ਕੰਮ ਨਹੀਂ ਕਰ ਰਿਹਾ, ਤਾਂ ਤੁਸੀਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਨੂੰ ਇੱਥੇ ਬੰਦ ਜਾਂ ਵਿਉਂਤਬੱਧ ਕਰ ਸਕਦੇ ਹੋ।</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">ਬੈਟਰੀ ਬਚਾਉਣ ਲਈ, “Ok Google” ਵਿਕਲਪ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੇ ਕਿਸੇ ਬਿਜਲੀ ਸਰੋਤ ਨਾਲ ਕਨੈਕਟ ਹੋਣ 'ਤੇ ਕੰਮ ਕਰਦਾ ਹੈ। ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ 'ਤੇ ਜਾਓ।</translation> <translation id="7497215489070763236">ਸਰਵਰ CA ਪ੍ਰਮਾਣ-ਪੱਤਰ</translation> <translation id="7497981768003291373">ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ ਹਾਲੀਆ ਕੈਪਚਰ ਕੀਤੇ WebRTC ਲਿਖਤ ਲੌਗ ਨਹੀਂ ਹਨ।</translation> +<translation id="7498614236023455416">ਇਸ ਟੈਬ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਕੈਪਚਰ ਕਰਨ ਲਈ <ph name="TARGET_NAME" /> ਵੱਲੋਂ ਇਜਾਜ਼ਤ ਮੰਗੀ ਜਾ ਰਹੀ ਹੈ।</translation> <translation id="7502658306369382406">IPv6 ਪਤਾ</translation> <translation id="7503191893372251637">Netscape ਪ੍ਰਮਾਣ-ਪੱਤਰ ਪ੍ਰਕਾਰ</translation> <translation id="7503985202154027481">ਇਸ ਸਾਈਟ 'ਤੇ ਤੁਹਾਡੇ ਜਾਣ ਦਾ ਰਿਕਾਰਡ ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਵਿੱਚ ਰੱਖਿਆ ਜਾਵੇਗਾ।</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index ac42d25..39d6e4ef 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -197,7 +197,7 @@ <translation id="1211364473545090084">Korzystaj z internetu w oknie incognito, by nie zapisywać historii przeglądania</translation> <translation id="1211769675100312947">Ty wybierasz skróty</translation> <translation id="1213037489357051291">Skonfigurowane odciski palców: <ph name="NUM_FINGERPRINTS" /></translation> -<translation id="1213254615020057352">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może zezwolić na wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> +<translation id="1213254615020057352">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może zezwolić na wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> <translation id="121384500095351701">Tego pliku nie można pobrać w bezpieczny sposób</translation> <translation id="1215411991991485844">Nowa aplikacja działająca w tle została dodana</translation> <translation id="1216542092748365687">Usuwanie odcisku palca</translation> @@ -308,6 +308,7 @@ <translation id="133535873114485416">Preferowane urządzenie wejściowe</translation> <translation id="1335929031622236846">Zarejestruj swoje urządzenie</translation> <translation id="1336902454946927954">Klucz bezpieczeństwa jest zablokowany, bo nie udało się rozpoznać Twojego odcisku palca. Aby odblokować klucz bezpieczeństwa, wpisz kod PIN.</translation> +<translation id="1337692097987160377">Udostępnij tę kartę</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> chce otworzyć tę aplikację.</translation> <translation id="1338950911836659113">Usuwam...</translation> <translation id="13392265090583506">Ustawienia ułatwień dostępu</translation> @@ -1510,7 +1511,7 @@ <translation id="2707024448553392710">Pobieram składnik</translation> <translation id="270921614578699633">Średnia z</translation> <translation id="2709516037105925701">Autouzupełnianie</translation> -<translation id="2710101514844343743">Dane o użyciu i diagnostyce</translation> +<translation id="2710101514844343743">Dane diagnostyczne i informacje o użytkowaniu</translation> <translation id="271033894570825754">Nowy</translation> <translation id="2712173769900027643">Poproś o pozwolenie</translation> <translation id="2713444072780614174">Biały</translation> @@ -1608,6 +1609,7 @@ <translation id="2805756323405976993">Aplikacje</translation> <translation id="2805770823691782631">Dodatkowe szczegóły</translation> <translation id="2806372837663997957">Urządzenie, któremu chcesz udostępnić dokument, nie zaakceptowało Twojej prośby</translation> +<translation id="2806891468525657116">Skrót już istnieje</translation> <translation id="2807517655263062534">Tutaj wyświetlają się pobrane pliki</translation> <translation id="2809586584051668049">i jeszcze <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Jeśli nie rozpoznajesz jakiegoś rozszerzenia lub przeglądarka nie działa w oczekiwany sposób, tutaj możesz wyłączyć lub dostosować rozszerzenia.</translation> @@ -1729,7 +1731,7 @@ <translation id="2942279350258725020">Wiadomości na Androida</translation> <translation id="2942560570858569904">Czekam…</translation> <translation id="2942581856830209953">Dostosuj tę stronę</translation> -<translation id="2944060181911631861">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> +<translation id="2944060181911631861">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="2946119680249604491">Dodaj połączenie</translation> <translation id="2946640296642327832">Włącz Bluetooth</translation> <translation id="2947605845283690091">Przeglądanie stron internetowych powinno przebiegać bez problemu. Poświęć chwilę na <ph name="BEGIN_LINK" />sprawdzenie swoich rozszerzeń<ph name="END_LINK" />.</translation> @@ -2168,7 +2170,7 @@ <translation id="3473479545200714844">Lupa</translation> <translation id="3474218480460386727">Możesz użyć maksymalnie 99 liter</translation> <translation id="3475843873335999118">Odcisk palca nie został rozpoznany. Podaj hasło.</translation> -<translation id="3476303763173086583">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="3476303763173086583">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="347670947055184738">Ups. System nie mógł pobrać zasad dotyczących Twojego urządzenia.</translation> <translation id="347785443197175480">Nadal zezwalaj witrynie <ph name="HOST" /> na dostęp do kamery i mikrofonu</translation> <translation id="3478685642445675458">Aby usunąć osobę, odblokuj swój profil.</translation> @@ -2809,7 +2811,7 @@ <translation id="4209464433672152343">Dokumenty są <ph name="BEGIN_LINK_HELP" />wysyłane na serwery Google<ph name="END_LINK_HELP" />, gdzie zostaną przygotowane do druku. <ph name="BEGIN_LINK_DASHBOARD" />W panelu Google Cloud Print<ph name="END_LINK_DASHBOARD" /> możesz zarządzać danymi o swoich drukarkach i historią drukowania, możesz też wyświetlać i edytować te informacje.</translation> <translation id="4210048056321123003">Pobieram maszynę wirtualną</translation> <translation id="421182450098841253">&Pokaż pasek zakładek</translation> -<translation id="4211851069413100178">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="4211851069413100178">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Właściciel może ustawić wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="42126664696688958">Eksportuj</translation> <translation id="42137655013211669">Serwer zabronił dostępu do tego zasobu.</translation> <translation id="4217571870635786043">Dyktowanie</translation> @@ -3466,7 +3468,7 @@ <translation id="5017643436812738274">Możesz poruszać się po stronach przy użyciu kursora tekstowego. Aby wyłączyć tę opcję, naciśnij Ctrl+Search+7.</translation> <translation id="5017828934289857214">Przypomnij mi później</translation> <translation id="5018207570537526145">Otwórz stronę rozszerzeń</translation> -<translation id="5018526990965779848">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> +<translation id="5018526990965779848">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> <translation id="5019392775062123007">Widoczne dla urządzeń w pobliżu jako <ph name="DEVICE_NAME" /></translation> <translation id="5021750053540820849">Jeszcze nie zaktualizowano</translation> <translation id="5026806129670917316">Włączanie sieci Wi-Fi</translation> @@ -3609,7 +3611,7 @@ <translation id="5192062846343383368">Otwórz aplikację Family Link, by zobaczyć ustawienia nadzoru</translation> <translation id="5193988420012215838">Skopiowane do schowka</translation> <translation id="5197255632782567636">Internet</translation> -<translation id="5198430103906431024">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> +<translation id="5198430103906431024">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> <translation id="5203920255089865054">{NUM_EXTENSIONS,plural, =1{Kliknij, by wyświetlić rozszerzenie}few{Kliknij, by wyświetlić te rozszerzenia}many{Kliknij, by wyświetlić te rozszerzenia}other{Kliknij, by wyświetlić te rozszerzenia}}</translation> <translation id="5204673965307125349">Wykonaj Powerwash urządzenia i spróbuj jeszcze raz.</translation> <translation id="5204967432542742771">Wpisz hasło</translation> @@ -4917,7 +4919,7 @@ <translation id="6725073593266469338">Usługa UI</translation> <translation id="6725206449694821596">Internet Printing Protocol (IPP)</translation> <translation id="672609503628871915">Zobacz, co nowego</translation> -<translation id="67269783048918309">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="67269783048918309">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="6727969043791803658">Połączono, bateria: <ph name="BATTERY_PERCENTAGE" />%</translation> <translation id="6731877319426971768">Pobrano pliki rozpoznawania mowy</translation> <translation id="6732801395666424405">Certyfikaty nie zostały wczytane</translation> @@ -5024,7 +5026,7 @@ <translation id="6847125920277401289">Aby kontynuować, zwolnij miejsce</translation> <translation id="6848388270925200958">Obecnie niektórych Twoich kart można używać tylko na tym urządzeniu</translation> <translation id="6850286078059909152">Kolor tekstu</translation> -<translation id="6851181413209322061">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie.</translation> +<translation id="6851181413209322061">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie.</translation> <translation id="6851497530878285708">Aplikacja włączona</translation> <translation id="6853388645642883916">Aktualizator jest uśpiony</translation> <translation id="68541483639528434">Zamknij inne karty</translation> @@ -5337,7 +5339,7 @@ <translation id="7203150201908454328">Rozwinięty</translation> <translation id="7206693748120342859">Pobieram <ph name="PLUGIN_NAME" />...</translation> <translation id="720715819012336933">{NUM_PAGES,plural, =1{Zamknij stronę}few{Zamknij strony}many{Zamknij strony}other{Zamknij strony}}</translation> -<translation id="7207457272187520234">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> +<translation id="7207457272187520234">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> <translation id="7207631048330366454">Szukaj aplikacji</translation> <translation id="7210499381659830293">Drukarki dostępne za pomocą rozszerzeń</translation> <translation id="7211890396916697230">Skonfiguruj eSIM</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">Aby oszczędzać baterię, polecenie „OK Google” jest włączone tylko wtedy, gdy urządzenie jest podłączone do zasilania. Możesz to zmienić w Ustawieniach.</translation> <translation id="7497215489070763236">Certyfikat CA serwera</translation> <translation id="7497981768003291373">Nie ma zapisanych ostatnio logów tekstowych WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> prosi o uprawnienia do przechwytywania treści tej karty.</translation> <translation id="7502658306369382406">Adres IPv6</translation> <translation id="7503191893372251637">Typ certyfikatu firmy Netscape</translation> <translation id="7503985202154027481">Wizyta na tej stronie zostanie zarejestrowana na Twoim kluczu bezpieczeństwa.</translation> @@ -6530,7 +6533,7 @@ <translation id="8591783563402255548">1 s</translation> <translation id="8592141010104017453">Nie pokazuj żadnych powiadomień</translation> <translation id="859246725979739260">Tej stronie zablokowano dostęp do Twojej lokalizacji.</translation> -<translation id="8593121833493516339">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz Dodatkową aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> +<translation id="8593121833493516339">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz Dodatkową aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation> <translation id="8593735906501637689">Usunięto moduł: <ph name="MODULE_TITLE" /></translation> <translation id="8594908476761052472">Nagraj film</translation> <translation id="8596540852772265699">Pliki niestandardowe</translation> @@ -6570,7 +6573,7 @@ <translation id="8637688295594795546">Jest dostępna aktualizacja systemu. Trwa przygotowanie do pobrania…</translation> <translation id="8639047128869322042">Szukam szkodliwego oprogramowania…</translation> <translation id="8639391553632924850"><ph name="INPUT_LABEL" /> – port</translation> -<translation id="8639635302972078117">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> +<translation id="8639635302972078117">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> <translation id="8642900771896232685">2 s</translation> <translation id="8642947597466641025">Powiększ tekst</translation> <translation id="8643443571868262066">Plik <ph name="FILE_NAME" /> może być niebezpieczny. Wysłać go do przeskanowania przez Ochronę zaawansowaną Google?</translation> @@ -6644,7 +6647,7 @@ <translation id="8719653885894320876">Nie udało się pobrać wtyczki <ph name="PLUGIN_NAME" /></translation> <translation id="8720200012906404956">Szukam sieci komórkowej. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation> <translation id="8720816553731218127">Przekroczono limit czasu inicjowania atrybutów instalacyjnych.</translation> -<translation id="8722912030556880711">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="8722912030556880711">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="8724405322205516354">Gdy zobaczysz tę ikonę, możesz użyć odcisku palca, by się zalogować lub zatwierdzić zakup.</translation> <translation id="8724409975248965964">Odcisk palca został dodany</translation> <translation id="8724859055372736596">&Pokaż w folderze</translation> @@ -6851,7 +6854,7 @@ <translation id="892706138619340876">Niektóre ustawienia zostały zresetowane</translation> <translation id="8930351635855238750">Nowe ustawienia plików cookie zostaną zastosowane po ponownym załadowaniu strony</translation> <translation id="8930622219860340959">Sieć bezprzewodowa</translation> -<translation id="8931076093143205651">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może zezwolić na wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> +<translation id="8931076093143205651">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida, wysyłając automatycznie do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To ustawienie jest wymuszone przez właściciela. Właściciel może zezwolić na wysyłanie do Google danych diagnostycznych i informacji o używaniu tego urządzenia. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google.</translation> <translation id="8931475688782629595">Zarządzanie synchronizacją</translation> <translation id="8932654652795262306">Szczegóły błyskawicznego połączenia w tetheringu</translation> <translation id="8932894639908691771">Opcje Switch Access</translation> @@ -7070,15 +7073,15 @@ <translation id="917350715406657904">Upłynął ustawiony przez rodzica limit czasu korzystania z aplikacji <ph name="APP_NAME" />. Jutro możesz z niej korzystać przez <ph name="TIME_LIMIT" />.</translation> <translation id="9173787391779732995">Strony mogą wyświetlać obrazy (zalecane)</translation> <translation id="9173995187295789444">Skanuję w poszukiwaniu urządzeń Bluetooth…</translation> -<translation id="9174401638287877180">Wysyłaj dane diagnostyczne oraz informacje o użyciu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> +<translation id="9174401638287877180">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na jego koncie.</translation> <translation id="917510707618656279">Pytaj, gdy strona chce uzyskać dostęp do urządzeń Bluetooth</translation> -<translation id="9176476835295860688">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="9176476835295860688">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Dzięki temu będziemy mogli poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. To <ph name="BEGIN_LINK1" />ustawienie<ph name="END_LINK1" /> jest wymuszone przez właściciela. Jeśli włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na Twoim koncie Google. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="9176611096776448349"><ph name="WINDOW_TITLE" /> – połączono z urządzeniem Bluetooth</translation> <translation id="9179524979050048593">Nazwa użytkownika na ekranie logowania</translation> <translation id="9180281769944411366">Może to potrwać kilka minut. Uruchamiam kontener Linuksa.</translation> <translation id="9180380851667544951">Strona może udostępniać ekran</translation> <translation id="9186963452600581158">Zaloguj się na konto Google dziecka</translation> -<translation id="9188732951356337132">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> +<translation id="9188732951356337132">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation> <translation id="9190063653747922532">L2TP/IPSec + klucz wstępny</translation> <translation id="9198090666959937775">Używaj telefonu z Androidem jako klucza bezpieczeństwa</translation> <translation id="920045321358709304">Szukaj w: <ph name="SEARCH_ENGINE" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index bb5d6cc..6e8730b3 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Entrada preferencial</translation> <translation id="1335929031622236846">Inscrever seu dispositivo</translation> <translation id="1336902454946927954">A chave de segurança está bloqueada porque sua impressão digital não foi reconhecida. Para desbloquear, digite seu PIN.</translation> +<translation id="1337692097987160377">Compartilhar esta guia</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> quer abrir esse aplicativo.</translation> <translation id="1338950911836659113">Excluindo...</translation> <translation id="13392265090583506">Configurações e acessibilidade</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Mais detalhes</translation> <translation id="2806372837663997957">O dispositivo não aceitou o compartilhamento</translation> +<translation id="2806891468525657116">O atalho já existe</translation> <translation id="2807517655263062534">Os arquivos transferidos por download aparecem aqui</translation> <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Caso não reconheça uma extensão, ou se seu navegador não estiver funcionando como o esperado, você poderá desativar ou personalizar extensões aqui.</translation> @@ -5587,6 +5589,7 @@ <translation id="7496732379142025470">Para economizar bateria, a hotword "Ok Google" só é ativada quando o dispositivo está conectado a uma fonte de energia. Se quiser alterar isso, acesse as configurações.</translation> <translation id="7497215489070763236">Certificado de CA do servidor</translation> <translation id="7497981768003291373">Você não tem nenhum registro de texto WebRTC capturado recentemente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> está pedindo permissão para capturar o conteúdo desta guia.</translation> <translation id="7502658306369382406">Endereço IPv6</translation> <translation id="7503191893372251637">Tipo de certificado do Netscape</translation> <translation id="7503985202154027481">Um registro da visita a este site será mantido na sua chave de segurança.</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index f92c38a..b8cef43 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Introdução preferida</translation> <translation id="1335929031622236846">Inscreva o seu dispositivo</translation> <translation id="1336902454946927954">A sua chave de segurança está bloqueada porque não foi possível reconhecer a sua impressão digital. Para a desbloquear, introduza o seu PIN.</translation> +<translation id="1337692097987160377">Partilhar este separador</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> pretende abrir esta aplicação.</translation> <translation id="1338950911836659113">A eliminar...</translation> <translation id="13392265090583506">A11y</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Apps</translation> <translation id="2805770823691782631">Detalhes adicionais</translation> <translation id="2806372837663997957">O dispositivo com o qual está a tentar efetuar a partilha não aceitou.</translation> +<translation id="2806891468525657116">O atalho já existe.</translation> <translation id="2807517655263062534">Os ficheiros que transferir são apresentados aqui</translation> <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Se não reconhecer uma extensão ou o seu navegador não estiver a funcionar conforme esperado, pode desativar ou personalizar as extensões aqui.</translation> @@ -5601,6 +5603,7 @@ <translation id="7496732379142025470">Para poupar bateria, a funcionalidade "Ok Google" só é ativada quando o dispositivo estiver ligado a uma fonte de alimentação. Para efetuar alterações, aceda a Definições.</translation> <translation id="7497215489070763236">Certificado da AC do servidor</translation> <translation id="7497981768003291373">Não existem registos de textos WebRTC capturados recentemente.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> está a solicitar autorização para capturar o conteúdo deste separador.</translation> <translation id="7502658306369382406">Endereço IPv6</translation> <translation id="7503191893372251637">Tipo de certificado Netscape</translation> <translation id="7503985202154027481">É mantido um registo da sua visita a este site na sua chave de segurança.</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 1633c55..5ffbf58 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -308,6 +308,7 @@ <translation id="133535873114485416">Metoda preferată de introducere</translation> <translation id="1335929031622236846">Înregistrează dispozitivul</translation> <translation id="1336902454946927954">Cheia de securitate este blocată, deoarece amprenta nu a fost recunoscută. Introdu codul PIN ca să o deblochezi.</translation> +<translation id="1337692097987160377">Distribuie această filă</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> intenționează să deschidă această aplicație.</translation> <translation id="1338950911836659113">Se șterge…</translation> <translation id="13392265090583506">A11y</translation> @@ -1615,6 +1616,7 @@ <translation id="2805756323405976993">Aplicații</translation> <translation id="2805770823691782631">Detalii suplimentare</translation> <translation id="2806372837663997957">Dispozitivul căruia încerci să îi trimiți nu a acceptat</translation> +<translation id="2806891468525657116">Comanda rapidă există deja</translation> <translation id="2807517655263062534">Fișierele pe care le descarci apar aici</translation> <translation id="2809586584051668049">și încă <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Dacă nu recunoști o extensie sau dacă browserul nu funcționează așa cum te așteptai, poți să dezactivezi sau să personalizezi extensiile aici.</translation> @@ -5601,6 +5603,7 @@ <translation id="7496732379142025470">Pentru a economisi bateria, „Ok Google” este activat doar atunci când dispozitivul este conectat la o sursă de alimentare. Pentru a face modificări, accesează Setările.</translation> <translation id="7497215489070763236">Certificat CA de server</translation> <translation id="7497981768003291373">Nu ai jurnale text WebRTC înregistrate recent.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> solicită permisiunea de a captura conținutul acestei file.</translation> <translation id="7502658306369382406">Adresă IPv6</translation> <translation id="7503191893372251637">Tip de certificat Netscape</translation> <translation id="7503985202154027481">O înregistrare a vizitei site-ului va fi păstrată pe cheia ta de securitate.</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 1df26376..c295111 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Предпочитаемый способ ввода</translation> <translation id="1335929031622236846">Зарегистрируйте устройство</translation> <translation id="1336902454946927954">Не удалось распознать отпечаток пальца. Электронный ключ заблокирован. Чтобы разблокировать его, введите PIN-код.</translation> +<translation id="1337692097987160377">Поделиться вкладкой</translation> <translation id="1338802252451106843">Сайт <ph name="ORIGIN" /> собирается открыть это приложение.</translation> <translation id="1338950911836659113">Удаление…</translation> <translation id="13392265090583506">Специальные возможности</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Сервисы</translation> <translation id="2805770823691782631">Дополнительные сведения</translation> <translation id="2806372837663997957">Устройство, с которым вы хотели поделиться файлом, не приняло его.</translation> +<translation id="2806891468525657116">Ярлык уже добавлен</translation> <translation id="2807517655263062534">Скачанные файлы появятся здесь</translation> <translation id="2809586584051668049">и ещё <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Если вы обнаружили незнакомое расширение или заметили сбои в работе браузера, вы можете отключить расширение или изменить его настройки.</translation> @@ -5584,6 +5586,7 @@ <translation id="7496732379142025470">Для экономии заряда батареи функция "Окей, Google" работает, только когда устройство подключено к источнику питания. Чтобы изменить этот параметр, перейдите в настройки.</translation> <translation id="7497215489070763236">Серверный сертификат ЦС</translation> <translation id="7497981768003291373">Не обнаружено недавно сохраненных текстовых журналов WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> запрашивает разрешение на съемку контента в этой вкладке.</translation> <translation id="7502658306369382406">Адрес IPv6</translation> <translation id="7503191893372251637">Тип сертификата Netscape</translation> <translation id="7503985202154027481">На вашем электронном ключе останется запись о том, что вы посетили этот сайт.</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index b7e723a..1b273a6 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">ජාල නැත</translation> <translation id="1056898198331236512">අවවාදයයි</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{ඔබගේ නව PIN ඇතුළු කරන්න. PIN අංකයක් අඩු තරමින් අනුලකුණු එකක් දිගු විය යුතු අතර අකුරු, ඉලක්කම් සහ වෙනත් අනුලකුණු අඩංගු විය හැකිය.}one{ඔබගේ නව PIN ඇතුළු කරන්න. PIN අංකයක් අඩු තරමින් අනුලකුණු #ක් දිගු විය යුතු අතර අකුරු, ඉලක්කම් සහ වෙනත් අනුලකුණු අඩංගු විය හැකිය.}other{ඔබගේ නව PIN ඇතුළු කරන්න. PIN අංකයක් අඩු තරමින් අනුලකුණු #ක් දිගු විය යුතු අතර අකුරු, ඉලක්කම් සහ වෙනත් අනුලකුණු අඩංගු විය හැකිය.}}</translation> <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' සඳහා ටැබ <ph name="NUM" />ක් සොයා ගන්නා ලදි</translation> <translation id="1060292118287751956">තිරය යාවත්කාලීන වන සංඛ්යාතය තීරණ කරයි</translation> <translation id="1061904396131502319">විවේකයක් සඳහා වේලාවයි</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">වඩා කැමති ආදාන</translation> <translation id="1335929031622236846">ඔබේ උපාංගය ඇතුළත් කරන්න</translation> <translation id="1336902454946927954">ඔබේ ඇඟිලි සලකුණ හඳුනාගත නොහැකි වූ බැවින් ඔබේ ආරක්ෂක යතුර අගුලු වැටී ඇත. අගුලු ඇරීමට, ඔබේ රහස් අංකය ඇතුළත් කරන්න.</translation> +<translation id="1337692097987160377">මෙම පටිත්ත බෙදා ගන්න</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> හට මෙම යෙදුම විවෘත කිරීමට අවශ්යයි.</translation> <translation id="1338950911836659113">ඉවත්කරමින්...</translation> <translation id="13392265090583506">A11y</translation> @@ -633,9 +635,11 @@ <translation id="1688935057616748272">අකුරක් යතුරු ලියන්න</translation> <translation id="168991973552362966">අවට මුද්රකයක් එක් කරන්න</translation> <translation id="1689945336726856614">&URL පිටපත් කරන්න</translation> +<translation id="1690248886740053041">ජංගම ජාලයකට සම්බන්ධ වීමට නොහැකිය. තාක්ෂණික සහාය සඳහා, කරුණාකර ඔබගේ වාහකය අමතන්න</translation> <translation id="1692115862433274081">වෙනත් ගිණුමක් භාවිතා කරන්න</translation> <translation id="1692118695553449118">සමමුහුව ක්රියාත්මකයි</translation> <translation id="1692210323591458290">තද දම්</translation> +<translation id="169279809881363536">පැතිකඩවල් සොයා නොගන්නා ලදි. නව ජාලයක් පිහිටුවීමට, උපාංග කැමරාව භාවිතයෙන් QR කේතය ස්කෑන් කරන්න හෝ ඔබගේ වාහකය විසින් සපයන ලද සක්රිය කිරීමේ කේතය ඇතුළු කරන්න</translation> <translation id="1697150536837697295">කලාව</translation> <translation id="1697686431566694143">ගොනුව සංස්කරණ කරන්න</translation> <translation id="1698122934742150150">වත්මන් අප්රසිද්ධ සැසිය පමණි</translation> @@ -1572,6 +1576,7 @@ <translation id="2770465223704140727">ලැයිස්තුවෙන් ඉවත් කරන්න</translation> <translation id="2770690685823456775">ඔබේ මුරපද වෙනත් ෆෝල්ඩරයකට නිර්යාත කරන්න</translation> <translation id="2770929488047004208">මොනිටර් විභේදනය</translation> +<translation id="2770954829020464827">ඔබ ඔබගේ තිරය බෙදා ගන්නා අතරතුර විස්තර සඟවනු ලැබේ</translation> <translation id="2771268254788431918">ජංගම දත්ත සක්රියයි</translation> <translation id="2771816809568414714">චීස්</translation> <translation id="2772936498786524345">අධම</translation> @@ -1608,6 +1613,7 @@ <translation id="2805756323405976993">යෙදුම්</translation> <translation id="2805770823691782631">අතිරේක විස්තර</translation> <translation id="2806372837663997957">ඔබ බෙදා ගැනීමට උත්සාහ කරන උපාංගය පිළිගත්තේ නැත</translation> +<translation id="2806891468525657116">කෙටිමඟ දැනටමත් තිබේ</translation> <translation id="2807517655263062534">ඔබ බාගන්නා ගොනු මෙහි දිස් වනු ඇත</translation> <translation id="2809586584051668049">සහ <ph name="NUMBER_ADDITIONAL_DISABLED" /> තවත්</translation> <translation id="2810390687497823527">ඔබ දිගුවක් හඳුනා නොගන්නේ නම්, හෝ ඔබේ බ්රවුසරය අපේක්ෂිත පරිදි ක්රියා නොකරන්නේ නම්, ඔබට මෙහි දිගු අක්රිය කිරීමට හෝ අභිරුචි කිරීමට හැකිය.</translation> @@ -1939,6 +1945,7 @@ <translation id="3201422919974259695">ලද හැකි USB උපාංග මෙහි දිස් වෙති.</translation> <translation id="3202131003361292969">පෙත</translation> <translation id="3202173864863109533">මෙම ටැබයේ ශ්රව්යයන් නිහඬ කර ඇත.</translation> +<translation id="3202218848974251205">පෞද්ගලිකත්ව සෑන්ඩ්බොක්ස්</translation> <translation id="3208321278970793882">යෙදුම</translation> <translation id="3208584281581115441">දැන් පරීක්ෂා කරන්න</translation> <translation id="3208703785962634733">තහවුරු කර නොමැත</translation> @@ -2159,6 +2166,7 @@ <translation id="3459697287128633276">Google Play Store වෙත පිවිසීමට ඔබේ ගිණුම සබල කිරීමට, කරුණාකර ඔබේ අනන්යතා සැපයුම්කරු සමගින් සත්යාපනය කරන්න.</translation> <translation id="3462311546193741693">බොහෝ වෙබ් අඩවිවලින් ඔබ වරයි. ඔබේ සමමුහුර්ත කළ දත්ත හිස් කළ හැකි වීම සඳහා ඔබ ඔබේ Google ගිණුමට පුරනය වී සිටියි.</translation> <translation id="3462413494201477527">ගිණුම පිහිටුවීම අවලංගු කරන්නද?</translation> +<translation id="3464145797867108663">කාර්යාල පැතිකඩ එක් කරන්න</translation> <translation id="346431825526753">මෙය <ph name="CUSTODIAN_EMAIL" /> මගින් පාලනය වන ළමුන් සඳහා වන ගිනුමකි.</translation> <translation id="3468298837301810372">ලේබලය</translation> <translation id="3468999815377931311">Android දුරකථනය</translation> @@ -2280,6 +2288,7 @@ <translation id="360180734785106144">නව විශේෂාංග තිබෙන විට ඒවා පිරිනමන්න</translation> <translation id="3602290021589620013">පෙරදසුන</translation> <translation id="3603622770190368340">නව ජාලකරණ සහතිකයක් ලබා ගන්න</translation> +<translation id="3604193429970465812">ද්විතීයික ගිණුම්</translation> <translation id="3604713164406837697">බිතුපත මාරු කරන්න</translation> <translation id="3605780360466892872">බොත්තමපහළට</translation> <translation id="3608576286259426129">පරිශීලක රූප පෙරදසුන</translation> @@ -2605,6 +2614,7 @@ ඔබ <ph name="CONTROL_PANEL_APPLET_NAME" /> ආරම්භ කිරීමට කැමතිද?</translation> <translation id="394183848452296464">කෙටිමඟ සෑදීමට නොහැක</translation> +<translation id="3943494825379372497">යෙදුම් සහ පිටු ප්රතිසාධනය කරන්නද?</translation> <translation id="3943582379552582368">&ආපසු</translation> <translation id="3943857333388298514">අලවන්න</translation> <translation id="3948116654032448504">පින්තූරය සඳහා <ph name="SEARCH_ENGINE" /> හි සොයන්න</translation> @@ -2690,6 +2700,7 @@ <translation id="4046013316139505482">මෙම දිගුවලට මෙම වෙබ් අඩවිය මත තොරතුරු බැලීමටත් වෙනස් කිරීමටත් අවශ්ය නැත.</translation> <translation id="4046123991198612571">ඊළඟ ඛණ්ඩය</translation> <translation id="4047726037116394521">මුල් පිටුවට යන්න</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{සම්බන්ධතා #ක් ලබා ගත නොහැකිය. ඔවුන් සමග අවට බෙදා ගැනීම භාවිත කිරීමට, ඔවුන්ගේ Google ගිණුම සමග සම්බන්ධිත ඉ-තැපැල් ලිපිනය ඔබගේ සම්බන්ධතාවලට එක් කරන්න.}one{සම්බන්ධතා #ක් ලබා ගත නොහැකිය. ඒවා සමග ළඟ බෙදා ගැනීම භාවිත කිරීමට, ඔවුන්ගේ Google ගිණුම් සමග සම්බන්ධිත ඉ-තැපැල් ලිපින ඔබගේ සම්බන්ධතාවලට එක් කරන්න.}other{සම්බන්ධතා #ක් ලබා ගත නොහැකිය. ඒවා සමග ළඟ බෙදා ගැනීම භාවිත කිරීමට, ඔවුන්ගේ Google ගිණුම් සමග සම්බන්ධිත ඉ-තැපැල් ලිපින ඔබගේ සම්බන්ධතාවලට එක් කරන්න.}}</translation> <translation id="4050225813016893843">සත්යාපන ක්රමය</translation> <translation id="4052120076834320548">කුඩා</translation> <translation id="4056908315660577142">ඔබ ඔබේ මාපියන් <ph name="APP_NAME" /> Chrome යෙදුම සඳහා සකසා ඇති කාල සීමාවට ළඟා විය. හෙට ඔබට එය <ph name="TIME_LIMIT" /> ට භාවිත කළ හැක.</translation> @@ -3336,6 +3347,7 @@ <translation id="4863769717153320198">පේන විදියට <ph name="WIDTH" /> x <ph name="HEIGHT" /> (පෙරනිමිය)</translation> <translation id="4864369630010738180">පුරමින්...</translation> <translation id="4864805589453749318">පාසල් ගිණුමක් එක් කිරීමට අවසර දෙන මාපිය තෝරන්න.</translation> +<translation id="4866265760644917470">පැතිකඩ සාර්ථකව එක් කර ඇත.</translation> <translation id="486635084936119914">බාගැනීමෙන් පසුව ඇතැම් ගොනු වර්ග ස්වයංක්රීයව විවෘත කරන්න</translation> <translation id="48704129375571883">අතිරේක විශේෂාංග එක් කරන්න</translation> <translation id="4870758487381879312">වින්යාස තොරතුරු ලබා ගැනීමට පරිපාලකයා ලබා දුන් මුරපදය ඇතුළත් කරන්න</translation> @@ -3619,6 +3631,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{අවදානමට පත් වූ මුරපදය සාර්ථකව වෙනස් කරන ලදි. ඔබට අවදානමට පත් වූ මුරපද තව #ක් ඇත. Chrome දැන් මෙම මුරපදය පරික්ෂා කිරීමට නිර්දේශ කරයි.}one{අවදානමට පත් වූ මුරපදය සාර්ථකව වෙනස් කරන ලදි. ඔබට අවදානමට පත් වූ මුරපද තව #ක් ඇත. Chrome දැන් මෙම මුරපද පරික්ෂා කිරීමට නිර්දේශ කරයි.}other{අවදානමට පත් වූ මුරපදය සාර්ථකව වෙනස් කරන ලදි. ඔබට අවදානමට පත් වූ මුරපද තව #ක් ඇත. Chrome දැන් මෙම මුරපද පරික්ෂා කිරීමට නිර්දේශ කරයි.}}</translation> <translation id="5207949376430453814">පෙළ කාකපාදය උද්දීපනය කරන්න</translation> <translation id="5209320130288484488">උපාංග කිසිවක් හමු නොවිනි</translation> +<translation id="5209572028385096813">මෙම පරිශීලකයා Family Link මගින් කළමනාකරණය කෙරේ</translation> <translation id="5210365745912300556">ටැබය වසන්න</translation> <translation id="5213481667492808996">ඔබේ '<ph name="NAME" />' දත්ත සේවය භාවිතයට සූදානම්</translation> <translation id="5213891612754844763">ප්රොක්සි සැකසීම් පෙන්වන්න</translation> @@ -3704,6 +3717,7 @@ <translation id="5302048478445481009">භාෂාව</translation> <translation id="5302932258331363306">ආදේශන පෙන්වන්න</translation> <translation id="5304276686222516262">සම්බන්ධතා ලැයිස්තුව බාගැනීමට නොහැකිය. කරුණාකර ඔබගේ ජාල සබැඳුම පරීක්ෂා කරන්න, හෝ <a href="#" id="tryAgainLink">නැවත උත්සාහ කරන්න</a>.</translation> +<translation id="5305145881844743843">මෙම ගිණුම කළමනාකරණය කරන්නේ <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> මගිනි</translation> <translation id="5305688511332277257">කිසිවක් ස්ථාපනය නොවිණ</translation> <translation id="5307030433605830021">මූලාශ්රය සහාය නොදක්වයි</translation> <translation id="5308380583665731573">සම්බන්ධ කරන්න</translation> @@ -4085,6 +4099,7 @@ <translation id="5740820643029013514">නිහඬ පණිවිඩ යැවීම භාවිත කරන්න (නිර්දේශිතයි)</translation> <translation id="574104302965107104">සංදර්ශක දර්පණය</translation> <translation id="574209121243317957">තාරතාව</translation> +<translation id="5742505912938664543">ඔබ මෙහි ද්විතීයික ගිණුමක් එක් කළ විට, ඔබට වෙබය බ්රවස් කිරීමට, යෙදුම් බාගැනීමට, එම ගිණුම භාවිතා කර ඔබගේ Gmail සහ වෙනත් Google සේවාවන් පරීක්ෂා කළ හැකිය.</translation> <translation id="5746169159649715125">PDF ලෙස සුරකින්න</translation> <translation id="5747552184818312860">කල් ඉකුත් වේ</translation> <translation id="5747785204778348146">සංවර්ධක - අස්ථිර</translation> @@ -4425,6 +4440,7 @@ <translation id="6129953537138746214">හිඩස</translation> <translation id="6130692320435119637">Wi-Fi එක් කරන්න</translation> <translation id="6136114942382973861">බාගැනීම් තීරුව වසන්න</translation> +<translation id="6136287496450963112">ඔබගේ ආරක්ෂක යතුර PIN අංකයකින් ආරක්ෂා නොකෙරේ. ඇඟිලි සලකුණු කළමනාකරණය කිරීමට, පළමුව PIN එකක් තනන්න.</translation> <translation id="6137767437444130246">පරිශීලක සහතිකය</translation> <translation id="6138680304137685902">SHA-384 සහිත X9.62 ECDSA අත්සන</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ජාලයක් නැත</translation> @@ -4605,6 +4621,7 @@ <translation id="6331566915566907158">Chrome OS විශේෂාංග සහ ක්රියාකාරිත්වය වැඩි දියුණු කිරීමට උදවු කරන්න</translation> <translation id="6331818708794917058">අඩවි MIDI උපාංග වෙත සම්බන්ධ වීමට ඉල්ලිය හැකිය</translation> <translation id="6333064448949140209">ගොනුව නිදොස් කිරීම සඳහා Google වෙත යවනු ඇත</translation> +<translation id="6334444530352320327">ඔබගේ යෙදුම් සහ OS සැකසීම් ඔබ මෙම ගිණුම සමඟ පුරා ඇති Chromebooks හරහා සමමුහුර්ත වනු ඇත.<ph name="LINK_BEGIN" />සැකසීම් සමමුහුර්ත කරන්න<ph name="LINK_END" /></translation> <translation id="6338981933082930623">සියලු අඩවි ඔබට කිනම් හෝ වෙළඳ දැන්වීම් පෙන්විය හැකිය</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> සඳහා නව පැතිකඩක් තනන්න</translation> <translation id="6340017061976355871">සේවාදායකය සමඟ සම්බන්ධ වීමට නොහැකි විය. ඔබේ ජාල සම්බන්ධතාව පරීක්ෂා කර නැවත උත්සාහ කරන්න. ගැටලුව දිගටම පවතී නම්, ඔබේ Chromebook යළි අරඹන්න.</translation> @@ -4904,6 +4921,7 @@ <translation id="6709133671862442373">පුවත්</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> භාවිතයෙන් සම්බන්ධ වන්න</translation> <translation id="6710213216561001401">පෙර</translation> +<translation id="6713233729292711163">කාර්යාල පැතිකඩ එක් කරන්න</translation> <translation id="6715803357256707211">ඔබගේ Linux යෙදුම ස්ථාපනය අතරතුරේදී දෝෂයක් ඇති විය. විස්තර සඳහා දැනුම්දීම මත ක්ලික් කරන්න.</translation> <translation id="671619610707606484">මෙය වෙබ් අඩවිවලින් ගබඩා කරනු ලැබූ දත්ත <ph name="TOTAL_USAGE" /> ක් හිස් කරයි</translation> <translation id="671928215901716392">අගුලු තිරය</translation> @@ -5272,6 +5290,7 @@ <translation id="7121362699166175603">ලිපින තීරුව තුළ ඉතිහාසය හා ස්වයං සම්පූර්ණ කිරීම් හිස් කරයි. ඔබේ Google ගිණුමට <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> හිදී බ්රවුස් කිරීමේ ඉතිහාසයේ වෙනත් ආකාරයන් තිබිය හැක.</translation> <translation id="7121438501124788993">සංවර්ධක ප්රකාරය</translation> <translation id="7121728544325372695">ස්මාර්ට් ඩෑෂ්</translation> +<translation id="7122353087820324370">යෙදුම් සහ OS සැකසීම් ද්විතීයක ගිණුම් වෙත සමමුහුර්ත නොකෙරේ.</translation> <translation id="7123030151043029868">ගොනු කිහිපයක් ස්වයංක්රියව බාගැනීමට ඉඩ දේ</translation> <translation id="7123360114020465152">තවදුරටත් සහාය නොදක්වයි</translation> <translation id="7125148293026877011">Crostini මකන්න</translation> @@ -5580,12 +5599,14 @@ <translation id="7496732379142025470">බැටරිය සුරැකීමට, “Ok Google” සක්රීය වන්නේ ඔබේ උපාංගය බල මූලාශ්රයකට සම්බන්ධ කර තිබෙන විට පමණයි. වෙනස්කම් සිදු කිරීමට, සැකසීම් වෙත යන්න.</translation> <translation id="7497215489070763236">සේවාදායකයේ CA සහතිකය</translation> <translation id="7497981768003291373">ඔබට මෑතකදී හසුකර ගත් WebRTC ලොග් නැත.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> මෙම ටැබයේ අන්තර්ගතය ග්රහණය කිරීමට අවසරය ඉල්ලයි.</translation> <translation id="7502658306369382406">IPv6 ලිපිනය</translation> <translation id="7503191893372251637">Netscape සහතික වර්ගය</translation> <translation id="7503985202154027481">ඔබේ ආරක්ෂක යතුරේ මෙම වෙබ් අඩවිය වෙත ඔබේ පැමිණීමේ සටහනක් තබනු ලැබේ.</translation> <translation id="750509436279396091">බාගැනීම් ෆෝල්ඩරය විවෘත කරන්න</translation> <translation id="7506093026325926984">මෙම මුරපදය මෙම උපාංගයේ සුරැකේ.</translation> <translation id="7506130076368211615">නව ජාලයක් පිහිටුවන්න</translation> +<translation id="7506242536428928412">ඔබගේ නව ආරක්ෂක යතුර භාවිත කිරීමට, නව PIN එකක් සකසන්න</translation> <translation id="7506541170099744506">ඔබගේ <ph name="DEVICE_TYPE" /> ව්යවසාය කළමනාකරණය සඳහා සාර්ථකව ලියාපදිංචි කර ඇත.</translation> <translation id="7507207699631365376">මෙම සැපයුම්කරුගේ <ph name="BEGIN_LINK" />පෞද්ගලිකත්ව ප්රතිපත්තිය<ph name="END_LINK" /> බලන්න</translation> <translation id="7507930499305566459">තත්ත්ව ප්රතිචාර සහතිකය</translation> @@ -5749,6 +5770,7 @@ <translation id="7691077781194517083">මෙම ආරක්ෂක යතුර යළි සැකසිය නොහැක. දෝෂය <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Crostini උත්ශ්රේණිය</translation> <translation id="7696063401938172191">ඔබේ '<ph name="PHONE_NAME" /> මත':</translation> +<translation id="7697166915480294040">ඔබ ඔබගේ තිරය බෙදා ගන්නා අතරතුර විස්තර සඟවනු ලැබේ</translation> <translation id="7697598343108519171">QR කේතයක් ස්කෑන් කිරීමට කැමරාව භාවිත කරන්න</translation> <translation id="7699968112832915395">ගිණුම එක් කළ නොහැක</translation> <translation id="7701040980221191251">නොමැත</translation> @@ -6204,6 +6226,8 @@ <translation id="8184472985242519288">ඒකරූපී</translation> <translation id="8186609076106987817">සර්වරයට ගොනුව සොයා ගත නොහැක.</translation> <translation id="8188389033983459049">ඔබගේ උපාංග සැකසීම් පරීක්ෂා කර දිගටම කරගෙන යාමට එය ක්රියාත්මක කරන්න</translation> +<translation id="8189306097519446565">පාසල් ගිණුම්</translation> +<translation id="8189750580333936930">පෞද්ගලිකත්ව සෑන්ඩ්බොක්ස්</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> වෙත සබඳ වෙමින්</translation> <translation id="8191230140820435481">ඔබගේ යෙදුම්, දිගු සහ තේමා පාලනය කරන්න</translation> <translation id="8195027750202970175">තැටිය මත තරම</translation> @@ -6896,6 +6920,7 @@ <translation id="8986362086234534611">අමතක</translation> <translation id="8986494364107987395">ස්වයංක්රීයව භාවිත සංඛ්යා ලේඛන සහ කඩිනම් වාර්තා Google වෙත යවන්න</translation> <translation id="8987927404178983737">මාසය</translation> +<translation id="8989823300731803443">ඔබ ඉතිරි කළ තැනින් දිගටම කරගෙන යන්න.</translation> <translation id="8990209962746788689">QR කේතය තැනිය නොහැකිය</translation> <translation id="8991520179165052608">අඩවියට ඔබේ මයික්රෆෝනය භාවිත කළ හැකිය</translation> <translation id="8992117551007229513">{COUNT,plural, =1{අයිතම 1}one{අයිතම #}other{අයිතම #}}</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index d12c5d2..756f8c9 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Žiadne siete</translation> <translation id="1056898198331236512">Upozornenie</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Zadajte nový PIN. PIN musí mať aspoň jeden znak a môže obsahovať písmená, čísla a ďalšie znaky.}few{Zadajte nový PIN. PIN musí mať aspoň # znaky a môže obsahovať písmená, čísla a ďalšie znaky.}many{Zadajte nový PIN. A PIN must be at least # characters long and can contain letters, numbers, and other characters.}other{Zadajte nový PIN. PIN musí mať aspoň # znakov a môže obsahovať písmená, čísla a ďalšie znaky.}}</translation> <translation id="1059944192885972544">Boli nájdené karty (<ph name="NUM" />) pre dopyt <ph name="SEARCH_TEXT" /></translation> <translation id="1060292118287751956">Určuje frekvenciu aktualizácie obrazovky</translation> <translation id="1061904396131502319">Už je takmer čas na prestávku</translation> @@ -308,6 +309,7 @@ <translation id="133535873114485416">Preferovaný vstup</translation> <translation id="1335929031622236846">Registrácia vášho zariadenia</translation> <translation id="1336902454946927954">Bezpečnostný kľúč je uzamknutý, pretože sa nepodarilo rozpoznať odtlačok prsta. Ak ho chcete odomknúť, zadajte PIN.</translation> +<translation id="1337692097987160377">Zdieľať túto kartu</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> chcete otvoriť túto aplikáciu.</translation> <translation id="1338950911836659113">Prebieha odstraňovanie...</translation> <translation id="13392265090583506">A11y</translation> @@ -637,9 +639,11 @@ <translation id="1688935057616748272">Napíšte písmeno</translation> <translation id="168991973552362966">Pridanie tlačiarne v blízkosti</translation> <translation id="1689945336726856614">Kopírovať &webovú adresu</translation> +<translation id="1690248886740053041">Nedá sa pripojiť k mobilnej sieti. Technickú podporu vám poskytne operátor.</translation> <translation id="1692115862433274081">Použiť iný účet</translation> <translation id="1692118695553449118">Synchronizácia je zapnutá.</translation> <translation id="1692210323591458290">Tmavofialová</translation> +<translation id="169279809881363536">Neboli vyhľadané žiadne profily. Ak chcete nastaviť novú sieť, naskenujte QR kód fotoaparátom zariadenia alebo zadajte aktivačný kód poskytnutý vaším operátorom.</translation> <translation id="1697150536837697295">Umenie</translation> <translation id="1697686431566694143">Upraviť súbor</translation> <translation id="1698122934742150150">Iba aktuálna relácia inkognito</translation> @@ -1575,6 +1579,7 @@ <translation id="2770465223704140727">Odstrániť zo zoznamu</translation> <translation id="2770690685823456775">Exportujte heslá do iného priečinka</translation> <translation id="2770929488047004208">Rozlíšenie monitora</translation> +<translation id="2770954829020464827">Podrobnosti sú počas zdieľania obrazovky skryté</translation> <translation id="2771268254788431918">Mobilné dáta boli aktivované</translation> <translation id="2771816809568414714">Syr</translation> <translation id="2772936498786524345">Rafinovaný</translation> @@ -1611,6 +1616,7 @@ <translation id="2805756323405976993">Aplikácie</translation> <translation id="2805770823691782631">Ďalšie podrobnosti</translation> <translation id="2806372837663997957">Zariadenie, s ktorým sa pokúšate položku zdieľať, ju neprijalo</translation> +<translation id="2806891468525657116">Skratka už existuje</translation> <translation id="2807517655263062534">Tu sa zobrazia súbory, ktoré stiahnete</translation> <translation id="2809586584051668049">a ďalšie (počet: <ph name="NUMBER_ADDITIONAL_DISABLED" />)</translation> <translation id="2810390687497823527">Ak nespoznávate určité rozšírenie alebo prehliadač nefunguje očakávaným spôsobom, na tejto stránke môžete vypnúť alebo prispôsobiť rozšírenia.</translation> @@ -1942,6 +1948,7 @@ <translation id="3201422919974259695">Tu sa budú zobrazovať dostupné zariadenia USB.</translation> <translation id="3202131003361292969">Cesta</translation> <translation id="3202173864863109533">Zvuk tejto karty bol stlmený.</translation> +<translation id="3202218848974251205">Karanténa na ochranu súkromia</translation> <translation id="3208321278970793882">Aplikácia</translation> <translation id="3208584281581115441">Skontrolovať</translation> <translation id="3208703785962634733">Nepotvrdené</translation> @@ -2162,6 +2169,7 @@ <translation id="3459697287128633276">Ak chcete povoliť účtu prístup do Obchodu Google Play, overte svoju totožnosť pomocou poskytovateľa identity.</translation> <translation id="3462311546193741693">Odhlási vás z väčšiny webov, ale nie z účtu Google, takže sa synchronizované dáta budú dať vymazať.</translation> <translation id="3462413494201477527">Zrušiť založenie účtu?</translation> +<translation id="3464145797867108663">Pridať pracovný profil</translation> <translation id="346431825526753">Toto je detský účet spravovaný používateľom <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Menovka:</translation> <translation id="3468999815377931311">Telefón s Androidom</translation> @@ -2283,6 +2291,7 @@ <translation id="360180734785106144">Poskytovať nové funkcie, keď budú k dispozícii</translation> <translation id="3602290021589620013">Ukážka</translation> <translation id="3603622770190368340">Získanie certifkátu siete</translation> +<translation id="3604193429970465812">Sekundárne účty</translation> <translation id="3604713164406837697">Zmeniť tapetu</translation> <translation id="3605780360466892872">Manažér</translation> <translation id="3608576286259426129">Ukážka obrázka používateľa</translation> @@ -2607,6 +2616,7 @@ Chcete spustiť aplet <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Skratka sa nedá vytvoriť</translation> +<translation id="3943494825379372497">Chcete obnoviť aplikácie a stránky?</translation> <translation id="3943582379552582368">&Naspäť</translation> <translation id="3943857333388298514">Prilepiť</translation> <translation id="3948116654032448504">&Hľadať obrázok v službe <ph name="SEARCH_ENGINE" /></translation> @@ -2692,6 +2702,7 @@ <translation id="4046013316139505482">Tieto rozšírenia nepotrebujú zobrazovať a meniť informácie na tomto webe.</translation> <translation id="4046123991198612571">Ďalšia skladba</translation> <translation id="4047726037116394521">Prejsť na plochu</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt nie je k dispozícii. Ak s ním chcete použiť zdieľanie nablízku, pridajte e‑mailovú adresu spojenú s jeho účtom Google do svojich kontaktov.}few{# kontakty nie sú k dispozícii. Ak s nimi chcete použiť zdieľanie nablízku, pridajte e‑mailové adresy spojené s ich účtom Google do svojich kontaktov.}many{# contacts are not available. Ak s nimi chcete použiť zdieľanie nablízku, pridajte e‑mailové adresy spojené s ich účtom Google do svojich kontaktov.}other{# kontaktov nie je k dispozícii. Ak s nimi chcete použiť zdieľanie nablízku, pridajte e‑mailové adresy spojené s ich účtom Google do svojich kontaktov.}}</translation> <translation id="4050225813016893843">Spôsob overenia</translation> <translation id="4052120076834320548">Drobné</translation> <translation id="4056908315660577142">Vypršal časový limit, ktorý tvoj rodič nastavil pre aplikáciu pre Chrome <ph name="APP_NAME" />. Zajtra ju môžeš používať <ph name="TIME_LIMIT" />.</translation> @@ -3338,6 +3349,7 @@ <translation id="4863769717153320198">Vyzerá ako <ph name="WIDTH" /> x <ph name="HEIGHT" /> (predvolené)</translation> <translation id="4864369630010738180">Prebieha prihlasovanie...</translation> <translation id="4864805589453749318">Vyberte rodiča, ktorý udeľuje povolenie pridať školský účet.</translation> +<translation id="4866265760644917470">Profil bol úspešne pridaný.</translation> <translation id="486635084936119914">Automaticky otvoriť určité typy súborov po ich stiahnutí</translation> <translation id="48704129375571883">Pridať ďalšie funkcie</translation> <translation id="4870758487381879312">Ak chcete získať informácie o konfigurácii, zadajte heslo od správcu</translation> @@ -3621,6 +3633,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Prelomené heslo ste úspešne zmenili. Máte ešte # ďalšie. Chrome odporúča toto heslo ihneď skontrolovať.}few{Prelomené heslo ste úspešne zmenili. Máte ešte # ďalšie. Chrome odporúča tieto heslá ihneď skontrolovať.}many{Prelomené heslo ste úspešne zmenili. You have # more compromised passwords. Chrome odporúča tieto heslá ihneď skontrolovať.}other{Prelomené heslo ste úspešne zmenili. Máte ešte # ďalších. Chrome odporúča tieto heslá ihneď skontrolovať.}}</translation> <translation id="5207949376430453814">Zvýrazniť textový kurzor</translation> <translation id="5209320130288484488">Nenašli sa žiadne zariadenia</translation> +<translation id="5209572028385096813">Tento používateľ je spravovaný aplikáciou Family Link</translation> <translation id="5210365745912300556">Zatvoriť kartu</translation> <translation id="5213481667492808996">Dátová služba <ph name="NAME" /> je pripravená na použitie</translation> <translation id="5213891612754844763">Zobraziť nastavenia proxy servera</translation> @@ -3706,6 +3719,7 @@ <translation id="5302048478445481009">Jazyk</translation> <translation id="5302932258331363306">Zobraziť substitúcie</translation> <translation id="5304276686222516262">Zoznam kontaktov sa nedá stiahnuť. Skontrolujte svoje pripojenie k sieti alebo to <a href="#" id="tryAgainLink">skúste znova</a>.</translation> +<translation id="5305145881844743843">Tento účet je spravovaný doménou <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Žiadne nainštalované</translation> <translation id="5307030433605830021">Zdroj nie je podporovaný</translation> <translation id="5308380583665731573">Pripojenie</translation> @@ -4087,6 +4101,7 @@ <translation id="5740820643029013514">Používať tichšie správy (odporúčané)</translation> <translation id="574104302965107104">Zrkadlenie obrazovky</translation> <translation id="574209121243317957">Výška hlasu</translation> +<translation id="5742505912938664543">Keď si tu pridáte sekundárny účet, budete ním môcť prehliadať web, sťahovať aplikácie a kontrolovať Gmail aj ďalšie služby Googlu.</translation> <translation id="5746169159649715125">Uložiť ako PDF</translation> <translation id="5747552184818312860">Koniec platnosti</translation> <translation id="5747785204778348146">Vývojár – nestabilné</translation> @@ -4427,6 +4442,7 @@ <translation id="6129953537138746214">Medzera</translation> <translation id="6130692320435119637">Pridať Wi‑Fi</translation> <translation id="6136114942382973861">Zatvoriť panel so stiahnutými súbormi</translation> +<translation id="6136287496450963112">Váš bezpečnostný kľúč nie je chránený kódom PIN. Ak chcete spravovať odtlačky prsta, najprv vytvorte PIN.</translation> <translation id="6137767437444130246">Certifikát používateľa</translation> <translation id="6138680304137685902">Podpis X9.62 ECDSA s SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, žiadna sieť</translation> @@ -4607,6 +4623,7 @@ <translation id="6331566915566907158">Pomáhať zlepšovať funkcie a výkonnosť systému Chrome OS</translation> <translation id="6331818708794917058">Weby môžu žiadať o pripojenie k zariadeniam MIDI</translation> <translation id="6333064448949140209">Súbor bude odoslaný Googlu na účely ladenia</translation> +<translation id="6334444530352320327">Vaše aplikácie a nastavenia budú synchronizované vo všetkých Chromebookoch, v ktorých ste sa prihlásili týmto účtom. <ph name="LINK_BEGIN" />Nastavenia synchronizácie<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Všetky weby vám môžu zobrazovať akékoľvek reklamy</translation> <translation id="6339668969738228384">Vytvoriť nový profil pre používateľa <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Nepodarilo sa pripojiť k serveru. Skontrolujte sieťové pripojenie a skúste to znova. Ak problém pretrváva, reštartujte Chromebook.</translation> @@ -4908,6 +4925,7 @@ <translation id="6709133671862442373">News</translation> <translation id="6709357832553498500">Pripojiť sa pomocou rozšírenia <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Späť</translation> +<translation id="6713233729292711163">Pridať pracovný profil</translation> <translation id="6715803357256707211">Počas inštalácie aplikácie pre Linux sa vyskytla chyba. Podrobnosti zistíte po kliknutí na upozornenie.</translation> <translation id="671619610707606484">Týmto vymažete <ph name="TOTAL_USAGE" /> dát uložených webmi</translation> <translation id="671928215901716392">Uzamknúť obrazovku</translation> @@ -5276,6 +5294,7 @@ <translation id="7121362699166175603">Vymaže históriu a záznamy automatického dopĺňania v paneli s adresou. Váš účet Google môže mať ďalšie formy histórie prehliadania na adrese <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Režim vývojára</translation> <translation id="7121728544325372695">Inteligentné pomlčky</translation> +<translation id="7122353087820324370">Aplikácie a nastavenia operačného systému nie sú synchronizované do sekundárnych účtov.</translation> <translation id="7123030151043029868">Môže automaticky sťahovať viacero súborov</translation> <translation id="7123360114020465152">Nepodporovaná</translation> <translation id="7125148293026877011">Odstrániť systém Crostini</translation> @@ -5584,12 +5603,14 @@ <translation id="7496732379142025470">Rozpoznávanie kľúčového výrazu „Ok Google“ je zapnuté iba vtedy, keď je zariadenie pripojené k zdroju napájania, aby sa šetrila batéria. Ak chcete vykonať zmeny, prejdite do Nastavení.</translation> <translation id="7497215489070763236">Certifikát CA servera</translation> <translation id="7497981768003291373">Nemáte žiadne nedávno zaznamenané textové denníky WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> žiada o povolenie nasnímať obsah tejto karty.</translation> <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7503191893372251637">Netscape – typ certifikátu </translation> <translation id="7503985202154027481">V bezpečnostnom kľúči sa uchová záznam vašej návštevy tohto webu.</translation> <translation id="750509436279396091">Otvoriť priečinok stiahnutých súborov</translation> <translation id="7506093026325926984">Toto heslo bude uložené v tomto zariadení</translation> <translation id="7506130076368211615">Nastavenie novej siete</translation> +<translation id="7506242536428928412">Ak chcete používať svoj nový bezpečnostný kľúč, nastavte nový kód PIN</translation> <translation id="7506541170099744506">Zariadenie <ph name="DEVICE_TYPE" /> bolo úspešne zaregistrované na podnikovú správu.</translation> <translation id="7507207699631365376">Zobraziť <ph name="BEGIN_LINK" />pravidlá ochrany súkromia<ph name="END_LINK" /> tohto poskytovateľa</translation> <translation id="7507930499305566459">Certifikát stavového odpovedajúceho zariadenia</translation> @@ -5753,6 +5774,7 @@ <translation id="7691077781194517083">Tento bezpečnostný kľúč sa nedá resetovať. Chyba <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Inovácia systému Crostini</translation> <translation id="7696063401938172191">V telefóne <ph name="PHONE_NAME" />:</translation> +<translation id="7697166915480294040">Podrobnosti sú počas zdieľania obrazovky skryté</translation> <translation id="7697598343108519171">Naskenovať QR kód fotoaparátom</translation> <translation id="7699968112832915395">Účet sa nedá pridať</translation> <translation id="7701040980221191251">Žiadne</translation> @@ -6209,6 +6231,8 @@ <translation id="8184472985242519288">Jednotný</translation> <translation id="8186609076106987817">Server nemohol nájsť súbor.</translation> <translation id="8188389033983459049">Ak chcete pokračovať, skontrolujte nastavenia zariadenia a zapnite ho</translation> +<translation id="8189306097519446565">Školské účty</translation> +<translation id="8189750580333936930">Karanténa na ochranu súkromia</translation> <translation id="8190193592390505034">Prebieha pripájanie na stránku <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Spravovať vaše aplikácie, rozšírenia a motívy</translation> <translation id="8195027750202970175">Veľkosť na disku</translation> @@ -6902,6 +6926,7 @@ <translation id="8986362086234534611">Odstrániť</translation> <translation id="8986494364107987395">Automaticky odosielať Googlu štatistiky používania a správy o zlyhaní</translation> <translation id="8987927404178983737">Mesiac</translation> +<translation id="8989823300731803443">Pokračujte, kde ste prestali.</translation> <translation id="8990209962746788689">Nie je možné vytvoriť QR kód</translation> <translation id="8991520179165052608">Web môže používať váš mikrofón</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 položka}few{# položky}many{# items}other{# položiek}}</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 32fba230..c711c7a 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Želeni način vnosa</translation> <translation id="1335929031622236846">Včlanite napravo</translation> <translation id="1336902454946927954">Varnostni ključ je zaklenjen, ker vašega prstnega odtisa ni bilo mogoče prepoznati. Če ga želite odkleniti, vnesite PIN.</translation> +<translation id="1337692097987160377">Deli ta zavihek z drugimi</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> želi odpreti to aplikacijo.</translation> <translation id="1338950911836659113">Brisanje ...</translation> <translation id="13392265090583506">Funkcije za ljudi s posebnimi potrebami</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Dodatne podrobnosti</translation> <translation id="2806372837663997957">Naprava, s katero želite deliti vsebino, ni potrdila sprejema.</translation> +<translation id="2806891468525657116">Bližnjica že obstaja</translation> <translation id="2807517655263062534">Tu so prikazane datoteke, ki jih prenesete</translation> <translation id="2809586584051668049">in še <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Če razširitve ne prepoznate ali če brskalnik ne deluje po pričakovanjih, lahko tukaj izklopite ali prilagodite razširitve.</translation> @@ -5588,6 +5590,7 @@ <translation id="7496732379142025470">Zaradi varčevanja z energijo akumulatorja je sprožilna beseda »Ok Google« vklopljena samo, ko je naprava priklopljena v vir napajanja. Če želite opraviti spremembe, odprite nastavitve.</translation> <translation id="7497215489070763236">Strežniško overjeno potrdilo</translation> <translation id="7497981768003291373">Nimate nedavno zajetih besedilnih dnevnikov za WebRTC.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> zahteva dovoljenje za zajem vsebine tega zavihka.</translation> <translation id="7502658306369382406">Naslov IPv6</translation> <translation id="7503191893372251637">Vrsta Netscapeovega potrdila</translation> <translation id="7503985202154027481">Na varnostnem ključu se bo zabeležil obisk tega spletnega mesta.</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index ca75b0b..e58482f 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Nuk ka rrjete</translation> <translation id="1056898198331236512">Paralajmërim</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Fut kodin PIN të ri. Një kod PIN duhet të jetë të paktën një karakter i gjatë dhe mund të përmbajë shkronja, numra dhe karaktere të tjera.}other{Fut kodin PIN të ri. Një kod PIN duhet të jetë të paktën # karaktere i gjatë dhe mund të përmbajë shkronja, numra dhe karaktere të tjera.}}</translation> <translation id="1059944192885972544">U gjetën <ph name="NUM" /> skeda për "<ph name="SEARCH_TEXT" />"</translation> <translation id="1060292118287751956">Përcakton shpeshtësinë e përditësimit të ekranit</translation> <translation id="1061904396131502319">Pothuajse koha për një pushim</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Hyrja e preferuar</translation> <translation id="1335929031622236846">Regjistro pajisjen tënde</translation> <translation id="1336902454946927954">Çelësi yt i sigurisë është i kyçur sepse gjurma jote e gishtit nuk mund të njihej. Për ta shkyçur, fut kodin PIN.</translation> +<translation id="1337692097987160377">Ndaje këtë skedë</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> dëshiron që ta hapë këtë aplikacion.</translation> <translation id="1338950911836659113">Po fshin...</translation> <translation id="13392265090583506">Qasshmëria</translation> @@ -632,9 +634,11 @@ <translation id="1688935057616748272">Shkruaj një germë</translation> <translation id="168991973552362966">Shto një printer në afërsi</translation> <translation id="1689945336726856614">Kopjo &URL-në</translation> +<translation id="1690248886740053041">Nuk mund të lidhet me një rrjet celular. Për mbështetje teknike, kontakto me operatorin tënd celular.</translation> <translation id="1692115862433274081">Përdor një llogari tjetër</translation> <translation id="1692118695553449118">Sinkronizimi është aktiv</translation> <translation id="1692210323591458290">Vjollcë e errët</translation> +<translation id="169279809881363536">Nuk u zbulua asnjë profil. Për të konfiguruar një rrjet të ri, skano kodin QR duke përdorur kamerën e pajisjes ose fut kodin e aktivizimit që të është dhënë nga operatori celular.</translation> <translation id="1697150536837697295">Art</translation> <translation id="1697686431566694143">Modifiko skedarin</translation> <translation id="1698122934742150150">Vetëm sesioni aktual i fshehtë</translation> @@ -1571,6 +1575,7 @@ <translation id="2770465223704140727">Hiqe nga lista</translation> <translation id="2770690685823456775">Eksporto fjalëkalimet e tua te një dosje tjetër</translation> <translation id="2770929488047004208">Rezolucioni i monitorit</translation> +<translation id="2770954829020464827">Detajet janë të fshehura ndërkohë që ndan ekranin tënd</translation> <translation id="2771268254788431918">Të dhënat celulare të aktivizuara</translation> <translation id="2771816809568414714">Djathë</translation> <translation id="2772936498786524345">Tinëzar</translation> @@ -1607,6 +1612,7 @@ <translation id="2805756323405976993">Aplikacionet</translation> <translation id="2805770823691782631">Detaje të tjera</translation> <translation id="2806372837663997957">Pajisja me të cilën po përpiqesh të ndash nuk pranoi</translation> +<translation id="2806891468525657116">Shkurtorja ekziston tashmë</translation> <translation id="2807517655263062534">Skedarët që shkarkon shfaqen këtu</translation> <translation id="2809586584051668049">dhe <ph name="NUMBER_ADDITIONAL_DISABLED" /> të tjerë</translation> <translation id="2810390687497823527">Nëse nuk e njeh një shtesë ose nëse shfletuesi nuk funksionon siç pritet, mund t'i çaktivizosh ose personalizosh shtesat këtu.</translation> @@ -1938,6 +1944,7 @@ <translation id="3201422919974259695">Pajisjet USB të ofruara do të shfaqen këtu.</translation> <translation id="3202131003361292969">Shtegu</translation> <translation id="3202173864863109533">Audioja e kësaj skede është vendosur në heshtje.</translation> +<translation id="3202218848974251205">Kufizuesi i privatësisë</translation> <translation id="3208321278970793882">Aplikacioni</translation> <translation id="3208584281581115441">Kontrollo tani</translation> <translation id="3208703785962634733">I pakonfirmuar</translation> @@ -2158,6 +2165,7 @@ <translation id="3459697287128633276">Për të bërë të mundur që llogaria jote të qaset te "Dyqani i Google Play", kryej vërtetimin me "Ofruesin tënd të identitetit".</translation> <translation id="3462311546193741693">Të nxjerr nga shumica e sajteve. Do të qëndrosh i identifikuar në "Llogarinë e Google" në mënyrë që të dhënat e tua të sinkronizuara të mund të pastrohen.</translation> <translation id="3462413494201477527">Të anulohet konfigurimi i llogarisë?</translation> +<translation id="3464145797867108663">Shto profilin e punës</translation> <translation id="346431825526753">Kjo është një llogari për fëmijë, e menaxhuar nga <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Etiketa</translation> <translation id="3468999815377931311">Telefon me Android</translation> @@ -2279,6 +2287,7 @@ <translation id="360180734785106144">Të ofrojë funksione të reja kur të mundësohen</translation> <translation id="3602290021589620013">Pamje paraprake</translation> <translation id="3603622770190368340">Merr certifikatën e rrjetit</translation> +<translation id="3604193429970465812">Llogaritë dytësore</translation> <translation id="3604713164406837697">Ndrysho imazhin e sfondit</translation> <translation id="3605780360466892872">I kollarisur</translation> <translation id="3608576286259426129">Shikim paraprak i imazhit të përdoruesit</translation> @@ -2603,6 +2612,7 @@ Dëshiron që ta nisësh <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Shkurtorja nuk mund të krijohet</translation> +<translation id="3943494825379372497">Të restaurohen aplikacionet dhe faqet?</translation> <translation id="3943582379552582368">&Prapa</translation> <translation id="3943857333388298514">Ngjite</translation> <translation id="3948116654032448504">&Kërko në <ph name="SEARCH_ENGINE" /> për imazhin</translation> @@ -2688,6 +2698,7 @@ <translation id="4046013316139505482">Këto shtesa nuk kanë nevojë të shikojnë dhe të ndryshojnë informacionet në këtë sajt.</translation> <translation id="4046123991198612571">Kënga tjetër</translation> <translation id="4047726037116394521">Shko tek ekrani bazë</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt nuk ofrohet. Për të përdorur "Ndarjen në afërsi" me të, shto te kontaktet e tua adresën e email-it të lidhur me "Llogarinë e tij të Google".}other{# kontakte nuk ofrohen. Për të përdorur "Ndarjen në afërsi" me ta, shto te kontaktet e tua adresën e email-it të lidhur me "Llogaritë e tyre të Google".}}</translation> <translation id="4050225813016893843">Metoda e vërtetimit</translation> <translation id="4052120076834320548">Shumë e vogël</translation> <translation id="4056908315660577142">Ke arritur kufirin kohor që ka caktuar prindi yt për aplikacionin e Chrome <ph name="APP_NAME" />. Mund ta përdorësh atë për <ph name="TIME_LIMIT" /> nesër.</translation> @@ -3334,6 +3345,7 @@ <translation id="4863769717153320198">Duket si <ph name="WIDTH" /> x <ph name="HEIGHT" /> (e parazgjedhur)</translation> <translation id="4864369630010738180">Po identifikohet...</translation> <translation id="4864805589453749318">Zgjidh prindin që po jep lejen për shtimin e një llogarie shkolle.</translation> +<translation id="4866265760644917470">Profili është shtuar me sukses.</translation> <translation id="486635084936119914">Hap automatikisht lloje të caktuara të skedarëve pas shkarkimit</translation> <translation id="48704129375571883">Shto funksione të tjera</translation> <translation id="4870758487381879312">Fut fjalëkalimin e dhënë nga administratori për të marrë informacionin e konfigurimit</translation> @@ -3617,6 +3629,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Fjalëkalimi i komprometuar u ndryshua me sukses. Ke edhe # fjalëkalim tjetër të komprometuar. Chrome rekomandon që ta kontrollosh këtë fjalëkalim tani.}other{Fjalëkalimi i komprometuar u ndryshua me sukses. Ke edhe # fjalëkalime të tjera të komprometuara. Chrome rekomandon që t'i kontrollosh këto fjalëkalime tani.}}</translation> <translation id="5207949376430453814">Thekso kursorin e tekstit</translation> <translation id="5209320130288484488">Nuk u gjet asnjë pajisje</translation> +<translation id="5209572028385096813">Ky përdorues menaxhohet nga Family Link</translation> <translation id="5210365745912300556">Mbyll skedën</translation> <translation id="5213481667492808996">Shërbimi yt i të dhënave të "<ph name="NAME" />" është gati për përdorim</translation> <translation id="5213891612754844763">Shfaq cilësimet e përfaqësuesit</translation> @@ -3702,6 +3715,7 @@ <translation id="5302048478445481009">Gjuha</translation> <translation id="5302932258331363306">Shfaq zëvendësimet</translation> <translation id="5304276686222516262">Lista e kontakteve nuk mund të shkarkohet. Kontrollo lidhjen tënde të rrjetit ose <a href="#" id="tryAgainLink">provo përsëri</a>.</translation> +<translation id="5305145881844743843">Kjo llogari menaxhohet nga <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Nuk është instaluar asnjë</translation> <translation id="5307030433605830021">Burimi nuk mbështetet</translation> <translation id="5308380583665731573">Lidh</translation> @@ -4082,6 +4096,7 @@ <translation id="5740820643029013514">Përdor mesazhe më të qeta (rekomandohet)</translation> <translation id="574104302965107104">Pasqyrimi i ekranit</translation> <translation id="574209121243317957">Tonaliteti</translation> +<translation id="5742505912938664543">Kur shton një llogari dytësore këtu, mund të shfletosh në ueb, të shkarkosh aplikacione, të kontrollosh Gmail dhe shërbimet e tjera të Google duke përdorur atë llogari.</translation> <translation id="5746169159649715125">Ruaj si PDF</translation> <translation id="5747552184818312860">Skadon</translation> <translation id="5747785204778348146">Programimi - i paqëndrueshëm</translation> @@ -4422,6 +4437,7 @@ <translation id="6129953537138746214">Hapësirë</translation> <translation id="6130692320435119637">Shto Wi-Fi</translation> <translation id="6136114942382973861">Mbyll shiritin e shkarkimeve</translation> +<translation id="6136287496450963112">Çelësi yt i sigurisë nuk është i mbrojtur me një kod PIN. Për të menaxhuar gjurmët e gishtave, në fillim krijo një kod PIN.</translation> <translation id="6137767437444130246">Certifikata e përdoruesit</translation> <translation id="6138680304137685902">Nënshkrimi X9.62 ECDSA me SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nuk ka rrjet</translation> @@ -4602,6 +4618,7 @@ <translation id="6331566915566907158">Ndihmo në përmirësimin e veçorive dhe të cilësisë së funksionimit të sistemit operativ Chrome</translation> <translation id="6331818708794917058">Sajtet mund të kërkojnë të lidhen me pajisjet me MIDI</translation> <translation id="6333064448949140209">Skedari do të dërgohet te Google për korrigjimin e gabimeve</translation> +<translation id="6334444530352320327">Aplikacionet e tua dhe cilësimet e sistemit tënd operativ do të sinkronizohen mes pajisjeve Chromebook ku je identifikuar me këtë llogari.<ph name="LINK_BEGIN" />Sinkronizo "Cilësimet"<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Të gjitha sajtet mund të të shfaqin çdo reklamë</translation> <translation id="6339668969738228384">Krijo një profil të ri për <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Nuk mund të lidhej me serverin. Kontrollo lidhjen me rrjetin dhe provo sërish. Nëse problemi vazhdon, rinise pajisjen Chromebook.</translation> @@ -4903,6 +4920,7 @@ <translation id="6709133671862442373">Lajmet</translation> <translation id="6709357832553498500">Lidhu duke përdorur <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Prapa</translation> +<translation id="6713233729292711163">Shto profilin e punës</translation> <translation id="6715803357256707211">Ndodhi një gabim gjatë instalimit të aplikacionit tënd në Linux. Kliko mbi njoftim për detaje.</translation> <translation id="671619610707606484">Kjo do të pastrojë <ph name="TOTAL_USAGE" /> të dhëna të ruajtura nga sajtet</translation> <translation id="671928215901716392">Ekrani i kyçjes</translation> @@ -5271,6 +5289,7 @@ <translation id="7121362699166175603">Pastron historikun dhe plotësimet automatike në shiritin e adresës. Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit në <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Modaliteti i zhvilluesit</translation> <translation id="7121728544325372695">Vizat inteligjente</translation> +<translation id="7122353087820324370">Aplikacionet dhe cilësimet e sistemit operativ nuk sinkronizohen me llogaritë dytësore.</translation> <translation id="7123030151043029868">Lejohen të shkarkojnë automatikisht shumë skedarë</translation> <translation id="7123360114020465152">Nuk mbështetet më</translation> <translation id="7125148293026877011">Fshi Crostini</translation> @@ -5579,12 +5598,14 @@ <translation id="7496732379142025470">Për të kursyer bateri, “Ok Google” është aktiv vetëm kur pajisja jote është lidhur me një burim energjie. Për të bërë ndryshime, shko te "Cilësimet".</translation> <translation id="7497215489070763236">Certifikata CA e serverit</translation> <translation id="7497981768003291373">Nuk ke evidenca teksti WebRTC të regjistruara së fundi.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> po kërkon leje për të regjistruar përmbajtjen e kësaj skede.</translation> <translation id="7502658306369382406">Adresa IPv6</translation> <translation id="7503191893372251637">Lloji i certifikatës Netscape</translation> <translation id="7503985202154027481">Një regjistrim i vizitës sate në këtë sajt do të ruhet në çelësin tënd të sigurisë.</translation> <translation id="750509436279396091">Hap dosjen e shkarkimeve</translation> <translation id="7506093026325926984">Ky fjalëkalim do të ruhet në këtë pajisje</translation> <translation id="7506130076368211615">Konfiguro një rrjet të ri</translation> +<translation id="7506242536428928412">Për të përdorur çelësin tënd të ri të sigurisë, cakto një kod të ri PIN</translation> <translation id="7506541170099744506">Pajisja jote <ph name="DEVICE_TYPE" /> është regjistruar me sukses për menaxhimin e ndërmarrjes.</translation> <translation id="7507207699631365376">Shiko <ph name="BEGIN_LINK" />politikën e privatësisë<ph name="END_LINK" /> së këtij ofruesi</translation> <translation id="7507930499305566459">Certifikata e reaguesit të statusit</translation> @@ -5748,6 +5769,7 @@ <translation id="7691077781194517083">Ky çelës sigurie nuk mund të rivendoset. Gabim <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Përmirësimi i Crostini</translation> <translation id="7696063401938172191">Në telefonin tënd "<ph name="PHONE_NAME" />":</translation> +<translation id="7697166915480294040">Detajet janë të fshehura ndërkohë që ndan ekranin tënd</translation> <translation id="7697598343108519171">Përdor kamerën për të skanuar kodin QR</translation> <translation id="7699968112832915395">Llogaria nuk mund të shtohet</translation> <translation id="7701040980221191251">Asnjë</translation> @@ -6203,6 +6225,8 @@ <translation id="8184472985242519288">Uniform</translation> <translation id="8186609076106987817">Serveri nuk mund të gjejë skedarin.</translation> <translation id="8188389033983459049">Kontrollo cilësimet e pajisjes dhe aktivizoje për të vazhduar</translation> +<translation id="8189306097519446565">Llogaritë e shkollës</translation> +<translation id="8189750580333936930">Kufizuesi i privatësisë</translation> <translation id="8190193592390505034">Po lidhet me <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Menaxho aplikacionet e tua, shtesat dhe temat</translation> <translation id="8195027750202970175">Madhësia në disk</translation> @@ -6894,6 +6918,7 @@ <translation id="8986362086234534611">Harro</translation> <translation id="8986494364107987395">Dërgo automatikisht te Google statistikat e përdorimit dhe raportet e ndërprerjeve aksidentale</translation> <translation id="8987927404178983737">Muaji</translation> +<translation id="8989823300731803443">Vazhdo ku e ke lënë.</translation> <translation id="8990209962746788689">Kodi QR nuk mund të krijohet</translation> <translation id="8991520179165052608">Sajti mund të përdorë mikrofonin tënd</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 artikull}other{# artikuj}}</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 6d6a965..e5589c6 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Željeni način unosa</translation> <translation id="1335929031622236846">Registrujte uređaj</translation> <translation id="1336902454946927954">Vaš bezbednosni ključ je zaključan jer nismo uspeli da prepoznamo otisak prsta. Da biste ga otključali, unesite PIN.</translation> +<translation id="1337692097987160377">Deli ovu karticu</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> želi da otvori ovu aplikaciju.</translation> <translation id="1338950911836659113">Brisanje...</translation> <translation id="13392265090583506">Pristupačnost</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Aplikacije</translation> <translation id="2805770823691782631">Detaljne informacije</translation> <translation id="2806372837663997957">Uređaj sa kojim pokušavate da delite sadržaj ga nije prihvatio</translation> +<translation id="2806891468525657116">Prečica već postoji</translation> <translation id="2807517655263062534">Datoteke koje preuzmete će se pojaviti ovde</translation> <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ako ne prepoznajete dodatak ili ako pregledač ne radi na očekivani način, ovde možete da isključite ili prilagodite dodatke.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Da biste uštedeli bateriju, funkcija „Ok Google“ je uključena samo kada je uređaj povezan na struju. Da biste uneli promene, idite u Podešavanja.</translation> <translation id="7497215489070763236">CA sertifikat servera</translation> <translation id="7497981768003291373">Niste nedavno snimili nijednu WebRTC evidenciju teksta.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> traži dozvolu za snimanje sadržaja ove kartice.</translation> <translation id="7502658306369382406">IPv6 adresa</translation> <translation id="7503191893372251637">Tip Netscape sertifikata</translation> <translation id="7503985202154027481">Poseta ovom sajtu će biti zabeležena na bezbednosnom ključu.</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 38ce25a4..935077d 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Жељени начин уноса</translation> <translation id="1335929031622236846">Региструјте уређај</translation> <translation id="1336902454946927954">Ваш безбедносни кључ је закључан јер нисмо успели да препознамо отисак прста. Да бисте га откључали, унесите PIN.</translation> +<translation id="1337692097987160377">Дели ову картицу</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> жели да отвори ову апликацију.</translation> <translation id="1338950911836659113">Брисање...</translation> <translation id="13392265090583506">Приступачност</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Апликације</translation> <translation id="2805770823691782631">Детаљне информације</translation> <translation id="2806372837663997957">Уређај са којим покушавате да делите садржај га није прихватио</translation> +<translation id="2806891468525657116">Пречица већ постоји</translation> <translation id="2807517655263062534">Датотеке које преузмете ће се појавити овде</translation> <translation id="2809586584051668049">и још <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Ако не препознајете додатак или ако прегледач не ради на очекивани начин, овде можете да искључите или прилагодите додатке.</translation> @@ -5600,6 +5602,7 @@ <translation id="7496732379142025470">Да бисте уштедели батерију, функција „Ок Google“ је укључена само када је уређај повезан на струју. Да бисте унели промене, идите у Подешавања.</translation> <translation id="7497215489070763236">CA сертификат сервера</translation> <translation id="7497981768003291373">Нисте недавно снимили ниједну WebRTC евиденцију текста.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> тражи дозволу за снимање садржаја ове картице.</translation> <translation id="7502658306369382406">IPv6 адреса</translation> <translation id="7503191893372251637">Тип Netscape сертификата</translation> <translation id="7503985202154027481">Посета овом сајту ће бити забележена на безбедносном кључу.</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index 5faf314..4b4a9fa 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Inga nätverk</translation> <translation id="1056898198331236512">Varning</translation> <translation id="1058262162121953039">PUK-kod</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Ange den nya pinkoden. Pinkoden måste bestå av minst ett tecken. Du kan använda bokstäver, siffror och andra tecken.}other{Ange den nya pinkoden. Pinkoden måste bestå av minst # tecken. Du kan använda bokstäver, siffror och andra tecken.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> flikar för <ph name="SEARCH_TEXT" /> hittades</translation> <translation id="1060292118287751956">Anger skärmens uppdateringsfrekvens</translation> <translation id="1061904396131502319">Snart dags för en paus</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">Föredraget inmatningssätt</translation> <translation id="1335929031622236846">Registrera din enhet</translation> <translation id="1336902454946927954">Säkerhetsnyckeln är låst eftersom ditt fingeravtryck inte kändes igen. Lås upp den genom att ange pinkoden.</translation> +<translation id="1337692097987160377">Dela den här fliken</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> vill öppna den här appen.</translation> <translation id="1338950911836659113">Uppgifterna tas bort ...</translation> <translation id="13392265090583506">Tillgänglighet</translation> @@ -635,9 +637,11 @@ <translation id="1688935057616748272">Skriv en bokstav</translation> <translation id="168991973552362966">Lägg till en skrivare i närheten</translation> <translation id="1689945336726856614">Kopiera webbadress</translation> +<translation id="1690248886740053041">Det gick inte att ansluta till ett mobilnätverk. Kontakta operatören för teknisk support.</translation> <translation id="1692115862433274081">Använd ett annat konto</translation> <translation id="1692118695553449118">Synkronisering är på</translation> <translation id="1692210323591458290">Mörklila</translation> +<translation id="169279809881363536">Inga profiler hittades. Skanna QR-koden med enhetens kamera eller ange aktiveringskoden du fick från operatören om du vill konfigurera ett nytt nätverk.</translation> <translation id="1697150536837697295">Konst</translation> <translation id="1697686431566694143">Redigera fil</translation> <translation id="1698122934742150150">Endast nuvarande inkognitosession</translation> @@ -1574,6 +1578,7 @@ <translation id="2770465223704140727">Ta bort från listan</translation> <translation id="2770690685823456775">Exportera lösenorden till en annan mapp</translation> <translation id="2770929488047004208">Skärmupplösning</translation> +<translation id="2770954829020464827">Informationen är dold medan du delar skärmen</translation> <translation id="2771268254788431918">Mobildata har aktiverats</translation> <translation id="2771816809568414714">Ost</translation> <translation id="2772936498786524345">Ninja</translation> @@ -1610,6 +1615,7 @@ <translation id="2805756323405976993">Appar</translation> <translation id="2805770823691782631">Ytterligare information</translation> <translation id="2806372837663997957">Enheten som du försökte att dela med godkände inte delningsförsöket</translation> +<translation id="2806891468525657116">Genvägen finns redan</translation> <translation id="2807517655263062534">Filer som du laddar ned visas här</translation> <translation id="2809586584051668049">och ytterligare <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Om du inte känner igen ett tillägg eller om webbläsaren inte fungerar som den ska kan du stänga av eller anpassa tillägg här.</translation> @@ -1941,6 +1947,7 @@ <translation id="3201422919974259695">Tillgängliga USB-enheter visas här.</translation> <translation id="3202131003361292969">Sökväg</translation> <translation id="3202173864863109533">Ljudet är avstängt på den här fliken.</translation> +<translation id="3202218848974251205">Privacy Sandbox</translation> <translation id="3208321278970793882">App</translation> <translation id="3208584281581115441">Kontrollera nu</translation> <translation id="3208703785962634733">Obekräftade</translation> @@ -2161,6 +2168,7 @@ <translation id="3459697287128633276">Autentisering hos identitetsleverantören krävs innan du kan använda Google Play Butik med kontot.</translation> <translation id="3462311546193741693">Du loggas ut från de flesta webbplatser. Du är fortfarande inloggad på Google-kontot så att synkroniserad data kan rensas.</translation> <translation id="3462413494201477527">Vill du avbryta konfigurationen av kontot?</translation> +<translation id="3464145797867108663">Lägg till jobbprofil</translation> <translation id="346431825526753">Det här är ett konto för barn som hanteras av <ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Etikett</translation> <translation id="3468999815377931311">Android-mobil</translation> @@ -2282,6 +2290,7 @@ <translation id="360180734785106144">Visa erbjudanden om nya funktioner när de blir tillgängliga</translation> <translation id="3602290021589620013">Förhandsgranskning</translation> <translation id="3603622770190368340">Skaffa nätverkscertifikat</translation> +<translation id="3604193429970465812">Sekundära konton</translation> <translation id="3604713164406837697">Ändra bakgrund</translation> <translation id="3605780360466892872">Proper</translation> <translation id="3608576286259426129">Förhandsgranskning av användarens bild</translation> @@ -2606,6 +2615,7 @@ Vill du starta <ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Det gick inte att skapa genvägen</translation> +<translation id="3943494825379372497">Vill du återställa appar och sidor?</translation> <translation id="3943582379552582368">&Bakåt</translation> <translation id="3943857333388298514">Klistra in</translation> <translation id="3948116654032448504">&Sök på <ph name="SEARCH_ENGINE" /> efter bild</translation> @@ -2691,6 +2701,7 @@ <translation id="4046013316139505482">De här tilläggen behöver inte se och ändra information på den här webbplatsen.</translation> <translation id="4046123991198612571">Nästa spår</translation> <translation id="4047726037116394521">Öppna startsidan</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# kontakt är inte tillgänglig. Lägg till den e-postadress som är kopplad till personens Google-konto i dina kontakter om du vill använda Närdelning med honom eller henne.}other{# kontakter är inte tillgängliga. Lägg till de e-postadresser som är kopplade till personernas Google-konton i dina kontakter om du vill använda Närdelning med dem.}}</translation> <translation id="4050225813016893843">Autentiseringsmetod</translation> <translation id="4052120076834320548">Mycket liten</translation> <translation id="4056908315660577142">Du har nått gränsen som din förälder har ställt in för Chrome-appen <ph name="APP_NAME" />. Du kan använda den i <ph name="TIME_LIMIT" /> i morgon.</translation> @@ -3337,6 +3348,7 @@ <translation id="4863769717153320198">Ser ut som <ph name="WIDTH" /> × <ph name="HEIGHT" /> (standard)</translation> <translation id="4864369630010738180">Loggar in ...</translation> <translation id="4864805589453749318">Välj den förälder som ger sitt tillstånd att lägga till ett skolkonto.</translation> +<translation id="4866265760644917470">Profilen har lagts till.</translation> <translation id="486635084936119914">Öppna vissa filtyper automatiskt efter att de har laddats ned</translation> <translation id="48704129375571883">Lägg till ytterligare funktioner</translation> <translation id="4870758487381879312">Ange lösenordet du fick från administratören för att visa konfigurationsinformationen</translation> @@ -3620,6 +3632,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Det utsatta lösenordet har ändrats. Det finns # utsatt lösenord till. Du rekommenderas att kontrollera detta lösenord nu.}other{Det utsatta lösenordet har ändrats. Det finns # utsatta lösenord till. Du rekommenderas att kontrollera dessa lösenord nu.}}</translation> <translation id="5207949376430453814">Markera textmarkören</translation> <translation id="5209320130288484488">Det gick inte att hitta några enheter</translation> +<translation id="5209572028385096813">Den här användaren hanteras av Family Link</translation> <translation id="5210365745912300556">Stäng flik</translation> <translation id="5213481667492808996">Datatjänsten <ph name="NAME" /> är klar att använda</translation> <translation id="5213891612754844763">Visa proxyinställningar</translation> @@ -3705,6 +3718,7 @@ <translation id="5302048478445481009">Språk</translation> <translation id="5302932258331363306">Visa ersättningar</translation> <translation id="5304276686222516262">Det gick inte att ladda ned kontaktlistan. Kontrollera nätverksanslutningen eller <a href="#" id="tryAgainLink">försök igen</a>.</translation> +<translation id="5305145881844743843">Det här kontot hanteras av <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Ingen installerad</translation> <translation id="5307030433605830021">Källan stöds inte</translation> <translation id="5308380583665731573">Anslut</translation> @@ -4086,6 +4100,7 @@ <translation id="5740820643029013514">Få mer diskreta meddelanden (rekommenderas)</translation> <translation id="574104302965107104">Skärmspegling</translation> <translation id="574209121243317957">Ton</translation> +<translation id="5742505912938664543">Om du lägger till ett sekundärt konto här kan du surfa på webben, ladda ned appar, kolla e-posten på Gmail och använda andra tjänster från Google med det kontot.</translation> <translation id="5746169159649715125">Spara som PDF</translation> <translation id="5747552184818312860">Upphör att gälla</translation> <translation id="5747785204778348146">Utvecklare – instabil</translation> @@ -4426,6 +4441,7 @@ <translation id="6129953537138746214">Blanksteg</translation> <translation id="6130692320435119637">Lägg till Wi-Fi-nätverk</translation> <translation id="6136114942382973861">Stäng nedladdningsfältet</translation> +<translation id="6136287496450963112">Säkerhetsnyckeln skyddas inte av en pinkod. Skapa en pinkod först om du vill använda fingeravtryck.</translation> <translation id="6137767437444130246">Användarcertifikat</translation> <translation id="6138680304137685902">X9.62 ECDSA-signatur med SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, inget nätverk</translation> @@ -4606,6 +4622,7 @@ <translation id="6331566915566907158">Hjälp oss att förbättra funktioner och prestanda i Chrome OS</translation> <translation id="6331818708794917058">Webbplatser får begära tillstånd att ansluta till MIDI-enheter</translation> <translation id="6333064448949140209">Filen skickas till Google för felsökning</translation> +<translation id="6334444530352320327">Appar och systeminställningar synkroniseras på alla Chromebook-enheter där du är inloggad på detta konto.<ph name="LINK_BEGIN" />Synkroniseringsinställningar<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Alla webbplatser får visa vilka annonser som helst för dig</translation> <translation id="6339668969738228384">Skapa en ny profil för <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Det gick inte att ansluta till servern. Kontrollera nätverksanslutningen och försök igen. Starta om Chromebook om problemet kvarstår.</translation> @@ -4907,6 +4924,7 @@ <translation id="6709133671862442373">Nyheter</translation> <translation id="6709357832553498500">Anslut med <ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Föregående</translation> +<translation id="6713233729292711163">Lägg till jobbprofil</translation> <translation id="6715803357256707211">Ett fel uppstod under installationen av Linux-programmet. Klicka på aviseringen om du vill läsa mer.</translation> <translation id="671619610707606484"><ph name="TOTAL_USAGE" /> data som har lagrats av webbplatser raderas</translation> <translation id="671928215901716392">Lås skärmen</translation> @@ -5275,6 +5293,7 @@ <translation id="7121362699166175603">Historik och autoslutföranden i adressfältet rensas. Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Utvecklarläge</translation> <translation id="7121728544325372695">Smarta bindestreck</translation> +<translation id="7122353087820324370">Appar och systeminställningar synkroniseras inte med sekundära konton.</translation> <translation id="7123030151043029868">Får ladda ned flera filer automatiskt</translation> <translation id="7123360114020465152">Stöds inte längre</translation> <translation id="7125148293026877011">Radera Crostini</translation> @@ -5583,12 +5602,14 @@ <translation id="7496732379142025470">För att spara batteri är ”Ok Google” bara aktiverat när enheten är ansluten till en strömkälla. Öppna Inställningar om du vill ändra något.</translation> <translation id="7497215489070763236">Serverns CA-certifikat</translation> <translation id="7497981768003291373">Du har inga nyligen registrerade WebRTC-textloggar.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ber om behörighet att ta en bild av innehållet på den här fliken.</translation> <translation id="7502658306369382406">IPv6-adress</translation> <translation id="7503191893372251637">Certifieringstyp för Netscape</translation> <translation id="7503985202154027481">Ditt besök på webbplatsen sparas i säkerhetsnyckeln.</translation> <translation id="750509436279396091">Öppna mappen för nedladdningar</translation> <translation id="7506093026325926984">Lösenordet sparas på den här enheten</translation> <translation id="7506130076368211615">Konfigurera nytt nätverk</translation> +<translation id="7506242536428928412">Ange en ny pinkod om du vill använda din nya säkerhetsnyckel</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> har registrerats för företagshantering.</translation> <translation id="7507207699631365376">Läs leverantörens <ph name="BEGIN_LINK" />sekretesspolicy<ph name="END_LINK" /></translation> <translation id="7507930499305566459">Status för svarscertifikat</translation> @@ -5752,6 +5773,7 @@ <translation id="7691077781194517083">Det går inte att återställa den här säkerhetsnyckeln. Felkod <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Uppgradering av Crostini</translation> <translation id="7696063401938172191">Gör så här på din <ph name="PHONE_NAME" />:</translation> +<translation id="7697166915480294040">Informationen är dold medan du delar skärmen</translation> <translation id="7697598343108519171">Skanna QR-koden med kameran</translation> <translation id="7699968112832915395">Det gick inte att lägga till kontot</translation> <translation id="7701040980221191251">Inga</translation> @@ -6209,6 +6231,8 @@ <translation id="8184472985242519288">Jämnhög</translation> <translation id="8186609076106987817">Servern kunde inte hitta filen.</translation> <translation id="8188389033983459049">Kontrollera enhetsinställningarna och aktivera Bluetooth om du vill fortsätta</translation> +<translation id="8189306097519446565">Skolkonton</translation> +<translation id="8189750580333936930">Privacy Sandbox</translation> <translation id="8190193592390505034">Ansluter till <ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Hantera dina appar, tillägg och teman</translation> <translation id="8195027750202970175">Storlek på disk</translation> @@ -6900,6 +6924,7 @@ <translation id="8986362086234534611">Glöm</translation> <translation id="8986494364107987395">Skicka användningsstatistik och kraschrapporter till Google automatiskt</translation> <translation id="8987927404178983737">Månad</translation> +<translation id="8989823300731803443">Fortsätt där du slutade.</translation> <translation id="8990209962746788689">Det gick inte att skapa QR-koden</translation> <translation id="8991520179165052608">Webbplatsen har åtkomst till din mikrofon</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 vara}other{# varor}}</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 32601826..390d0fa 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">Mbinu unayopendelea ya kuingiza sauti</translation> <translation id="1335929031622236846">Andikisha kifaa chako</translation> <translation id="1336902454946927954">Ufunguo wako wa usalama umefungwa kwa sababu tumeshindwa kutambua alama yako ya kidole. Ili uufungue, weka PIN yako.</translation> +<translation id="1337692097987160377">Shiriki kichupo hiki</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> inataka kufungua programu hii.</translation> <translation id="1338950911836659113">Inafuta...</translation> <translation id="13392265090583506">Ufikivu</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">Programu</translation> <translation id="2805770823691782631">Maelezo ya ziada</translation> <translation id="2806372837663997957">Kifaa unachojaribu kushiriki nacho hakijakubali</translation> +<translation id="2806891468525657116">Tayari umeweka njia hii ya mkato</translation> <translation id="2807517655263062534">Faili unazopakua zitaonekana hapa</translation> <translation id="2809586584051668049">na <ph name="NUMBER_ADDITIONAL_DISABLED" /> zaidi</translation> <translation id="2810390687497823527">Ikiwa hutambui kiendelezi au ikiwa kivinjari chako hakifanyi kazi kama inavyotarajiwa, unaweza kuzima au kuweka mapendeleo ya viendelezi hapa.</translation> @@ -5595,6 +5597,7 @@ <translation id="7496732379142025470">Ili kuokoa betri, “Ok Google” inawaka tu wakati kifaa chako kimeunganishwa kwenye chanzo cha umeme. Ili ubadilishe, nenda kwenye Mipangilio.</translation> <translation id="7497215489070763236">Cheti cha CA cha Seva</translation> <translation id="7497981768003291373">Huna kumbukumbu za maandishi ya WebRTC uliyorekodi hivi majuzi.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> inaomba ruhusa ya kurekodi maudhui ya kichupo hiki.</translation> <translation id="7502658306369382406">Anwani ya IPv6</translation> <translation id="7503191893372251637">Aina ya Cheti cha Netscape</translation> <translation id="7503985202154027481">Rekodi ya ulivyotembelea tovuti hii itahifadhiwa kwenye ufunguo wako wa usalama.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index f6e11ca..cbbf802 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">விருப்பமான உள்ளீட்டு முறை</translation> <translation id="1335929031622236846">உங்கள் சாதனத்தைப் பதிவுசெய்யவும்</translation> <translation id="1336902454946927954">உங்களின் கைரேகையை அடையாளங்காண முடியவில்லை என்பதால் பாதுகாப்பு விசை பூட்டப்பட்டுள்ளது. பூட்டைத் திறக்க, உங்கள் பின்னை உள்ளிடவும்.</translation> +<translation id="1337692097987160377">இந்தத் தாவலைப் பகிர்</translation> <translation id="1338802252451106843">இந்த ஆப்ஸை <ph name="ORIGIN" /> திறக்க விரும்புகிறது.</translation> <translation id="1338950911836659113">நீக்குகிறது...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">ஆப்ஸ்</translation> <translation id="2805770823691782631">கூடுதல் விவரங்கள்</translation> <translation id="2806372837663997957">எந்தச் சாதனத்துடன் பகிர்கிறீர்களோ அது பகிர்வதற்கு அனுமதிக்கவில்லை</translation> +<translation id="2806891468525657116">ஷார்ட்கட் ஏற்கனவே உள்ளது</translation> <translation id="2807517655263062534">நீங்கள் பதிவிறக்கும் கோப்புகள் இங்கே தோன்றும்</translation> <translation id="2809586584051668049">மேலும் <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">நீட்டிப்பு ஒன்றை உங்களால் கண்டறிய முடியவில்லை என்றாலோ உங்கள் உலாவி எதிர்பார்த்தபடி வேலை செய்யவில்லை என்றாலோ இங்கே நீட்டிப்புகளை முடக்கிக் கொள்ளலாம் அல்லது பிரத்தியேகமாக்கிக் கொள்ளலாம்.</translation> @@ -5584,6 +5586,7 @@ <translation id="7496732379142025470">பேட்டரியைச் சேமிக்க, சாதனம் சார்ஜ் செய்யப்படும்போது மட்டுமே “Ok Google” அம்சம் கிடைக்கும். மாற்றங்களைச் செய்ய ‘அமைப்புகளுக்குச்’ செல்லவும்.</translation> <translation id="7497215489070763236">சேவையக CA சான்றிதழ்</translation> <translation id="7497981768003291373">சமீபத்தில் எடுக்கப்பட்ட WebRTC உரைப் பதிவுகள் எதுவும் இல்லை.</translation> +<translation id="7498614236023455416">இந்தத் தாவலின் உள்ளடக்கங்களைப் பெற <ph name="TARGET_NAME" /> அனுமதி கேட்கிறது.</translation> <translation id="7502658306369382406">IPv6 முகவரி</translation> <translation id="7503191893372251637">Netscape சான்றிதழ் வகை</translation> <translation id="7503985202154027481">நீங்கள் இந்த வலைதளத்தைப் பார்வையிட்டது தொடர்பான விவரங்கள் உங்கள் பாதுகாப்பு விசையில் பதிவுசெய்யப்படும்.</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index e5a98b0..5ef591c2 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">నెట్వ. లేవు</translation> <translation id="1056898198331236512">హెచ్చరిక</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{మీ కొత్త PINను ఎంటర్ చేయండి. PIN తప్పక కనీసం ఒక క్యారెక్టర్ పొడవు ఉండాలి, అలాగే ఇందులో అక్షరాలు, నంబర్లు, ఇతర క్యారెక్టర్లను ఉపయోగించవచ్చు.}other{మీ కొత్త PINను ఎంటర్ చేయండి. PIN తప్పక కనీసం # క్యారెక్టర్ల పొడవు ఉండాలి, అలాగే ఇందులో అక్షరాలు, నంబర్లు, ఇతర క్యారెక్టర్లను ఉపయోగించవచ్చు.}}</translation> <translation id="1059944192885972544">'<ph name="SEARCH_TEXT" />' కోసం <ph name="NUM" /> ట్యాబ్లు కనుగొనబడ్డాయి</translation> <translation id="1060292118287751956">స్క్రీన్ అప్డేట్ల ఫ్రీక్వెన్సీని నిర్ణయిస్తుంది</translation> <translation id="1061904396131502319">దాదాపు విరామ సమయం</translation> @@ -306,6 +307,7 @@ <translation id="133535873114485416">ప్రాధాన్య ఇన్పుట్</translation> <translation id="1335929031622236846">మీ పరికరాన్ని నమోదు చేయండి</translation> <translation id="1336902454946927954">మీ వేలిముద్రను గుర్తించలేకపోయినందున మీ సెక్యూరిటీ కీ లాక్ చేయబడింది. దానిని అన్లాక్ చేయడానికి, మీ పిన్ను ఎంటర్ చేయండి.</translation> +<translation id="1337692097987160377">ఈ ట్యాబ్ను షేర్ చేయి</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ఈ అప్లికేషన్ను తెరవడానికి అనుమతి కోరుతోంది.</translation> <translation id="1338950911836659113">తొలగిస్తోంది...</translation> <translation id="13392265090583506">A11y</translation> @@ -635,9 +637,11 @@ <translation id="1688935057616748272">అక్షరాన్ని టైప్ చేయండి</translation> <translation id="168991973552362966">సమీపంలోని ప్రింటర్ను జోడించండి</translation> <translation id="1689945336726856614">&URLను కాపీ చేయండి</translation> +<translation id="1690248886740053041">మొబైల్ నెట్వర్క్కు నెక్ట్ చేయడం సాధ్యపడలేదు. టెక్నికల్ సపోర్ట్ కోసం, దయచేసి మీ క్యారియర్ను సంప్రదించండి.</translation> <translation id="1692115862433274081">మరో ఖాతాను ఉపయోగించు</translation> <translation id="1692118695553449118">సమకాలీకరణ ఆన్లో ఉంది</translation> <translation id="1692210323591458290">ముదురు వంగ రంగు</translation> +<translation id="169279809881363536">ప్రొఫైల్లు ఏవీ కనుగొనబడలేదు. కొత్త నెట్వర్క్ను సెటప్ చేయడానికి, పరికర కెమెరాను ఉపయోగించి QR కోడ్ను స్కాన్ చేయండి లేదా మీ క్యారియర్ అందించిన యాక్టివేషన్ కోడ్ను ఎంటర్ చేయండి.</translation> <translation id="1697150536837697295">కళ</translation> <translation id="1697686431566694143">ఎడిటింగ్ను అనుమతించు</translation> <translation id="1698122934742150150">ప్రస్తుత అజ్ఞాత సెషన్కు మాత్రమే</translation> @@ -1574,6 +1578,7 @@ <translation id="2770465223704140727">జాబితాను నుండి తొలగించు</translation> <translation id="2770690685823456775">మీ పాస్వర్డ్లను మరో ఫోల్డర్కు ఎగుమతి చేయండి</translation> <translation id="2770929488047004208">మానిటర్ రిజల్యూషన్</translation> +<translation id="2770954829020464827">మీరు స్క్రీన్ను షేర్ చేస్తున్నప్పుడు వివరాలు దాచబడతాయి</translation> <translation id="2771268254788431918">మొబైల్ డేటా యాక్టివేట్ అయ్యింది</translation> <translation id="2771816809568414714">జున్ను</translation> <translation id="2772936498786524345">స్నీకీ</translation> @@ -1610,6 +1615,7 @@ <translation id="2805756323405976993">యాప్స్</translation> <translation id="2805770823691782631">అదనపు వివరాలు</translation> <translation id="2806372837663997957">మీరు షేర్ చేయడానికి ట్రై చేస్తున్న పరికరం అంగీకరించలేదు</translation> +<translation id="2806891468525657116">షార్ట్కట్ ఇప్పటికే ఉంది</translation> <translation id="2807517655263062534">మీరు డౌన్లోడ్ చేసిన ఫైల్లు ఇక్కడ కనిపిస్తాయి</translation> <translation id="2809586584051668049">ఇంకా మరో <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">మీరు ఎక్స్టెన్షన్ను గుర్తించకపోతే, లేదా మీ బ్రౌజర్ ఊహించిన విధంగా పని చేయకపోతే, మీరు ఇక్కడ ఆపివేయవచ్చు లేదా ఎక్స్టెన్షన్లను అనుకూలీకరించవచ్చు.</translation> @@ -1941,6 +1947,7 @@ <translation id="3201422919974259695">అందుబాటులో గల USB పరికరాలు ఇక్కడ కనిపిస్తాయి.</translation> <translation id="3202131003361292969">పాథ్</translation> <translation id="3202173864863109533">ఈ ట్యాబ్ ఆడియో మ్యూట్ చేయబడుతోంది.</translation> +<translation id="3202218848974251205">గోప్యతా శాండ్బాక్స్</translation> <translation id="3208321278970793882">యాప్</translation> <translation id="3208584281581115441">ఇప్పుడే చెక్ చేయండి</translation> <translation id="3208703785962634733">నిర్థారించబడలేదు</translation> @@ -2161,6 +2168,7 @@ <translation id="3459697287128633276">మీ ఖాతాలో Google Play స్టోర్ యాక్సెస్ను ఆరంభించాలంటే, దయచేసి మీ గుర్తింపు ప్రదాతతో ప్రామాణీకరించండి.</translation> <translation id="3462311546193741693">చాలా సైట్ల నుండి మిమ్మల్ని సైన్ అవుట్ చేస్తుంది. మీరు మీ Google ఖాతాలో అలాగే సైన్ ఇన్ చేసి ఉంటారు, కనుక మీ సమకాలీకరించిన డేటాను తీసివేయవచ్చు.</translation> <translation id="3462413494201477527">ఖాతా సెటప్ను రద్దు చేయాలా?</translation> +<translation id="3464145797867108663">వర్క్ ప్రొఫైల్ను జోడించండి</translation> <translation id="346431825526753">ఇది <ph name="CUSTODIAN_EMAIL" /> నిర్వహించే చిన్నపిల్లల ఖాతా.</translation> <translation id="3468298837301810372">లేబుల్</translation> <translation id="3468999815377931311">Android ఫోన్</translation> @@ -2282,6 +2290,7 @@ <translation id="360180734785106144">కొత్త ఫీచర్లు అందుబాటులోకి వస్తే వాటిని అందించడం</translation> <translation id="3602290021589620013">ప్రివ్యూ</translation> <translation id="3603622770190368340">నెట్వర్క్ ప్రమాణపత్రాన్ని పొందండి</translation> +<translation id="3604193429970465812">ప్రత్యామ్నాయ ఖాతాలు</translation> <translation id="3604713164406837697">వాల్పేపర్ను మార్చండి</translation> <translation id="3605780360466892872">బటన్డౌన్</translation> <translation id="3608576286259426129">వినియోగదారు చిత్ర ప్రివ్యూ</translation> @@ -2606,6 +2615,7 @@ మీరు <ph name="CONTROL_PANEL_APPLET_NAME" />ను ప్రారంభించాలనుకుంటున్నారా?</translation> <translation id="394183848452296464">షార్ట్కట్ను సృష్టించడం సాధ్యపడదు</translation> +<translation id="3943494825379372497">యాప్లు, పేజీలను రీస్టోర్ చేయాలా?</translation> <translation id="3943582379552582368">&వెనుకకు</translation> <translation id="3943857333388298514">అతికించు</translation> <translation id="3948116654032448504">చిత్రం కోసం <ph name="SEARCH_ENGINE" />లో &శోధించండి</translation> @@ -2691,6 +2701,7 @@ <translation id="4046013316139505482">ఈ సైట్లో సమాచారాన్ని ఈ ఎక్స్టెన్షన్లు చూడవలసిన, మార్చవలసిన అవసరం లేదు.</translation> <translation id="4046123991198612571">తరువాత ట్రాక్</translation> <translation id="4047726037116394521">హోమ్కు వెళ్లు</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# కాంటాక్ట్ అందుబాటులో లేదు. వారితో సమీప షేరింగ్ను ఉపయోగించడానికి, వారి Google ఖాతాతో అనుబంధించబడిన ఇమెయిల్ అడ్రస్ను మీ కాంటాక్ట్లకు జోడించండి.}other{# కాంటాక్ట్లు అందుబాటులో లేవు. వారితో సమీప షేరింగ్ను ఉపయోగించడానికి, వారి Google ఖాతాలతో అనుబంధించబడిన ఇమెయిల్ అడ్రస్లను మీ కాంటాక్ట్లకు జోడించండి.}}</translation> <translation id="4050225813016893843">ప్రామాణీకరణ పద్ధతి</translation> <translation id="4052120076834320548">చిన్న</translation> <translation id="4056908315660577142"><ph name="APP_NAME" /> Chrome యాప్కు మీ తల్లి/తండ్రి సెట్ చేసిన సమయ పరిమితిని మీరు చేరుకున్నారు. మీరు రేపు దానిని <ph name="TIME_LIMIT" /> సమయం ఉపయోగించవచ్చు.</translation> @@ -3337,6 +3348,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ఉన్నట్టుంది (డిఫాల్ట్)</translation> <translation id="4864369630010738180">సైన్ ఇన్ అవుతోంది...</translation> <translation id="4864805589453749318">పాఠశాల ఖాతాను జోడించడానికి అనుమతిని ఇస్తున్న తల్లి/తండ్రిని ఎంచుకోండి.</translation> +<translation id="4866265760644917470">ప్రొఫైల్ విజయవంతంగా జోడించబడింది.</translation> <translation id="486635084936119914">డౌన్లోడ్ చేసిన తర్వాత స్వయంచాలకంగా నిర్దిష్ట ఫైల్ రకాలను తెరువు</translation> <translation id="48704129375571883">అదనపు ఫీచర్లను జోడించండి</translation> <translation id="4870758487381879312">కాన్ఫిగరేషన్ సమాచారాన్ని పొందడం కోసం నిర్వాహకులు అందించిన పాస్వర్డ్ని నమోదు చేయండి</translation> @@ -3620,6 +3632,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{చోరీకి గురైన పాస్వర్డ్ విజయవంతంగా మార్చబడింది. మీ వద్ద మరో # చోరీకి గురైన పాస్వర్డ్ ఉంది. ఇప్పుడే, ఈ పాస్వర్డ్ను తనిఖీ చేయమని Chrome సిఫార్సు చేస్తోంది.}other{చోరీకి గురైన పాస్వర్డ్ విజయవంతంగా మార్చబడింది. మీ వద్ద మరో # చోరీకి గురైన పాస్వర్డ్లు ఉన్నాయి. ఇప్పుడే, ఈ పాస్వర్డ్లను తనిఖీ చేయమని Chrome సిఫార్సు చేస్తోంది.}}</translation> <translation id="5207949376430453814">వచన కర్సర్ గుర్తును హైలైట్ చేయి</translation> <translation id="5209320130288484488">పరికరాలు కనుగొనబడలేదు</translation> +<translation id="5209572028385096813">ఈ ఖాతాను Family Link మేనేజ్ చేస్తోంది</translation> <translation id="5210365745912300556">ట్యాబ్ను మూసివేయి</translation> <translation id="5213481667492808996">మీ '<ph name="NAME" />' డేటా సేవ ఉపయోగించడానికి సిద్ధంగా ఉంది</translation> <translation id="5213891612754844763">ప్రాక్సీ సెట్టింగ్లను చూపు</translation> @@ -3705,6 +3718,7 @@ <translation id="5302048478445481009">భాష</translation> <translation id="5302932258331363306">ప్రత్యామ్నాయాలను చూపు</translation> <translation id="5304276686222516262">కాంటాక్ట్ లిస్ట్ను డౌన్లోడ్ చేయడం సాధ్యపడలేదు. దయచేసి మీ నెట్వర్క్ కనెక్షన్ను చెక్ చేయండి, లేదా <a href="#" id="tryAgainLink">మళ్లీ ట్రై చేయండి</a>.</translation> +<translation id="5305145881844743843">ఈ ఖాతాను <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> మేనేజ్ చేస్తోంది</translation> <translation id="5305688511332277257">ఏవి వ్యవస్థాపించబడలేదు</translation> <translation id="5307030433605830021">మూలాధారానికి మద్దతు లేదు</translation> <translation id="5308380583665731573">కనెక్ట్ చేయండి</translation> @@ -4086,6 +4100,7 @@ <translation id="5740820643029013514">శబ్దం చేయని మెసేజింగ్ను ఉపయోగించండి (సిఫార్సు చేయబడింది)</translation> <translation id="574104302965107104">డిస్ప్లే మిర్రరింగ్</translation> <translation id="574209121243317957">పిచ్</translation> +<translation id="5742505912938664543">మీకు ఇక్కడ ప్రత్యామ్నాయ ఖాతాను జోడించినప్పుడు, ఆ ఖాతాను ఉపయోగించి మీరు వెబ్ను బ్రౌజ్ చేయవచ్చు, యాప్లను డౌన్లోడ్ చేయవచ్చు, మీ Gmail ఇంకా ఇతర Google సర్వీస్లను చెక్ చేయవచ్చు.</translation> <translation id="5746169159649715125">PDF లాగా సేవ్ చేయి</translation> <translation id="5747552184818312860">గడువు ముగింపు</translation> <translation id="5747785204778348146">డెవలపర్ - అస్థిరం</translation> @@ -4426,6 +4441,7 @@ <translation id="6129953537138746214">ఖాళీ</translation> <translation id="6130692320435119637">Wi-Fiను జోడించండి</translation> <translation id="6136114942382973861">డౌన్లోడ్ల బార్ను మూసివేయండి</translation> +<translation id="6136287496450963112">మీ 'సెక్యూరిటీ కీ'కి PIN రక్షణ లేదు. వేలిముద్రలను మేనేజ్ చేయడానికి, మొదట PINను క్రియేట్ చేయండి.</translation> <translation id="6137767437444130246">యూజర్ సర్టిఫికెట్</translation> <translation id="6138680304137685902">SHA-384తో X9.62 ECDSA సంతకం</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, నెట్వర్క్ లేదు</translation> @@ -4606,6 +4622,7 @@ <translation id="6331566915566907158">Chrome OS ఫీచర్లు మరియు పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation> <translation id="6331818708794917058">MIDI పరికరాలకు కనెక్ట్ చేయడానికి సైట్లు అడగగలవు</translation> <translation id="6333064448949140209">ఫైల్ డీబగ్గింగ్ కోసం Googleకు పంపబడుతుంది</translation> +<translation id="6334444530352320327">మీరు ఈ ఖాతాతో సైన్ ఇన్ చేసిన Chromebookలన్నింటిలో మీ యాప్లు, OS సెట్టింగ్లు సింక్ చేయబడతాయి.<ph name="LINK_BEGIN" />సింక్ సెట్టింగ్లు<ph name="LINK_END" /></translation> <translation id="6338981933082930623">అన్నీ సైట్లు మీకు ఎటువంటి యాడ్లనైనా చూపించగలవు</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> కోసం కొత్త ప్రొఫైల్ను సృష్టించు</translation> <translation id="6340017061976355871">సర్వర్కి కనెక్ట్ చేయడం సాధ్యం కాలేదు. దయచేసి మీ నెట్వర్క్ కనెక్షన్ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి. సమస్య కొనసాగినట్లయితే, మీ Chromebookను పునఃప్రారంభించండి.</translation> @@ -4907,6 +4924,7 @@ <translation id="6709133671862442373">News</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />ని ఉపయోగించి కనెక్ట్ చేయి</translation> <translation id="6710213216561001401">మునుపటి</translation> +<translation id="6713233729292711163">వర్క్ ప్రొఫైల్ను జోడించండి</translation> <translation id="6715803357256707211">మీ Linux అప్లికేషన్ ఇన్స్టాలేషన్ సమయంలో ఎర్రర్ ఏర్పడింది. వివరాల కోసం నోటిఫికేషన్పై క్లిక్ చేయండి.</translation> <translation id="671619610707606484">దీనివలన సైట్లు స్టోర్ చేసిన <ph name="TOTAL_USAGE" /> డేటా తొలగిపోతుంది</translation> <translation id="671928215901716392">స్క్రీన్ను లాక్ చేయి</translation> @@ -5275,6 +5293,7 @@ <translation id="7121362699166175603">చిరునామా బార్లో చరిత్ర, స్వీయపూరింపులను తొలగిస్తుంది. మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు.</translation> <translation id="7121438501124788993">డెవలపర్ మోడ్</translation> <translation id="7121728544325372695">స్మార్ట్ డాష్లు</translation> +<translation id="7122353087820324370">ప్రత్యామ్నాయ ఖాతాలలో యాప్లు, OS సెట్టింగ్లు సింక్ చేయబడవు.</translation> <translation id="7123030151043029868">ఆటోమేటిక్గా అనేక ఫైల్లను డౌన్లోడ్ చేయడానికి అనుమతించబడింది</translation> <translation id="7123360114020465152">ఇకపై మద్దతు లేదు</translation> <translation id="7125148293026877011">Crostiniని తొలగించండి</translation> @@ -5583,12 +5602,14 @@ <translation id="7496732379142025470">బ్యాటరీని సేవ్ చేయడానికి, మీ పరికరాన్ని పవర్ సోర్స్కు కనెక్ట్ చేసినప్పుడు మాత్రమే “Ok Google” ఆన్ అయ్యేలా సెట్ చేయబడింది. మార్పులు చేయడానికి, సెట్టింగ్లకు వెళ్లండి.</translation> <translation id="7497215489070763236">సర్వర్ CA సర్టిఫికేట్</translation> <translation id="7497981768003291373">మీ వద్ద ఇటీవల క్యాప్చర్ చేయబడిన WebRTC వచన లాగ్లు ఏవీ లేవు.</translation> +<translation id="7498614236023455416">ఈ ట్యాబ్ కంటెంట్లను క్యాప్చర్ చేయడానికి <ph name="TARGET_NAME" /> అనుమతి అడుగుతుంది.</translation> <translation id="7502658306369382406">IPv6 చిరునామా</translation> <translation id="7503191893372251637">Netscape సర్టిఫికెట్ రకం</translation> <translation id="7503985202154027481">ఈ సైట్కు మీ సందర్శన గురించిన సమాచారం మీ సెక్యూరిటీ కీలో రికార్డ్ చేయబడుతుంది.</translation> <translation id="750509436279396091">డౌన్లోడ్ల ఫోల్డర్ తెరువు</translation> <translation id="7506093026325926984">ఈ పాస్వర్డ్ ఈ పరికరంలో సేవ్ చేయబడుతుంది</translation> <translation id="7506130076368211615">కొత్త నెట్వర్క్ని సెటప్ చేయండి</translation> +<translation id="7506242536428928412">మీ కొత్త సెక్యూరిటీ కీని ఉపయోగించడానికి, కొత్త PINను సెట్ చేయండి</translation> <translation id="7506541170099744506">మీ <ph name="DEVICE_TYPE" /> ఎంటర్ప్రైజ్ నిర్వహణ కోసం విజయవంతంగా నమోదు చేయబడింది.</translation> <translation id="7507207699631365376">ఈ ప్రొవైడర్ <ph name="BEGIN_LINK" />గోప్యతా పాలసీ<ph name="END_LINK" />ని చూడండి</translation> <translation id="7507930499305566459">స్థితి ప్రతిస్పందన సర్టిఫికెట్</translation> @@ -5752,6 +5773,7 @@ <translation id="7691077781194517083">ఈ సెక్యూరిటీ కీని రీసెట్ చేయలేకపోయింది. ఎర్రర్ <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Crostini అప్గ్రేడ్</translation> <translation id="7696063401938172191">మీ '<ph name="PHONE_NAME" />'లో:</translation> +<translation id="7697166915480294040">మీరు స్క్రీన్ను షేర్ చేస్తున్నప్పుడు వివరాలు దాచబడతాయి</translation> <translation id="7697598343108519171">QR కోడ్ను స్కాన్ చేయడానికి కెమెరాను ఉపయోగించండి</translation> <translation id="7699968112832915395">ఖాతాను యాడ్ చేయడం సాధ్యం కాదు</translation> <translation id="7701040980221191251">ఏదీ లేదు</translation> @@ -6205,6 +6227,8 @@ <translation id="8184472985242519288">ఏకరీతి</translation> <translation id="8186609076106987817">సర్వర్ ఫైల్ను కనుగొనలేకపోయింది.</translation> <translation id="8188389033983459049">మీ పరికర సెట్టింగ్లను తనిఖీ చేసి, కొనసాగించడానికి దాన్ని ఆన్ చేయండి</translation> +<translation id="8189306097519446565">స్కూల్ ఖాతాలు</translation> +<translation id="8189750580333936930">గోప్యతా శాండ్బాక్స్</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" />కు కనెక్ట్ చేస్తోంది</translation> <translation id="8191230140820435481">మీ అనువర్తనాలను, పొడిగింపులను మరియు థీమ్లను నిర్వహించండి</translation> <translation id="8195027750202970175">డిస్క్లో పరిమాణం</translation> @@ -6896,6 +6920,7 @@ <translation id="8986362086234534611">మరిచిపోయారా</translation> <translation id="8986494364107987395">Googleకు ఆటోమేటిక్గా వినియోగ గణాంకాలను, క్రాష్ నివేదికలను పంపు</translation> <translation id="8987927404178983737">నెల</translation> +<translation id="8989823300731803443">మీరు ఆపివేసిన చోటు నుండే కొనసాగించండి.</translation> <translation id="8990209962746788689">QR కోడ్ సృష్టించడం సాధ్యపడదు</translation> <translation id="8991520179165052608">సైట్ మీ మైక్రోఫోన్ను ఉపయోగించవచ్చు</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 ఐటెమ్}other{# ఐటెమ్లు}}</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index fc0cc28..49e33ab 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">วิธีป้อนข้อมูลที่ต้องการ</translation> <translation id="1335929031622236846">ลงทะเบียนอุปกรณ์ของคุณ</translation> <translation id="1336902454946927954">คีย์ความปลอดภัยล็อกอยู่เนื่องจากระบบจดจำลายนิ้วมือของคุณไม่ได้ โปรดป้อน PIN เพื่อปลดล็อก</translation> +<translation id="1337692097987160377">แชร์แท็บนี้</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> ต้องการเปิดแอปพลิเคชันนี้</translation> <translation id="1338950911836659113">กำลังลบ...</translation> <translation id="13392265090583506">การช่วยเหลือพิเศษ</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">แอป</translation> <translation id="2805770823691782631">รายละเอียดเพิ่มเติม</translation> <translation id="2806372837663997957">อุปกรณ์ที่คุณพยายามเชื่อมต่อไม่ยอมรับการแชร์ไฟล์</translation> +<translation id="2806891468525657116">มีทางลัดนี้อยู่แล้ว</translation> <translation id="2807517655263062534">ไฟล์ที่คุณดาวน์โหลดจะปรากฏที่นี่</translation> <translation id="2809586584051668049">และอีก <ph name="NUMBER_ADDITIONAL_DISABLED" /> รายการ</translation> <translation id="2810390687497823527">หากคุณจำส่วนขยายไม่ได้ หรือหากเบราว์เซอร์ไม่ทำงานตามที่คิด คุณปิดหรือกำหนดค่าการทำงานของส่วนขยายด้วยตนเองได้ที่นี่</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">“Ok Google” จะใช้งานได้เฉพาะเมื่ออุปกรณ์เชื่อมต่อกับแหล่งจ่ายไฟเท่านั้น เพื่อประหยัดแบตเตอรี่ หากต้องการเปลี่ยนแปลง ให้ไปที่การตั้งค่า</translation> <translation id="7497215489070763236">ใบรับรอง CA ของเซิร์ฟเวอร์</translation> <translation id="7497981768003291373">คุณไม่มีบันทึกข้อความ WebRTC ที่จับภาพเมื่อเร็วๆ นี้</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> ขอสิทธิ์จับภาพเนื้อหาของแท็บนี้</translation> <translation id="7502658306369382406">ที่อยู่ IPv6</translation> <translation id="7503191893372251637">ประเภทใบรับรองของ Netscape </translation> <translation id="7503985202154027481">ระบบจะเก็บบันทึกการเข้าชมเว็บไซต์นี้ไว้ในคีย์ความปลอดภัย</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 7891268e..a0b9bc9 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Tercih edilen giriş</translation> <translation id="1335929031622236846">Cihazınızı kaydettirin</translation> <translation id="1336902454946927954">Parmak iziniz tanınmadığı için güvenlik anahtarınız kilitlendi. Kilidini açmak için PIN'inizi girin.</translation> +<translation id="1337692097987160377">Bu sekmeyi paylaşın</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> bu uygulamayı açmak istiyor.</translation> <translation id="1338950911836659113">Siliniyor...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">Uygulamalar</translation> <translation id="2805770823691782631">Ek ayrıntılar</translation> <translation id="2806372837663997957">Dosya paylaşmaya çalıştığınız cihaz, paylaşımı kabul etmedi</translation> +<translation id="2806891468525657116">Kısayol zaten mevcut</translation> <translation id="2807517655263062534">İndirdiğiniz dosyalar burada görünür</translation> <translation id="2809586584051668049">ve diğer <ph name="NUMBER_ADDITIONAL_DISABLED" /> öğe</translation> <translation id="2810390687497823527">Bir uzantıyı tanımıyorsanız ya da tarayıcınız beklendiği gibi çalışmıyorsa uzantıları burada kapatabilir veya özelleştirebilirsiniz.</translation> @@ -5584,6 +5586,7 @@ <translation id="7496732379142025470">Pilden tasarruf etmek için, "Ok Google" özelliği yalnızca cihazınız güç kaynağına bağlıyken etkin olur. Değişiklik yapmak için Ayarlar'a gidin.</translation> <translation id="7497215489070763236">Sunucu CA sertifikası</translation> <translation id="7497981768003291373">Yakın zamanda yakalanmış herhangi bir WebRTC metin günlüğünüz yok.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> sitesi, bu sekmenin içeriğini yakalamak için izin istiyor.</translation> <translation id="7502658306369382406">IPv6 adresi</translation> <translation id="7503191893372251637">Netscape Sertifika Türü</translation> <translation id="7503985202154027481">Bu siteye ziyaretinizin bir kaydı güvenlik anahtarınızda tutulacak.</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 084d1bb..c38fc2e 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -309,6 +309,7 @@ <translation id="133535873114485416">Вибраний спосіб введення</translation> <translation id="1335929031622236846">Зареєструйте свій пристрій</translation> <translation id="1336902454946927954">Ключ безпеки заблоковано, оскільки не вдалося розпізнати ваш відбиток пальця. Щоб розблокувати його, введіть PIN-код.</translation> +<translation id="1337692097987160377">Поділитися цією вкладкою</translation> <translation id="1338802252451106843">Веб-сайт <ph name="ORIGIN" /> просить дозвіл відкрити цей додаток.</translation> <translation id="1338950911836659113">Видалення…</translation> <translation id="13392265090583506">Спеціальні можливості</translation> @@ -1613,6 +1614,7 @@ <translation id="2805756323405976993">Додатки</translation> <translation id="2805770823691782631">Додаткові відомості</translation> <translation id="2806372837663997957">Пристрій, на який ви намагаєтеся надіслати файл, не прийняв його</translation> +<translation id="2806891468525657116">Ярлик уже є</translation> <translation id="2807517655263062534">Тут відображаються завантажені файли</translation> <translation id="2809586584051668049">і ще <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Якщо ви не впізнаєте розширення або веб-переглядач працює неналежним чином, вимкніть чи налаштуйте розширення тут.</translation> @@ -5586,6 +5588,7 @@ <translation id="7496732379142025470">Щоб заощадити заряд акумулятора, команда "Ok Google" працюватиме, лише коли пристрій підключено до джерела живлення. Зміни можна внести в меню "Налаштування".</translation> <translation id="7497215489070763236">Сертифікат ЦС для сервера</translation> <translation id="7497981768003291373">Немає нещодавно створених текстових журналів WebRTC.</translation> +<translation id="7498614236023455416">Сайт <ph name="TARGET_NAME" /> просить дозвіл записувати контент цієї вкладки.</translation> <translation id="7502658306369382406">Адреса IPv6</translation> <translation id="7503191893372251637">Тип сертифіката Netscape</translation> <translation id="7503985202154027481">На ключі безпеки збережеться запис, що ви відвідували цей сайт.</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 6a576d1..b5c3b40 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -307,6 +307,7 @@ <translation id="133535873114485416">ترجیحی ان پٹ</translation> <translation id="1335929031622236846">اپنے آلہ کا اندراج کرائيں</translation> <translation id="1336902454946927954">آپ کی سیکیورٹی کلید مقفل ہے کیونکہ آپ کے فنگر پرنٹ کی شناخت نہیں ہو سکی۔ اسے غیر مقفل کرنے کے لیے اپنا PIN درج کریں۔</translation> +<translation id="1337692097987160377">اس ٹیب کا اشتراک کریں</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> یہ ایپلیکیشن کھولنا چاہتا ہے۔</translation> <translation id="1338950911836659113">حذف کیا جا رہا ہے…</translation> <translation id="13392265090583506">A11y</translation> @@ -1611,6 +1612,7 @@ <translation id="2805756323405976993">اطلاقات</translation> <translation id="2805770823691782631">اضافی تفصیلات</translation> <translation id="2806372837663997957">آپ جس آلے کے ساتھ اشتراک کرنے کی کوشش کر رہے ہیں اس نے قبول نہیں کیا</translation> +<translation id="2806891468525657116">شارٹ کٹ پہلے سے موجود ہے</translation> <translation id="2807517655263062534">آپ کی ڈاؤن لوڈ کردہ فائلز یہاں ظاہر ہوتی ہیں</translation> <translation id="2809586584051668049">اور <ph name="NUMBER_ADDITIONAL_DISABLED" /> مزید</translation> <translation id="2810390687497823527">اگر آپ ایکسٹینشن کی شناخت نہیں کرتے ہیں یا آپ کا براؤزر توقع کے مطابق کام نہیں کرتا ہے تو آپ ایکسٹینشنز کو آف یا یہاں ان کو حسب ضرورت بنا سکتے ہیں۔</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">بیٹری بچانے کیلئے، “Ok Google” صرف اس وقت آن ہوتا ہے جب آپ کا آلہ کسی پاور کے ماخذ سے منسلک ہو۔ تبدیلیاں کرنے کیلئے، ترتیبات پر جائیں۔</translation> <translation id="7497215489070763236">سرور CA سرٹیفکیٹ</translation> <translation id="7497981768003291373">آپ کے پاس حالیہ کیپچر کردہ کوئی WebRTC ٹیکسٹ لاگ نہیں ہے۔</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> اس ٹیب کے مواد کو کیپچر کرنے کی اجازت مانگ رہی ہے۔</translation> <translation id="7502658306369382406">IPv6 پتہ</translation> <translation id="7503191893372251637">Netscape سرٹیفیکیٹ کی قسم</translation> <translation id="7503985202154027481">آپ کی سیکیورٹی کلید پر آپ کے اس سائٹ کو ملاحظہ کرنے کا ریکارڈ رکھا جائے گا۔</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index c28e99c..48685bd 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Tarmoq topilmadi</translation> <translation id="1056898198331236512">Ogohlantirish</translation> <translation id="1058262162121953039">PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Yangi PIN kodni kiriting. PIN kod kamida 1 ta belgidan – harf, raqam va turli belgilardan iborat boʻlishi lozim.}other{Yangi PIN kodni kiriting. PIN kod kamida # ta belgidan – harf, raqam va turli belgilardan iborat boʻlishi lozim.}}</translation> <translation id="1059944192885972544"><ph name="NUM" /> ta varaqda “<ph name="SEARCH_TEXT" />” topildi</translation> <translation id="1060292118287751956">Ekranlardagi yangilanish chastotasini aniqlaydi</translation> <translation id="1061904396131502319">Tanaffus qilish vaqti keldi</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">Asosiy matn kiritish usuli</translation> <translation id="1335929031622236846">Qurilmangizni qayd qiling</translation> <translation id="1336902454946927954">Barmoq izingiz tasdiqlanmagani sababli elektron kalitingiz qulflandi. Uni qulfdan chiqarish uchun PIN kodingizni kiriting.</translation> +<translation id="1337692097987160377">Bu varaqni ulashish</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> bu ilovani ochmoqchi.</translation> <translation id="1338950911836659113">O‘chirilmoqda...</translation> <translation id="13392265090583506">A11y</translation> @@ -633,9 +635,11 @@ <translation id="1688935057616748272">Harf kiriting</translation> <translation id="168991973552362966">Yaqin-atrofdagi printerni qo‘shish</translation> <translation id="1689945336726856614">&URLdan nusxa olish</translation> +<translation id="1690248886740053041">Mobil tarmoqqa ulanmadi. Texnik koʻmak uchun mobil aloqa operatoringizga murojaat qiling.</translation> <translation id="1692115862433274081">Boshqa hisobdan foydalanish</translation> <translation id="1692118695553449118">Sinxronlash yoniq</translation> <translation id="1692210323591458290">Toʻq siyohrang</translation> +<translation id="169279809881363536">Hech qanday profil topilmadi. Yangi tarmoqni sozlash uchun qurilma kamerasi orqali QR kodni skanerlang yoki aloqa operatori taqdim qilgan aktivatsiya kodini kiriting.</translation> <translation id="1697150536837697295">Sanʼat</translation> <translation id="1697686431566694143">Faylni tahrirlash</translation> <translation id="1698122934742150150">Faqatgina joriy inkognito seans</translation> @@ -1572,6 +1576,7 @@ <translation id="2770465223704140727">Ro‘yxatdan o‘chirish</translation> <translation id="2770690685823456775">Parollaringizni boshqa jildga eksport qiling</translation> <translation id="2770929488047004208">Ekrandagi tasvir tiniqligi</translation> +<translation id="2770954829020464827">Ekran namoyishida tafsilotlar berkitiladi</translation> <translation id="2771268254788431918">Mobil internet yoqildi</translation> <translation id="2771816809568414714">Pishloq</translation> <translation id="2772936498786524345">Nindzya</translation> @@ -1608,6 +1613,7 @@ <translation id="2805756323405976993">Ilovalar</translation> <translation id="2805770823691782631">Batafsil</translation> <translation id="2806372837663997957">Siz fayl ulashishni xohlagan qurilma uni qabul qilmadi</translation> +<translation id="2806891468525657116">Bunday tezkor tugma mavjud</translation> <translation id="2807517655263062534">Yuklab olingan fayllar shu yerda turadi</translation> <translation id="2809586584051668049">shuningdek, <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Kengaytmani tanimasangiz yoki brauzer kutganingizdek ishlamasa, kengaytmalarni bu yerdan faolsizlantirishingiz yoki boshqarishingiz mumkin.</translation> @@ -1939,6 +1945,7 @@ <translation id="3201422919974259695">Mavjud USB qurilmalar bu yerda chiqadi.</translation> <translation id="3202131003361292969">Fayl yo‘lagi</translation> <translation id="3202173864863109533">Bu ichki oyna ovozi o‘chirib qo‘yilgan</translation> +<translation id="3202218848974251205">Maxfiylik xavfsiz muhiti</translation> <translation id="3208321278970793882">Ilova</translation> <translation id="3208584281581115441">Hozir tekshirish</translation> <translation id="3208703785962634733">Tasdiqlanmagan</translation> @@ -2159,6 +2166,7 @@ <translation id="3459697287128633276">Hisobingizda Google Play Marketni yoqish uchun hisobingiz haqiqiyligi tekshirilishi lozim.</translation> <translation id="3462311546193741693">Bir nechta saytdagi hisobingizdan chiqasiz, lekin Google hisobingizdan emas. Sinxronlangan ma’lumotlaringiz tozalanaveradi.</translation> <translation id="3462413494201477527">Hisobni sozlash bekor qilinsinmi?</translation> +<translation id="3464145797867108663">Ish profilini kiritish</translation> <translation id="346431825526753">Bu bolalar hisobi <ph name="CUSTODIAN_EMAIL" /> tomonidan boshqariladi.</translation> <translation id="3468298837301810372">Yorliq</translation> <translation id="3468999815377931311">Android telefon</translation> @@ -2280,6 +2288,7 @@ <translation id="360180734785106144">Yangi funksiyalar ularning chiqishiga taklif qilinadi</translation> <translation id="3602290021589620013">Razm solish</translation> <translation id="3603622770190368340">Tarmoq sertifikatini qabul qilish</translation> +<translation id="3604193429970465812">Qoʻshimcha hisoblar</translation> <translation id="3604713164406837697">Fon rasmini almashtirish</translation> <translation id="3605780360466892872">Ishbilarmon</translation> <translation id="3608576286259426129">Foydalanuvchi rasmini oldingdan ko‘rish</translation> @@ -2604,6 +2613,7 @@ <ph name="CONTROL_PANEL_APPLET_NAME" />’ni ochasizmi?</translation> <translation id="394183848452296464">Yorliq yaratilmadi</translation> +<translation id="3943494825379372497">Ilova va sahifalar tiklansinmi?</translation> <translation id="3943582379552582368">&Orqaga</translation> <translation id="3943857333388298514">Joylash</translation> <translation id="3948116654032448504">Tasvirni qidirish (<ph name="SEARCH_ENGINE" />)</translation> @@ -2689,6 +2699,7 @@ <translation id="4046013316139505482">Bu kengaytmalar mazkur saytdagi maʼlumotlarni koʻrishi va oʻzgartirishi kerak emas.</translation> <translation id="4046123991198612571">Keyingi musiqa</translation> <translation id="4047726037116394521">Boshiga</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{# ta kontakt aloqada emas. Ular bilan Atrofga yuborish funksiyasini ishlatish uchun kontaktlaringizga ularning Google hisobidagi email manzilini kiriting.}other{# ta kontant aloqada emas. Ular bilan Atrofga yuborish funksiyasini ishlatish uchun kontaktlaringizga ularning Google hisoblaridagi email manzillarini kiriting.}}</translation> <translation id="4050225813016893843">Autentifikatsiya usuli</translation> <translation id="4052120076834320548">Kichkina</translation> <translation id="4056908315660577142">Ota-onangiz Chromedagi <ph name="APP_NAME" /> ilovasi uchun belgilagan foydalanish vaqti tugadi. Ertaga yana <ph name="TIME_LIMIT" /> ishlata olasiz.</translation> @@ -3335,6 +3346,7 @@ <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (standart)</translation> <translation id="4864369630010738180">Kirilmoqda…</translation> <translation id="4864805589453749318">Maktab hisobini kiritishga ruxsat berayotgan ota-onani tanlang.</translation> +<translation id="4866265760644917470">Profil kiritildi.</translation> <translation id="486635084936119914">Ba’zi turdagi fayllar yuklab olinishi bilan avtomatik ochilsin</translation> <translation id="48704129375571883">Qo‘chimcha funksiyalarni qo‘shish</translation> <translation id="4870758487381879312">Konfiguratsiya axborotini yuklash uchun admin tayinlagan parolni kiriting</translation> @@ -3618,6 +3630,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Oshkor qilingan parol almashtirildi. Yana # ta oshkor qilingan parolingiz bor. Chrome hoziroq bu parolni tekshirishni tavsiya qiladi.}other{Oshkor qilingan parol almashtirildi. Yana # ta oshkor qilingan parollaringiz bor. Chrome hoziroq bu parollarni tekshirishni tavsiya qiladi}}</translation> <translation id="5207949376430453814">Matn kiritish joyi ajratib ko‘rsatilsin</translation> <translation id="5209320130288484488">Qurilmalar topilmadi</translation> +<translation id="5209572028385096813">Bu foydalanuvchi Family Link orqali boshqariladi</translation> <translation id="5210365745912300556">Tabni yopish</translation> <translation id="5213481667492808996">“<ph name="NAME" />” internet paketingiz faollashtirildi</translation> <translation id="5213891612754844763">Proksi-server sozlamalari</translation> @@ -3703,6 +3716,7 @@ <translation id="5302048478445481009">Til</translation> <translation id="5302932258331363306">Almashtiruv panelini ochish</translation> <translation id="5304276686222516262">Kontaktlar roʻyxati yuklab olinmadi. Tarmoq aloqasini tekshiring yoki <a href="#" id="tryAgainLink">qayta urining</a>.</translation> +<translation id="5305145881844743843">Bu hisob <ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /> domenida boshqariladi</translation> <translation id="5305688511332277257">O‘rnatilmagan</translation> <translation id="5307030433605830021">Manba bilan mos emas</translation> <translation id="5308380583665731573">Ulanish</translation> @@ -4083,6 +4097,7 @@ <translation id="5740820643029013514">Xabarlar tinchroq kelsin (tavsiya etiladi)</translation> <translation id="574104302965107104">Ekran koʻzgusi</translation> <translation id="574209121243317957">Ovoz balandligi</translation> +<translation id="5742505912938664543">Bu yerda qoʻshimcha hisobni kiritsangiz, uning yordamida internetni kezish, ilovalarni yuklab olish, Gmail va boshqa Google xizmatlaridan foydalanishingiz mumkin.</translation> <translation id="5746169159649715125">PDF sifatida saqlash</translation> <translation id="5747552184818312860">Amal qilish muddati</translation> <translation id="5747785204778348146">Dasturchilar kanali (barqaror emas)</translation> @@ -4423,6 +4438,7 @@ <translation id="6129953537138746214">Bo‘shliq</translation> <translation id="6130692320435119637">Wi-Fi kiritish</translation> <translation id="6136114942382973861">Yuklanmalar panelini yopish</translation> +<translation id="6136287496450963112">Elektron kalit PIN kod bilan himoyalanmagan. Barmoq izlarini boshqarish uchun avval PIN kod yarating.</translation> <translation id="6137767437444130246">Foydalanuvchi sertifikati</translation> <translation id="6138680304137685902">SHA-384 algoritmli X9.62 ECDSA imzosi</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tarmoq topilmadi</translation> @@ -4603,6 +4619,7 @@ <translation id="6331566915566907158">Chrome OS funksiyalari va unumdorligini yaxshilashga yordam bering</translation> <translation id="6331818708794917058">Saytlar MIDI qurilmarga ulanishga ruxsat soʻray oladi</translation> <translation id="6333064448949140209">Fayl batafsil ko‘rib chiqilishi uchun Google serverlariga yuboriladi</translation> +<translation id="6334444530352320327">Ilova va OT sozlamalaringiz hisobingiz bilan kirilgan barcha Chromebook qurilmalaringizda sinxronlanadi.<ph name="LINK_BEGIN" />Sinxronizatsiya sozlamalari<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Barcha saytlar har qanday reklama chiqarishi mumkin</translation> <translation id="6339668969738228384"><ph name="USER_EMAIL_ADDRESS" /> hisobi uchun yangi profil yaratilsin.</translation> <translation id="6340017061976355871">Serverga ulanib bo‘lmadi. Internet aloqasini tekshiring va qayta urinib ko‘ring. Muammo qaytarilaversa, Chromebookni o‘chirib yoqing.</translation> @@ -4904,6 +4921,7 @@ <translation id="6709133671862442373">Yangiliklar</translation> <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> orqali ulanish</translation> <translation id="6710213216561001401">Avvalgi</translation> +<translation id="6713233729292711163">Ish profilini kiritish</translation> <translation id="6715803357256707211">Linux ilovasini oʻrnatishda xatolik yuz berdi. Batafsil axborot olish uchun bildirishnoma ustiga bosing.</translation> <translation id="671619610707606484">Saytlar joylagan <ph name="TOTAL_USAGE" /> maʼlumot tozalab tashlanadi</translation> <translation id="671928215901716392">Bloklash ekrani</translation> @@ -5272,6 +5290,7 @@ <translation id="7121362699166175603">Manzil qatoridagi tarix va avto‘ldirishlarni tozalaydi. Google hisobingiz orqali bajargan internetdagi faoliyatingizni <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> orqali ko‘rishingiz mumkin.</translation> <translation id="7121438501124788993">Dasturchi rejimi</translation> <translation id="7121728544325372695">Smart tirelar</translation> +<translation id="7122353087820324370">Ilovalar va OT sozlamalari qoʻshimcha hisoblaringizga sinxronlanmaydi.</translation> <translation id="7123030151043029868">Bir nechta faylni avtomatik yuklashga ruxsat berilgan</translation> <translation id="7123360114020465152">Printer ta’minoti to‘xtatilgan</translation> <translation id="7125148293026877011">Crostini tizimini oʻchirish</translation> @@ -5580,12 +5599,14 @@ <translation id="7496732379142025470">Batareyani tejash uchun “Ok Google” iborasi faqatgina qurilma quvvat manbaiga ulanganda ishlaydi. Buni Sozlamalar orqali oʻzgartirishingiz mumkin.</translation> <translation id="7497215489070763236">Server CA sertifikati</translation> <translation id="7497981768003291373">Yaqinda yozilgan WebRTC matnli jurnallari topilmadi.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> bu varaqdagi kontentni suratga olish uchun ruxsat olmoqchi.</translation> <translation id="7502658306369382406">IPv6 manzil</translation> <translation id="7503191893372251637">Netscape sertifikati turi</translation> <translation id="7503985202154027481">Joriy saytga tashrifingiz haqidagi axborot elektron kalitga saqlanadi.</translation> <translation id="750509436279396091">Yuklamalar jildini ochish</translation> <translation id="7506093026325926984">Joriy parol shu qurilmaga saqlanadi</translation> <translation id="7506130076368211615">Yangi tarmoqni sozlash</translation> +<translation id="7506242536428928412">Yangi elektron kalitdan foydalanish uchun yangi PIN kod oʻrnating</translation> <translation id="7506541170099744506"><ph name="DEVICE_TYPE" /> qurilmangiz korporativ domen ro‘yxatidan o‘tkazildi.</translation> <translation id="7507207699631365376">Bu taʼminotchining <ph name="BEGIN_LINK" />maxfiylik siyosati<ph name="END_LINK" /> bilan tanishish.</translation> <translation id="7507930499305566459">Status Responder sertifikati</translation> @@ -5749,6 +5770,7 @@ <translation id="7691077781194517083">Bu elektron kalit sozlamalari qayta tiklanmaydi Xato: <ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Crostini tizimini yangilash</translation> <translation id="7696063401938172191"><ph name="PHONE_NAME" /> telefoningizda:</translation> +<translation id="7697166915480294040">Ekran namoyishida tafsilotlar berkitiladi</translation> <translation id="7697598343108519171">QR kodni kamera yordamida skanerlang</translation> <translation id="7699968112832915395">Hisob kiritilmadi</translation> <translation id="7701040980221191251">Hech qanday</translation> @@ -6204,6 +6226,8 @@ <translation id="8184472985242519288">Uniforma</translation> <translation id="8186609076106987817">Bu fayl serverda topilmadi.</translation> <translation id="8188389033983459049">Qurilma sozlamalarini tekshiring va davom ettirish uchun Bluetoothni yoqing</translation> +<translation id="8189306097519446565">Maktab hisoblari</translation> +<translation id="8189750580333936930">Maxfiylik xavfsiz muhiti</translation> <translation id="8190193592390505034"><ph name="PROVIDER_NAME" /> tarmog‘iga ulanilmoqda</translation> <translation id="8191230140820435481">Ilovalar, kengaytmalar va mavzularni boshqarish</translation> <translation id="8195027750202970175">Diskdagi hajmi</translation> @@ -6895,6 +6919,7 @@ <translation id="8986362086234534611">Olib tashlash</translation> <translation id="8986494364107987395">Foydalanish statistikasi va ishdan chiqishlar hisobotini avtomatik ravishda Google‘ga jo‘natish</translation> <translation id="8987927404178983737">Oy</translation> +<translation id="8989823300731803443">Ochiq qolgan varaqlaringiz.</translation> <translation id="8990209962746788689">QR-kod yaratilmadi</translation> <translation id="8991520179165052608">Sayt mikrofondan foydalanishi mumkin</translation> <translation id="8992117551007229513">{COUNT,plural, =1{1 ta fayl}other{# ta fayl}}</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index be78699..a9828cd 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">Phương thức nhập ưu tiên</translation> <translation id="1335929031622236846">Đăng ký thiết bị của bạn</translation> <translation id="1336902454946927954">Khóa bảo mật của bạn đã bị khóa do hệ thống không nhận dạng được vân tay của bạn. Để mở khóa, hãy nhập mã PIN của bạn.</translation> +<translation id="1337692097987160377">Chia sẻ thẻ này</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> muốn mở ứng dụng này.</translation> <translation id="1338950911836659113">Đang xóa...</translation> <translation id="13392265090583506">A11y</translation> @@ -1610,6 +1611,7 @@ <translation id="2805756323405976993">Ứng dụng</translation> <translation id="2805770823691782631">Thông tin chi tiết bổ sung</translation> <translation id="2806372837663997957">Thiết bị mà bạn đang cố gắng chia sẻ tệp đã không chấp nhận</translation> +<translation id="2806891468525657116">Lối tắt đã tồn tại</translation> <translation id="2807517655263062534">Các tệp bạn tải xuống sẽ xuất hiện ở đây</translation> <translation id="2809586584051668049">và <ph name="NUMBER_ADDITIONAL_DISABLED" /> mục khác</translation> <translation id="2810390687497823527">Nếu không nhận ra một tiện ích hoặc nếu trình duyệt hiện không hoạt động như mong đợi, thì bạn có thể tắt hoặc tùy chỉnh các tiện ích tại đây.</translation> @@ -5583,6 +5585,7 @@ <translation id="7496732379142025470">Để tiết kiệm pin, “Ok Google” chỉ bật khi thiết bị của bạn kết nối với nguồn điện. Để thay đổi, hãy truy cập vào mục Cài đặt.</translation> <translation id="7497215489070763236">Chứng chỉ CA máy chủ</translation> <translation id="7497981768003291373">Bạn không ghi nhật ký văn bản WebRTC nào gần đây.</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> đang xin phép được chụp nội dung của thẻ này.</translation> <translation id="7502658306369382406">Địa chỉ IPv6</translation> <translation id="7503191893372251637">Loại Chứng chỉ Netscape</translation> <translation id="7503985202154027481">Khóa bảo mật sẽ lưu giữ bản ghi lượt truy cập của bạn vào trang web này.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index cdb0816..3b3f275 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">首选输入模式</translation> <translation id="1335929031622236846">注册您的设备</translation> <translation id="1336902454946927954">您的安全密钥已被锁定,因为无法识别您的指纹。若要解锁,请输入 PIN 码。</translation> +<translation id="1337692097987160377">分享此标签页</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> 想打开此应用。</translation> <translation id="1338950911836659113">正在删除…</translation> <translation id="13392265090583506">无障碍设置</translation> @@ -1606,6 +1607,7 @@ <translation id="2805756323405976993">应用</translation> <translation id="2805770823691782631">更多详情</translation> <translation id="2806372837663997957">目标设备未接受您的文件分享请求</translation> +<translation id="2806891468525657116">快捷方式已存在</translation> <translation id="2807517655263062534">您下载的文件会显示在此处</translation> <translation id="2809586584051668049">及另外<ph name="NUMBER_ADDITIONAL_DISABLED" />个扩展程序</translation> <translation id="2810390687497823527">如果您不认识某款扩展程序或者您的浏览器无法按预期运行,您可在此处关闭或自定义扩展程序。</translation> @@ -5578,6 +5580,7 @@ <translation id="7496732379142025470">为了省电,“Ok Google”仅在您的设备连接至电源时可用。要进行更改,请转到“设置”。</translation> <translation id="7497215489070763236">服务器 CA 证书</translation> <translation id="7497981768003291373">您最近未记录 WebRTC 文本日志。</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> 请求您授权其获取此标签页的内容。</translation> <translation id="7502658306369382406">IPv6 地址</translation> <translation id="7503191893372251637">Netscape 证书类型</translation> <translation id="7503985202154027481">您对该网站的访问记录将保留在安全密钥上。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index c46eb104..253a1950 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">偏好的輸入模式</translation> <translation id="1335929031622236846">註冊您的裝置</translation> <translation id="1336902454946927954">無法辨識您的指紋,因此安全密鑰已被鎖定。如要解鎖,請輸入您的 PIN。</translation> +<translation id="1337692097987160377">共用此分頁</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> 想開啟此應用程式。</translation> <translation id="1338950911836659113">刪除中…</translation> <translation id="13392265090583506">無障礙設定</translation> @@ -1609,6 +1610,7 @@ <translation id="2805756323405976993">應用程式</translation> <translation id="2805770823691782631">其他詳細資料</translation> <translation id="2806372837663997957">您嘗試分享檔案的目標裝置並未接受檔案分享</translation> +<translation id="2806891468525657116">捷徑已存在</translation> <translation id="2807517655263062534">您下載的檔案會在這裡顯示</translation> <translation id="2809586584051668049">和另外 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 個</translation> <translation id="2810390687497823527">如果您無法識別任何擴充程式,或瀏覽器無法如期運作,您可以在這裡關閉或自訂擴充程式。</translation> @@ -5582,6 +5584,7 @@ <translation id="7496732379142025470">為節省電量,系統只會在裝置連接到電源時才會啟動「Ok Google」。如要變更此設定,請前往「設定」。</translation> <translation id="7497215489070763236">伺服器 CA 憑證</translation> <translation id="7497981768003291373">您最近並未擷取 WebRTC 文字記錄。</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> 正在要求擷取此分頁內容的權限。</translation> <translation id="7502658306369382406">IPv6 位址</translation> <translation id="7503191893372251637">Netscape 憑證類型</translation> <translation id="7503985202154027481">您的安全密鑰會保留您瀏覽此網站的記錄。</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 42c3d61..018be21 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -306,6 +306,7 @@ <translation id="133535873114485416">偏好的輸入來源</translation> <translation id="1335929031622236846">註冊你的裝置</translation> <translation id="1336902454946927954">系統無法辨識你的指紋,因此你的安全金鑰已遭到鎖定。如要解鎖,請輸入你的 PIN 碼。</translation> +<translation id="1337692097987160377">共用此分頁</translation> <translation id="1338802252451106843"><ph name="ORIGIN" /> 想要開啟這個應用程式。</translation> <translation id="1338950911836659113">刪除中...</translation> <translation id="13392265090583506">無障礙設定</translation> @@ -1609,6 +1610,7 @@ <translation id="2805756323405976993">應用程式</translation> <translation id="2805770823691782631">其他詳細資訊</translation> <translation id="2806372837663997957">你試圖分享檔案的目標裝置並未接受檔案分享</translation> +<translation id="2806891468525657116">捷徑已經存在</translation> <translation id="2807517655263062534">你下載的檔案會顯示在這裡</translation> <translation id="2809586584051668049">和另外 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 個</translation> <translation id="2810390687497823527">如果你對某個擴充功能沒有印象,或是瀏覽器無法正常運作,可以在這裡關閉或自訂擴充功能。</translation> @@ -5581,6 +5583,7 @@ <translation id="7496732379142025470">為了節省電力,系統只有在裝置連接到電源時才會啟動「Ok Google」。如要變更這項設定,請前往「設定」。</translation> <translation id="7497215489070763236">伺服器 CA 憑證</translation> <translation id="7497981768003291373">你最近並未擷取 WebRTC 文字記錄。</translation> +<translation id="7498614236023455416"><ph name="TARGET_NAME" /> 要求權限以擷取這個分頁的內容。</translation> <translation id="7502658306369382406">IPv6 位址</translation> <translation id="7503191893372251637">Netscape 憑證類型</translation> <translation id="7503985202154027481">你的安全金鑰會保留你造訪這個網站的記錄。</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index 86da5ab..ec1c889b 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -57,6 +57,7 @@ <translation id="1056775291175587022">Akuna-network</translation> <translation id="1056898198331236512">Isexwayiso</translation> <translation id="1058262162121953039">I-PUK</translation> +<translation id="1059065096897445832">{MIN_PIN_LENGTH,plural, =1{Faka iphinikhodi yakho entsha Iphinikhodi kumele okungenani ibe yinde ngohlamvu olulodwa futhi ingaqukatha amaletha, izinombolo, nezinye izinhlamvu.}one{Faka iphinikhodi yakho entsha Iphinikhodi kumele okungenani ibe nezinhlamvu ezingu-# ngobude futhi ingaqukatha amaletha, izinombolo, nezinye izinhlamvu.}other{Faka iphinikhodi yakho entsha Iphinikhodi kumele okungenani ibe nezinhlamvu ezingu-# ngobude futhi ingaqukatha amaletha, izinombolo, nezinye izinhlamvu.}}</translation> <translation id="1059944192885972544">Kutholakale Amathebhu angu-<ph name="NUM" /> we-'<ph name="SEARCH_TEXT" />'</translation> <translation id="1060292118287751956">Inquma imvamisa isikrini esibuyekezwa ngayo</translation> <translation id="1061904396131502319">Kucishe isikhathi sekhefu</translation> @@ -307,6 +308,7 @@ <translation id="133535873114485416">Okokufaka okuncamelayo</translation> <translation id="1335929031622236846">Bhalisa idivayisi yakho</translation> <translation id="1336902454946927954">Ukhiye wakho wokuqinisekisa ubunikazi ukhiyiwe ngoba isigxivizo somunwe asaziwanga. Ukuze uwuvule, faka iphinikhodi yakho.</translation> +<translation id="1337692097987160377">Yabelana ngale thebhu</translation> <translation id="1338802252451106843">I-<ph name="ORIGIN" /> ifuna ukuvula lolu hlelo lokusebenza.</translation> <translation id="1338950911836659113">Iyasusa...</translation> <translation id="13392265090583506">I-A11y</translation> @@ -634,9 +636,11 @@ <translation id="1688935057616748272">Thayipha incwadi</translation> <translation id="168991973552362966">Engeza iphrinta eseduzane</translation> <translation id="1689945336726856614">Kopisha i-&URL</translation> +<translation id="1690248886740053041">Ayikwazanga ukuxhumeka kunethiwekhi yeselula. Ngosekelo lwezobuchwepheshe, sicela uxhumane nenkampani yakho yenethiwekhi.</translation> <translation id="1692115862433274081">Sebenzisa enye i-akhawunti</translation> <translation id="1692118695553449118">Ukuvumelanisa kuvuliwe</translation> <translation id="1692210323591458290">Okunsomi kakhulu</translation> +<translation id="169279809881363536">Awekho amaphrofayela aye atholwa. Ukuze usethe inethiwekhi entsha, skena ikhodi ye-QR usebenzisa ikhamera yedivayisi noma faka ikhodi yokwenza kusebenze enikezwe inkampani yakho yenethiwekhi.</translation> <translation id="1697150536837697295">Ubuciko</translation> <translation id="1697686431566694143">Hlela ifayela</translation> <translation id="1698122934742150150">Isikhathi se-incognito samanje kuphela</translation> @@ -1573,6 +1577,7 @@ <translation id="2770465223704140727">Susa kusuka kuhlu</translation> <translation id="2770690685823456775">Thumela amaphasiwedi akho kwenye ifolda</translation> <translation id="2770929488047004208">Gada ukulungiswa</translation> +<translation id="2770954829020464827">Imininingwane ifihliwe ngenkathi wabelane ngesikrini sakho</translation> <translation id="2771268254788431918">Idatha yeselula yenziwe yasebenza</translation> <translation id="2771816809568414714">Ushizi</translation> <translation id="2772936498786524345">Iyanyonyoba</translation> @@ -1609,6 +1614,7 @@ <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> <translation id="2805770823691782631">Imininingwane engeziwe</translation> <translation id="2806372837663997957">Idivayisi ozama ukwabelana nayo ayamukelanga</translation> +<translation id="2806891468525657116">Isinqamuleli sesivele sikhona</translation> <translation id="2807517655263062534">Amafayela owalandayo azovela lapha</translation> <translation id="2809586584051668049">nokuningi okungu-<ph name="NUMBER_ADDITIONAL_DISABLED" /></translation> <translation id="2810390687497823527">Uma ungaboni isandiso, noma uma isiphequluli sakho singasebenzi ngendlela elindelekile, ungavala ukwenza ngezifiso izandiso lapha.</translation> @@ -1940,6 +1946,7 @@ <translation id="3201422919974259695">Amadivayisi atholakalayo e-USB azovela lapha.</translation> <translation id="3202131003361292969">Indlela</translation> <translation id="3202173864863109533">Le thebhu yomsindo iyathuliswa.</translation> +<translation id="3202218848974251205">I-sandbox yobumfihlo</translation> <translation id="3208321278970793882">Uhlelo lokusebenza</translation> <translation id="3208584281581115441">Hlola manje</translation> <translation id="3208703785962634733">Akuqinisekisiwe</translation> @@ -2160,6 +2167,7 @@ <translation id="3459697287128633276">Ukuze unike amandla i-akhawunti yakho ukuthi ifinyelele i-Google Play Isitolo, sicela uqiniseke ngomhlinzeki wakho wobunikazi.</translation> <translation id="3462311546193741693">Ikukhipha kumasayithi amaningi. Uzohlala ungene ngemvume ku-akhawunti yakho ye-Google ukuze idatha yakho evumelanisiwe ikwazi ukusulwa.</translation> <translation id="3462413494201477527">Khansela ukusetha kwe-akhawunti?</translation> +<translation id="3464145797867108663">Engeza iphrofayela yomsebenzi</translation> <translation id="346431825526753">Le yi-akhawunti yezingane ephethwe ngu-<ph name="CUSTODIAN_EMAIL" />.</translation> <translation id="3468298837301810372">Ilebula</translation> <translation id="3468999815377931311">Ifoni ye-Android</translation> @@ -2281,6 +2289,7 @@ <translation id="360180734785106144">Nikezela ngezici ezintsha njengoba zitholakala</translation> <translation id="3602290021589620013">Hlola kuqala</translation> <translation id="3603622770190368340">Thola isitifiketi senethiwekhi</translation> +<translation id="3604193429970465812">Ama-akhawunti esibili</translation> <translation id="3604713164406837697">Shintsha iphephadonga</translation> <translation id="3605780360466892872">Inkinobhophansi</translation> <translation id="3608576286259426129">Sebenzisa ukubuka kuqala kwesithombe</translation> @@ -2604,6 +2613,7 @@ Ingabe ungathanda ukuqalisa i-<ph name="CONTROL_PANEL_APPLET_NAME" />?</translation> <translation id="394183848452296464">Ayikwazi ukudala isinqamuleli</translation> +<translation id="3943494825379372497">Buyisela izinhlelo zokusebenza namakhasi?</translation> <translation id="3943582379552582368">Emuva</translation> <translation id="3943857333388298514">Namathisela</translation> <translation id="3948116654032448504">&Seshela i-<ph name="SEARCH_ENGINE" /> isithombe</translation> @@ -2689,6 +2699,7 @@ <translation id="4046013316139505482">Lezi zandiso azidingi ukubona nokushintsha ulwazi kuleli sayithi.</translation> <translation id="4046123991198612571">Ithrekhi elandelayo</translation> <translation id="4047726037116394521">Iya ekhaya</translation> +<translation id="4049783682480068824">{COUNT,plural, =1{othintwayo ongu-# akatholakali. Ukuze usebenzise Ukwabelana Eduze nabo, engeza ikheli le-imeyili elihlothaniswa ne-Akhawunti yabo ye-Google koxhumana nabo.}one{abathintwayo abangu-# abatholakali. Ukuze usebenzise Ukuthumela Eduze nabo, engeza amakheli e-imeyili ahlotshaniswa nama-Akhawunti abo e-Google koxhumana nabo.}other{abathintwayo abangu-# abatholakali. Ukuze usebenzise Ukuthumela Eduze nabo, engeza amakheli e-imeyili ahlotshaniswa nama-Akhawunti abo e-Google koxhumana nabo.}}</translation> <translation id="4050225813016893843">Indlela yokufakazela ubuqiniso</translation> <translation id="4052120076834320548">Yincane</translation> <translation id="4056908315660577142">Ufinyelele umkhawulo wesikhathi osibekelwe ngumzali wakho nge-<ph name="APP_NAME" /> ewuhlelo lokusebenza lwe-Chrome. Ungalisebenzisa kuze kube ngo-<ph name="TIME_LIMIT" /> kusasa.</translation> @@ -3335,6 +3346,7 @@ <translation id="4863769717153320198">Kubukeka njenge-<ph name="WIDTH" /> x <ph name="HEIGHT" /> (Okuzenzakalelayo)</translation> <translation id="4864369630010738180">Iyangena ngemvume...</translation> <translation id="4864805589453749318">Khetha umzali onikeza imvume yokwengeza i-akhawunti yesikole.</translation> +<translation id="4866265760644917470">Iphrofayela ingezwe ngempumelelo.</translation> <translation id="486635084936119914">Vula izinhlobo ezithile zamafayela ngokuzenzakalela ngemuva kokulanda</translation> <translation id="48704129375571883">Engeza izici ezingeziwe</translation> <translation id="4870758487381879312">Faka iphasiwedi enikezwe umphathi ukuze uthole ulwazi lokulungiselelwa</translation> @@ -3618,6 +3630,7 @@ <translation id="5206787458656075734">{COUNT,plural, =1{Iphumelele ukushintsha iphasiwedi eyonakalisiwe. Unephasiwedi eyonakalisiwe e-# ngokwengeziwe. I-Chrome incoma ukuhlola le phasiwedi manje.}one{Iphumelele ukushintsha iphasiwedi eyonakalisiwe. Unamaphasiwedi onakalisiwe angu-# ngokwengeziwe. I-Chrome incoma ukuhlola la maphasiwedi manje.}other{Iphumelele ukushintsha iphasiwedi eyonakalisiwe. Unamaphasiwedi onakalisiwe angu-# ngokwengeziwe. I-Chrome incoma ukuhlola la maphasiwedi manje.}}</translation> <translation id="5207949376430453814">Gqamisa ikharethi yombhalo</translation> <translation id="5209320130288484488">Awekho amadivayisi atholiwe</translation> +<translation id="5209572028385096813">Lo msebenzisi uphethwe i-Family Link</translation> <translation id="5210365745912300556">Vala ithebhu</translation> <translation id="5213481667492808996">Isevisi yakho yedatha yakho '<ph name="NAME" />' ilungele ukusetshenziswa</translation> <translation id="5213891612754844763">Bonisa izilungiselelo zommeleli</translation> @@ -3705,6 +3718,7 @@ <translation id="5302048478445481009">Ulimi</translation> <translation id="5302932258331363306">Bonisa ababambeli</translation> <translation id="5304276686222516262">Ayikwazi ukulanda uhlu loxhumana nabo. Sicela uhlole uxhumo lakho lenethiwekhi, noma <a href="#" id="tryAgainLink">uzame futhi</a>.</translation> +<translation id="5305145881844743843">Le akhawunti iphethwe ngu-<ph name="BEGIN_LINK" /><ph name="DOMAIN" /><ph name="END_LINK" /></translation> <translation id="5305688511332277257">Lutho okufakiwe</translation> <translation id="5307030433605830021">Umthombo awusekelwe</translation> <translation id="5308380583665731573">Xhuma</translation> @@ -4086,6 +4100,7 @@ <translation id="5740820643029013514">Sebenzisa ukulayeza okuthulile (kuyanconywa)</translation> <translation id="574104302965107104">Isibonisi sokufanisela</translation> <translation id="574209121243317957">Ukuphakama</translation> +<translation id="5742505912938664543">Uma ungeza i-akhawunti yesibili lapha, ungaphequlula iwebhu, ulande izinhlelo zokusebenza, uhlole i-Gmail yakho namanye amasevisi e-Google usebenzisa leyo akhawunti.</translation> <translation id="5746169159649715125">Londoloza njenge-PDF</translation> <translation id="5747552184818312860">Iphelelwa yisikhathi</translation> <translation id="5747785204778348146">Unjiniyela - akuzinzile</translation> @@ -4426,6 +4441,7 @@ <translation id="6129953537138746214">Isikhala</translation> <translation id="6130692320435119637">Engeza i-Wi-Fi</translation> <translation id="6136114942382973861">Vala ibha yokulanda</translation> +<translation id="6136287496450963112">Ukhiye wakho wokuqinisekisa ubunikazi awuvunyelwe ngephinikhodi. Ukuze uphathe izigxivizo zeminwe, qala udale iphinikhodi.</translation> <translation id="6137767437444130246">Isitifiketi somsebenzisi</translation> <translation id="6138680304137685902">Isiginesha ye-X9.62 ECDSA ne-SHA-384</translation> <translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ayikho inethiwekhi</translation> @@ -4606,6 +4622,7 @@ <translation id="6331566915566907158">Siza ekuthuthukiseni izici nokusebenza kwe-Chrome OS</translation> <translation id="6331818708794917058">Amasayithi angacela ukuxhumeka kumadivayisi e-MIDI</translation> <translation id="6333064448949140209">Ifayela lizothunyelwa ku-Google ngokususa amaphutha</translation> +<translation id="6334444530352320327">Izinhlelo zakho zokusebenza namasethingi e-OS azovunyelaniswa kuma-Chromebook onkana lapho ungeke khona ngemvume ngale akhawunti.<ph name="LINK_BEGIN" />Vumelanisa Amasethingi<ph name="LINK_END" /></translation> <translation id="6338981933082930623">Wonke amasayithi angabonisa noma iziphi izikhangiso kuwe</translation> <translation id="6339668969738228384">Dala iphrofayela entsha ye-<ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="6340017061976355871">Ayikwazanga ukuxhuma kuseva. Sicela uhlole uxhumo lwakho lenethiwekhi bese uyazama futhi. Uma inkinga iqhubeka, qalisa kabusha i-Chromebook yakho.</translation> @@ -4907,6 +4924,7 @@ <translation id="6709133671862442373">Izindaba</translation> <translation id="6709357832553498500">Xhumeka usebenzisa i-<ph name="EXTENSIONNAME" /></translation> <translation id="6710213216561001401">Okwedlule</translation> +<translation id="6713233729292711163">Engeza Iphrofayela Yomsebenzi</translation> <translation id="6715803357256707211">Kuvele iphutha phakathi nokufakwa kohlelo lwakho lokusebenza le-Linux. Chofoza kusaziso ngemininingwane.</translation> <translation id="671619610707606484">Lokhu kuzosula idatha engu-<ph name="TOTAL_USAGE" /> egcinwe amasayithi</translation> <translation id="671928215901716392">Khiya isikrini</translation> @@ -5275,6 +5293,7 @@ <translation id="7121362699166175603">Isula umlando nokuqedelelwa okuzenzakalelayo kubha yekheli. I-akhawunti yakho ye-Google ingaba namanye amafomu omlando okuphequlula ku-<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="7121438501124788993">Imodi Yonjiniyela</translation> <translation id="7121728544325372695">Ama-Smart Dash</translation> +<translation id="7122353087820324370">Izinhlelo zokusebenza namasethingi e-OS awavunyelanisiwe kuma-akhawunti esibili.</translation> <translation id="7123030151043029868">Ivumelekile ukulanda amafayela amaningi ngokuzenzekelayo</translation> <translation id="7123360114020465152">Akusasekelwa</translation> <translation id="7125148293026877011">Susa i-Crostini</translation> @@ -5583,12 +5602,14 @@ <translation id="7496732379142025470">Ukuze ulondoloze ibhethri, okuthi "Ok Google" kuvuliwe kuphela uma idivayisi yakho ixhunywe kumthombo wamandla. Ukuze wenze izinguquko, hamba kuzilungiselelo.</translation> <translation id="7497215489070763236">Isitifiketi se-CA yeseva</translation> <translation id="7497981768003291373">Awunawo amalogi ombhalo athathwa kamuva we-WebRTC.</translation> +<translation id="7498614236023455416">I-<ph name="TARGET_NAME" /> icela imvume yokuthatha okuqukethwe kule thebhu.</translation> <translation id="7502658306369382406">Ikheli le-IPv^</translation> <translation id="7503191893372251637">Uhlobo lwesitifiketi se-Netscape</translation> <translation id="7503985202154027481">Irekhodi lokuvakasha kwakho kuleli sayithi lizogcinwa kukhiye wakho wokuqinisekisa ubunikazi</translation> <translation id="750509436279396091">Vula ifolda yokulandwa</translation> <translation id="7506093026325926984">Le phasiwedi izolondolozwa kule divayisi</translation> <translation id="7506130076368211615">Setha inethiwekhi entsha</translation> +<translation id="7506242536428928412">Ukuze useenzise ukhiye wakho omusha wokuqinisekisa ubunikazi, setha iphinikhodi entsha</translation> <translation id="7506541170099744506">I-<ph name="DEVICE_TYPE" /> yakho ibhaliselwe ngempumelelo ukuphathwa kwebhizinisi.</translation> <translation id="7507207699631365376">Buka <ph name="BEGIN_LINK" />inqubomgomo yobumfihlo<ph name="END_LINK" /> yalomhlinzeki</translation> <translation id="7507930499305566459">Isitifiketi sokuphendula kusimo</translation> @@ -5752,6 +5773,7 @@ <translation id="7691077781194517083">Ayikwazi ukusetha kabusha lo khiye wokuqinisekisa ubunikazi. Iphutha elingu-<ph name="ERROR_CODE" />.</translation> <translation id="7691698019618282776">Ukuthuthukisa kwe-Crostini</translation> <translation id="7696063401938172191">Ku-'<ph name="PHONE_NAME" />' yakho:</translation> +<translation id="7697166915480294040">Imininingwane ifihliwe ngenkathi wabelane ngesikrini sakho</translation> <translation id="7697598343108519171">Sebenzisa ikhamera ukuskena ikhodi ye-QR</translation> <translation id="7699968112832915395">Ayikwazi ukungeza i-akhawunti</translation> <translation id="7701040980221191251">Lutho</translation> @@ -6208,6 +6230,8 @@ <translation id="8184472985242519288">Okufanayo</translation> <translation id="8186609076106987817">Iseva ayikwazanga ukuthola ifayela.</translation> <translation id="8188389033983459049">Hlola izilungiselelo zedivayisi yakho bese uzivule ukuze uqhubeke</translation> +<translation id="8189306097519446565">Ama-akhawunti esikole</translation> +<translation id="8189750580333936930">I-sandbox yobumfihlo</translation> <translation id="8190193592390505034">Ixhumeka ku-<ph name="PROVIDER_NAME" /></translation> <translation id="8191230140820435481">Phatha izinhlelo zakho zokusebenza, izandiso, namatimu</translation> <translation id="8195027750202970175">Usayizi kudiski</translation> @@ -6900,6 +6924,7 @@ <translation id="8986362086234534611">Khohlwa</translation> <translation id="8986494364107987395">Thumela ngokuzenzakalela izibalo zokusetshenziswa nemibiko yokuphahlazeka ku-Google</translation> <translation id="8987927404178983737">Inyanga</translation> +<translation id="8989823300731803443">Qhubeka lapho ugcine khona.</translation> <translation id="8990209962746788689">Ayikwazi ukudala ikhodi ye-QR</translation> <translation id="8991520179165052608">Isayithi lingasebenzisa imakrofoni yakho</translation> <translation id="8992117551007229513">{COUNT,plural, =1{into e-1}one{izinto ezingu-#}other{izinto ezingu-#}}</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index f378141..7ce2bd6 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -54,6 +54,7 @@ <translation id="2309047409763057870">এটা Google Chrome-এর সেকেন্ডারি ইনস্টলেশন এবং একে আপনার ডিফল্ট ব্রাউজার করা যাবে না।</translation> <translation id="2348335408836342058">এই সাইটটির জন্য Chrome কে আপনার ক্যামেরা এবং মাইক্রোফোনে অ্যাক্সেস দিতে হবে</translation> <translation id="234869673307233423">Chrome আপনার পাসওয়ার্ড চেক করতে পারছে না। পরে আবার চেষ্টা করুন।</translation> +<translation id="235650106824528204">এই প্রোফাইল ব্যবহার করার সময় জেনারেট হওয়া Chrome ডেটা (যেমন বুকমার্ক, ইতিহাস, পাসওয়ার্ড ও অন্যান্য সেটিংস) অফিস প্রোফাইল অ্যাডমিনিস্ট্রেটর মুছে দিতে পারেন। <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">আপনার ডোমেনে সিঙ্ক উপলভ্য না থাকার কারণে Google Chrome সিঙ্ক করতে পারেনি৷</translation> <translation id="2467438592969358367">Google Chrome আপনার পাসওয়ার্ড এক্সপোর্ট করতে চাইছে। অনুমতি দিতে Windows এর পাসওয়ার্ড টাইপ করুন।</translation> <translation id="2485422356828889247">আনইনস্টল</translation> @@ -173,12 +174,14 @@ <translation id="573759479754913123">Chrome OS সম্পর্কে </translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome লঞ্চ করা যায়নি। আবার চেষ্টা করুন।</translation> +<translation id="5851757216820085940">আপনার একাধিক Google অ্যাকাউন্ট থাকলে, সেগুলি <ph name="DEVICE_TYPE" />-এ যোগ করতে পারবেন। এই অ্যাকাউন্টের মাধ্যমে আপনি Chrome ব্রাউজার ও Play Store সহ Gmail, Drive ও YouTube-এর মতো পরিষেবা অ্যাক্সেস করতে পারবেন।<ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome আপনার পাসওয়ার্ড এডিট করার অনুমতি চাইছে।</translation> <translation id="5895138241574237353">পুনর্সূচনা</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - নেটওয়ার্ক সাইন-ইন</translation> <translation id="5940385492829620908">আপনার ওয়েব, বুকমার্ক এবং Chrome-এর অন্যান্য জিনিস এখানে রয়েছে৷</translation> <translation id="5941830788786076944">Google Chrome-কে ডিফল্ট ব্রাউজার করুন</translation> <translation id="6070348360322141662">অতিরিক্ত নিরাপত্তার জন্য, Google Chrome আপনার ডেটা এনক্রিপ্ট করবে</translation> +<translation id="608006075545470555">এই ব্রাউজারে অফিস প্রোফাইল যোগ করুন</translation> <translation id="6113794647360055231">Chrome আরও ভাল হয়ে উঠেছে</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome বিটা</translation> @@ -190,10 +193,12 @@ <translation id="6368958679917195344">Chrome OS সম্ভবত অতিরিক্ত <ph name="BEGIN_LINK_CROS_OSS" />ওপেন সোর্স সফ্টওয়্যার<ph name="END_LINK_CROS_OSS" /> দিয়ে তৈরি৷</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome আপডেট হচ্ছে (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS সিস্টেম</translation> <translation id="6650333065969705433">সুরক্ষিত মিডিয়া প্লে করার জন্য Rosetta ব্যবহার করতে, আপনাকে অবশ্যই Chrome রিস্টার্ট করতে হবে।</translation> <translation id="6676384891291319759">ইন্টারনেটটি অ্যাক্সেস করুন</translation> <translation id="6679975945624592337">Google Chrome-কে ব্যাকগ্রাউন্ডে চলতে দিন</translation> <translation id="6750954913813541382">বানান ভুল ঠিক করতে, আপনি ব্রাউজারে যে টেক্সট লেখেন Chrome সেটি Google-এ পাঠায়</translation> +<translation id="6755885556185485672">Chrome OS ঠিকভাবে বন্ধ হয়নি।</translation> <translation id="677276454032249905">তা স্বত্তেও Chrome বন্ধ করতে চান?</translation> <translation id="683440813066116847">mDNS ট্রাফিকের অনুমতি দিতে Google Chrome Canary এর জন্য ইনবাউন্ড নিয়ম।</translation> <translation id="6885412569789873916">Chrome বিটা অ্যাপ</translation> @@ -252,6 +257,7 @@ <translation id="8498858610309223613">Google Chrome-এর জন্য একটি বিশেষ নিরাপত্তা আপডেট এইমাত্র প্রয়োগ করা হয়েছে। এখনই রিস্টার্ট করুন এবং আপনার ট্যাব আমরা রিস্টোর করব।</translation> <translation id="8521348052903287641">mDNS ট্রাফিকের অনুমতি দিতে Google Chrome ডেভেলপারের জন্য ইনবাউন্ড নিয়ম।</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">এই অফিস প্রোফাইল আপনার ব্যক্তিগত প্রোফাইল থেকে সম্পূর্ণ আলাদা।</translation> <translation id="8556340503434111824">Google Chrome-এর একটি নতুন ভার্সন উপলভ্য এবং এটি আগের তুলনায় দ্রুততর৷</translation> <translation id="861359755029082151">Chrome চালু করার মাধ্যমে এই পৃষ্ঠাতে Rosetta সুরক্ষিত মিডিয়া প্লে করে।</translation> <translation id="8614913330719544658">Google Chrome প্রতিক্রিয়া করছে না৷ এখনই পুনঃলঞ্চ করবেন?</translation> @@ -270,6 +276,7 @@ <translation id="8907709077090383765">সুরক্ষিত মিডিয়া প্লে করার জন্য Chrome চালু করতে, আপনাকে Rosetta ইনস্টল করতে হবে। আপনি কি এখনই এটি ইনস্টল করতে চান?</translation> <translation id="8914504000324227558">Chrome আবার লঞ্চ করুন</translation> <translation id="8922193594870374009"><ph name="ORIGIN" /> থেকে আপনার Android ফোনে একটি নম্বর পাঠাতে, উভয় ডিভাইসের Chrome-এ সাইন-ইন করুন।</translation> +<translation id="8986207147630327271">আপনি এই ব্রাউজারে অফিস প্রোফাইল যোগ করছেন এবং আপনার অ্যাডমিনিস্ট্রেটরকে শুধু অফিস প্রোফাইলটি নিয়ন্ত্রণ করার অধিকার দিচ্ছেন।</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome-এর একটি আপডেট উপলভ্য আছে}=1{Chrome-এর একটি আপডেট উপলভ্য আছে}one{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}other{Chrome-এর একটি আপডেট # দিন ধরে উপলভ্য আছে}}</translation> <translation id="9026991721384951619">আপনার অ্যাকাউন্টের সাইন-ইনের বিবরণটি পুরনো হওয়ায় Chrome OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation> <translation id="9067395829937117663">Google Chrome এর জন্য Windows 7 বা উচ্চতর সংস্করণ প্রয়োজন।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index 479660c..907732a 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -56,7 +56,7 @@ <translation id="2309047409763057870">Ovo je sekundarna instalacija Google Chromea, pa on ne može biti vaš zadani preglednik.</translation> <translation id="2348335408836342058">Chromeu treba odobrenje za pristup vašoj kameri i mikrofonu na ovoj web lokaciji</translation> <translation id="234869673307233423">Chrome ne može provjeravati vaše lozinke. Pokušajte ponovo kasnije.</translation> -<translation id="235650106824528204">Sve podatke iz Chromea koji se generiraju tijekom upotrebe ovog profila (primjerice izradom oznaka, povijesti, zaporki i drugih postavki) može ukloniti administrator poslovnog profila. <ph name="LEARN_MORE" /></translation> +<translation id="235650106824528204">Administrator radnog profila može ukloniti bilo koje podatke Chromea koji se generiraju tokom korištenja ovog profila (naprimjer kreiranje oznaka, historije, lozinki i drugih postavki). <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome ne može sinhronizirati vaše podatke jer sinhronizacija nije dostupna za vašu domenu.</translation> <translation id="2467438592969358367">Google Chrome želi izvesti vaše lozinke. Unesite svoju lozinku za Windows da ovo omogućite.</translation> <translation id="2485422356828889247">Deinstaliraj</translation> @@ -176,14 +176,14 @@ <translation id="573759479754913123">O Chrome OS-u</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation> <translation id="5804318322022881572">Pokretanje Chromea nije uspjelo. Ponovite.</translation> -<translation id="5851757216820085940">Ako imate više Google računa, možete ih dodati na uređaj <ph name="DEVICE_TYPE" />. Vaši će računi biti dostupni u pregledniku Chrome i u Trgovini Play te na uslugama kao što su Gmail, Disk i YouTube.<ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> +<translation id="5851757216820085940">Ako imate više Google računa, možete ih dodati na uređaj <ph name="DEVICE_TYPE" />. Vaši računi će biti dostupni u pregledniku Chrome i Play trgovini, kao i na drugim uslugama kao što je Gmail, Disk i YouTube.<ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome pokušava urediti lozinke.</translation> <translation id="5895138241574237353">Ponovo pokreni</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – prijava na mrežu</translation> <translation id="5940385492829620908">Vaša aktivnost na webu, oznake i drugi sadržaji s Chromea se nalaze ovdje.</translation> <translation id="5941830788786076944">Postavite Google Chrome kao zadani preglednik</translation> <translation id="6070348360322141662">Za dodatnu sigurnost, Google Chrome će šifrirati vaše podatke</translation> -<translation id="608006075545470555">Dodavanje poslovnog profila u ovaj preglednik</translation> +<translation id="608006075545470555">Dodajte radni profil na ovaj preglednik</translation> <translation id="6113794647360055231">Chrome je upravo postao još bolji</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -195,12 +195,12 @@ <translation id="6368958679917195344">Chrome OS je moguć zahvaljujući dodatnom <ph name="BEGIN_LINK_CROS_OSS" />softveru otvorenog koda<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Ažuriranje Google Chromea (<ph name="PROGRESS_PERCENT" />)</translation> -<translation id="6568793831116033768">OS Chrome</translation> +<translation id="6568793831116033768">Sistem Chrome OS</translation> <translation id="6650333065969705433">Da koristite Rosettu za reproduciranje zaštićenih medijskih fajlova, morate ponovo pokrenuti Chrome.</translation> <translation id="6676384891291319759">Pristupite internetu</translation> <translation id="6679975945624592337">Neka Google Chrome radi u pozadini</translation> <translation id="6750954913813541382">Za ispravak pravopisnih grešaka, Chrome šalje Googleu tekst koji napišete u pregledniku</translation> -<translation id="6755885556185485672">OS Chrome nije se ispravno zatvorio.</translation> +<translation id="6755885556185485672">Chrome OS se nije ispravno zatvorio.</translation> <translation id="677276454032249905">Ipak želite napustiti Chrome?</translation> <translation id="683440813066116847">Ulazno pravilo da Google Chrome Canary dozvoli mDNS saobraćaj.</translation> <translation id="6885412569789873916">Aplikacije za Chrome Beta</translation> @@ -259,7 +259,7 @@ <translation id="8498858610309223613">Upravo je izvršeno posebno sigurnosno ažuriranje za Google Chrome. Sada ga ponovo pokrenite i vratićemo vaše kartice.</translation> <translation id="8521348052903287641">Ulazno pravilo da Google Chrome Dev dozvoli mDNS saobraćaj.</translation> <translation id="8540666473246803645">Google Chrome</translation> -<translation id="8550334526674375523">Ovaj poslovni profil potpuno je odvojen od vašeg osobnog profila.</translation> +<translation id="8550334526674375523">Ovaj radni profil je u potpunosti odvojen od vašeg ličnog profila.</translation> <translation id="8556340503434111824">Dostupna je nova verzija Google Chromea koji je brži nego ikad.</translation> <translation id="861359755029082151">Rosetta omogućava Chromeu da reproducira zaštićene medijske fajlove na ovoj stranici.</translation> <translation id="8614913330719544658">Google Chrome ne reagira. Ponovo pokrenuti sada?</translation> @@ -278,7 +278,7 @@ <translation id="8907709077090383765">Da omogućite Chromeu da reproducira zaštićene medijske fajlove, morate instalirati Rosettu. Želite li je instalirati sada?</translation> <translation id="8914504000324227558">Ponovo pokreni Chrome</translation> <translation id="8922193594870374009">Da pošaljete broj s uređaja <ph name="ORIGIN" /> na svoj Android telefon, prijavite se u Chrome na oba uređaja.</translation> -<translation id="8986207147630327271">Dodajete poslovni profil u ovaj preglednik i administratoru dodjeljujete kontrolu samo nad poslovnim profilom.</translation> +<translation id="8986207147630327271">Dodajete radni profil na ovaj preglednik i dajte administratoru kontrolu samo nad radnim profilom.</translation> <translation id="8999208279178790196">{0,plural, =0{Dostupno je ažuriranje Chromea}=1{Dostupno je ažuriranje Chromea}one{Ažuriranje Chromea je dostupno # dan}few{Ažuriranje Chromea je dostupno # dana}other{Ažuriranje Chromea je dostupno # dana}}</translation> <translation id="9026991721384951619">Chrome OS nije mogao sinhronizirati vaše podatke jer su podaci o prijavi računa zastarjeli.</translation> <translation id="9067395829937117663">Za Google Chrome je potreban Windows 7 ili novija verzija.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_eu.xtb b/chrome/app/resources/google_chrome_strings_eu.xtb index c354822d..cdca706 100644 --- a/chrome/app/resources/google_chrome_strings_eu.xtb +++ b/chrome/app/resources/google_chrome_strings_eu.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Google Chrome-ren bigarren mailako instalazio bat da hau; beraz, ezin duzu ezarri arakatzaile lehenetsi gisa.</translation> <translation id="2348335408836342058">Chrome-k webgune honen izenean kamera eta mikrofonoa atzitzeko baimena behar du</translation> <translation id="234869673307233423">Chrome-k ezin ditu egiaztatu pasahitzak. Saiatu geroago.</translation> +<translation id="235650106824528204">Laneko profilaren administratzaileak kendu egin ditzake profil hau erabiltzean sortutako Chrome-ko datuak (adibidez, sortutako laster-markak, historia, pasahitzak eta bestelako ezarpenak). <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome-k ezin izan ditu sinkronizatu zure datuak, sinkronizazioa ez dagoelako erabilgarri zure domeinuan.</translation> <translation id="2467438592969358367">Google Chrome-k pasahitzak esportatu nahi ditu. Hori baimentzeko, idatzi Windows pasahitza.</translation> <translation id="2485422356828889247">Desinstalatu</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Chrome OS sistemari buruz</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Ezin izan da abiarazi Chrome. Saiatu berriro.</translation> +<translation id="5851757216820085940">Google-ko kontu bat baino gehiago badituzu, <ph name="DEVICE_TYPE" /> gailuan gehi ditzakezu. Horrela, erabilgarri izango dituzu Chrome arakatzailean eta Play Store-n, baita beste zerbitzuetan ere: Gmail, Drive, YouTube eta abar.<ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Pasahitzak editatzen saiatzen ari da Google Chrome.</translation> <translation id="5895138241574237353">Berrabiarazi</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Hasi saioa sarean</translation> <translation id="5940385492829620908">Zure weba, laster-markak eta Chrome-n dituzun beste gauzak hemen bizi dira.</translation> <translation id="5941830788786076944">Ezarri Google Chrome arakatzaile lehenetsi gisa</translation> <translation id="6070348360322141662">Segurtasun gehiago izateko, Google Chrome-k datuak enkriptatuko ditu</translation> +<translation id="608006075545470555">Gehitu laneko profila arakatzaile honetan</translation> <translation id="6113794647360055231">Chrome hobetu egin dugu</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344"><ph name="BEGIN_LINK_CROS_OSS" />Kode irekiko software<ph name="END_LINK_CROS_OSS" /> gehigarriari esker da posible Chrome OS.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome eguneratzen (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS sistema</translation> <translation id="6650333065969705433">Rosetta erabili nahi baduzu babestutako multimedia edukia erreproduzitzeko, Chrome berrabiarazi behar duzu.</translation> <translation id="6676384891291319759">Sartu Interneten</translation> <translation id="6679975945624592337">Onartu Google Chrome atzeko planoan abiaraztea</translation> <translation id="6750954913813541382">Ortografia-akatsak konpontzeko, Chrome-k Google-ri bidaltzen dio arakatzailean idazten duzun testua</translation> +<translation id="6755885556185485672">Chrome OS sistema ez da behar bezala itxi.</translation> <translation id="677276454032249905">Chrome-tik irten nahi duzu hala ere?</translation> <translation id="683440813066116847">Google Chrome Canary kanalean mDNS trafikoa baimentzeko sarrera-araua.</translation> <translation id="6885412569789873916">Chrome Beta aplikazioak</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Google Chrome-ren segurtasun-eguneratze berezi bat aplikatu berri da. Berrabiarazi gailua, eta fitxak leheneratuko dizkizugu.</translation> <translation id="8521348052903287641">Google Chrome Dev-ek mDNS trafikoa baimentzeko sarrerako araua.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Laneko profila eta profil pertsonala guztiz bereizita daude.</translation> <translation id="8556340503434111824">Google Chrome-ren bertsio berri bat erabilgarri dago; inoiz baino bizkorragoa da.</translation> <translation id="861359755029082151">Rosetta-rekin, Chrome-k orri honetako babestutako multimedia-edukia erreproduzi dezake.</translation> <translation id="8614913330719544658">Google Chrome-k ez du erantzuten. Berrabiarazi nahi duzu?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Babestutako multimedia-edukia Chrome-n erreproduzitzeko, Rosetta instalatu behar duzu. Orain instalatu nahi duzu?</translation> <translation id="8914504000324227558">Berrabiarazi Chrome</translation> <translation id="8922193594870374009">Zenbaki bat <ph name="ORIGIN" /> webgunetik Android-eko telefonora bidaltzeko, hasi Chrome-ko saioa bi gailuetan.</translation> +<translation id="8986207147630327271">Laneko profila gehitzen ari zara arakatzaile honetan, eta laneko profilaren gaineko kontrola soilik eman diozu administratzaileari.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome arakatzailearen eguneratze bat dago erabilgarri}=1{Chrome arakatzailearen eguneratze bat dago erabilgarri}other{Chrome arakatzailearen eguneratze batek # egun daramatza erabilgarri}}</translation> <translation id="9026991721384951619">Chrome OS sistemak ezin izan ditu zure datuak sinkronizatu kontuan saioa hasteko datuak iraungi egin direlako.</translation> <translation id="9067395829937117663">Windows 7 edo sistema berriagoa behar da Google Chrome erabiltzeko.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 8d2592c..b6b40f7 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -52,6 +52,7 @@ <translation id="2309047409763057870">این نصب ثانویه Google Chrome است و نمیتواند مرورگر پیشفرضتان شود.</translation> <translation id="2348335408836342058">Chrome برای این سایت به مجوز دسترسی به دوربین و میکروفون نیاز دارد</translation> <translation id="234869673307233423">Chrome نمیتواند گذرواژههایتان را بررسی کند. بعداً دوباره امتحان کنید.</translation> +<translation id="235650106824528204">سرپرست نمایه کاری میتواند دادههای Chrome را که درطول استفاده از این نمایه ایجاد شدهاند (مثل ایجاد سابقه نشانکها، گذرواژهها، و دیگر تنظیمات) بردارد. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome قادر به همگامسازی دادههای شما نبود زیرا همگامسازی برای دامنه شما قابل دسترسی نیست.</translation> <translation id="2467438592969358367">Google Chrome میخواهد گذرواژههای شما را صادر کند. برای اجازه به این کار، گذرواژه Windows خود را تایپ کنید.</translation> <translation id="2485422356828889247">حذف نصب</translation> @@ -169,12 +170,14 @@ <translation id="573759479754913123">درباره Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome راهاندازی نشد. دوباره امتحان کنید.</translation> +<translation id="5851757216820085940">اگر چند «حساب Google» دارید، میتوانید آنها را به <ph name="DEVICE_TYPE" /> اضافه کنید. حسابهایتان در مرورگر Chrome و «فروشگاه Play» و همچنین سرویسهایی مثل Gmail، Drive، و YouTube دردسترس خواهند بود.<ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome میخواهد گذرواژهها را ویرایش کند.</translation> <translation id="5895138241574237353">راهاندازی مجدد</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ورود به سیستم شبکه</translation> <translation id="5940385492829620908">وب، نشانکها و موارد دیگر Chrome شما در اینجا هستند.</translation> <translation id="5941830788786076944">Google Chrome مرورگر پیشفرض شود</translation> <translation id="6070348360322141662">برای امنیت بیشتر، Google Chrome دادههای شما را رمزگذاری میکند</translation> +<translation id="608006075545470555">افزودن نمایه کاری به این مرورگر</translation> <translation id="6113794647360055231">Chrome اکنون بهتر شده است</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -186,10 +189,12 @@ <translation id="6368958679917195344">Chrome OS با یک <ph name="BEGIN_LINK_CROS_OSS" />نرمافزار منبع آزاد<ph name="END_LINK_CROS_OSS" /> دیگر امکانپذیر است.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">درحال بهروزرسانی Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">سیستم Chrome OS</translation> <translation id="6650333065969705433">برای استفاده از Rosetta برای پخش رسانه محافظتشده، باید Chrome را بازراهاندازی کنید.</translation> <translation id="6676384891291319759">دسترسی به اینترنت</translation> <translation id="6679975945624592337">اجازه به Google Chrome برای اجرا در پسزمینه</translation> <translation id="6750954913813541382">Chrome برای رفع غلطهای املایی، نوشتاری را که در مرورگر تایپ میکنید به Google ارسال میکند</translation> +<translation id="6755885556185485672">Chrome OS بهدرستی خاموش نشده است.</translation> <translation id="677276454032249905">درهرصورت از Chrome خارج میشوید؟</translation> <translation id="683440813066116847">قانون ترافیک ورودی برای Google Chrome Canary به منظور اجازه به ترافیک mDNS .</translation> <translation id="6885412569789873916">برنامههای Chrome نسخه بتا</translation> @@ -248,6 +253,7 @@ <translation id="8498858610309223613">لحظاتی پیش بهروزرسانی امنیتی ویژهای برای Google Chrome اعمال شد. هماکنون بازراهاندازی کنید و ما برگههایتان را بازیابی خواهیم کرد.</translation> <translation id="8521348052903287641">قانون ترافیک ورودی Google Chrome نسخه Dev برای امکان دادن به ترافیک mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">این نمایه کاری کاملاً مجزا از نمایه شخصیتان است.</translation> <translation id="8556340503434111824">نسخه جدیدی از Google Chrome وجود دارد که سریعتر از همیشه است.</translation> <translation id="861359755029082151">Rosetta به Chrome امکان میدهد رسانه محافظتشده را در این صفحه پخش کند.</translation> <translation id="8614913330719544658">Google Chrome پاسخ نمیدهد. مجدداً راهاندازی شود؟</translation> @@ -266,6 +272,7 @@ <translation id="8907709077090383765">برای اینکه Chrome بتواند رسانه محافظتشده پخش کند، باید Rosetta را نصب کنید. میخواهید آن را اکنون نصب کنید؟</translation> <translation id="8914504000324227558">راهاندازی مجدد Chrome</translation> <translation id="8922193594870374009">برای ارسال شماره از <ph name="ORIGIN" /> به تلفن Android خود، در هر دو دستگاه به سیستم Chrome وارد شوید.</translation> +<translation id="8986207147630327271">با این کار، نمایه کاری را به این مرورگر اضافه میکنید و فقط کنترل نمایه کاری را دراختیار سرپرست قرار میدهید.</translation> <translation id="8999208279178790196">{0,plural, =0{بهروزرسانی Chrome دردسترس است}=1{بهروزرسانی Chrome دردسترس است}one{بهروزرسانی Chrome از # روز پیش دردسترس است}other{بهروزرسانی Chrome از # روز پیش دردسترس است}}</translation> <translation id="9026991721384951619">سیستمعامل Chrome قادر به همگامسازی دادههایتان نبود زیرا جزئیات ورود به سیستم حساب شما بهروز نیست.</translation> <translation id="9067395829937117663">Google Chrome به Windows 7 یا بالاتر نیاز دارد.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb index 70f31c0..d2b52ccb 100644 --- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb +++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Cette installation de Google Chrome est secondaire. Celui-ci ne peut donc pas servir de navigateur par défaut.</translation> <translation id="2348335408836342058">Chrome a besoin de votre autorisation pour accéder à votre appareil photo et à votre micro pour ce site</translation> <translation id="234869673307233423">Chrome ne peut pas vérifier vos mots de passe. Réessayez plus tard.</translation> +<translation id="235650106824528204">L'administrateur du profil professionnel peut retirer toutes les données Chrome générées durant l'utilisation de ce profil (comme la création de favoris, l'historique, les mots de passe et d'autres paramètres). <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome ne peut pas synchroniser vos données, car la synchronisation n'est pas offerte pour votre domaine.</translation> <translation id="2467438592969358367">Google Chrome veut exporter vos mots de passe. Pour autoriser cette action, entrez votre mot de passe Windows.</translation> <translation id="2485422356828889247">Désinstaller</translation> @@ -176,12 +177,14 @@ <translation id="573759479754913123">À propos de Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Impossible de lancer Chrome. Réessayez.</translation> +<translation id="5851757216820085940">Si vous avez plusieurs comptes Google, vous pouvez les ajouter à votre <ph name="DEVICE_TYPE" />. Vos comptes seront accessibles dans le navigateur Chrome et dans la boutique Play Store ainsi que dans les services comme Gmail, Disque et YouTube.<ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome essaie de modifier des mots de passe.</translation> <translation id="5895138241574237353">Redémarrer</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Connexion au réseau</translation> <translation id="5940385492829620908">Votre contenu Web, vos favoris et toutes vos données de Google Chrome sont conservés ici.</translation> <translation id="5941830788786076944">Faire de Google Chrome le navigateur par défaut</translation> <translation id="6070348360322141662">Pour une sécurité accrue, Google Chrome va crypter vos données</translation> +<translation id="608006075545470555">Ajouter le profil professionnel à ce navigateur</translation> <translation id="6113794647360055231">Google Chrome vient de s'améliorer</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> — Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome bêta</translation> @@ -193,10 +196,12 @@ <translation id="6368958679917195344">Chrome OS fonctionne grâce à d'autres <ph name="BEGIN_LINK_CROS_OSS" />logiciels libres<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome pour les concepteurs</translation> <translation id="6566149418543181476">Mise à jour de Google Chrome en cours (<ph name="PROGRESS_PERCENT" />)…</translation> +<translation id="6568793831116033768">Système Chrome OS</translation> <translation id="6650333065969705433">Pour utiliser Rosetta afin de faire jouer les fichiers multimédias protégés, vous devez redémarrer Chrome.</translation> <translation id="6676384891291319759">Accéder à Internet</translation> <translation id="6679975945624592337">Laisser Google Chrome s'exécuter en arrière-plan</translation> <translation id="6750954913813541382">Pour corriger les erreurs d'orthographe, Chrome envoie à Google le texte que vous tapez dans le navigateur</translation> +<translation id="6755885556185485672">Chrome OS n'a pas été éteint correctement.</translation> <translation id="677276454032249905">Quitter Chrome quand même?</translation> <translation id="683440813066116847">Règle de trafic entrant pour Google Chrome Canary autorisant le trafic mDNS.</translation> <translation id="6885412569789873916">Applications Chrome bêta</translation> @@ -255,6 +260,7 @@ <translation id="8498858610309223613">Une mise à jour de sécurité spéciale pour Google Chrome vient d'être effectuée. Redémarrez maintenant, et nous restaurerons vos onglets.</translation> <translation id="8521348052903287641">Règle de trafic entrant pour Google Chrome Dev autorisant le trafic mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Ce profil professionnel est distinct de votre profil personnel.</translation> <translation id="8556340503434111824">Une nouvelle version de Google Chrome est maintenant offerte. Il est plus rapide que jamais.</translation> <translation id="861359755029082151">Rosetta permet à Chrome de faire jouer les fichiers multimédias protégés sur cette page.</translation> <translation id="8614913330719544658">Google Chrome ne répond pas. Voulez-vous le relancer maintenant?</translation> @@ -273,6 +279,7 @@ <translation id="8907709077090383765">Pour permettre à Chrome de faire jouer les fichiers multimédias protégés, vous devez installer Rosetta. Souhaitez-vous l'installer maintenant?</translation> <translation id="8914504000324227558">Relancer Google Chrome</translation> <translation id="8922193594870374009">Pour envoyer un numéro de <ph name="ORIGIN" /> vers votre téléphone Android, connectez-vous à Chrome sur les deux appareils.</translation> +<translation id="8986207147630327271">Vous ajoutez un profil professionnel à ce navigateur et vous octroyez uniquement le contrôle de ce profil à votre administrateur.</translation> <translation id="8999208279178790196">{0,plural, =0{Une mise à jour de Chrome est proposée}=1{Une mise à jour de Chrome est proposée}one{Une mise à jour de Chrome est proposée depuis # jour}many{A Chrome update has been available for # days}other{Une mise à jour de Chrome est proposée depuis # jours}}</translation> <translation id="9026991721384951619">Chrome OS n'a pas pu synchroniser vos données, car vos renseignements de connexion ne sont plus à jour.</translation> <translation id="9067395829937117663">Google Chrome requiert Windows 7 ou une version ultérieure.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb index fa82d4a..b581df2 100644 --- a/chrome/app/resources/google_chrome_strings_gl.xtb +++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Esta é unha instalación secundaria de Google Chrome e non se pode converter no teu navegador predeterminado.</translation> <translation id="2348335408836342058">Chrome necesita permiso para acceder á cámara e ao micrófono neste sitio</translation> <translation id="234869673307233423">Chrome non puido comprobar os teus contrasinais. Téntao de novo máis tarde.</translation> +<translation id="235650106824528204">O administrador do perfil de traballo pode quitar os datos de Chrome que se xeren durante o uso deste perfil (por exemplo, os marcadores, o historial, os contrasinais e outras opcións de configuración). <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome non puido sincronizar os teus datos porque a sincronización non está dispoñible para o teu dominio.</translation> <translation id="2467438592969358367">Google Chrome quere exportar os teus contrasinais. Escribe o teu contrasinal de Windows para permitir esta acción.</translation> <translation id="2485422356828889247">Desinstalar</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Acerca de Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> (versión experimental de Google Chrome)</translation> <translation id="5804318322022881572">Non se puido iniciar Chrome. Téntao de novo.</translation> +<translation id="5851757216820085940">Se tes varias Contas de Google, podes engadilas ao teu dispositivo (<ph name="DEVICE_TYPE" />). Ao facelo, estarán dispoñibles no navegador Chrome e en Play Store, así como noutros servizos (por exemplo, Gmail, Drive e YouTube). <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome está tentando editar os contrasinais.</translation> <translation id="5895138241574237353">Reiniciar</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> (inicio de sesión de rede)</translation> <translation id="5940385492829620908">Aquí podes atopar as túas páxinas web, marcadores e outros contidos de Chrome.</translation> <translation id="5941830788786076944">Converter Google Chrome no navegador predeterminado</translation> <translation id="6070348360322141662">Para obter unha maior seguranza, Google Chrome encriptará os teus datos</translation> +<translation id="608006075545470555">Engadir un perfil de traballo a este navegador</translation> <translation id="6113794647360055231">Chrome introduciu melloras</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> (versión beta de Google Chrome)</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Chrome OS está creado con <ph name="BEGIN_LINK_CROS_OSS" />software de código aberto<ph name="END_LINK_CROS_OSS" /> adicional.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> (Google Chrome para programadores)</translation> <translation id="6566149418543181476">Actualizando Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Sistema Chrome OS</translation> <translation id="6650333065969705433">Se queres usar Rosetta para reproducir contido multimedia protexido, debes reiniciar Chrome.</translation> <translation id="6676384891291319759">Accede a Internet</translation> <translation id="6679975945624592337">Permitir que Google Chrome se execute en segundo plano</translation> <translation id="6750954913813541382">Para corrixir erros ortográficos, Chrome enviaralle a Google o texto que escribas no navegador</translation> +<translation id="6755885556185485672">Chrome OS non se pechou correctamente.</translation> <translation id="677276454032249905">Queres saír de Chrome de todas formas?</translation> <translation id="683440813066116847">Regra de entrada para Google Chrome Canary para permitir tráfico mDNS.</translation> <translation id="6885412569789873916">Aplicacións de Chrome Beta</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Acábase de aplicar unha actualización especial de seguranza para Google Chrome. Reinicia agora o navegador para restaurar as pestanas.</translation> <translation id="8521348052903287641">Regra de entrada para que Google Chrome Dev permita tráfico mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Este perfil de traballo é totalmente independente do teu perfil persoal.</translation> <translation id="8556340503434111824">Hai unha nova versión de Google Chrome dispoñible que é máis rápida que as anteriores.</translation> <translation id="861359755029082151">Rosetta permite que Chrome reproduza contido multimedia protexido nesta páxina.</translation> <translation id="8614913330719544658">Google Chrome non responde. Queres volver inicialo agora?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Para permitir que Chrome reproduza contido multimedia protexido, debes instalar Rosetta. Queres facelo agora?</translation> <translation id="8914504000324227558">Reiniciar Chrome</translation> <translation id="8922193594870374009">Para enviar un número desde <ph name="ORIGIN" /> ao teu teléfono Android, inicia sesión en Chrome nos dous dispositivos.</translation> +<translation id="8986207147630327271">Estás a piques de engadir un perfil de traballo a este navegador e de permitir que o teu administrador controle só o perfil de traballo.</translation> <translation id="8999208279178790196">{0,plural, =0{Hai unha actualización de Chrome dispoñible}=1{Hai unha actualización de Chrome dispoñible}other{Hai unha actualización de Chrome que leva dispoñible # días}}</translation> <translation id="9026991721384951619">Chrome OS non puido sincronizar os teus datos debido a que a información de inicio de sesión na túa conta está caducada.</translation> <translation id="9067395829937117663">Google Chrome require Windows 7 ou unha versión posterior.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hy.xtb b/chrome/app/resources/google_chrome_strings_hy.xtb index 5e79169..1dd915e 100644 --- a/chrome/app/resources/google_chrome_strings_hy.xtb +++ b/chrome/app/resources/google_chrome_strings_hy.xtb
@@ -54,6 +54,7 @@ <translation id="2309047409763057870">Սա Google Chrome-ի երկրորդային տեղադրումն է: Այն չի կարող դառնալ ձեր կանխադրված դիտարկիչը:</translation> <translation id="2348335408836342058">Chrome-ին այս կայքի համար անհրաժեշտ է ձեր տեսախցիկն ու խոսափողը օգտագործելու թույլտվություն</translation> <translation id="234869673307233423">Chrome-ը չի կարող ստուգել ձեր գաղտնաբառերը։ Փորձեք ավելի ուշ։</translation> +<translation id="235650106824528204">Աշխատանքային պրոֆիլի ադմինիստրատորը կարող է ջնջել Chrome-ի բոլոր տվյալները, որոնք ստեղծվում են այս պրոֆիլի օգտագործման ընթացքում (օրինակ՝ էջանիշներ, պատմություն, գաղտնաբառեր և այլ կարգավորումներ)։ <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome-ը չկարողացավ համաժամացնել ձեր տվյալները, քանի որ Sync ծառայությունը մատչելի չէ ձեր տիրույթի համար:</translation> <translation id="2467438592969358367">Google Chrome-ն ուզում է արտահանել ձեր գաղտնաբառերը: Թույլատրելու համար մուտքագրեք Windows-ի ձեր գաղտնաբառը:</translation> <translation id="2485422356828889247">Ապատեղադրել</translation> @@ -175,12 +176,14 @@ <translation id="573759479754913123">Chrome OS-ի մասին</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation> <translation id="5804318322022881572">Չհաջողվեց գործարկել Chrome-ը։ Նորից փորձեք։</translation> +<translation id="5851757216820085940">Եթե դուք մի քանի Google հաշիվ ունեք, կարող եք դրանք ավելացնել ձեր <ph name="DEVICE_TYPE" /> սարքում։ Ձեր հաշիվները հասանելի կլինեն Chrome դիտարկիչում և Play Խանութում, ինչպես նաև Gmail, Drive, YouTube և այլ ծառայություններում։<ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome-ը փորձում է փոխել գաղտնաբառերը:</translation> <translation id="5895138241574237353">Վերագործարկել</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Ցանցի մուտք</translation> <translation id="5940385492829620908">Ձեր վեբ էջերը, էջանիշները և Chrome-ի մնացած տվյալներն այստեղ են:</translation> <translation id="5941830788786076944">Դարձնել Google Chrome-ը կանխադրված դիտարկիչը</translation> <translation id="6070348360322141662">Լրացուցիչ անվտանգության համար Google Chrome-ը կգաղտնագրի ձեր տվյալները</translation> +<translation id="608006075545470555">Աշխատանքային պրոֆիլի ավելացում այս դիտարկիչում</translation> <translation id="6113794647360055231">Chrome-ը բարելավվել է</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome բետա</translation> @@ -192,10 +195,12 @@ <translation id="6368958679917195344">Chrome OS-ն ստեղծվել է շնորհիվ լրացուցիչ <ph name="BEGIN_LINK_CROS_OSS" />բաց կոդով ծրագրակազմի<ph name="END_LINK_CROS_OSS" />:</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome-ի թարմացում (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS համակարգ</translation> <translation id="6650333065969705433">Rosetta հավելվածի միջոցով պաշտպանված բովանդակություն նվագարկելու համար անհրաժեշտ է վերագործարկել Chrome-ը։</translation> <translation id="6676384891291319759">Մտնել համացանց</translation> <translation id="6679975945624592337">Թույլատրել Google Chrome-ին աշխատել ֆոնային ռեժիմում</translation> <translation id="6750954913813541382">Ուղղագրական սխալները շտկելու համար Chrome-ը Google-ին է ուղարկում դիտարկիչում ձեր մուտքագրած տեքստը</translation> +<translation id="6755885556185485672">Chrome OS-ը ճիշտ չի փակվել:</translation> <translation id="677276454032249905">Փակե՞լ Chrome-ը։</translation> <translation id="683440813066116847">Թույլատրել Google Chrome Canary-ում տվյալների մուտքային հոսքի փոխանցումը mDNS հաղորդակարգով:</translation> <translation id="6885412569789873916">Chrome Բետա հավելվածներ</translation> @@ -254,6 +259,7 @@ <translation id="8498858610309223613">Google Chrome-ի անվտանգությունն ապահովող հատուկ թարմացումը տեղադրվել է: Վերագործարկեք Chrome-ը, և ձեր ներդիրները կվերականգնվեն:</translation> <translation id="8521348052903287641">Թույլատրել Google Chrome Dev-ում մուտքային հոսքի փոխանցումը mDNS հաղորդակարգով:</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Այս աշխատանքային պրոֆիլն ամբողջովին առանձնացված է ձեր անձնական պրոֆիլից։</translation> <translation id="8556340503434111824">Google Chrome-ի նոր տարբերակը մատչելի է և այն շատ ավելի արագ է:</translation> <translation id="861359755029082151">Rosetta հավելվածի շնորհիվ Chrome դիտարկիչը կկարողանա պաշտպանված բովանդակություն նվագարկել այս էջում։</translation> <translation id="8614913330719544658">Google Chrome-ը չի պատասխանում: Վերագործարկե՞լ:</translation> @@ -272,6 +278,7 @@ <translation id="8907709077090383765">Chrome դիտարկիչում պաշտպանված բովանդակություն նվագարկելու համար տեղադրեք Rosetta հավելվածը։ Տեղադրե՞լ հիմա։</translation> <translation id="8914504000324227558">Chrome-ի վերագործարկում</translation> <translation id="8922193594870374009">Հեռախոսահամարը <ph name="ORIGIN" /> կայքից ձեր Android հեռախոսին ուղարկելու համար երկու սարքերի Chrome դիտարկիչներում մտեք հաշիվ։</translation> +<translation id="8986207147630327271">Դուք ավելացնում եք աշխատանքային պրոֆիլ այս դիտարկիչում և միայն դրա վերահսկողությունը տրամադրում ադմինիստրատորին։</translation> <translation id="8999208279178790196">{0,plural, =0{Հասանելի է Chrome-ի նոր տարբերակը}=1{Հասանելի է Chrome-ի նոր տարբերակը}one{Chrome-ի նոր տարբերակը # օր է հասանելի է}other{Chrome-ի նոր տարբերակը # օր է հասանելի է}}</translation> <translation id="9026991721384951619">Chrome OS-ը չկարողացավ համաժամացնել տվյալները, քանի որ ձեր հաշիվ մուտք գործելու տվյալները հնացած են:</translation> <translation id="9067395829937117663">Google Chrome-ի համար հարկավոր է Windows 7 կամ ավելի նոր տարբերակ:</translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index dbd4313..db86c701 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Þetta er aukaleg uppsetning á Google Chrome sem ekki er hægt að gera að sjálfgefnum vafra.</translation> <translation id="2348335408836342058">Chrome þarf leyfi til að nota myndavélina og hljóðnemann á þessu vefsvæði</translation> <translation id="234869673307233423">Chrome getur ekki athugað aðgangsorðin þín. Reyndu aftur síðar.</translation> +<translation id="235650106824528204">Stjórnandi vinnuprófíla getur fjarlægt öll Chrome gögn sem verða til við notkun þessa prófíls (þ.m.t. bókamerki, feril, aðgangsorð og aðrar stillingar). <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome gat ekki samstillt gögnin þín vegna þess að samstilling er ekki í boði fyrir lénið þitt.</translation> <translation id="2467438592969358367">Google Chrome vill flytja út aðgangsorðin þín. Sláðu inn Windows-aðgangsorðið þitt til að leyfa það.</translation> <translation id="2485422356828889247">Fjarlægja</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Um Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Ekki var hægt að ræsa Chrome. Reyndu aftur.</translation> +<translation id="5851757216820085940">Ef þú ert með marga Google reikninga geturðu bætt þeim við <ph name="DEVICE_TYPE" />. Reikningarnir þínir verða tiltækir í Chrome vafranum og Play Store sem og í þjónustum á borð við Gmail, Drive og YouTube.<ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome er að reyna að breyta aðgangsorðum.</translation> <translation id="5895138241574237353">Endurræsa</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – innskráning á net</translation> <translation id="5940385492829620908">Hér er vefefnið þitt, bókamerkin og annað dót úr Chrome.</translation> <translation id="5941830788786076944">Gera Google Chrome að sjálfgefnum vafra</translation> <translation id="6070348360322141662">Google Chrome dulkóðar gögnin þín til að auka öryggið</translation> +<translation id="608006075545470555">Bæta vinnusniði við þennan vafra</translation> <translation id="6113794647360055231">Chrome er nú enn betra</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - tilraunaútgáfa Google Chrome</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Chrome OS á tilvist sína að þakka öðrum <ph name="BEGIN_LINK_CROS_OSS" />opnum hugbúnaði<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Uppfærir Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS kerfi</translation> <translation id="6650333065969705433">Þú þarft að endurræsa Chrome til að nota Rosetta til að spila varið efni.</translation> <translation id="6676384891291319759">Aðgangur að internetinu</translation> <translation id="6679975945624592337">Leyfa Google Chrome að keyra í bakgrunni</translation> <translation id="6750954913813541382">Til að lagfæra stafsetningarvillur sendir Chrome textann sem þú skrifar í vafranum til Google</translation> +<translation id="6755885556185485672">Chrome OS lokaðist ekki á réttan hátt.</translation> <translation id="677276454032249905">Viltu samt loka Chrome?</translation> <translation id="683440813066116847">Regla á innleið til að láta Google Chrome Canary leyfa mDNS-umferð.</translation> <translation id="6885412569789873916">Chrome Beta forrit</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Sérstök öryggisuppfærsla fyrir Google Chrome var tekin í notkun. Endurræstu núna og við opnum flipana þína aftur.</translation> <translation id="8521348052903287641">Innleiðarregla til að láta Google Chrome Dev leyfa mDNS-umferð.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Þessi vinnuprófíll er algjörlega aðskilinn þínum eigin prófíl.</translation> <translation id="8556340503434111824">Ný útgáfa af Google Chrome er í boði, og hún er hraðari en nokkru sinni fyrr.</translation> <translation id="861359755029082151">Rosetta gerir Chrome kleift að spila varið efni á þessari síðu.</translation> <translation id="8614913330719544658">Google Chrome svarar ekki. Endurræsa núna?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Þú þarft að setja upp Rosetta svo Chrome geti spilað varið efni. Viltu setja það upp núna?</translation> <translation id="8914504000324227558">Endurræsa Chrome</translation> <translation id="8922193594870374009">Til að senda númer úr <ph name="ORIGIN" /> í Android símann þinn skaltu skrá þig inn á Chrome í báðum tækjunum.</translation> +<translation id="8986207147630327271">Þú ert að bæta vinnuprófíl við þennan vafra og veita stjórnanda þínum leyfi til að stjórna vinnuprófílnum eingöngu.</translation> <translation id="8999208279178790196">{0,plural, =0{Uppfærsla er í boði fyrir Chrome}=1{Uppfærsla er í boði fyrir Chrome}one{Uppfærsla hefur verið í boði fyrir Chrome í # dag}other{Uppfærsla hefur verið í boði fyrir Chrome í # daga}}</translation> <translation id="9026991721384951619">Chrome OS gat ekki samstillt gögnin þín vegna þess að innskráningarupplýsingar reikningsins eru úreltar.</translation> <translation id="9067395829937117663">Google Chrome krefst Windows 7 eða nýrri útgáfu.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index cd2dc16..23c2045e 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -52,6 +52,7 @@ <translation id="2309047409763057870">Questa è un'installazione secondaria, di conseguenza Google Chrome non può essere impostato come browser predefinito.</translation> <translation id="2348335408836342058">Per questo sito Chrome ha bisogno dell'autorizzazione ad accedere alla fotocamera e al microfono</translation> <translation id="234869673307233423">Chrome non può controllare le tue password. Riprova più tardi.</translation> +<translation id="235650106824528204">Tutti i dati di Chrome generati durante l'utilizzo di questo profilo (come la creazione di preferiti, cronologia, password e altre impostazioni) possono essere rimossi dall'amministratore del profilo di lavoro. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Impossibile sincronizzare i dati in Google Chrome perché la sincronizzazione non è disponibile per il tuo dominio.</translation> <translation id="2467438592969358367">Google Chrome vuole esportare le password. Per consentire l'esportazione, digita la tua password Windows.</translation> <translation id="2485422356828889247">Disinstalla</translation> @@ -168,12 +169,14 @@ <translation id="573759479754913123">Informazioni su Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Impossibile avviare Chrome. Riprova.</translation> +<translation id="5851757216820085940">Se hai più Account Google, puoi aggiungerli al tuo <ph name="DEVICE_TYPE" />. I tuoi account saranno disponibili nel browser Chrome e nel Play Store, nonché in servizi come Gmail, Drive e YouTube.<ph name="LINK_BEGIN" />Scopri di più<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome sta cercando di modificare le password.</translation> <translation id="5895138241574237353">Riavvia</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Accesso rete</translation> <translation id="5940385492829620908">Il tuoi siti web, i tuoi segnalibri e gli altri contenuti Chrome sempre disponibili e aggiornati qui.</translation> <translation id="5941830788786076944">Imposta Google Chrome come browser predefinito</translation> <translation id="6070348360322141662">Per maggiore sicurezza, Google Chrome cripterà i tuoi dati</translation> +<translation id="608006075545470555">Aggiungi profilo di lavoro a questo browser</translation> <translation id="6113794647360055231">Da oggi Chrome è ancora meglio</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -185,10 +188,12 @@ <translation id="6368958679917195344">Chrome OS è reso possibile da <ph name="BEGIN_LINK_CROS_OSS" />software open source<ph name="END_LINK_CROS_OSS" /> aggiuntivi.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome per gli sviluppatori</translation> <translation id="6566149418543181476">Aggiornamento di Google Chrome in corso (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Sistema Chrome OS</translation> <translation id="6650333065969705433">Per poter usare Rosetta per riprodurre contenuti multimediali protetti, devi riavviare Chrome.</translation> <translation id="6676384891291319759">Accesso a Internet</translation> <translation id="6679975945624592337">Lascia Google Chrome in esecuzione in background</translation> <translation id="6750954913813541382">Per correggere gli errori ortografici, Chrome invia a Google il testo che digiti nel browser</translation> +<translation id="6755885556185485672">Chrome OS non si è chiuso correttamente.</translation> <translation id="677276454032249905">Vuoi uscire comunque da Chrome?</translation> <translation id="683440813066116847">Regola inbound per consentire il traffico mDNS in Google Chrome Canary.</translation> <translation id="6885412569789873916">App di Chrome Beta</translation> @@ -247,6 +252,7 @@ <translation id="8498858610309223613">È stato appena applicato un aggiornamento di sicurezza speciale per Google Chrome. Riavvia ora e le schede verranno ripristinate.</translation> <translation id="8521348052903287641">Regola inbound per consentire il traffico mDNS in Google Chrome Dev.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Questo profilo di lavoro è completamente separato dal tuo profilo personale.</translation> <translation id="8556340503434111824">È disponibile una nuova versione di Google Chrome con una velocità senza precedenti.</translation> <translation id="861359755029082151">Rosetta consente di riprodurre i contenuti multimediali protetti in questa pagina su Chrome.</translation> <translation id="8614913330719544658">Google Chrome non risponde. Riavviarlo ora?</translation> @@ -265,6 +271,7 @@ <translation id="8907709077090383765">Per poter riprodurre contenuti multimediali protetti su Chrome, devi installare Rosetta. Vuoi installare ora?</translation> <translation id="8914504000324227558">Riavvia Chrome</translation> <translation id="8922193594870374009">Per inviare un numero da <ph name="ORIGIN" /> al tuo telefono Android, accedi a Chrome su entrambi i dispositivi.</translation> +<translation id="8986207147630327271">Stai per aggiungere a questo browser un profilo di lavoro che sarà controllato dal tuo amministratore.</translation> <translation id="8999208279178790196">{0,plural, =0{È disponibile un aggiornamento di Chrome}=1{È disponibile un aggiornamento di Chrome}other{È disponibile un aggiornamento di Chrome da # giorni}}</translation> <translation id="9026991721384951619">Impossibile sincronizzare i dati in Chrome OS perché i dati di accesso dell'account sono obsoleti.</translation> <translation id="9067395829937117663">Google Chrome richiede Windows 7 o versioni successive.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kk.xtb b/chrome/app/resources/google_chrome_strings_kk.xtb index 5680ad28..ff8fab64 100644 --- a/chrome/app/resources/google_chrome_strings_kk.xtb +++ b/chrome/app/resources/google_chrome_strings_kk.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Бұл – Google Chrome браузерінің қайта орнатылған нұсқасы және әдепкі браузер бола алмайды.</translation> <translation id="2348335408836342058">Chrome браузеріне бұл сайтта камераны және микрофонды пайдалану үшін рұқсат керек</translation> <translation id="234869673307233423">Chrome сіздің құпия сөздеріңізді тексере алмайды. Кейінірек қайталап көріңіз.</translation> +<translation id="235650106824528204">Жұмыс профилінің әкімшісі осы профильді пайдалану кезінде құрылатын Chrome браузерінің кез келген дерегін (бетбелгілер, тарих, құпия сөздер жасау және басқа параметрлер сияқты) жоя алады. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome деректеріңізді синхрондай алмады, себебі синхрондау функциясы доменіңіз үшін қолжетімді емес.</translation> <translation id="2467438592969358367">Google Chrome құпия сөздерді экспорттағысы келеді. Бұған рұқсат беру үшін Windows құпия сөзіңізді теріңіз.</translation> <translation id="2485422356828889247">Жою</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Chrome OS туралы</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome браузері іске қосылмады. Қайталап көріңіз.</translation> +<translation id="5851757216820085940">Бірнеше Google есептік жазбаңыз болса, оларды <ph name="DEVICE_TYPE" /> құрылғыңызға қоса аласыз. Есептік жазбаларыңыз Chrome браузері мен Play Store қолданбасында, сондай-ақ Gmail, Drive және YouTube сияқты қызметтерде қолжетімді болады.<ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome құпия сөздерді өзгерткісі келеді.</translation> <translation id="5895138241574237353">Қайта іске қосу</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Желіге кіру</translation> <translation id="5940385492829620908">Веб-сайттар, бетбелгілер және басқа Chrome материалдары осы жерде болады.</translation> <translation id="5941830788786076944">Google Chrome қолданбасын әдепкі браузер етіп орнату</translation> <translation id="6070348360322141662">Қауіпсіздікті күшейту үшін Google Chrome деректеріңізді шифрлайды</translation> +<translation id="608006075545470555">Осы браузерге жұмыс профилін қосу</translation> <translation id="6113794647360055231">Chrome жақсара түсті</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome бета нұсқасы</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Chrome OS қосымша <ph name="BEGIN_LINK_CROS_OSS" />ашық дереккөз бағдарламалық жасақтамасы<ph name="END_LINK_CROS_OSS" /> арқылы жасалды.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome әзірлеуші нұсқасы</translation> <translation id="6566149418543181476">Google Chrome жаңартылуда (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS жүйесі</translation> <translation id="6650333065969705433">Rosetta қолданбасында қорғалған медиамазмұнды ойнату үшін Chrome браузерін қайта қосуыңыз керек.</translation> <translation id="6676384891291319759">Интернетке кіру</translation> <translation id="6679975945624592337">Google Chrome браузеріне фондық режимде жұмыс істеуге рұқсат беру</translation> <translation id="6750954913813541382">Емле қателерін түзету үшін Chrome браузерде терілетін мәтінді Google-ға жібереді.</translation> +<translation id="6755885556185485672">Chrome OS дұрыс өшірілмеді.</translation> <translation id="677276454032249905">Chrome браузерінен бәрібір шығасыз ба?</translation> <translation id="683440813066116847">mDNS трафигіне рұқсат беретін Google Chrome кіріс ережесі.</translation> <translation id="6885412569789873916">Chrome Beta қолданбалары</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Google Chrome браузеріне қазір ғана қауіпсіздік бойынша арнайы жаңартылған нұсқа қолданылды. Оны қазір қайта ашсаңыз, ондағы қойындылар қалпына келтіріледі.</translation> <translation id="8521348052903287641">mDNS трафигіне рұқсат беретін Google Chrome Dev кіріс ережесі.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Бұл жұмыс профилі жеке профиліңізден толық ажыратылған.</translation> <translation id="8556340503434111824">Жаңа жылдамырақ Google Chrome нұсқасы қолжетімді.</translation> <translation id="861359755029082151">Rosetta қолданбасы Chrome браузеріне осы беттегі қорғалған медиамазмұнды ойнатуға мүмкіндік береді.</translation> <translation id="8614913330719544658">Google Chrome жауап бермейді. Қазір қайта іске қосасыз ба?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Chrome браузерінде қорғалған медиамазмұнды ойнату үшін Rosetta қолданбасын орнатуыңыз керек. Оны қазір орнатқыңыз келе ме?</translation> <translation id="8914504000324227558">Chrome қолданбасын қайта іске қосу</translation> <translation id="8922193594870374009">Нөмірді <ph name="ORIGIN" /> құрылғысынан Android телефонына жіберу үшін екі құрылғыда да Chrome браузеріне кіріңіз.</translation> +<translation id="8986207147630327271">Браузерге жұмыс профилін қосудасыз және әкімшіңізге жұмыс профилін басқаруды тапсырудасыз.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome браузерінің жаңартылған нұсқасы қолжетімді}=1{Chrome браузерінің жаңартылған нұсқасы қолжетімді}other{Chrome браузерінің жаңартылған нұсқасы # күннен бері қолжетімді}}</translation> <translation id="9026991721384951619">Chrome OS деректеріңізді синхрондай алмайды, себебі есептік жазбаңызға кіру мәліметтері ескірген.</translation> <translation id="9067395829937117663">Google Chrome браузері Windows 7 жүйесін не одан кейінгі нұсқасын қажет етеді.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb index b903ecf..aa84f4e 100644 --- a/chrome/app/resources/google_chrome_strings_kn.xtb +++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -54,6 +54,7 @@ <translation id="2309047409763057870">ಇದು Google Chrome ನ ದ್ವಿತೀಯ ಸ್ಥಾಪನೆಯಾಗಿದೆ ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="2348335408836342058">ಈ ಸೈಟ್ಗಾಗಿ ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಮತ್ತು ಮೈಕ್ರೊಫೋನ್ಗೆ ಪ್ರವೇಶಿಸಲು Chrome ಗೆ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation> <translation id="234869673307233423">Chrome ಗೆ ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> +<translation id="235650106824528204">ಈ ಪ್ರೊಫೈಲ್ನ ಬಳಕೆಯ ಸಮಯದಲ್ಲಿ ಉತ್ಪತ್ತಿಯಾಗುವ ಯಾವುದೇ Chrome ಡೇಟಾವನ್ನು (ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳ ರಚನೆಯಂತಹ) ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿರ್ವಾಹಕರು ತೆಗೆದುಹಾಕಬಹುದು. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">ನಿಮ್ಮ ಡೊಮೇನ್ನಲ್ಲಿ ಸಿಂಕ್ ಮಾಡುವ ಸೌಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ Google Chrome ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="2467438592969358367">Google Chrome ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಫ್ತು ಮಾಡಲು ಬಯಸುತ್ತದೆ. ಇದನ್ನು ಅನುಮತಿಸಲು ನಿಮ್ಮ Windows ಪಾಸ್ವರ್ಡ್ ಟೈಪ್ ಮಾಡಿ.</translation> <translation id="2485422356828889247">ಅನ್ಇನ್ಸ್ಟಾಲ್</translation> @@ -170,12 +171,14 @@ <translation id="573759479754913123">Chrome OS ಕುರಿತು</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation> +<translation id="5851757216820085940">ನೀವು ಹಲವು Google ಖಾತೆಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ನೀವು ಅವುಗಳನ್ನು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಗೆ ಸೇರಿಸಬಹುದು. ನಿಮ್ಮ ಖಾತೆಗಳು Chrome ಬ್ರೌಸರ್ ಮತ್ತು Play ಸ್ಟೋರ್ನಲ್ಲಿ ಲಭ್ಯವಾಗುವುದರ ಜೊತೆಗೆ Gmail, Drive ಮತ್ತು YouTube ನಂತಹ ಸೇವೆಗಳಲ್ಲಿ ಸಹ ಲಭ್ಯವಿರುತ್ತವೆ.<ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome, ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ.</translation> <translation id="5895138241574237353">ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ನೆಟ್ವರ್ಕ್ ಸೈನ್ ಇನ್</translation> <translation id="5940385492829620908">ನಿಮ್ಮ ವೆಬ್, ಬುಕ್ಮಾರ್ಕ್ಗಳು ಮತ್ತು ಇತರ Chrome ವಿಷಯವು ಇಲ್ಲಿ ಲೈವ್ ಆಗುತ್ತವೆ.</translation> <translation id="5941830788786076944">Google Chrome ಅನ್ನು ಡಿಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆಗಿಸು</translation> <translation id="6070348360322141662">ಹೆಚ್ಚುವರಿ ಭದ್ರತೆಗಾಗಿ, Google Chrome ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ</translation> +<translation id="608006075545470555">ಈ ಬ್ರೌಸರ್ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಸೇರಿಸಿ</translation> <translation id="6113794647360055231">Chrome ಇದೀಗ ಉತ್ತಮಗೊಂಡಿದೆ</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -187,10 +190,12 @@ <translation id="6368958679917195344">ಹೆಚ್ಚುವರಿ <ph name="BEGIN_LINK_CROS_OSS" />ಓಪನ್ ಸೋರ್ಸ್ ಸಾಫ್ಟ್ವೇರ್<ph name="END_LINK_CROS_OSS" /> ನಿಂದ Chrome OS ಸಾಕಾರಗೊಂಡಿದೆ.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS ಸಿಸ್ಟಂ</translation> <translation id="6650333065969705433">ಸುರಕ್ಷಿತ ಮಾಧ್ಯಮವನ್ನು ಪ್ಲೇ ಮಾಡುವುದಕ್ಕೆ Rosetta ಅನ್ನು ಬಳಸಲು, ನೀವು Chrome ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕು.</translation> <translation id="6676384891291319759">ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="6679975945624592337">Google Chrome ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗಲು ಅನುಮತಿಸಿ</translation> <translation id="6750954913813541382">ಕಾಗುಣಿತ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸಲು, Chrome, ನೀವು ಬ್ರೌಸರ್ನಲ್ಲಿ ಟೈಪ್ ಮಾಡುವ ಪಠ್ಯವನ್ನು Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ</translation> +<translation id="6755885556185485672">Chrome OS ಅನ್ನು ಸರಿಯಾಗಿ ಶಟ್ ಡೌನ್ ಮಾಡಲಾಗಿಲ್ಲ.</translation> <translation id="677276454032249905">ಹೇಗಿದ್ದರೂ Chrome ನಿಂದ ನಿರ್ಗಮಿಸುವುದೇ?</translation> <translation id="683440813066116847">mDNS ಟ್ರಾಫಿಕ್ಗೆ ಅನುಮತಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ Google Chrome ಕ್ಯಾನರಿಗೆ ಒಳಬರುವ ನಿಯಮ.</translation> <translation id="6885412569789873916">Chrome ಬೀಟಾ ಅಪ್ಲಿಕೇಶನ್ಗಳು</translation> @@ -249,6 +254,7 @@ <translation id="8498858610309223613">Google Chrome ಗೆ ವಿಶೇಷ ಸುರಕ್ಷತೆಯ ಅಪ್ಡೇಟ್ ಅನ್ನು ಈಗ ತಾನೇ ಅನ್ವಯಿಸಲಾಗಿದೆ. ಇದೀಗ ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಟ್ಯಾಬ್ಗಳನ್ನು ನಾವು ಮರುಸ್ಥಾಪಿಸುತ್ತೇವೆ.</translation> <translation id="8521348052903287641">mDNS ಟ್ರಾಫಿಕ್ಗೆ ಅನುಮತಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ Google Chrome ಬೀಟಾಗೆ ಒಳಬರುವ ನಿಯಮ.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">ಈ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಪ್ರತ್ಯೇಕವಾಗಿದೆ.</translation> <translation id="8556340503434111824">Google Chrome ನ ಹೊಸ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆ, ಮತ್ತು ಇದು ಎಂದಿಗಿಂತಲೂ ವೇಗವಾಗಿದೆ.</translation> <translation id="861359755029082151">Rosetta, ಈ ಪುಟದಲ್ಲಿ ಸುರಕ್ಷಿತ ಮಾಧ್ಯಮವನ್ನು ಪ್ಲೇ ಮಾಡಲು Chrome ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="8614913330719544658">Google Chrome ಸ್ಪಂದಿಸುತ್ತಿಲ್ಲ. ಇದೀಗ ಮರುಪ್ರಾರಂಭಿಸುವುದೆ? @@ -268,6 +274,7 @@ <translation id="8907709077090383765">ಸುರಕ್ಷಿತ ಮಾಧ್ಯಮವನ್ನು ಪ್ಲೇ ಮಾಡುವುದಕ್ಕೆ Chrome ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ನೀವು Rosetta ಅನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ನೀವು ಈಗಲೇ ಅದನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಬಯಸುವಿರಾ?</translation> <translation id="8914504000324227558">Chrome ಮರುಪ್ರಾರಂಭಿಸಿ</translation> <translation id="8922193594870374009"><ph name="ORIGIN" /> ನಿಂದ ನಿಮ್ಮ Android ಫೋನ್ಗೆ ಸಂಖ್ಯೆಯನ್ನು ಕಳುಹಿಸಲು, ಎರಡೂ ಸಾಧನಗಳಲ್ಲಿ Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> +<translation id="8986207147630327271">ನೀವು ಈ ಬ್ರೌಸರ್ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೇರಿಸುತ್ತಿರುವಿರಿ ಮತ್ತು ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಗೆ ಕೇವಲ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ನ ಮೇಲೆ ನಿಯಂತ್ರಣವನ್ನು ನೀಡುತ್ತಿರುವಿರಿ.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}=1{Chrome ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}one{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chrome ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}other{# ದಿನಗಳ ಮಟ್ಟಿಗೆ Chrome ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದೆ}}</translation> <translation id="9026991721384951619">ನಿಮ್ಮ ಖಾತೆಯ ಸೈನ್ ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chrome OS ಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation> <translation id="9067395829937117663">Google Chrome ಗೆ Windows 7 ಅಥವಾ ಹೆಚ್ಚಿನ ಆವೃತ್ತಿಯು ಅಗತ್ಯವಿರುತ್ತದೆ.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb index 833eb95..94ddf03 100644 --- a/chrome/app/resources/google_chrome_strings_ky.xtb +++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Бул Chromium'дун кошумча орнотулушу болгондуктан, аны демейки серепчиңиз катары тандай албайсыз.</translation> <translation id="2348335408836342058">Бул сайтта иштөө үчүн Chrome камераңызды жана микрофонуңузду колдонушу керек</translation> <translation id="234869673307233423">Chrome сырсөздөрүңүздү текшере албай жатат. Кийинчерээк кайталаңыз.</translation> +<translation id="235650106824528204">Бул профилди колдонуп жатканда Chrome'до топтолгон бардык маалыматты (түзүлгөн кыстармалар, таржымал, сырсөздөр жана башка жөндөөлөр) жумуш профилинин администратору өчүрө алат. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Домениңизде шайкештештирүү аракети жок болгондуктан, Google Chrome дайын-даректериңизди шайкештештире алган жок.</translation> <translation id="2467438592969358367">Google Chrome сырсөздөрүңүздү экспорттогону жатат. Ага уруксат берүү үчүн Windows аккаунтуңуздун сырсөзүн териңиз.</translation> <translation id="2485422356828889247">Орнотуудан чыгаруу</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Chrome OS жөнүндө</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome иштетилбей койду. Кайталап көрүңүз.</translation> +<translation id="5851757216820085940">Эгер бир нече Google аккаунтуңуз болсо, аларды <ph name="DEVICE_TYPE" /> түзмөгүнө кошуп койсоңуз болот. Аккаунттарыңыз, ошондой эле Gmail, Drive, жана YouTube сыяктуу кызматтар Chrome серепчисинде жана Play Store'до жеткиликтүү болот.<ph name="LINK_BEGIN" />Кеңири маалымат<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome сырсөздөрдү өзгөртүүгө аракет кылып жатат.</translation> <translation id="5895138241574237353">Өчүрүп күйгүзүү</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – Тармакка кирүү</translation> <translation id="5940385492829620908">Веб, кыстармалар жана башка Chrome жеке дайын-даректериңиз ушул жерде жайгашкан.</translation> <translation id="5941830788786076944">Google Chrome'ду демейки серепчи кылуу</translation> <translation id="6070348360322141662">Кошумча коопсуздук максатында, Google Chrome дайын-даректериңизди шифрлеп коёт</translation> +<translation id="608006075545470555">Ушул серепчиге жумуш профилин кошуу</translation> <translation id="6113794647360055231">Chrome жаңы эле жакшыртылды</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome бета сынамык версиясы</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Chrome OS кошумча <ph name="BEGIN_LINK_CROS_OSS" />ачык программасы<ph name="END_LINK_CROS_OSS" /> менен иштетилди.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome жаңыртылууда (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS тутуму</translation> <translation id="6650333065969705433">Корголгон медиа файлдарды Rosetta'да ойнотуу үчүн Chrome'ду өчүрүп күйгүзүү керек.</translation> <translation id="6676384891291319759">Интернетке кирүү</translation> <translation id="6679975945624592337">Google Chrome'го фондук режимде иштөөгө уруксат берүү</translation> <translation id="6750954913813541382">Орфографиялык каталарды оңдоо үчүн Chrome серепчиде терилген текстти Google кызматтарына жөнөтүп турат</translation> +<translation id="6755885556185485672">Chrome OS туура эмес жабылып калды.</translation> <translation id="677276454032249905">Баары бир Chrome'дон чыгасызбы?</translation> <translation id="683440813066116847">mDNS трафигине мүмкүндүк берүү үчүн Google Chrome Canary'нин кайрылуу эрежеси.</translation> <translation id="6885412569789873916">Chrome Бета Колдонмолору</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Жаңы эле Google Chrome үчүн өзгөчө коопсуздук жаңыртуулары орнотулду. Өтмөктөрдү калыбына келтирүү үчүн аны өчүрүп күйгүзүңүз.</translation> <translation id="8521348052903287641">mDNS трафигине уруксат берүү үчүн Google Chrome Dev'дин кирүүчү туташуу эрежеси.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Бул жумуш профили жеке профилиңизден толугу менен ажыратылган.</translation> <translation id="8556340503434111824">Google Chrome'дун чагылгандай тездик менен иштеген жаңы версиясы бар.</translation> <translation id="861359755029082151">Rosetta бул барактагы медиа файлдарды Chrome'до ойнотот.</translation> <translation id="8614913330719544658">Google Chrome жооп бербей жатат. Азыр өчүрүп кайра ишке киргизесизби?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Корголгон медиа файлдарды Chrome'до ойнотуу үчүн Rosetta'ны орнотуп алышыңыз керек. Аны азыр орнотуп аласызбы?</translation> <translation id="8914504000324227558">Chrome'ду кайрадан ишке киргизүү</translation> <translation id="8922193594870374009">Номерди <ph name="ORIGIN" /> сайтынан Android телефонуңузга жөнөтүү үчүн эки түзмөгүңүздөн тең Chrome'го кириңиз.</translation> +<translation id="8986207147630327271">Жумуш профилин ушул серепчиге кошуп, администраторго жумуш профилин гана көзөмөлдөөгө уруксат берип жатасыз.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome'дун жаңы версиясы жеткиликтүү}=1{Chrome'дун жаңы версиясы жеткиликтүү}other{Chrome'дун жаңы версиясы # күндөн бери жеткиликтүү}}</translation> <translation id="9026991721384951619">Аккаунтуңуздун кирүү чоо-жайы эскирип калгандыктан, Chrome OS дайын-даректериңизди шайкештештире алган жок.</translation> <translation id="9067395829937117663">Google Chrome'го Windows 7 же жаңыраак версиясы талап кылынат.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_si.xtb b/chrome/app/resources/google_chrome_strings_si.xtb index 2662b48..db857689 100644 --- a/chrome/app/resources/google_chrome_strings_si.xtb +++ b/chrome/app/resources/google_chrome_strings_si.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">මෙය Google Chrome හි දෙවන ස්ථාපනයක් වන අතර, ඔබේ පෙරනිමි බ්රව්සරය කළ නොහැකිය.</translation> <translation id="2348335408836342058">Chrome හට මෙම අඩවිය සදහා ඔබේ කැමරාවට සහ මයික්රෆෝනයට ප්රවේශ වීමට අවසර අවශ්යයි</translation> <translation id="234869673307233423">Chrome හට ඔබේ මුරපද පරීක්ෂා කළ නොහැක. පසුව නැවත උත්සාහ කරන්න.</translation> +<translation id="235650106824528204">මෙම පැතිකඩ භාවිතා කරන විට ජනනය කරන කිනම් හෝ Chrome දත්ත (පිටුසන්, ඉතිහාසය, මුරපද සහ වෙනත් සැකසීම් වැනි) කාර්යාල පැතිකඩ පරිපාලක විසින් ඉවත් කළ හැකිය. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">ඔබේ වසම සඳහා සම්මුහු නොපවතින බැවින් Google Chrome හට ඔබේ දත්ත සම්මුහු කළ නොහැකි විය.</translation> <translation id="2467438592969358367">Google Chrome හට ඔබගේ මුරපද නිර්යාත කිරීමට අවශ්යය. මේ සඳහා අවසර දීමට ඔබගේ Windows මුරපදය ටයිප් කරන්න.</translation> <translation id="2485422356828889247">අස්ථාපනය</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Chrome OS පිළිබඳ</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome කැනරි</translation> <translation id="5804318322022881572">Chrome දියත් කළ නොහැකි විය. නැවත උත්සාහ කරන්න.</translation> +<translation id="5851757216820085940">ඔබට Google ගිණුම් කීපයක් ඇති නම්, ඔබට ඒවා ඔබගේ <ph name="DEVICE_TYPE" /> වෙත එක් කළ හැකිය. ඔබගේ ගිණුම් Chrome බ්රව්සරයෙහි සහ Play Store හි මෙන්ම Gmail, Drive සහ YouTube වැනි සේවාවල ලබා ගත හැකිය.<ph name="LINK_BEGIN" />තව දැන ගන්න<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome මුරපද සංස්කරණ කිරීමට උත්සහ කරයි.</translation> <translation id="5895138241574237353">යළි අරඹන්න</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - ජාල පුරනය</translation> <translation id="5940385492829620908">ඔබේ වෙබ් අඩවි, පිටු සලකුණු සහ වෙනත් Chrome උපකරණ මෙහි ඇත.</translation> <translation id="5941830788786076944">Google Chrome පෙරනිමි බ්රව්සරය කරන්න</translation> <translation id="6070348360322141662">අමතර ආරක්ෂාව සඳහා, Google Chrome ඔබේ දත්ත සංකේතනය කරනු ඇත</translation> +<translation id="608006075545470555">මෙම බ්රව්සරයට කාර්යාල පැතිකඩ එක් කරන්න</translation> <translation id="6113794647360055231">Chrome දැන් වඩාත් හොඳ විය</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome බීටා</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Chrome OS යතාර්තයක් බවට පත්කරන වෙනත් <ph name="BEGIN_LINK_CROS_OSS" />විවෘත කේත මෘදුකාංග<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome යාවත්කාලීන කරමින් (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS පද්ධතිය</translation> <translation id="6650333065969705433">ආරක්ෂිත මාධ්ය වාදනය කිරීම සඳහා Rosetta භාවිත කිරීමට, ඔබ Chrome යළි ඇරඹිය යුතුය.</translation> <translation id="6676384891291319759">අන්තර්ජාලය වෙත පිවිසෙන්න</translation> <translation id="6679975945624592337">Chrome Run හට පසුබිම ධාවනය වීමට ඉඩ දෙන්න</translation> <translation id="6750954913813541382">අක්ෂර වින්යාස දෝෂ නිවැරදි කිරීමට, නිඔබ බ්රවුසරය තුළ ටයිප් කරන පාඨය Chrome විසින් Google වෙත යවනු ලැබේ</translation> +<translation id="6755885556185485672">Chrome OS නිවැරදිව නොවැසුණි.</translation> <translation id="677276454032249905">කෙසේ වුවත් Chrome වෙතින් ඉවත් වන්න ද?</translation> <translation id="683440813066116847">Google Chrome Canary හි අභ්යන්තර නියෝගය වන්නේ mDNS තදබදයයි.</translation> <translation id="6885412569789873916">Chrome බීටා යෙදුම්</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Google Chrome සඳහා විශේෂ ආරක්ෂක යාවත්කාලීනයක් දැන් යොදා ගත්තා. දැන් යළි අරඹන්න, අපි ඔබේ පටිති ප්රතිසාධන කරන්නම්.</translation> <translation id="8521348052903287641">mDNS තදබදයට ඉඩ දීමට Google Chrome Dev සඳහා බන්ධිත රීතිය.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">මෙම කාර්යාල පැතිකඩ ඔබගේ පුද්ගලික පැතිකඩෙන් සම්පූර්ණයෙන්ම වෙන්ව ඇත.</translation> <translation id="8556340503434111824">Google Chrome හි නව සංස්කරණයක් පවතී, එය සැමදාටම වඩා වේගවත්.</translation> <translation id="861359755029082151">මෙම පිටුවේ ආරක්ෂිත මාධ්ය වාදනය කිරීමට Rosetta විසින් Chrome සබල කරයි.</translation> <translation id="8614913330719544658">Google Chrome ප්රතිචාර නොදක්වයි. යළි දියත් කරන්නද?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">ආරක්ෂිත මාධ්ය වාදනය කිරීම සඳහා Chrome සබල කිරීමට, ඔබ Rosetta ස්ථාපනය කිරීමට අවශ්යයි. ඔබට දැන් එය ස්ථාපනය කිරීමට අවශ්යද?</translation> <translation id="8914504000324227558">Chrome නැවත දියත් කරන්න</translation> <translation id="8922193594870374009"><ph name="ORIGIN" /> වෙතින් ඔබගේ Android දුරකථනයට අංකයක් යැවීමට, උපාංග දෙකෙහිම Chrome වෙත පුරන්න.</translation> +<translation id="8986207147630327271">ඔබ මෙම බ්රව්සරයට කාර්යාල පැතිකඩක් එක් කරන අතර ඔබගේ පරිපාලකට ඔබගේ පැතිකඩෙහි පාලනය ලබා දෙයි.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome යාවත්කාලීනයක් තිබේ}=1{Chrome යාවත්කාලීනයක් තිබේ}one{දින # කට Chrome යාවත්කාලීනයක් ලැබී ඇත}other{දින # කට Chrome යාවත්කාලීනයක් ලැබී ඇත}}</translation> <translation id="9026991721384951619">පිවිසුම් දත්ත කල් ඉකුත්වී ඇති බැවින් Chrome OS හට ඔබේ දත්ත සම්මුහු කළ නොහැකි විය.</translation> <translation id="9067395829937117663">Google Chrome හට Windows 7 හෝ ඊට ඉහළ අනුවාදයක් අවශ්යයි.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index c902487..9144e4ae 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -54,6 +54,7 @@ <translation id="2309047409763057870">Toto je sekundárna inštalácia prehliadača Google Chrome – nemôže byť nastavený ako váš predvolený prehliadač.</translation> <translation id="2348335408836342058">Chrome potrebuje povolenie pre tento web na prístup k fotoaparátu a mikrofónu</translation> <translation id="234869673307233423">Chrome nemôže skontrolovať heslá. Skúste to znova neskôr.</translation> +<translation id="235650106824528204">Všetky údaje prehliadača Chrome vygenerované počas používania tohto profilu (napríklad vytvorenie záložiek, histórie, hesiel a ďalších nastavení) môžu byť odstránené správcom pracovného profilu. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Prehliadaču Google Chrome sa nepodarilo synchronizovať vaše údaje, pretože možnosť synchronizácie nie je pre vašu doménu k dispozícii.</translation> <translation id="2467438592969358367">Google Chrome sa pokúša exportovať vaše heslá. Ak to chcete povoliť, zadajte heslo systému Windows.</translation> <translation id="2485422356828889247">Odinštalovať</translation> @@ -174,12 +175,14 @@ <translation id="573759479754913123">Informácie o systéme Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome sa nepodarilo spustiť. Skúste to znova.</translation> +<translation id="5851757216820085940">Ak máte viac účtov Google, môžete si ich pridať do zariadenia <ph name="DEVICE_TYPE" />. Vaše účty budú k dispozícii v prehliadači Chrome a Obchode Play, ale aj službách, ako sú Gmail, Disk a YouTube.<ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome sa pokúša upraviť heslá.</translation> <translation id="5895138241574237353">Reštartovať</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – prihlásenie do siete</translation> <translation id="5940385492829620908">Tu nájdete svoj obsah na webe, záložky a ďalšie položky prehliadača Chrome.</translation> <translation id="5941830788786076944">Nastaviť prehľadávač Google Chrome ako predvolený</translation> <translation id="6070348360322141662">V záujme vyššej miery zabezpečenia budú dáta v prehliadači Google Chrome šifrované</translation> +<translation id="608006075545470555">Pridanie pracovného profilu do tohto prehliadača</translation> <translation id="6113794647360055231">Prehliadač Chrome bol práve vylepšený</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation> @@ -191,10 +194,12 @@ <translation id="6368958679917195344">Chrome OS mohol vzniknúť vďaka ďalšiemu <ph name="BEGIN_LINK_CROS_OSS" />softvéru s otvoreným zdrojom<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Aktualizuje sa Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Systém Chrome OS</translation> <translation id="6650333065969705433">Ak chcete prehrávať chránené médiá pomocou doplnku Rosetta, musíte reštartovať Chrome.</translation> <translation id="6676384891291319759">Prístup do siete Internet</translation> <translation id="6679975945624592337">Povoliť prehliadaču Google Chrome spustenie na pozadí</translation> <translation id="6750954913813541382">Chrome odošle text zadaný v prehliadači Googlu s cieľom opraviť pravopisné chyby</translation> +<translation id="6755885556185485672">Systém Chrome OS nebol správne vypnutý.</translation> <translation id="677276454032249905">Chcete Chrome napriek tomu ukončiť?</translation> <translation id="683440813066116847">Pravidlo pre prichádzajúce prenosy pre prehliadač Google Chrome verzie Canary, ktoré povoľuje prenos dát mDNS.</translation> <translation id="6885412569789873916">Aplikácie pre Chrome beta verzie</translation> @@ -253,6 +258,7 @@ <translation id="8498858610309223613">Práve bola použitá mimoriadna bezpečnostná aktualizácia pre prehliadač Google Chrome. Po reštartovaní obnovíme vaše karty.</translation> <translation id="8521348052903287641">Pravidlo pre prichádzajúce prenosy pre prehliadač Google Chrome verzie pre vývojárov, ktoré povoľuje prenos dát mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Tento pracovný profil je úplne oddelený od vášho osobného.</translation> <translation id="8556340503434111824">K dispozícii je nová verzia prehliadača Google Chrome, ktorá je rýchlejšia ako kedykoľvek predtým.</translation> <translation id="861359755029082151">Rosetta umožňuje Chromu prehrávať chránené médiá na tejto stránke.</translation> <translation id="8614913330719544658">Google Chrome nereaguje. Chcete ho spustiť znova?</translation> @@ -271,6 +277,7 @@ <translation id="8907709077090383765">Ak chcete povoliť Chromu prehrávať chránené médiá, musíte si nainštalovať doplnok Rosetta. Chcete si ho nainštalovať?</translation> <translation id="8914504000324227558">Znova spustiť prehliadač Chrome</translation> <translation id="8922193594870374009">Ak chcete zo zariadenia <ph name="ORIGIN" /> odoslať číslo do svojho telefónu s Androidom, prihláste sa v oboch zariadeniach do Chromu.</translation> +<translation id="8986207147630327271">Do tohto prehliadača pridávate pracovný profil a svojmu správcovi udeľujete kontrolu iba nad ním.</translation> <translation id="8999208279178790196">{0,plural, =0{Je k dispozícii aktualizácia Chromu}=1{Je k dispozícii aktualizácia Chromu}few{Aktualizácia Chromu je k dispozícii už # dni}many{Aktualizácia Chromu je k dispozícii už # dňa}other{Aktualizácia Chromu je k dispozícii už # dní}}</translation> <translation id="9026991721384951619">Systému OS Chrome sa nepodarilo synchronizovať vaše údaje, pretože vaše prihlasovacie údaje účtu sú zastarané.</translation> <translation id="9067395829937117663">Google Chrome vyžaduje Windows 7 alebo vyšší.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sq.xtb b/chrome/app/resources/google_chrome_strings_sq.xtb index dbe0b55..132fef8 100644 --- a/chrome/app/resources/google_chrome_strings_sq.xtb +++ b/chrome/app/resources/google_chrome_strings_sq.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Ky është instalim dytësor i Google Chrome dhe nuk mund të bëhet shfletuesi yt i parazgjedhur.</translation> <translation id="2348335408836342058">Chrome ka nevojë për leje për t'u qasur te kamera dhe mikrofoni yt për këtë sajt</translation> <translation id="234869673307233423">Chrome nuk mund t'i kontrollojë fjalëkalimet e tua. Provo përsëri më vonë.</translation> +<translation id="235650106824528204">Çdo e dhënë e Chrome që krijohet gjatë përdorimit të këtij profili (si p.sh. krijimi i faqeshënuesve, historikut, fjalëkalimeve dhe cilësimeve të tjera) mund të hiqet nga administratori i profilit të punës. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome nuk mund t'i sinkronizonte të dhënat për shkak se sinkronizimi nuk ofrohet për domenin tënd.</translation> <translation id="2467438592969358367">Google Chrome dëshiron të eksportojë fjalëkalimet e tua. Shkruaj fjalëkalimin tënd të Windows për ta lejuar këtë.</translation> <translation id="2485422356828889247">Çinstalo</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Rreth sistemit operativ Chrome</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome nuk mund të hapej. Provo përsëri.</translation> +<translation id="5851757216820085940">Nëse ke disa "Llogari të Google", mund t'i shtosh ato te <ph name="DEVICE_TYPE" />. Llogaritë e tua do të ofrohen në shfletuesin Chrome dhe në "Dyqanin e Play", si dhe në shërbimet si Gmail, "Disku" dhe YouTube.<ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome po përpiqet t'i modifikojë fjalëkalimet.</translation> <translation id="5895138241574237353">Rinis</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - identifikimi në rrjet</translation> <translation id="5940385492829620908">Këtu janë materialet e tua të uebit, të faqeshënuesve dhe të tjera nga Chrome.</translation> <translation id="5941830788786076944">Bëje Google Chrome shfletuesin e parazgjedhur</translation> <translation id="6070348360322141662">Për më shumë siguri, Google Chrome do t'i enkriptojë të dhënat e tua</translation> +<translation id="608006075545470555">Shto profilin e punës në këtë shfletues</translation> <translation id="6113794647360055231">Chrome sapo është përmirësuar</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">Sistemi operativ Chrome bëhet i mundur nga softueri shtesë <ph name="BEGIN_LINK_CROS_OSS" />me burim të hapur<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Po përditëson Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Sistemi Chrome OS</translation> <translation id="6650333065969705433">Për të përdorur Rosetta që të luajë media të mbrojtur, duhet të rinisësh Chrome.</translation> <translation id="6676384891291319759">Qasu në internet</translation> <translation id="6679975945624592337">Lejo që Google Chrome të ekzekutohet në sfond</translation> <translation id="6750954913813541382">Për të rregulluar gabimet drejtshkrimore, Chrome e dërgon tekstin që shkruan në shfletues te Google</translation> +<translation id="6755885556185485672">Chrome OS nuk u mbyll siç duhet.</translation> <translation id="677276454032249905">Dëshiron të dalësh nga Chrome gjithsesi?</translation> <translation id="683440813066116847">Rregulli hyrës për Google Chrome për të lejuar trafikun mDNS.</translation> <translation id="6885412569789873916">Aplikacionet e Chrome Beta</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Sapo është zbatuar një përditësim special i sigurisë për Google Chrome. Rinise tani dhe do të restaurojmë skedat e tua.</translation> <translation id="8521348052903287641">Rregulli hyrës për Google Chrome Dev për të lejuar trafikun mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Ky profil pune është plotësisht i veçuar nga profili yt personal.</translation> <translation id="8556340503434111824">Ofrohet një version i ri i Google Chrome dhe është më i shpejtë se kurrë.</translation> <translation id="861359755029082151">Rosetta e mundëson Chrome që të luajë median e mbrojtur në këtë faqe.</translation> <translation id="8614913330719544658">Google Chrome nuk përgjigjet. Dëshiron ta hapësh sërish tani?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Për ta mundësuar Chrome që të luajë media të mbrojtur, duhet të instalosh Rosetta. Dëshiron që ta instalosh atë tani?</translation> <translation id="8914504000324227558">Rinis Chrome</translation> <translation id="8922193594870374009">Për të dërguar një numër nga <ph name="ORIGIN" /> te telefoni yt Android, identifikohu në Chrome në të dyja pajisjet.</translation> +<translation id="8986207147630327271">Po shton një profil pune në këtë shfletues dhe po i jep administratorit tënd kontrollin vetëm mbi profilin e punës.</translation> <translation id="8999208279178790196">{0,plural, =0{Ofrohet një përditësim i Chrome}=1{Ofrohet një përditësim i Chrome}other{Një përditësim i Chrome ofrohet prej # ditësh}}</translation> <translation id="9026991721384951619">Sistemi operativ Chrome nuk mund të sinkronizonte të dhënat e tua sepse detajet e identifikimit të llogarisë nuk janë të përditësuara.</translation> <translation id="9067395829937117663">Google Chrome kërkon Windows 7 ose një version më të lartë.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 7bc41ea..9f9a3ca 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Det här är en sekundär installation av Google Chrome. Det går inte att göra den till standardwebbläsare.</translation> <translation id="2348335408836342058">Du behöver ge Chrome behörighet att använda kameran och mikrofonen på webbplatsen</translation> <translation id="234869673307233423">Chrome kan inte kontrollera dina lösenord. Försök igen senare.</translation> +<translation id="235650106824528204">All data i Chrome som uppstår när den här profilen används (t.ex. bokmärken, historik, lösenord och andra inställningar) kan tas bort av jobbprofilens administratör. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome kunde inte synkronisera data eftersom synkronisering inte är tillgängligt för din domän.</translation> <translation id="2467438592969358367">Lösenorden exporteras från Google Chrome. Skriv ditt Windows-lösenord om du tillåter detta.</translation> <translation id="2485422356828889247">Avinstallera</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Om Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> – Google Chrome Canary</translation> <translation id="5804318322022881572">Det gick inte att starta Chrome. Försök igen.</translation> +<translation id="5851757216820085940">Om du har flera Google-konton kan du lägga till dem på <ph name="DEVICE_TYPE" />. Kontona blir tillgängliga i webbläsaren Chrome och Play Butik samt tjänster som Gmail, Drive och YouTube.<ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Lösenorden i Google Chrome redigeras.</translation> <translation id="5895138241574237353">Starta om</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> – nätverksinloggning</translation> <translation id="5940385492829620908">Här finns webben, bokmärken och allt annat du använder Chrome till.</translation> <translation id="5941830788786076944">Använd Google Chrome som standardwebbläsare</translation> <translation id="6070348360322141662">Din data krypteras i Google Chrome för att öka säkerheten</translation> +<translation id="608006075545470555">Lägg till en jobbprofil i den här webbläsaren</translation> <translation id="6113794647360055231">Vi har gjort Chrome ännu bättre</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation> @@ -195,10 +198,12 @@ <translation id="6368958679917195344">Chrome OS fungerar tack vare <ph name="BEGIN_LINK_CROS_OSS" />ytterligare program med öppen källkod<ph name="END_LINK_CROS_OSS" />.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> – Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome uppdateras (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS-system</translation> <translation id="6650333065969705433">Du måste starta om Chrome om du vill använda Rosetta för att spela upp skyddad media.</translation> <translation id="6676384891291319759">Gå ut på Internet</translation> <translation id="6679975945624592337">Låt Google Chrome köras i bakgrunden</translation> <translation id="6750954913813541382">Text som du skriver i webbläsaren Chrome skickas till Google för att kontrollera stavningen</translation> +<translation id="6755885556185485672">Chrome OS stängdes inte av på rätt sätt.</translation> <translation id="677276454032249905">Vill du avsluta Chrome ändå?</translation> <translation id="683440813066116847">Regel som tillåter inkommande mDNS-trafik för Google Chrome Canary.</translation> <translation id="6885412569789873916">Appar i Chrome Beta</translation> @@ -257,6 +262,7 @@ <translation id="8498858610309223613">En särskild säkerhetsuppdatering för Google Chrome installerades precis. Starta om webbläsaren nu. Flikarna återställs efteråt.</translation> <translation id="8521348052903287641">Regel som tillåter inkommande mDNS-trafik för Google Chrome Dev.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Jobbprofilen hålls helt åtskild från din privata profil.</translation> <translation id="8556340503434111824">Det finns en ny version av Google Chrome och den är snabbare än någonsin.</translation> <translation id="861359755029082151">Rosetta gör det möjligt för Chrome att spela upp skyddad media på den här sidan.</translation> <translation id="8614913330719544658">Google Chrome svarar inte. Vill du starta om nu?</translation> @@ -275,6 +281,7 @@ <translation id="8907709077090383765">Du måste installera Rosetta om du vill aktivera uppspelning av skyddad media i Chrome. Vill du installera det nu?</translation> <translation id="8914504000324227558">Starta om Chrome</translation> <translation id="8922193594870374009">Logga in på Chrome på båda enheterna om du vill skicka ett nummer från <ph name="ORIGIN" /> till Android-telefonen.</translation> +<translation id="8986207147630327271">Du lägger till en jobbprofil i den här webbläsaren och ger administratören kontrollen enbart över jobbprofilen.</translation> <translation id="8999208279178790196">{0,plural, =0{Det finns en uppdatering för Chrome}=1{Det finns en uppdatering för Chrome}other{Det finns en uppdatering för Chrome sedan # dagar}}</translation> <translation id="9026991721384951619">Det gick inte att synkronisera data med Chrome OS eftersom inloggningsuppgifterna för kontot är inaktuella.</translation> <translation id="9067395829937117663">För Google Chrome krävs Windows 7 eller senare.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index fb8b298f..ff216dae 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -52,6 +52,7 @@ <translation id="2309047409763057870">ఇది Google Chrome యొక్క రెండవ ఇనస్టలేషన్. దీన్ని మీ డిఫాల్ట్ బ్రౌజర్గా చేయడం సాధ్యపడదు.</translation> <translation id="2348335408836342058">ఈ సైట్ కోసం మీ కెమెరా మరియు మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం</translation> <translation id="234869673307233423">Chrome మీ పాస్వర్డ్లను తనిఖీ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి.</translation> +<translation id="235650106824528204">ఈ ప్రొఫైల్ను ఉపయోగిస్తున్నప్పుడు జెనరేట్ అయిన ఏదైనా Chrome డేటాను (బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు, ఇంకా ఇతర సెట్టింగ్లు వంటివి క్రియేట్ చేయడం) వర్క్ ప్రొఫైల్ అడ్మినిస్ట్రేటర్ తీసివేయవచ్చు. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">మీ డొమైన్ కోసం సింక్ అందుబాటులో లేనందున Google Chrome మీ డేటాను సింక్ చేయలేకపోయింది.</translation> <translation id="2467438592969358367">Google Chrome మీ పాస్వర్డ్లను ఎగుమతి చేయాలనుకుంటోంది. దీనిని అనుమతించడం కోసం మీ Windows పాస్వర్డ్ని టైప్ చేయండి.</translation> <translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> @@ -169,12 +170,14 @@ <translation id="573759479754913123">Chrome OS గురించి</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chromeను ప్రారంభించడం సాధ్యపడలేదు. మళ్లీ ప్రయత్నించండి.</translation> +<translation id="5851757216820085940">మీరు పలు Google ఖాతాలను కలిగి ఉంటే, మీరు వాటిని మీ <ph name="DEVICE_TYPE" />కు జోడించవచ్చు. మీ ఖాతాలు Chrome బ్రౌజర్, Play స్టోర్లోనే కాకుండా Gmail, Drive, ఇంకా YouTube వంటి సర్వీస్లలో కూడా అందుబాటులో ఉంటాయి.<ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation> <translation id="5867197326698922595">పాస్వర్డ్లను ఎడిట్ చేయడానికి Google Chrome ప్రయత్నిస్తోంది.</translation> <translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - నెట్వర్క్ సైన్ ఇన్</translation> <translation id="5940385492829620908">మీ వెబ్, బుక్మార్క్లు మరియు ఇతర Chrome అంశాలు ఇక్కడ చూపబడతాయి.</translation> <translation id="5941830788786076944">Google Chromeను డిఫాల్ట్ బ్రౌజర్గా చేసుకోండి</translation> <translation id="6070348360322141662">అదనపు భద్రత దృష్ట్యా, Google Chrome మీ డేటాను ఎన్క్రిప్ట్ చేస్తుంది</translation> +<translation id="608006075545470555">ఈ బ్రౌజర్కు వర్క్ ప్రొఫైల్ను జోడించండి</translation> <translation id="6113794647360055231">Chrome ఇప్పుడు మెరుగైంది</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome బీటా</translation> @@ -186,10 +189,12 @@ <translation id="6368958679917195344">అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపన్ సోర్స్ సాఫ్ట్వేర్<ph name="END_LINK_CROS_OSS" />పై Chrome OS ఎంతగానో ఆధారపడుతుంది.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome నవీకరించబడుతోంది (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS సిస్టమ్</translation> <translation id="6650333065969705433">సురక్షితమైన మీడియాను ప్లే చేయడం కోసం Rosettaను ఉపయోగించడానికి, మీరు తప్పనిసరిగా Chromeను రీస్టార్ట్ చేయాలి.</translation> <translation id="6676384891291319759">ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి</translation> <translation id="6679975945624592337">Google Chromeను నేపథ్యంలో అమలు అయ్యేందుకు అనుమతించండి</translation> <translation id="6750954913813541382">స్పెల్లింగ్ తప్పులను సరిదిద్దడానికి, మీరు బ్రౌజర్లో టైప్ చేసే పదాలను Googleకు Chrome పంపుతుంది</translation> +<translation id="6755885556185485672">Chrome OS సరిగ్గా షట్ డౌన్ కాలేదు.</translation> <translation id="677276454032249905">ఏదేమైనా Chrome నుండి నిష్క్రమించాలా?</translation> <translation id="683440813066116847">mDNS ట్రాఫిక్ను అనుమతించడానికి Google Chrome కెనరీ కోసం ఇన్బౌండ్ నియమం.</translation> <translation id="6885412569789873916">Chrome బీటా యాప్లు</translation> @@ -248,6 +253,7 @@ <translation id="8498858610309223613">Google Chromeకి సంబంధించిన ప్రత్యేక భద్రతా అప్డేట్ వర్తింపజేయబడింది. ఇప్పుడే పునఃప్రారంభించండి, మేము మీ ట్యాబ్లను పునరుద్ధరిస్తాము.</translation> <translation id="8521348052903287641">mDNS ట్రాఫిక్ను అనుమతించడానికి Google Chrome డెవలపర్ కోసం ఇన్బౌండ్ నియమం.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">ఈ వర్క్ ప్రొఫైల్, మీ వ్యక్తిగత ప్రొఫైల్ నుండి పూర్తిగా భిన్నంగా ఉంది.</translation> <translation id="8556340503434111824">Google Chrome యొక్క కొత్త వెర్షన్ అందుబాటులో ఉంది, ఇది మునుపటి కంటే వేగవంతంగా ఉంటుంది.</translation> <translation id="861359755029082151">ఈ పేజీలో సురక్షితమైన మీడియాను ప్లే చేయడానికి, Rosetta Chromeను ఎనేబుల్ చేస్తుంది.</translation> <translation id="8614913330719544658">Google Chrome స్పందించడం లేదు. ఇప్పుడే పునఃప్రారంభించాలా?</translation> @@ -266,6 +272,7 @@ <translation id="8907709077090383765">సురక్షితమైన మీడియాను ప్లే చేయడం కోసం Chromeను ఎనేబుల్ చేయడానికి, మీరు Rosettaను ఇన్స్టాల్ చేయాలి. మీరు దీన్ని ఇప్పుడు ఇన్స్టాల్ చేయాలనుకుంటున్నారా?</translation> <translation id="8914504000324227558">Chromeను పునఃప్రారంభించు</translation> <translation id="8922193594870374009"><ph name="ORIGIN" /> నుండి మీ Android ఫోన్కు నంబర్ను పంపడానికి, రెండు పరికరాలలోని Chromeకు సైన్ ఇన్ చేయండి.</translation> +<translation id="8986207147630327271">మీరు ఈ బ్రౌజర్కు వర్క్ ప్రొఫైల్ను జోడిస్తున్నారు, ఇంకా మీ అడ్మినిస్ట్రేటర్కు వర్క్ ప్రొఫైల్పై కంట్రోల్ ఇస్తున్నారు.</translation> <translation id="8999208279178790196">{0,plural, =0{ఒక Chrome అప్డేట్ అందుబాటులో ఉంది}=1{ఒక Chrome అప్డేట్ అందుబాటులో ఉంది}other{ఒక Chrome అప్డేట్ # రోజులుగా అందుబాటులో ఉంది}}</translation> <translation id="9026991721384951619">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chrome OS మీ డేటాను సింక్ చేయలేకపోయింది.</translation> <translation id="9067395829937117663">Google Chromeకి Windows 7 లేదా అంతకంటే ఆధునికమైనది ఉండటం ఆవశ్యకం.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index c7dea9c9..a769798d 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -53,6 +53,7 @@ <translation id="2309047409763057870">Google Chrome takroran o‘rnatilgan, shuning uchun u asosiy brauzer bo‘la olmaydi.</translation> <translation id="2348335408836342058">Bu sayt kamera va mikrofoningizdan foydalanishi uchun Chrome brauzeriga ruxsat berishingiz lozim</translation> <translation id="234869673307233423">Chrome parollaringizni tekshira olmadi. Keyinroq qayta urining.</translation> +<translation id="235650106824528204">Bu profil ishlatilganda yaratilgan har qanday Chrome maʼlumotlari (bukmarklar, tarix, parollar va boshqa sozlamalar kabi) ish profili administratori tomonidan tozalanishi mumkin. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">Google Chrome domeningizda Sync xizmati yo‘qligi sababli ma’lumotlaringizni sinxronlay olmadi.</translation> <translation id="2467438592969358367">Google Chrome parollaringizni eksport qilmoqchi. Ruxsat berish uchun Windows platformasidagi parolingizni kiriting.</translation> <translation id="2485422356828889247">O‘chirib tashlash</translation> @@ -174,12 +175,14 @@ <translation id="573759479754913123">Chrome OS haqida</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chrome ishga tushmadi. Qayta urining.</translation> +<translation id="5851757216820085940">Agar bir necha Google hisoblaringiz boʻlsa, ularni <ph name="DEVICE_TYPE" /> qurilmangizga kiritishingiz mumkin. Hisoblaringizdan Chrome brauzerida, Play Marketda va Gmail, Drive va YouTube kabi xizmatlarda foydalana olasiz.<ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation> <translation id="5867197326698922595">Google Chrome parollarni tahrirlashga urinmoqda.</translation> <translation id="5895138241574237353">Qayta ishga tushirish</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Tarmoqqa kirish</translation> <translation id="5940385492829620908">Chrome‘dagi barcha veb sahifalar, xatcho‘plar va boshqa ma’lumotlarni bu yerdan topish mumkin.</translation> <translation id="5941830788786076944">Google Chrome standart brauzer qilib belgilansin</translation> <translation id="6070348360322141662">Xavfsizlik himoyasini oshirish maqsadida Google Chrome ma’lumotlaringizni shifrlaydi</translation> +<translation id="608006075545470555">Bu brauzerga ish profilini kiritish</translation> <translation id="6113794647360055231">Chrome ancha yaxshilanmoqda</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -191,10 +194,12 @@ <translation id="6368958679917195344">Chrome OS paydo bo‘lishida qo‘shimcha <ph name="BEGIN_LINK_CROS_OSS" />ochiq kodli dasturiy ta'minotlarning<ph name="END_LINK_CROS_OSS" /> katta o‘rni bor.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Google Chrome yangilanmoqda (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Chrome OS tizimi</translation> <translation id="6650333065969705433">Himoyalangan mediani ijro etishda Rosetta dasturidan foydalanish uchun Chrome brauzerini qayta ishga tushiring.</translation> <translation id="6676384891291319759">Internetga ulanish</translation> <translation id="6679975945624592337">Google Chrome fonda ishlashiga ruxsat</translation> <translation id="6750954913813541382">Imlo xatolarini tuzatish uchun Chrome brauzerida kiritiladigan matn Google serverlariga yuboriladi.</translation> +<translation id="6755885556185485672">Chrome OS seansi xato yakunlangan.</translation> <translation id="677276454032249905">Chrome baribir yopilsinmi?</translation> <translation id="683440813066116847">Google Chrome Canary‘ga kiruvchi trafikni mDNS protokoli orqali uzatishga ruxsat berish</translation> <translation id="6885412569789873916">Chrome Beta ilovalari</translation> @@ -253,6 +258,7 @@ <translation id="8498858610309223613">Google Chrome xavfsizlik tizimiga maxsus yangilanish oʻrnatildi. Qayta ishga tushiring va ochiq sahifalarni tiklang.</translation> <translation id="8521348052903287641">Google Chrome Dev mDNS trafigiga ruxsat berishiga oid kiruvchi qoida.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Bu ish profili shaxsiy profilingizdan butunlay ajratilgan.</translation> <translation id="8556340503434111824">Google Chrome brauzerining yanada tezroq ishlaydigan yangi versiyasi chiqdi.</translation> <translation id="861359755029082151">Rosetta Chrome brauzerida bu sahifada mediani ijro etish imkoniyatini yoqadi.</translation> <translation id="8614913330719544658">Google Chrome javob bermayapti. Qaytadan ishga tushirilsinmi?</translation> @@ -271,6 +277,7 @@ <translation id="8907709077090383765">Chrome himoyalangan mediani ijro etishi uchun Rosetta oʻrnatilishi lozim. Uni hozir oʻrnatishni xohlaysizmi?</translation> <translation id="8914504000324227558">Chrome’ni qayta ishga tushiring</translation> <translation id="8922193594870374009"><ph name="ORIGIN" /> orqali Android telefoningizga raqam yuborish uchun ikkala qurilmada Chrome hisobingizga kiring.</translation> +<translation id="8986207147630327271">Bu brauzerga ish profilini kiritish bilan siz administratorga ish profili orqali barcha boshqaruv ruxsatlarini berasiz.</translation> <translation id="8999208279178790196">{0,plural, =0{Chrome uchun yangilanish mavjud}=1{Chrome uchun yangilanish mavjud}other{Chrome uchun yangilanish mavjud (# kun)}}</translation> <translation id="9026991721384951619">Hisob ma’lumotlaringiz eskirganligi tufayli sinxronlash amali bajarilmadi.</translation> <translation id="9067395829937117663">Google Chrome brauzeri ishlashi uchun kompyuterda Windows 7 yoki undan yangiroq versiyadagi operatsion tizim o‘rnatilgan bo‘lishi lozim.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zu.xtb b/chrome/app/resources/google_chrome_strings_zu.xtb index 109fd21b..0340cdc 100644 --- a/chrome/app/resources/google_chrome_strings_zu.xtb +++ b/chrome/app/resources/google_chrome_strings_zu.xtb
@@ -56,6 +56,7 @@ <translation id="2309047409763057870">Lokhu ukufakwa kwesibili kwe-Google Chrome, futhi akukwazi ukwenziwa isiphequluli sakho esizenzakalelayo.</translation> <translation id="2348335408836342058">I-Chrome idinga imvume ukuze ifinyelele kukhamera yakho nemakrofoni yaleli sayithi</translation> <translation id="234869673307233423">I-Chrome ayikwazi ukuhlola amaphasiwedi akho. Zama futhi emuva kwesikhathi.</translation> +<translation id="235650106824528204">Noma iyiphi idatha ye-Chrome ekhiqizwa ngesikhathi sokusetshenziswa kwale phrofayela (efana nokudalwa kwamabhukhimakhi, umlando, amaphasiwedi, namanye amasethingi) ingasuswa umlawuli wephrofayela yomsebenzi. <ph name="LEARN_MORE" /></translation> <translation id="2429317896000329049">I-Google Chrome ayikwazanga ukuvumelanisa idatha yakho ngoba ukuvumelanisa akutholakali kusizinda sakho.</translation> <translation id="2467438592969358367">I-Google Chrome ifuna ukuthumela amaphasiwedi akho. Thayipha iphasiwedi yakho ye-Windows ukuze uvumele lokhu.</translation> <translation id="2485422356828889247">Khipha</translation> @@ -177,12 +178,14 @@ <translation id="573759479754913123">Mayelana ne-Chrome OS</translation> <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Ayikwazanga ukuqalisa i-Chrome. Zama futhi.</translation> +<translation id="5851757216820085940">Uma unama-akhawunti amaningi e-Google, ungawangeza ku-<ph name="DEVICE_TYPE" /> yakho. Ama-akhawunti akho azotholakala kusiphequluli se-Chrome ne-Google Play Isitolo, kanye namasevisi afana ne-Gmail, Idrayivu, ne-YouTube.<ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation> <translation id="5867197326698922595">I-Google Chrome izama ukuhlela amaphasiwedi.</translation> <translation id="5895138241574237353">Qalisa kabusha</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - Inethiwekhi Yokugena ngemvume</translation> <translation id="5940385492829620908">Iwebhu yakho, amabhukhimakhi, nezinye izinto ze-Chrome zihlala lapha.</translation> <translation id="5941830788786076944">Yenza i-Google Chrome ibe isiphequluli sokuzenzakalelayo</translation> <translation id="6070348360322141662">Ngokuvikela okungeziwe, i-Google Chromium izobethela idatha yakho</translation> +<translation id="608006075545470555">Engeza Iphrofayela Yomsebenzi kulesi siphequluli</translation> <translation id="6113794647360055231">I-Chrome isanda kuba ngcono</translation> <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - I-Google Chrome</translation> <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation> @@ -194,10 +197,12 @@ <translation id="6368958679917195344">I-Chrome OS yenziwa yenzeke nge-<ph name="BEGIN_LINK_CROS_OSS" />softhiwe yelayisense evulekile<ph name="END_LINK_CROS_OSS" /> engeziwe.</translation> <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation> <translation id="6566149418543181476">Ibuyekeza i-Google Chrome (<ph name="PROGRESS_PERCENT" />)</translation> +<translation id="6568793831116033768">Isistimu ye-Chrome OS</translation> <translation id="6650333065969705433">Ukuze usebenzise i-Rosetta ukudlala imidiya evikeliwe, kufanele uqale kabusha i-Chrome.</translation> <translation id="6676384891291319759">Finyelela i-inthanethi?</translation> <translation id="6679975945624592337">Vumela i-Google Chrome isebenze ngemuva</translation> <translation id="6750954913813541382">Ukuze kulungiswe amaphutha okupeletwa, i-Chrome ithumela umbhalo owuthayiphayo kusiphequluli ku-Google</translation> +<translation id="6755885556185485672">I-Chrome OS ayizange ivalwe ngokufanelekile.</translation> <translation id="677276454032249905">Phuma ku-Chrome noma kunjalo?</translation> <translation id="683440813066116847">Umyalo wokubophezeleka ngaphakathi kwe-Google Chrome Canary ukuze kuvunyelwe ithrafikhi ye-mDNS.</translation> <translation id="6885412569789873916">Izinhlelo zokusebenza ze-beta ye-Chrome</translation> @@ -256,6 +261,7 @@ <translation id="8498858610309223613">Isibuyekezo esibalulekile sokuvikela se-Google Chrome sisanda kusetshenziswa. Qalisa kabusha manje bese sizobuyisela amathebhu akho.</translation> <translation id="8521348052903287641">Umyalo wokubophezeleka ngaphakathi kwe-beta ye-Google Chrome ukuze kuvunyelwe ithrafikhi ye-mDNS.</translation> <translation id="8540666473246803645">Google Chrome</translation> +<translation id="8550334526674375523">Le phrofayela yomsebenzi ihluke ngokugcwele kusukela kuphrofayela yakho siqu.</translation> <translation id="8556340503434111824">Kukhona inguqulo entsha ye-Google Chrome etholakalayo, futhi ishesha kakhulu kunakuqala.</translation> <translation id="861359755029082151">I-Rosetta inika amandla i-Chrome ukudlala imidiya evikeliwe kuleli khasi.</translation> <translation id="8614913330719544658">I-Google Chrome ayiphenduli. Qalisa kabusha manje?</translation> @@ -274,6 +280,7 @@ <translation id="8907709077090383765">Ukunika amandla i-Chrome ukudlala imidiya evikeliwe, kufanele ufake i-Rosetta. Ingabe ufuna ukuyifaka manje?</translation> <translation id="8914504000324227558">Phinda uqalise i-Chrome</translation> <translation id="8922193594870374009">Ukuze uthumele inombolo kusukela ku-<ph name="ORIGIN" /> kufoni yakho ye-Android, ngena ngemvume ku-Chrome kuwo womabili amadivayisi.</translation> +<translation id="8986207147630327271">Ungeza iphrofayela yomsebenzi kulesi siphequluli futhi unikeza umlawuli wakho ulawulo olungaphezulu nje kwephrofayela yomsebenzi.</translation> <translation id="8999208279178790196">{0,plural, =0{Isibuyekezo se-Chrome siyatholakala}=1{Isibuyekezo se-Chrome siyatholakala}one{Isibuyekezo se-Chrome sitholakale izinsuku ezingu-#}other{Isibuyekezo se-Chrome sitholakale izinsuku ezingu-#}}</translation> <translation id="9026991721384951619">I-Chrome OS ayikwazanga ukuvumelanisa idatha yakho ngoba imininingwane yokungena ngemvume kwe-akhawunti yakho ayikho kudethi.</translation> <translation id="9067395829937117663">I-Google Chrome idinga i-Windows 7 noma ngaphezulu.</translation>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index ded9b6e..0cde3498 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3330,7 +3330,7 @@ FEATURE_VALUE_TYPE(features::kDesktopPWAsMigrationUserDisplayModeCleanUp)}, {"enable-desktop-pwas-run-on-os-login", flag_descriptions::kDesktopPWAsRunOnOsLoginName, - flag_descriptions::kDesktopPWAsRunOnOsLoginDescription, kOsWin, + flag_descriptions::kDesktopPWAsRunOnOsLoginDescription, kOsWin | kOsLinux, FEATURE_VALUE_TYPE(features::kDesktopPWAsRunOnOsLogin)}, {"record-web-app-debug-info", flag_descriptions::kRecordWebAppDebugInfoName, flag_descriptions::kRecordWebAppDebugInfoDescription, kOsDesktop, @@ -4370,7 +4370,7 @@ FEATURE_VALUE_TYPE(features::kDoubleTapToZoomInTabletMode)}, #endif // defined(OS_CHROMEOS) - {"read-later", flag_descriptions::kReadLaterName, + {flag_descriptions::kReadLaterFlagId, flag_descriptions::kReadLaterName, flag_descriptions::kReadLaterDescription, kOsDesktop | kOsAndroid, FEATURE_VALUE_TYPE(reading_list::switches::kReadLater)}, @@ -6568,7 +6568,8 @@ flag_descriptions::kContentSettingsRedesignDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kContentSettingsRedesign)}, - {"enable-tab-search", flag_descriptions::kEnableTabSearchName, + {flag_descriptions::kEnableTabSearchFlagId, + flag_descriptions::kEnableTabSearchName, flag_descriptions::kEnableTabSearchDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kTabSearch)},
diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc index 7530a7c4..e007e7de 100644 --- a/chrome/browser/accessibility/accessibility_extension_api.cc +++ b/chrome/browser/accessibility/accessibility_extension_api.cc
@@ -298,10 +298,10 @@ } ExtensionFunction::ResponseAction -AccessibilityPrivateEnableChromeVoxMouseEventsFunction::Run() { +AccessibilityPrivateEnableMouseEventsFunction::Run() { bool enabled = false; EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enabled)); - ash::EventRewriterController::Get()->SetSendMouseEventsToDelegate(enabled); + ash::EventRewriterController::Get()->SetSendMouseEvents(enabled); return RespondNow(NoArguments()); }
diff --git a/chrome/browser/accessibility/accessibility_extension_api.h b/chrome/browser/accessibility/accessibility_extension_api.h index 5de7ba4..d535299f 100644 --- a/chrome/browser/accessibility/accessibility_extension_api.h +++ b/chrome/browser/accessibility/accessibility_extension_api.h
@@ -83,12 +83,11 @@ }; // API function that enables or disables mouse events in ChromeVox. -class AccessibilityPrivateEnableChromeVoxMouseEventsFunction - : public ExtensionFunction { - ~AccessibilityPrivateEnableChromeVoxMouseEventsFunction() override {} +class AccessibilityPrivateEnableMouseEventsFunction : public ExtensionFunction { + ~AccessibilityPrivateEnableMouseEventsFunction() override {} ResponseAction Run() override; - DECLARE_EXTENSION_FUNCTION("accessibilityPrivate.enableChromeVoxMouseEvents", - ACCESSIBILITY_PRIVATE_ENABLECHROMEVOXMOUSEEVENTS) + DECLARE_EXTENSION_FUNCTION("accessibilityPrivate.enableMouseEvents", + ACCESSIBILITY_PRIVATE_ENABLEMOUSEEVENTS) }; // API function that injects mouse events.
diff --git a/chrome/browser/accessibility/soda_installer.h b/chrome/browser/accessibility/soda_installer.h index b255b3b..44b7fdc7 100644 --- a/chrome/browser/accessibility/soda_installer.h +++ b/chrome/browser/accessibility/soda_installer.h
@@ -30,7 +30,7 @@ }; SODAInstaller(); - ~SODAInstaller(); + virtual ~SODAInstaller(); SODAInstaller(const SODAInstaller&) = delete; SODAInstaller& operator=(const SODAInstaller&) = delete;
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index 08c74c34..48698aad 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc
@@ -801,8 +801,9 @@ bool BrowserProcessImpl::IsShuttingDown() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/560486): Fix the tests that make the check of + // TODO (crbug.com/560486): Fix the tests that make the check of // |tearing_down_| necessary here. + // TODO (crbug/1155597): Maybe use browser_shutdown::HasShutdownStarted here. return shutting_down_ || tearing_down_; }
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc index 05c53994..6639204 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
@@ -16,13 +16,19 @@ #include "base/single_thread_task_runner.h" #include "base/task/task_traits.h" #include "base/values.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" +#include "chrome/browser/lifetime/browser_shutdown.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/sync/profile_sync_service_factory.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "components/browsing_data/core/pref_names.h" +#include "components/keep_alive_registry/keep_alive_types.h" +#include "components/keep_alive_registry/scoped_keep_alive.h" #include "components/prefs/pref_service.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" @@ -43,36 +49,58 @@ // An observer of all the browsing data removal tasks that are started by the // ChromeBrowsingDataLifetimeManager that records the the tasks starts and // completed states as well as their durations. -class BrowsingDataLifetimeManagerRemoverObserver +// TODO(crbug.com/88586): While the profile lifetime is tied to the browser's, +// the profile is kept from being deleted until |OnBrowsingDataRemoverDone| is +// called and |keep_alive| is not null. Once the profile lifetime is untied from +// the browser's and could be deleted before the browser's shutdown, it should +// still be kept from being deleted until |OnBrowsingDataRemoverDone| when +// |keep_alive| is not null. +class BrowsingDataRemoverObserver : public content::BrowsingDataRemover::Observer { public: - ~BrowsingDataLifetimeManagerRemoverObserver() override = default; + ~BrowsingDataRemoverObserver() override = default; - // Creates an instance of BrowsingDataLifetimeManagerRemoverObserver that + // Creates an instance of BrowsingDataRemoverObserver that // manages its own lifetime. The instance will be deleted after - // |OnBrowsingDataRemoverDone| is called. + // |OnBrowsingDataRemoverDone| is called. |keep_alive| is an optional + // parameter to pass to ensure that the browser does not initiates a shutdown + // before the browsing data clearing is complete. static content::BrowsingDataRemover::Observer* Create( content::BrowsingDataRemover* remover, - bool filterable_deletion) { - return new BrowsingDataLifetimeManagerRemoverObserver(remover, - filterable_deletion); + bool filterable_deletion, + Profile* profile, + std::unique_ptr<ScopedKeepAlive> keep_alive = nullptr) { + return new BrowsingDataRemoverObserver(remover, filterable_deletion, + profile, std::move(keep_alive)); } // content::BrowsingDataRemover::Observer: void OnBrowsingDataRemoverDone(uint64_t failed_data_types) override { base::UmaHistogramMediumTimes(duration_histogram(), base::TimeTicks::Now() - start_time_); + // Having |keep_alive_| not null means that the deletion that just finished + // was happening at the browser exit, therefore + // |kClearBrowsingDataOnExitDeletionPending| is no more necessary; + if (keep_alive_) { + profile_->GetPrefs()->ClearPref( + browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending); + } base::UmaHistogramBoolean(state_histogram(), /*BooleanStartedCompleted.Completed*/ true); + // The profile and browser should not be shutting down yet. + DCHECK(!keep_alive_ || !profile_->ShutdownStarted()); delete this; } private: - BrowsingDataLifetimeManagerRemoverObserver( - content::BrowsingDataRemover* remover, - bool filterable_deletion) + BrowsingDataRemoverObserver(content::BrowsingDataRemover* remover, + bool filterable_deletion, + Profile* profile, + std::unique_ptr<ScopedKeepAlive> keep_alive) : start_time_(base::TimeTicks::Now()), - filterable_deletion_(filterable_deletion) { + filterable_deletion_(filterable_deletion), + profile_(profile), + keep_alive_(std::move(keep_alive)) { browsing_data_remover_observer_.Observe(remover); base::UmaHistogramBoolean(state_histogram(), /*BooleanStartedCompleted.Started*/ false); @@ -83,8 +111,12 @@ "History.BrowsingDataLifetime.Duration.ScheduledFilterableDeletion"; static constexpr char kDurationScheduledUnfilterableDeletion[] = "History.BrowsingDataLifetime.Duration.ScheduledUnfilterableDeletion"; - return filterable_deletion_ ? kDurationScheduledFilterableDeletion - : kDurationScheduledUnfilterableDeletion; + static constexpr char kDurationBrowserShutdownDeletion[] = + "History.BrowsingDataLifetime.Duration.BrowserShutdownDeletion"; + return keep_alive_ + ? kDurationBrowserShutdownDeletion + : filterable_deletion_ ? kDurationScheduledFilterableDeletion + : kDurationScheduledUnfilterableDeletion; } const char* state_histogram() const { @@ -92,8 +124,12 @@ "History.BrowsingDataLifetime.State.ScheduledFilterableDeletion"; static constexpr char kStateScheduledUnfilterableDeletion[] = "History.BrowsingDataLifetime.State.ScheduledUnfilterableDeletion"; - return filterable_deletion_ ? kStateScheduledFilterableDeletion - : kStateScheduledUnfilterableDeletion; + static constexpr char kStateBrowserShutdownDeletion[] = + "History.BrowsingDataLifetime.State.BrowserShutdownDeletion"; + return keep_alive_ + ? kStateBrowserShutdownDeletion + : filterable_deletion_ ? kStateScheduledFilterableDeletion + : kStateScheduledUnfilterableDeletion; } base::ScopedObservation<content::BrowsingDataRemover, @@ -101,6 +137,9 @@ browsing_data_remover_observer_{this}; const base::TimeTicks start_time_; const bool filterable_deletion_; + + Profile* const profile_; + std::unique_ptr<ScopedKeepAlive> keep_alive_; }; uint64_t GetOriginTypeMask(const base::Value& data_types) { @@ -238,6 +277,38 @@ weak_ptr_factory_.InvalidateWeakPtrs(); } +void ChromeBrowsingDataLifetimeManager::ClearBrowsingDataForOnExitPolicy( + bool keep_browser_alive) { + auto* data_types = profile_->GetPrefs()->GetList( + browsing_data::prefs::kClearBrowsingDataOnExitList); + if (data_types && !data_types->GetList().empty() && + !ProfileSyncServiceFactory::IsSyncAllowed(profile_)) { + profile_->GetPrefs()->SetBoolean( + browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending, true); + auto* remover = content::BrowserContext::GetBrowsingDataRemover(profile_); + // Add a ScopedKeepAlive to hold the browser shutdown until the browsing + // data is deleted and the profile is destroyed. +#if DCHECK_IS_ON() + if (browser_shutdown::HasShutdownStarted()) + DCHECK(keep_browser_alive); +#endif + auto keep_alive = keep_browser_alive + ? std::make_unique<ScopedKeepAlive>( + KeepAliveOrigin::BROWSING_DATA_LIFETIME_MANAGER, + KeepAliveRestartOption::DISABLED) + : nullptr; + remover->RemoveAndReply(base::Time(), base::Time::Max(), + GetRemoveMask(*data_types), + GetOriginTypeMask(*data_types), + BrowsingDataRemoverObserver::Create( + remover, /*filterable_deletion=*/true, profile_, + std::move(keep_alive))); + } else { + profile_->GetPrefs()->ClearPref( + browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending); + } +} + void ChromeBrowsingDataLifetimeManager::UpdateScheduledRemovalSettings() { weak_ptr_factory_.InvalidateWeakPtrs(); scheduled_removals_settings_ = @@ -249,8 +320,6 @@ } void ChromeBrowsingDataLifetimeManager::StartScheduledBrowsingDataRemoval() { - bool sync_enabled = ProfileSyncServiceFactory::IsSyncAllowed(profile_); - content::BrowsingDataRemover* remover = content::BrowserContext::GetBrowsingDataRemover(profile_); @@ -259,13 +328,19 @@ if (removal_settings.time_to_live_in_hours <= 0) continue; + smallest_time_to_live = + std::min(removal_settings.time_to_live_in_hours, smallest_time_to_live); + + if (ProfileSyncServiceFactory::IsSyncAllowed(profile_)) + continue; + auto deletion_end_time = end_time_for_testing_.value_or( base::Time::Now() - base::TimeDelta::FromHours(removal_settings.time_to_live_in_hours)); auto filterable_remove_mask = removal_settings.remove_mask & chrome_browsing_data_remover::FILTERABLE_DATA_TYPES; - if (filterable_remove_mask && sync_enabled) { + if (filterable_remove_mask) { auto filter_builder = content::BrowsingDataFilterBuilder::Create( content::BrowsingDataFilterBuilder::Mode::kPreserve); for (const auto& url : GetOpenedUrls(profile_)) { @@ -276,25 +351,22 @@ removal_settings.origin_type_mask, std::move(filter_builder), testing_data_remover_observer_ ? testing_data_remover_observer_ - : BrowsingDataLifetimeManagerRemoverObserver::Create( - remover, /*filterable_deletion=*/true)); + : BrowsingDataRemoverObserver::Create( + remover, /*filterable_deletion=*/true, profile_)); } auto unfilterable_remove_mask = removal_settings.remove_mask & ~chrome_browsing_data_remover::FILTERABLE_DATA_TYPES; - if (unfilterable_remove_mask && sync_enabled) { + if (unfilterable_remove_mask) { remover->RemoveAndReply( base::Time::Min(), deletion_end_time, unfilterable_remove_mask, removal_settings.origin_type_mask, testing_data_remover_observer_ ? testing_data_remover_observer_ - : BrowsingDataLifetimeManagerRemoverObserver::Create( - remover, /*filterable_deletion=*/false)); + : BrowsingDataRemoverObserver::Create( + remover, /*filterable_deletion=*/false, profile_)); } - - smallest_time_to_live = - std::min(removal_settings.time_to_live_in_hours, smallest_time_to_live); } if (smallest_time_to_live < std::numeric_limits<int>::max()) { content::GetUIThreadTaskRunner(
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h index 5b13188..e309365 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h
@@ -75,6 +75,22 @@ testing_data_remover_observer_ = observer; } + // Deletes all browsing data specified by the ClearBrowsingDataOnExitList + // policy for on the record profiles. This blocks shutdown until the required + // data is deleted. This will be called when the last browser window of a + // Profile is closed, then browsing data will be cleared according to the + // ClearBrowsingDataOnExitList policy. The browser and profile will have to be + // kept alive until the data is deleted. In case the browsing data clearing + // does not end properly, this may be called at the next startup in order to + // cleanup any remaining data. The browser and profile must be kept from + // shutting down while this is running because an early deletion of the + // profile will abort the browsing data clearing but still notify us that the + // data was cleared, even if it was not. If |keep_browser_alive|, the browser + // will be kept alive until the deletion is completed. This should be done if + // this function is called as part of a shutdown, but not as part of a cleanup + // at startup. + void ClearBrowsingDataForOnExitPolicy(bool keep_browser_alive); + private: // Updates the scheduled removal settings from the prefs. void UpdateScheduledRemovalSettings();
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc index b9ffdda..a424e2f 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
@@ -16,6 +16,7 @@ #include "base/test/scoped_feature_list.h" #include "base/test/test_mock_time_task_runner.h" #include "base/time/time.h" +#include "build/build_config.h" #include "chrome/browser/autofill/autofill_uitest_util.h" #include "chrome/browser/autofill/personal_data_manager_factory.h" #include "chrome/browser/browsing_data/browsing_data_remover_browsertest_base.h" @@ -23,6 +24,7 @@ #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" #include "chrome/browser/browsing_data/counters/site_data_counting_helper.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/in_process_browser_test.h" @@ -34,7 +36,12 @@ #include "components/browsing_data/core/features.h" #include "components/browsing_data/core/pref_names.h" #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/history/core/browser/history_service.h" +#include "components/history/core/browser/history_types.h" +#include "components/keyed_service/core/service_access_type.h" #include "components/prefs/testing_pref_service.h" +#include "components/sync/base/pref_names.h" +#include "components/sync/driver/sync_driver_switches.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browsing_data_filter_builder.h" #include "content/public/browser/browsing_data_remover.h" @@ -60,9 +67,8 @@ } // namespace class ChromeBrowsingDataLifetimeManagerTest - : public BrowsingDataRemoverBrowserTestBase, - public testing::WithParamInterface<BrowserType> { - public: + : public BrowsingDataRemoverBrowserTestBase { + protected: ChromeBrowsingDataLifetimeManagerTest() { InitFeatureList( {browsing_data::features::kEnableBrowsingDataLifetimeManager}); @@ -72,11 +78,9 @@ void SetUpOnMainThread() override { BrowsingDataRemoverBrowserTestBase::SetUpOnMainThread(); - if (GetParam() == BrowserType::Incognito) - UseIncognitoBrowser(); + GetBrowser()->profile()->GetPrefs()->Set(syncer::prefs::kSyncManaged, + base::Value(true)); } - - void ApplyBrowsingDataLifetimeDeletion(base::StringPiece pref) { auto* browsing_data_lifetime_manager = ChromeBrowsingDataLifetimeManagerFactory::GetForProfile( @@ -96,7 +100,24 @@ } }; -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, PrefChange) { +class ChromeBrowsingDataLifetimeManagerScheduledRemovalTest + : public ChromeBrowsingDataLifetimeManagerTest, + public testing::WithParamInterface<BrowserType> { + protected: + ChromeBrowsingDataLifetimeManagerScheduledRemovalTest() = default; + ~ChromeBrowsingDataLifetimeManagerScheduledRemovalTest() override = default; + + void SetUpOnMainThread() override { + ChromeBrowsingDataLifetimeManagerTest::SetUpOnMainThread(); + if (GetParam() == BrowserType::Incognito) + UseIncognitoBrowser(); + GetBrowser()->profile()->GetPrefs()->Set(syncer::prefs::kSyncManaged, + base::Value(true)); + } +}; + +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + PrefChange) { static constexpr char kCookiesPref[] = R"([{"time_to_live_in_hours": 1, "data_types": ["cookies_and_other_site_data"]}])"; @@ -123,8 +144,8 @@ VerifyDownloadCount(0u); } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalDownload) { +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + Download) { static constexpr char kPref[] = R"([{"time_to_live_in_hours": 1, "data_types":["download_history"]}])"; DownloadAnItem(); @@ -133,8 +154,8 @@ VerifyDownloadCount(0u); } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalHistory) { +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + History) { // No history saved in incognito mode. if (IsIncognito()) return; @@ -151,8 +172,8 @@ EXPECT_FALSE(HasDataForType("History")); } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalContentSettings) { +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + ContentSettings) { static constexpr char kPref[] = R"([{"time_to_live_in_hours": 1, "data_types":["site_settings"]}])"; @@ -174,8 +195,8 @@ } } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalSiteData) { +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + SiteData) { static constexpr char kPref[] = R"([{"time_to_live_in_hours": 1, "data_types": ["cookies_and_other_site_data"]}])"; @@ -199,8 +220,8 @@ } } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalCache) { +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + Cache) { static constexpr char kPref[] = R"([{"time_to_live_in_hours": 1, "data_types": ["cached_images_and_files"]}])"; @@ -218,8 +239,9 @@ EXPECT_NE(net::OK, content::LoadBasicRequest(network_context(), url)); } -IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerTest, - ScheduledRemovalAutofill) { +// Disabled because "autofill::AddTestProfile" times out when sync is disabled. +IN_PROC_BROWSER_TEST_P(ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, + DISABLED_Autofill) { // No autofill data saved in incognito mode. if (IsIncognito()) return; @@ -245,6 +267,134 @@ } INSTANTIATE_TEST_SUITE_P(All, - ChromeBrowsingDataLifetimeManagerTest, + ChromeBrowsingDataLifetimeManagerScheduledRemovalTest, ::testing::Values(BrowserType::Default, BrowserType::Incognito)); + +class ChromeBrowsingDataLifetimeManagerShutdownTest + : public ChromeBrowsingDataLifetimeManagerTest { + protected: + ChromeBrowsingDataLifetimeManagerShutdownTest() = default; + ~ChromeBrowsingDataLifetimeManagerShutdownTest() override = default; + + history::HistoryService* history_service() { + return HistoryServiceFactory::GetForProfile( + browser()->profile(), ServiceAccessType::EXPLICIT_ACCESS); + } + + void VerifyHistorySize(size_t expected_size) { + history::QueryResults history_query_results; + base::RunLoop run_loop; + base::CancelableTaskTracker tracker; + history_service()->QueryHistory( + base::string16(), history::QueryOptions(), + base::BindLambdaForTesting([&](history::QueryResults results) { + history_query_results = std::move(results); + run_loop.QuitClosure().Run(); + }), + &tracker); + run_loop.Run(); + EXPECT_EQ(history_query_results.size(), expected_size); + } +}; + +IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest, + PRE_PRE_BrowserShutdown) { + // browsing_history + history_service()->AddPage(GURL("https://www.website.com"), + base::Time::FromDoubleT(1000), + history::VisitSource::SOURCE_BROWSED); + VerifyHistorySize(1u); + + // download_history + DownloadAnItem(); + VerifyDownloadCount(1u); + + // site_settings + auto* map = + HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()); + map->SetContentSettingDefaultScope(GURL("http://host1.com:1"), GURL(), + ContentSettingsType::COOKIES, + CONTENT_SETTING_BLOCK); + + ContentSettingsForOneType host_settings; + bool has_pref_setting = false; + map->GetSettingsForOneType(ContentSettingsType::COOKIES, &host_settings); + for (const auto& host_setting : host_settings) { + if (host_setting.source == "webui_allowlist") + continue; + if (host_setting.source == "preference") { + has_pref_setting = true; + EXPECT_EQ(ContentSettingsPattern::FromURL(GURL("http://host1.com:1")), + host_setting.primary_pattern); + EXPECT_EQ(CONTENT_SETTING_BLOCK, host_setting.GetContentSetting()); + } + } + EXPECT_TRUE(has_pref_setting); + + // Ensure nothing gets deleted when the browser closes. + static constexpr char kPref[] = R"([])"; + GetBrowser()->profile()->GetPrefs()->Set( + browsing_data::prefs::kClearBrowsingDataOnExitList, + *base::JSONReader::Read(kPref)); + base::RunLoop().RunUntilIdle(); +} + +IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest, + PRE_BrowserShutdown) { + // browsing_history + VerifyHistorySize(1u); + + // download_history + VerifyDownloadCount(1u); + + // site_settings + auto* map = + HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()); + ContentSettingsForOneType host_settings; + bool has_pref_setting = false; + map->GetSettingsForOneType(ContentSettingsType::COOKIES, &host_settings); + for (const auto& host_setting : host_settings) { + if (host_setting.source == "webui_allowlist") + continue; + if (host_setting.source == "preference") { + has_pref_setting = true; + EXPECT_EQ(ContentSettingsPattern::FromURL(GURL("http://host1.com:1")), + host_setting.primary_pattern); + EXPECT_EQ(CONTENT_SETTING_BLOCK, host_setting.GetContentSetting()); + } + } + EXPECT_TRUE(has_pref_setting); + + // Ensure data gets deleted when the browser closes. + static constexpr char kPref[] = + R"(["browsing_history", "download_history", "cookies_and_other_site_data", + "cached_images_and_files", "password_signin", "autofill", "site_settings", + "hosted_app_data"])"; + GetBrowser()->profile()->GetPrefs()->Set( + browsing_data::prefs::kClearBrowsingDataOnExitList, + *base::JSONReader::Read(kPref)); + base::RunLoop().RunUntilIdle(); +} + +IN_PROC_BROWSER_TEST_F(ChromeBrowsingDataLifetimeManagerShutdownTest, + BrowserShutdown) { + // browsing_history + VerifyHistorySize(0u); + + // download_history + VerifyDownloadCount(0u); + + // site_settings + auto* map = + HostContentSettingsMapFactory::GetForProfile(GetBrowser()->profile()); + + ContentSettingsForOneType host_settings; + map->GetSettingsForOneType(ContentSettingsType::COOKIES, &host_settings); + for (const auto& host_setting : host_settings) { + if (host_setting.source == "webui_allowlist") + continue; + EXPECT_EQ(ContentSettingsPattern::Wildcard(), host_setting.primary_pattern); + EXPECT_EQ(CONTENT_SETTING_ALLOW, host_setting.GetContentSetting()); + } +}
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc index c3b7e9e..3b411c46 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_unittest.cc
@@ -16,6 +16,7 @@ #include "components/browsing_data/core/features.h" #include "components/browsing_data/core/pref_names.h" #include "components/prefs/testing_pref_service.h" +#include "components/sync/base/pref_names.h" #include "content/public/browser/browsing_data_remover.h" #include "content/public/browser/browsing_data_remover_delegate.h" #include "content/public/test/browser_task_environment.h" @@ -32,6 +33,8 @@ TestingProfile::Builder builder; builder.OverrideIsNewProfile(true); auto testing_profile = builder.Build(); + testing_profile->GetPrefs()->Set(syncer::prefs::kSyncManaged, + base::Value(true)); content::MockBrowsingDataRemoverDelegate delegate; auto* remover = @@ -96,3 +99,53 @@ browser_task_environment.FastForwardBy(base::TimeDelta::FromHours(1)); delegate.VerifyAndClearExpectations(); } + +TEST(ChromeBrowsingDataLifetimeManager, ScheduledRemovalWithSync) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + browsing_data::features::kEnableBrowsingDataLifetimeManager); + content::BrowserTaskEnvironment browser_task_environment{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + TestingProfile::Builder builder; + builder.OverrideIsNewProfile(true); + auto testing_profile = builder.Build(); + + content::MockBrowsingDataRemoverDelegate delegate; + auto* remover = + content::BrowserContext::GetBrowsingDataRemover(testing_profile.get()); + remover->SetEmbedderDelegate(&delegate); + static constexpr char kPref[] = + R"([{"time_to_live_in_hours": 1, "data_types":["cached_images_and_files", + "site_settings"]}, {"time_to_live_in_hours": 2, "data_types": + ["cookies_and_other_site_data", "hosted_app_data"]}])"; + uint64_t remove_mask_1_filterable = + content::BrowsingDataRemover::DATA_TYPE_CACHE; + uint64_t remove_mask_1_unfilterable = + chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS; + uint64_t remove_mask_2 = chrome_browsing_data_remover::DATA_TYPE_SITE_DATA; + uint64_t origin_mask_2 = + content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB | + content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB; + + // Sync is enabled, so no deletion should be made. + testing_profile->GetPrefs()->Set(browsing_data::prefs::kBrowsingDataLifetime, + *base::JSONReader::Read(kPref)); + browser_task_environment.RunUntilIdle(); + delegate.VerifyAndClearExpectations(); + + // If sync gets disabled, the scheduled deletions should proceed as usual. + testing_profile->GetPrefs()->Set(syncer::prefs::kSyncManaged, + base::Value(true)); + + // Each scheduled removal is called once every lowest time_to_live_in_hours, + // ere every 1 hour. + delegate.ExpectCallDontCareAboutFilterBuilder( + base::Time::Min(), base::Time::Now(), remove_mask_1_filterable, 0); + delegate.ExpectCallDontCareAboutFilterBuilder( + base::Time::Min(), base::Time::Now(), remove_mask_1_unfilterable, 0); + delegate.ExpectCallDontCareAboutFilterBuilder( + base::Time::Min(), base::Time::Now() - base::TimeDelta::FromHours(1), + remove_mask_2, origin_mask_2); + browser_task_environment.FastForwardBy(base::TimeDelta::FromHours(1)); + delegate.VerifyAndClearExpectations(); +}
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 9f4be27..8831c0f4 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc
@@ -429,8 +429,10 @@ const base::CommandLine& command_line, const base::FilePath& current_directory) { // Drop the request if the browser process is already shutting down. - if (!g_browser_process || g_browser_process->IsShuttingDown()) + if (!g_browser_process || g_browser_process->IsShuttingDown() || + browser_shutdown::HasShutdownStarted()) { return; + } g_browser_process->platform_part()->PlatformSpecificCommandLineProcessing( command_line); @@ -1360,6 +1362,13 @@ // Desktop construction occurs here, (required before profile creation). PreProfileInit(); +#if BUILDFLAG(ENABLE_NACL) + // NaClBrowserDelegateImpl is accessed inside CreatePrimaryProfile(). + // So make sure to create it before that. + nacl::NaClBrowser::SetDelegate(std::make_unique<NaClBrowserDelegateImpl>( + browser_process_->profile_manager())); +#endif // BUILDFLAG(ENABLE_NACL) + // This step is costly and is already measured in Startup.CreateFirstProfile // and more directly Profile.CreateAndInitializeProfile. profile_ = CreatePrimaryProfile(parameters(), @@ -1421,13 +1430,6 @@ page_info::SetPageInfoClient(new ChromePageInfoClient()); #endif -#if BUILDFLAG(ENABLE_NACL) - // NaClBrowserDelegateImpl is accessed inside PostProfileInit(). - // So make sure to create it before that. - nacl::NaClBrowser::SetDelegate(std::make_unique<NaClBrowserDelegateImpl>( - browser_process_->profile_manager())); -#endif // BUILDFLAG(ENABLE_NACL) - // TODO(stevenjb): Move WIN and MACOSX specific code to appropriate Parts. // (requires supporting early exit). PostProfileInit();
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 591e593..ab828203c 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -2661,6 +2661,8 @@ "secure_channel/nearby_endpoint_finder_impl.h", "secure_channel/secure_channel_client_provider.cc", "secure_channel/secure_channel_client_provider.h", + "secure_channel/util/histogram_util.cc", + "secure_channel/util/histogram_util.h", "service_sandbox_type.h", "session_length_limiter.cc", "session_length_limiter.h",
diff --git a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc b/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc index 8b7f2d6..415cfbc7 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc +++ b/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.cc
@@ -75,15 +75,13 @@ chromeos::ForwardKeyToExtension(*(event->AsKeyEvent()), host); } -void AccessibilityEventRewriterDelegate::DispatchMouseEventToChromeVox( +void AccessibilityEventRewriterDelegate::DispatchMouseEvent( std::unique_ptr<ui::Event> event) { if (is_arc_window_active_) return; - if (event->type() == ui::ET_MOUSE_MOVED) { - AutomationManagerAura::GetInstance()->HandleEvent( - ax::mojom::Event::kMouseMoved); - } + AutomationManagerAura::GetInstance()->HandleEvent( + ax::mojom::Event::kMouseMoved); } void AccessibilityEventRewriterDelegate::SendSwitchAccessCommand(
diff --git a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h b/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h index 10927ee8..401d376d 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h +++ b/chrome/browser/chromeos/accessibility/accessibility_event_rewriter_delegate.h
@@ -36,7 +36,7 @@ // ash::AccessibilityEventRewriterDelegate: void DispatchKeyEventToChromeVox(std::unique_ptr<ui::Event> event, bool capture) override; - void DispatchMouseEventToChromeVox(std::unique_ptr<ui::Event> event) override; + void DispatchMouseEvent(std::unique_ptr<ui::Event> event) override; void SendSwitchAccessCommand(ash::SwitchAccessCommand command) override; void SendPointScanPoint(const gfx::PointF& point) override;
diff --git a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h b/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h index 80b0e8b..c3892767 100644 --- a/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h +++ b/chrome/browser/chromeos/accessibility/soda_installer_impl_chromeos.h
@@ -17,7 +17,7 @@ class SODAInstallerImplChromeOS : public SODAInstaller { public: SODAInstallerImplChromeOS(); - ~SODAInstallerImplChromeOS(); + ~SODAInstallerImplChromeOS() override; SODAInstallerImplChromeOS(const SODAInstallerImplChromeOS&) = delete; SODAInstallerImplChromeOS& operator=(const SODAInstallerImplChromeOS&) = delete;
diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc index 9ff7b835..b4b6e84 100644 --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc
@@ -435,7 +435,7 @@ } // Enable the function of speaking text under mouse. - ash::EventRewriterController::Get()->SetSendMouseEventsToDelegate(true); + ash::EventRewriterController::Get()->SetSendMouseEvents(true); // Focus on the Shelf because voice text for focusing on Shelf is fixed. // Wait until voice announcements are finished.
diff --git a/chrome/browser/chromeos/arc/arc_support_host.cc b/chrome/browser/chromeos/arc/arc_support_host.cc index 065b18a..2b93e8f 100644 --- a/chrome/browser/chromeos/arc/arc_support_host.cc +++ b/chrome/browser/chromeos/arc/arc_support_host.cc
@@ -376,6 +376,8 @@ case Error::SIGN_IN_CLOUD_PROVISION_FLOW_NETWORK_ERROR: case Error::SIGN_IN_CLOUD_PROVISION_FLOW_PERMANENT_ERROR: case Error::SIGN_IN_CLOUD_PROVISION_FLOW_TRANSIENT_ERROR: + case Error::SIGN_IN_SERVICE_UNAVAILABLE_ERROR: + case Error::SIGN_IN_GMS_NOT_AVAILABLE_ERROR: case Error::SIGN_IN_UNKNOWN_ERROR: DCHECK(error_info.arg); message = l10n_util::GetStringFUTF16(
diff --git a/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc b/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc index 88cb811..f6c4a99 100644 --- a/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc +++ b/chrome/browser/chromeos/arc/session/arc_session_manager_unittest.cc
@@ -1141,12 +1141,55 @@ DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerArcAlwaysStartTest); }; +ArcProvisioningResult CreateProvisioningResult( + const absl::variant<arc::mojom::GeneralSignInError, + arc::mojom::GMSSignInError, + arc::mojom::GMSCheckInError, + arc::mojom::CloudProvisionFlowError, + ArcStopReason, + ChromeProvisioningTimeout>& error) { + if (absl::holds_alternative<arc::mojom::GeneralSignInError>(error)) { + return ArcProvisioningResult(arc::mojom::ArcSignInResult::NewError( + arc::mojom::ArcSignInError::NewGeneralError( + absl::get<arc::mojom::GeneralSignInError>(error)))); + } + + if (absl::holds_alternative<arc::mojom::GMSSignInError>(error)) { + return ArcProvisioningResult(arc::mojom::ArcSignInResult::NewError( + arc::mojom::ArcSignInError::NewSignInError( + absl::get<arc::mojom::GMSSignInError>(error)))); + } + + if (absl::holds_alternative<arc::mojom::GMSCheckInError>(error)) { + return ArcProvisioningResult(arc::mojom::ArcSignInResult::NewError( + arc::mojom::ArcSignInError::NewCheckInError( + absl::get<arc::mojom::GMSCheckInError>(error)))); + } + + if (absl::holds_alternative<arc::mojom::CloudProvisionFlowError>(error)) { + return ArcProvisioningResult(arc::mojom::ArcSignInResult::NewError( + arc::mojom::ArcSignInError::NewCloudProvisionFlowError( + absl::get<arc::mojom::CloudProvisionFlowError>(error)))); + } + + if (absl::holds_alternative<ArcStopReason>(error)) + return ArcProvisioningResult(absl::get<ArcStopReason>(error)); + + return ArcProvisioningResult(ChromeProvisioningTimeout{}); +} + struct ProvisioningErrorDisplayTestParam { // the reason for arc instance stopping - ArcStopReason stop_reason; + absl::variant<arc::mojom::GeneralSignInError, + arc::mojom::GMSSignInError, + arc::mojom::GMSCheckInError, + arc::mojom::CloudProvisionFlowError, + ArcStopReason, + ChromeProvisioningTimeout> + error; // the error sent to arc support host - ArcSupportHost::Error error; + ArcSupportHost::Error message; // the error code sent to arc support host base::Optional<int> arg; @@ -1160,7 +1203,16 @@ ArcSupportHost::Error::LOW_DISK_SPACE_ERROR, {}}, {ArcStopReason::CRASH, ArcSupportHost::Error::SIGN_IN_UNKNOWN_ERROR, - 8 /*ARC_STOPPED*/}}; + 8 /*ARC_STOPPED*/}, + {arc::mojom::GMSSignInError::GMS_SIGN_IN_NETWORK_ERROR, + ArcSupportHost::Error::SIGN_IN_NETWORK_ERROR, + 1 /*GMS_SIGN_IN_NETWORK_ERROR*/}, + {arc::mojom::GMSSignInError::GMS_SIGN_IN_TIMEOUT, + ArcSupportHost::Error::SIGN_IN_SERVICE_UNAVAILABLE_ERROR, + 5 /*GMS_SIGN_IN_TIMEOUT*/}, + {arc::mojom::GMSCheckInError::GMS_CHECK_IN_TIMEOUT, + ArcSupportHost::Error::SIGN_IN_GMS_NOT_AVAILABLE_ERROR, + 2 /*GMS_CHECK_IN_TIMEOUT*/}}; class ProvisioningErrorDisplayTest : public ArcSessionManagerTest, @@ -1187,11 +1239,11 @@ TEST_P(ProvisioningErrorDisplayTest, ArcStopped) { ShowErrorObserver observer(arc_session_manager()); - arc_session_manager()->OnProvisioningFinished( - ArcProvisioningResult(GetParam().stop_reason)); + ArcProvisioningResult result = CreateProvisioningResult(GetParam().error); + arc_session_manager()->OnProvisioningFinished(result); ASSERT_TRUE(observer.error_info()); - EXPECT_EQ(GetParam().error, observer.error_info().value().error); + EXPECT_EQ(GetParam().message, observer.error_info().value().error); EXPECT_EQ(GetParam().arg, observer.error_info().value().arg); } @@ -1752,39 +1804,8 @@ arc_session_manager()->StartArcForTesting(); EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); - absl::variant<arc::mojom::GeneralSignInError, arc::mojom::GMSSignInError, - arc::mojom::GMSCheckInError, - arc::mojom::CloudProvisionFlowError, ArcStopReason, - ChromeProvisioningTimeout> - error = std::move(GetParam().error); - - if (absl::holds_alternative<arc::mojom::CloudProvisionFlowError>(error)) { - ArcProvisioningResult result(arc::mojom::ArcSignInResult::NewError( - arc::mojom::ArcSignInError::NewCloudProvisionFlowError( - absl::get<arc::mojom::CloudProvisionFlowError>(error)))); - arc_session_manager()->OnProvisioningFinished(result); - } else if (absl::holds_alternative<ArcStopReason>(error)) { - ArcProvisioningResult result(absl::get<ArcStopReason>(error)); - arc_session_manager()->OnProvisioningFinished(result); - } else if (absl::holds_alternative<arc::mojom::GeneralSignInError>(error)) { - ArcProvisioningResult result(arc::mojom::ArcSignInResult::NewError( - arc::mojom::ArcSignInError::NewGeneralError( - absl::get<arc::mojom::GeneralSignInError>(error)))); - arc_session_manager()->OnProvisioningFinished(result); - } else if (absl::holds_alternative<arc::mojom::GMSSignInError>(error)) { - ArcProvisioningResult result(arc::mojom::ArcSignInResult::NewError( - arc::mojom::ArcSignInError::NewSignInError( - absl::get<arc::mojom::GMSSignInError>(error)))); - arc_session_manager()->OnProvisioningFinished(result); - } else if (absl::holds_alternative<arc::mojom::GMSCheckInError>(error)) { - ArcProvisioningResult result(arc::mojom::ArcSignInResult::NewError( - arc::mojom::ArcSignInError::NewCheckInError( - absl::get<arc::mojom::GMSCheckInError>(error)))); - arc_session_manager()->OnProvisioningFinished(result); - } else if (absl::holds_alternative<ChromeProvisioningTimeout>(error)) { - arc_session_manager()->OnProvisioningFinished( - ArcProvisioningResult(ChromeProvisioningTimeout{})); - } + ArcProvisioningResult result1 = CreateProvisioningResult(GetParam().error); + arc_session_manager()->OnProvisioningFinished(result1); // In case of permanent error data removal request is scheduled. EXPECT_EQ(GetParam().data_removed,
diff --git a/chrome/browser/chromeos/crosapi/browser_manager.cc b/chrome/browser/chromeos/crosapi/browser_manager.cc index e10d7944..b1c292f 100644 --- a/chrome/browser/chromeos/crosapi/browser_manager.cc +++ b/chrome/browser/chromeos/crosapi/browser_manager.cc
@@ -304,9 +304,6 @@ options.environment["GOOGLE_DEFAULT_CLIENT_SECRET"] = google_apis::GetOAuth2ClientSecret(google_apis::CLIENT_MAIN); - // This sets the channel for Lacros. - options.environment["CHROME_VERSION_EXTRA"] = "dev"; - options.kill_on_parent_death = true; // Paths are UTF-8 safe on Chrome OS.
diff --git a/chrome/browser/chromeos/extensions/printing/OWNERS b/chrome/browser/chromeos/extensions/printing/OWNERS index 85e681a..f7ca56d 100644 --- a/chrome/browser/chromeos/extensions/printing/OWNERS +++ b/chrome/browser/chromeos/extensions/printing/OWNERS
@@ -1,2 +1,2 @@ -nikitapodguzov@chromium.org +bmalcolm@chromium.org skau@chromium.org
diff --git a/chrome/browser/chromeos/extensions/printing_metrics/OWNERS b/chrome/browser/chromeos/extensions/printing_metrics/OWNERS index 85e681a..f7ca56d 100644 --- a/chrome/browser/chromeos/extensions/printing_metrics/OWNERS +++ b/chrome/browser/chromeos/extensions/printing_metrics/OWNERS
@@ -1,2 +1,2 @@ -nikitapodguzov@chromium.org +bmalcolm@chromium.org skau@chromium.org
diff --git a/chrome/browser/chromeos/printing/history/OWNERS b/chrome/browser/chromeos/printing/history/OWNERS index 85e681a..f7ca56d 100644 --- a/chrome/browser/chromeos/printing/history/OWNERS +++ b/chrome/browser/chromeos/printing/history/OWNERS
@@ -1,2 +1,2 @@ -nikitapodguzov@chromium.org +bmalcolm@chromium.org skau@chromium.org
diff --git a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc index d0bdfe2a..66da372b 100644 --- a/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc +++ b/chrome/browser/chromeos/secure_channel/nearby_connection_broker_impl.cc
@@ -8,6 +8,7 @@ #include "base/metrics/histogram_functions.h" #include "base/rand_util.h" #include "chrome/browser/chromeos/secure_channel/nearby_endpoint_finder.h" +#include "chrome/browser/chromeos/secure_channel/util/histogram_util.h" #include "chromeos/components/multidevice/logging/logging.h" namespace chromeos { @@ -264,6 +265,8 @@ BytesPayload::New(message_as_bytes))), base::BindOnce(&NearbyConnectionBrokerImpl::OnSendPayloadResult, weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + + util::LogMessageAction(util::MessageAction::kMessageSent); } void NearbyConnectionBrokerImpl::OnConnectionInitiated( @@ -363,6 +366,8 @@ payload->content->get_bytes()->bytes; NotifyMessageReceived( std::string(message_as_bytes.begin(), message_as_bytes.end())); + + util::LogMessageAction(util::MessageAction::kMessageReceived); } std::ostream& operator<<(std::ostream& stream,
diff --git a/chrome/browser/chromeos/secure_channel/util/histogram_util.cc b/chrome/browser/chromeos/secure_channel/util/histogram_util.cc new file mode 100644 index 0000000..74f0db9f --- /dev/null +++ b/chrome/browser/chromeos/secure_channel/util/histogram_util.cc
@@ -0,0 +1,20 @@ +// Copyright 2020 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/chromeos/secure_channel/util/histogram_util.h" + +#include "base/metrics/histogram_functions.h" + +namespace chromeos { +namespace secure_channel { +namespace util { + +void LogMessageAction(MessageAction message_action) { + base::UmaHistogramEnumeration( + "MultiDevice.SecureChannel.Nearby.MessageAction", message_action); +} + +} // namespace util +} // namespace secure_channel +} // namespace chromeos
diff --git a/chrome/browser/chromeos/secure_channel/util/histogram_util.h b/chrome/browser/chromeos/secure_channel/util/histogram_util.h new file mode 100644 index 0000000..559c5137 --- /dev/null +++ b/chrome/browser/chromeos/secure_channel/util/histogram_util.h
@@ -0,0 +1,29 @@ +// Copyright 2020 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_CHROMEOS_SECURE_CHANNEL_UTIL_HISTOGRAM_UTIL_H_ +#define CHROME_BROWSER_CHROMEOS_SECURE_CHANNEL_UTIL_HISTOGRAM_UTIL_H_ + +namespace chromeos { +namespace secure_channel { +namespace util { + +// Enumeration of possible message transfer action via Nearby Connection +// library. Keep in sync with corresponding enum in +// tools/metrics/histograms/enums.xml. These values are persisted to logs. +// Entries should not be renumbered and numeric values should never be reused. +enum class MessageAction { + kMessageSent = 0, + kMessageReceived = 1, + kMaxValue = kMessageReceived, +}; + +// Logs a given message transfer action. +void LogMessageAction(MessageAction message_action); + +} // namespace util +} // namespace secure_channel +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_SECURE_CHANNEL_UTIL_HISTOGRAM_UTIL_H_
diff --git a/chrome/browser/enterprise/connectors/content_analysis_dialog.cc b/chrome/browser/enterprise/connectors/content_analysis_dialog.cc index 432548bc..a8e2359 100644 --- a/chrome/browser/enterprise/connectors/content_analysis_dialog.cc +++ b/chrome/browser/enterprise/connectors/content_analysis_dialog.cc
@@ -17,6 +17,7 @@ #include "components/vector_icons/vector_icons.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/web_contents.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/base/ui_base_types.h" @@ -211,6 +212,20 @@ delegate_->Cancel(is_warning()); } +void ContentAnalysisDialog::SuccessCallback() { +#if defined(USE_AURA) + if (web_contents_) { + // It's possible focus has been lost and gained back incorrectly if the user + // clicked on the page between the time the scan started and the time the + // dialog closes. This results in the behaviour detailed in + // crbug.com/1139050. The fix is to preemptively take back focus when this + // dialog closes on its own. + web_contents_->SetIgnoreInputEvents(false); + web_contents_->Focus(); + } +#endif +} + bool ContentAnalysisDialog::ShouldShowCloseButton() const { return false; } @@ -460,6 +475,9 @@ } else { // Include no buttons otherwise. DialogDelegate::SetButtons(ui::DIALOG_BUTTON_NONE); + DialogDelegate::SetCancelCallback( + base::BindOnce(&ContentAnalysisDialog::SuccessCallback, + weak_ptr_factory_.GetWeakPtr())); } }
diff --git a/chrome/browser/enterprise/connectors/content_analysis_dialog.h b/chrome/browser/enterprise/connectors/content_analysis_dialog.h index c712abdb..3115ae9a 100644 --- a/chrome/browser/enterprise/connectors/content_analysis_dialog.h +++ b/chrome/browser/enterprise/connectors/content_analysis_dialog.h
@@ -208,6 +208,10 @@ void AcceptButtonCallback(); void CancelButtonCallback(); + // This callback used by DialogDelegate::SetCancelCallback and is used to + // ensure the auto-closing success dialog handles focus correctly. + void SuccessCallback(); + std::unique_ptr<ContentAnalysisDelegate> delegate_; content::WebContents* web_contents_;
diff --git a/chrome/browser/extensions/DIR_METADATA b/chrome/browser/extensions/DIR_METADATA new file mode 100644 index 0000000..81a57a13 --- /dev/null +++ b/chrome/browser/extensions/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/OWNERS b/chrome/browser/extensions/OWNERS index 77d2753..8f002a3 100644 --- a/chrome/browser/extensions/OWNERS +++ b/chrome/browser/extensions/OWNERS
@@ -12,6 +12,3 @@ # For adding/renaming files for Chrome OS apps APIs. per-file BUILD.gn=stevenjb@chromium.org per-file BUILD.gn=tbarzic@chromium.org - -# COMPONENT: Platform>Extensions -# TEAM: extensions-dev@chromium.org
diff --git a/chrome/browser/extensions/api/autofill_private/DIR_METADATA b/chrome/browser/extensions/api/autofill_private/DIR_METADATA new file mode 100644 index 0000000..f4b2e0ae --- /dev/null +++ b/chrome/browser/extensions/api/autofill_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Settings" +}
diff --git a/chrome/browser/extensions/api/autofill_private/OWNERS b/chrome/browser/extensions/api/autofill_private/OWNERS index e123d1973..6c958ae6 100644 --- a/chrome/browser/extensions/api/autofill_private/OWNERS +++ b/chrome/browser/extensions/api/autofill_private/OWNERS
@@ -1,5 +1,3 @@ file://chrome/browser/resources/settings/OWNERS jdoerrie@chromium.org - -# COMPONENT: UI>Settings
diff --git a/chrome/browser/extensions/api/automation/DIR_METADATA b/chrome/browser/extensions/api/automation/DIR_METADATA new file mode 100644 index 0000000..64ab044 --- /dev/null +++ b/chrome/browser/extensions/api/automation/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Accessibility" +}
diff --git a/chrome/browser/extensions/api/automation/OWNERS b/chrome/browser/extensions/api/automation/OWNERS index 292ee758..976b955 100644 --- a/chrome/browser/extensions/api/automation/OWNERS +++ b/chrome/browser/extensions/api/automation/OWNERS
@@ -1,3 +1 @@ file://ui/accessibility/OWNERS - -# COMPONENT: UI>Accessibility
diff --git a/chrome/browser/extensions/api/automation_internal/DIR_METADATA b/chrome/browser/extensions/api/automation_internal/DIR_METADATA new file mode 100644 index 0000000..64ab044 --- /dev/null +++ b/chrome/browser/extensions/api/automation_internal/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Accessibility" +}
diff --git a/chrome/browser/extensions/api/automation_internal/OWNERS b/chrome/browser/extensions/api/automation_internal/OWNERS index 292ee758..976b955 100644 --- a/chrome/browser/extensions/api/automation_internal/OWNERS +++ b/chrome/browser/extensions/api/automation_internal/OWNERS
@@ -1,3 +1 @@ file://ui/accessibility/OWNERS - -# COMPONENT: UI>Accessibility
diff --git a/chrome/browser/extensions/api/braille_display_private/DIR_METADATA b/chrome/browser/extensions/api/braille_display_private/DIR_METADATA new file mode 100644 index 0000000..a377c619 --- /dev/null +++ b/chrome/browser/extensions/api/braille_display_private/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "UI>Accessibility>ChromeVox" +} +team_email: "chromium-accessibility@chromium.org"
diff --git a/chrome/browser/extensions/api/braille_display_private/OWNERS b/chrome/browser/extensions/api/braille_display_private/OWNERS index 47e69169..976b955 100644 --- a/chrome/browser/extensions/api/braille_display_private/OWNERS +++ b/chrome/browser/extensions/api/braille_display_private/OWNERS
@@ -1,4 +1 @@ file://ui/accessibility/OWNERS - -# TEAM: chromium-accessibility@chromium.org -# COMPONENT: UI>Accessibility>ChromeVox
diff --git a/chrome/browser/extensions/api/browsing_data/DIR_METADATA b/chrome/browser/extensions/api/browsing_data/DIR_METADATA new file mode 100644 index 0000000..637eb4dc --- /dev/null +++ b/chrome/browser/extensions/api/browsing_data/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Extensions>API" +}
diff --git a/chrome/browser/extensions/api/browsing_data/OWNERS b/chrome/browser/extensions/api/browsing_data/OWNERS index 6d88880d..67f9a1c 100644 --- a/chrome/browser/extensions/api/browsing_data/OWNERS +++ b/chrome/browser/extensions/api/browsing_data/OWNERS
@@ -2,5 +2,3 @@ # but the following people are the most knowledgable: dullweber@chromium.org mkwst@chromium.org - -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/certificate_provider/DIR_METADATA b/chrome/browser/extensions/api/certificate_provider/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/certificate_provider/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/certificate_provider/OWNERS b/chrome/browser/extensions/api/certificate_provider/OWNERS index 6835e98..325f7c3 100644 --- a/chrome/browser/extensions/api/certificate_provider/OWNERS +++ b/chrome/browser/extensions/api/certificate_provider/OWNERS
@@ -1,3 +1 @@ emaxx@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/commands/DIR_METADATA b/chrome/browser/extensions/api/commands/DIR_METADATA new file mode 100644 index 0000000..e16d0d54 --- /dev/null +++ b/chrome/browser/extensions/api/commands/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions>API" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/commands/OWNERS b/chrome/browser/extensions/api/commands/OWNERS index 5b3c2a8..32f119e 100644 --- a/chrome/browser/extensions/api/commands/OWNERS +++ b/chrome/browser/extensions/api/commands/OWNERS
@@ -1,6 +1,3 @@ # Anyone in the parent directories can review changes to this directory, # but the following people are the most knowledgeable: finnur@chromium.org - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/cookies/DIR_METADATA b/chrome/browser/extensions/api/cookies/DIR_METADATA new file mode 100644 index 0000000..637eb4dc --- /dev/null +++ b/chrome/browser/extensions/api/cookies/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Extensions>API" +}
diff --git a/chrome/browser/extensions/api/cookies/OWNERS b/chrome/browser/extensions/api/cookies/OWNERS index 1282f89..3f84563 100644 --- a/chrome/browser/extensions/api/cookies/OWNERS +++ b/chrome/browser/extensions/api/cookies/OWNERS
@@ -1,3 +1 @@ mkwst@chromium.org - -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/cryptotoken_private/DIR_METADATA b/chrome/browser/extensions/api/cryptotoken_private/DIR_METADATA new file mode 100644 index 0000000..4717c96d --- /dev/null +++ b/chrome/browser/extensions/api/cryptotoken_private/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Blink>WebAuthentication" +} +team_email: "identity-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/cryptotoken_private/OWNERS b/chrome/browser/extensions/api/cryptotoken_private/OWNERS index 99c79f6..dd5ad77 100644 --- a/chrome/browser/extensions/api/cryptotoken_private/OWNERS +++ b/chrome/browser/extensions/api/cryptotoken_private/OWNERS
@@ -1,4 +1 @@ file://device/fido/OWNERS - -# TEAM: identity-dev@chromium.org -# COMPONENT: Blink>WebAuthentication
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc index 9c919a3..e22cf27b0 100644 --- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc +++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc
@@ -62,6 +62,7 @@ constexpr char kJSONRulesFilename[] = "rules_file.json"; +constexpr char kSmallRegexFilter[] = "http://(yahoo|google)\\.com"; constexpr char kLargeRegexFilter[] = ".{512}x"; constexpr char kId1[] = "1.json"; @@ -199,11 +200,12 @@ enum class RulesetScope { kDynamic, kSession }; // Runs the updateDynamicRules/updateSessionRules extension function based on - // |scope|. - bool RunUpdateRulesFunction(const Extension& extension, + // |scope| and verifies the success/failure based on |expected_error|. + void RunUpdateRulesFunction(const Extension& extension, const std::vector<int>& rule_ids_to_remove, const std::vector<TestRule>& rules_to_add, - RulesetScope scope) { + RulesetScope scope, + const std::string* expected_error = nullptr) { std::unique_ptr<base::Value> ids_to_remove_value = ListBuilder() .Append(rule_ids_to_remove.begin(), rule_ids_to_remove.end()) @@ -233,8 +235,15 @@ } update_function->set_extension(&extension); update_function->set_has_callback(true); - return api_test_utils::RunFunction(update_function.get(), json_args, - browser_context()); + if (!expected_error) { + ASSERT_TRUE(api_test_utils::RunFunction(update_function.get(), json_args, + browser_context())); + return; + } + + ASSERT_EQ(*expected_error, + api_test_utils::RunFunctionAndReturnError( + update_function.get(), json_args, browser_context())); } // Runs getDynamicRules/getSessionRules extension function and populates @@ -784,7 +793,7 @@ int id = kMinValidID; const int kNumSmallRegex = 5; - std::string small_regex = "http://(yahoo|google)\\.com"; + std::string small_regex = kSmallRegexFilter; for (int i = 0; i < kNumSmallRegex; i++, id++) { rule.id = id; rule.condition->regex_filter = small_regex; @@ -940,8 +949,9 @@ // Add some dynamic rules. std::vector<TestRule> dynamic_rules({CreateGenericRule()}); - ASSERT_TRUE(RunUpdateRulesFunction(*extension, {} /* rule_ids_to_remove */, - dynamic_rules, RulesetScope::kDynamic)); + ASSERT_NO_FATAL_FAILURE( + RunUpdateRulesFunction(*extension, {} /* rule_ids_to_remove */, + dynamic_rules, RulesetScope::kDynamic)); // The API function to update the dynamic ruleset should only complete once // the initial ruleset loading (in response to OnExtensionLoaded) is complete. @@ -1013,8 +1023,8 @@ rule_1.id = 1; TestRule rule_2 = CreateGenericRule(); rule_2.id = 2; - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {}, {rule_1, rule_2}, - RulesetScope::kSession)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {rule_1, rule_2}, RulesetScope::kSession)); RunGetRulesFunction(*extension(), RulesetScope::kSession, &result); EXPECT_THAT(result.GetList(), ::testing::UnorderedElementsAre( @@ -1027,8 +1037,8 @@ RunGetRulesFunction(*extension(), RulesetScope::kDynamic, &result); EXPECT_TRUE(result.empty()); - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {*rule_2.id}, {}, - RulesetScope::kSession)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction(*extension(), {*rule_2.id}, {}, + RulesetScope::kSession)); RunGetRulesFunction(*extension(), RulesetScope::kSession, &result); EXPECT_THAT(result.GetList(), ::testing::UnorderedElementsAre(::testing::Eq( std::cref(*rule_1.ToValue())))); @@ -1036,6 +1046,32 @@ EXPECT_TRUE(result.empty()); } +// Ensure an error is raised when an extension adds a session-scoped regex rule +// which consumes more memory than allowed. +TEST_P(SingleRulesetTest, LargeRegexError_SessionRules) { + // Load an extension with an empty static ruleset. + RulesetManagerObserver ruleset_waiter(manager()); + LoadAndExpectSuccess(); + ruleset_waiter.WaitForExtensionsWithRulesetsCount(1); + + // Ensure adding a normal regex rule succeeds. + TestRule normal_regex_rule = CreateGenericRule(1); + normal_regex_rule.condition->url_filter.reset(); + normal_regex_rule.condition->regex_filter = std::string(kSmallRegexFilter); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {normal_regex_rule}, RulesetScope::kSession)); + + // Ensure an error is raised on adding a large regex rule. + TestRule large_regex_rule = CreateGenericRule(2); + large_regex_rule.condition->url_filter.reset(); + large_regex_rule.condition->regex_filter = std::string(kLargeRegexFilter); + std::string expected_error = + ErrorUtils::FormatErrorMessage(kErrorRegexTooLarge, "2", kRegexFilterKey); + ASSERT_NO_FATAL_FAILURE( + RunUpdateRulesFunction(*extension(), {}, {large_regex_rule}, + RulesetScope::kSession, &expected_error)); +} + // Test fixture for a single ruleset with the // |kDeclarativeNetRequestGlobalRules| feature enabled. class SingleRulesetGlobalRulesTest : public SingleRulesetTest { @@ -1515,10 +1551,10 @@ // Ensure we can't enable/disable dynamic or session-scoped rulesets using // updateEnabledRulesets. - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {}, {CreateGenericRule()}, - RulesetScope::kDynamic)); - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {}, {CreateGenericRule()}, - RulesetScope::kSession)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {CreateGenericRule()}, RulesetScope::kDynamic)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {CreateGenericRule()}, RulesetScope::kSession)); VerifyPublicRulesetIDs(*extension(), {kId1, kId3, dnr_api::DYNAMIC_RULESET_ID, dnr_api::SESSION_RULESET_ID}); RunUpdateEnabledRulesetsFunction( @@ -1646,10 +1682,10 @@ // Add dynamic and session-scoped rules and ensure that the setEnabledRulesets // call doesn't have any effect on their associated rulesets. Also ensure that // the getEnabledRulesets call excludes these rulesets. - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {}, {CreateGenericRule()}, - RulesetScope::kDynamic)); - ASSERT_TRUE(RunUpdateRulesFunction(*extension(), {}, {CreateGenericRule()}, - RulesetScope::kSession)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {CreateGenericRule()}, RulesetScope::kDynamic)); + ASSERT_NO_FATAL_FAILURE(RunUpdateRulesFunction( + *extension(), {}, {CreateGenericRule()}, RulesetScope::kSession)); VerifyPublicRulesetIDs(*extension(), {kId2, kId3, dnr_api::DYNAMIC_RULESET_ID, dnr_api::SESSION_RULESET_ID}); VerifyGetEnabledRulesetsFunction(*extension(), {kId2, kId3});
diff --git a/chrome/browser/extensions/api/desktop_capture/DIR_METADATA b/chrome/browser/extensions/api/desktop_capture/DIR_METADATA new file mode 100644 index 0000000..f9e0b1be --- /dev/null +++ b/chrome/browser/extensions/api/desktop_capture/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Blink>GetUserMedia>Desktop" +} +team_email: "webrtc-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/desktop_capture/OWNERS b/chrome/browser/extensions/api/desktop_capture/OWNERS index ba9bb80..39013c0 100644 --- a/chrome/browser/extensions/api/desktop_capture/OWNERS +++ b/chrome/browser/extensions/api/desktop_capture/OWNERS
@@ -2,6 +2,3 @@ sergeyu@chromium.org wez@chromium.org braveyao@chromium.org - -# TEAM: webrtc-dev@chromium.org -# COMPONENT: Blink>GetUserMedia>Desktop
diff --git a/chrome/browser/extensions/api/downloads/DIR_METADATA b/chrome/browser/extensions/api/downloads/DIR_METADATA new file mode 100644 index 0000000..6bf7cbf --- /dev/null +++ b/chrome/browser/extensions/api/downloads/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>Downloads" +}
diff --git a/chrome/browser/extensions/api/downloads/OWNERS b/chrome/browser/extensions/api/downloads/OWNERS index 793643e..98c80d2 100644 --- a/chrome/browser/extensions/api/downloads/OWNERS +++ b/chrome/browser/extensions/api/downloads/OWNERS
@@ -1,3 +1 @@ file://chrome/browser/download/OWNERS - -# COMPONENT: UI>Browser>Downloads \ No newline at end of file
diff --git a/chrome/browser/extensions/api/enterprise_device_attributes/DIR_METADATA b/chrome/browser/extensions/api/enterprise_device_attributes/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/enterprise_device_attributes/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/enterprise_device_attributes/OWNERS b/chrome/browser/extensions/api/enterprise_device_attributes/OWNERS index 10a65a81..eca9776 100644 --- a/chrome/browser/extensions/api/enterprise_device_attributes/OWNERS +++ b/chrome/browser/extensions/api/enterprise_device_attributes/OWNERS
@@ -1,4 +1,2 @@ emaxx@chromium.org pbond@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/enterprise_networking_attributes/DIR_METADATA b/chrome/browser/extensions/api/enterprise_networking_attributes/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/enterprise_networking_attributes/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/enterprise_networking_attributes/OWNERS b/chrome/browser/extensions/api/enterprise_networking_attributes/OWNERS index d11193d..aef9c2c4 100644 --- a/chrome/browser/extensions/api/enterprise_networking_attributes/OWNERS +++ b/chrome/browser/extensions/api/enterprise_networking_attributes/OWNERS
@@ -1,3 +1 @@ hendrich@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/DIR_METADATA b/chrome/browser/extensions/api/enterprise_platform_keys/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/enterprise_platform_keys/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/OWNERS b/chrome/browser/extensions/api/enterprise_platform_keys/OWNERS index f3044fe..56eef3e 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys/OWNERS +++ b/chrome/browser/extensions/api/enterprise_platform_keys/OWNERS
@@ -1,4 +1,2 @@ emaxx@chromium.org drcrash@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys_private/DIR_METADATA b/chrome/browser/extensions/api/enterprise_platform_keys_private/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/enterprise_platform_keys_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys_private/OWNERS b/chrome/browser/extensions/api/enterprise_platform_keys_private/OWNERS index 3163d94..19c0042 100644 --- a/chrome/browser/extensions/api/enterprise_platform_keys_private/OWNERS +++ b/chrome/browser/extensions/api/enterprise_platform_keys_private/OWNERS
@@ -3,5 +3,3 @@ bartfab@chromium.org mnissler@chromium.org dkrahn@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/DIR_METADATA b/chrome/browser/extensions/api/enterprise_reporting_private/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/enterprise_reporting_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/OWNERS b/chrome/browser/extensions/api/enterprise_reporting_private/OWNERS index c5b6aac7..50855db 100644 --- a/chrome/browser/extensions/api/enterprise_reporting_private/OWNERS +++ b/chrome/browser/extensions/api/enterprise_reporting_private/OWNERS
@@ -1,5 +1,3 @@ mad@chromium.org pastarmovj@chromium.org zmin@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/feedback_private/DIR_METADATA b/chrome/browser/extensions/api/feedback_private/DIR_METADATA new file mode 100644 index 0000000..1b00e25cb7 --- /dev/null +++ b/chrome/browser/extensions/api/feedback_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Apps>Feedback" +}
diff --git a/chrome/browser/extensions/api/feedback_private/OWNERS b/chrome/browser/extensions/api/feedback_private/OWNERS index fae7a0ce..220e699 100644 --- a/chrome/browser/extensions/api/feedback_private/OWNERS +++ b/chrome/browser/extensions/api/feedback_private/OWNERS
@@ -1,3 +1 @@ file://components/feedback/OWNERS - -# COMPONENT: Platform>Apps>Feedback
diff --git a/chrome/browser/extensions/api/gcm/DIR_METADATA b/chrome/browser/extensions/api/gcm/DIR_METADATA new file mode 100644 index 0000000..8b9e15e --- /dev/null +++ b/chrome/browser/extensions/api/gcm/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Services>CloudMessaging" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/gcm/OWNERS b/chrome/browser/extensions/api/gcm/OWNERS index 2eda4709..b6f724e 100644 --- a/chrome/browser/extensions/api/gcm/OWNERS +++ b/chrome/browser/extensions/api/gcm/OWNERS
@@ -1,6 +1,3 @@ fgorski@chromium.org jianli@chromium.org peter@chromium.org - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Services>CloudMessaging
diff --git a/chrome/browser/extensions/api/identity/DIR_METADATA b/chrome/browser/extensions/api/identity/DIR_METADATA new file mode 100644 index 0000000..c7cc5397 --- /dev/null +++ b/chrome/browser/extensions/api/identity/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Services>SignIn" +} +team_email: "chrome-signin@chromium.org"
diff --git a/chrome/browser/extensions/api/identity/OWNERS b/chrome/browser/extensions/api/identity/OWNERS index 969297f..c9be6fe 100644 --- a/chrome/browser/extensions/api/identity/OWNERS +++ b/chrome/browser/extensions/api/identity/OWNERS
@@ -4,6 +4,3 @@ # Original author, very slow on reviews as no longer working on Chromium. courage@chromium.org - -# TEAM: chrome-signin@chromium.org -# COMPONENT: Services>SignIn
diff --git a/chrome/browser/extensions/api/instance_id/DIR_METADATA b/chrome/browser/extensions/api/instance_id/DIR_METADATA new file mode 100644 index 0000000..e16d0d54 --- /dev/null +++ b/chrome/browser/extensions/api/instance_id/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions>API" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/instance_id/OWNERS b/chrome/browser/extensions/api/instance_id/OWNERS index 5bd4dfa..b6f724e 100644 --- a/chrome/browser/extensions/api/instance_id/OWNERS +++ b/chrome/browser/extensions/api/instance_id/OWNERS
@@ -1,6 +1,3 @@ fgorski@chromium.org jianli@chromium.org peter@chromium.org - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/language_settings_private/DIR_METADATA b/chrome/browser/extensions/api/language_settings_private/DIR_METADATA new file mode 100644 index 0000000..f4b2e0ae --- /dev/null +++ b/chrome/browser/extensions/api/language_settings_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Settings" +}
diff --git a/chrome/browser/extensions/api/language_settings_private/OWNERS b/chrome/browser/extensions/api/language_settings_private/OWNERS index 14a91b0..2dbba8f 100644 --- a/chrome/browser/extensions/api/language_settings_private/OWNERS +++ b/chrome/browser/extensions/api/language_settings_private/OWNERS
@@ -1,5 +1,3 @@ michaelpg@chromium.org file://chrome/browser/resources/settings/OWNERS - -# COMPONENT: UI>Settings
diff --git a/chrome/browser/extensions/api/mdns/DIR_METADATA b/chrome/browser/extensions/api/mdns/DIR_METADATA new file mode 100644 index 0000000..1952c42 --- /dev/null +++ b/chrome/browser/extensions/api/mdns/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Cast>API" +}
diff --git a/chrome/browser/extensions/api/mdns/OWNERS b/chrome/browser/extensions/api/mdns/OWNERS index 57649bc..2acc4e2 100644 --- a/chrome/browser/extensions/api/mdns/OWNERS +++ b/chrome/browser/extensions/api/mdns/OWNERS
@@ -1,4 +1,2 @@ mfoltz@chromium.org vitalybuka@chromium.org - -# COMPONENT: Internals>Cast>API
diff --git a/chrome/browser/extensions/api/messaging/DIR_METADATA b/chrome/browser/extensions/api/messaging/DIR_METADATA new file mode 100644 index 0000000..637eb4dc --- /dev/null +++ b/chrome/browser/extensions/api/messaging/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Extensions>API" +}
diff --git a/chrome/browser/extensions/api/messaging/OWNERS b/chrome/browser/extensions/api/messaging/OWNERS index 8e55ee8..13300d5 100644 --- a/chrome/browser/extensions/api/messaging/OWNERS +++ b/chrome/browser/extensions/api/messaging/OWNERS
@@ -3,5 +3,3 @@ # For native messaging. sergeyu@chromium.org - -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/metrics_private/DIR_METADATA b/chrome/browser/extensions/api/metrics_private/DIR_METADATA new file mode 100644 index 0000000..540f41c --- /dev/null +++ b/chrome/browser/extensions/api/metrics_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Metrics" +}
diff --git a/chrome/browser/extensions/api/metrics_private/OWNERS b/chrome/browser/extensions/api/metrics_private/OWNERS index 816cc8b5..feb8271 100644 --- a/chrome/browser/extensions/api/metrics_private/OWNERS +++ b/chrome/browser/extensions/api/metrics_private/OWNERS
@@ -1,4 +1,2 @@ asvitkine@chromium.org isherman@chromium.org - -# COMPONENT: Internals>Metrics
diff --git a/chrome/browser/extensions/api/notifications/DIR_METADATA b/chrome/browser/extensions/api/notifications/DIR_METADATA new file mode 100644 index 0000000..81a57a13 --- /dev/null +++ b/chrome/browser/extensions/api/notifications/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/notifications/OWNERS b/chrome/browser/extensions/api/notifications/OWNERS index 323720b..5a275aa 100644 --- a/chrome/browser/extensions/api/notifications/OWNERS +++ b/chrome/browser/extensions/api/notifications/OWNERS
@@ -1,5 +1,2 @@ dewittj@chromium.org peter@chromium.org - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Platform>Extensions
diff --git a/chrome/browser/extensions/api/passwords_private/DIR_METADATA b/chrome/browser/extensions/api/passwords_private/DIR_METADATA new file mode 100644 index 0000000..f4b2e0ae --- /dev/null +++ b/chrome/browser/extensions/api/passwords_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Settings" +}
diff --git a/chrome/browser/extensions/api/passwords_private/OWNERS b/chrome/browser/extensions/api/passwords_private/OWNERS index e123d1973..6c958ae6 100644 --- a/chrome/browser/extensions/api/passwords_private/OWNERS +++ b/chrome/browser/extensions/api/passwords_private/OWNERS
@@ -1,5 +1,3 @@ file://chrome/browser/resources/settings/OWNERS jdoerrie@chromium.org - -# COMPONENT: UI>Settings
diff --git a/chrome/browser/extensions/api/platform_keys/DIR_METADATA b/chrome/browser/extensions/api/platform_keys/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/platform_keys/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/platform_keys/OWNERS b/chrome/browser/extensions/api/platform_keys/OWNERS index d95b35b6..ea64ac8a 100644 --- a/chrome/browser/extensions/api/platform_keys/OWNERS +++ b/chrome/browser/extensions/api/platform_keys/OWNERS
@@ -1,5 +1,3 @@ emaxx@chromium.org omorsi@google.com pmarko@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/safe_browsing_private/DIR_METADATA b/chrome/browser/extensions/api/safe_browsing_private/DIR_METADATA new file mode 100644 index 0000000..4aad319b --- /dev/null +++ b/chrome/browser/extensions/api/safe_browsing_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Services>Safebrowsing" +}
diff --git a/chrome/browser/extensions/api/safe_browsing_private/OWNERS b/chrome/browser/extensions/api/safe_browsing_private/OWNERS index fede9e2..70e4b68 100644 --- a/chrome/browser/extensions/api/safe_browsing_private/OWNERS +++ b/chrome/browser/extensions/api/safe_browsing_private/OWNERS
@@ -1,5 +1,3 @@ drubery@chromium.org nparker@chromium.org vakh@chromium.org - -# COMPONENT: Services>Safebrowsing
diff --git a/chrome/browser/extensions/api/settings_private/DIR_METADATA b/chrome/browser/extensions/api/settings_private/DIR_METADATA new file mode 100644 index 0000000..f4b2e0ae --- /dev/null +++ b/chrome/browser/extensions/api/settings_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Settings" +}
diff --git a/chrome/browser/extensions/api/settings_private/OWNERS b/chrome/browser/extensions/api/settings_private/OWNERS index 14a91b0..2dbba8f 100644 --- a/chrome/browser/extensions/api/settings_private/OWNERS +++ b/chrome/browser/extensions/api/settings_private/OWNERS
@@ -1,5 +1,3 @@ michaelpg@chromium.org file://chrome/browser/resources/settings/OWNERS - -# COMPONENT: UI>Settings
diff --git a/chrome/browser/extensions/api/system_indicator/DIR_METADATA b/chrome/browser/extensions/api/system_indicator/DIR_METADATA new file mode 100644 index 0000000..4d8a1e1 --- /dev/null +++ b/chrome/browser/extensions/api/system_indicator/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Apps" +} +team_email: "apps-dev@chromium.org"
diff --git a/chrome/browser/extensions/api/system_indicator/OWNERS b/chrome/browser/extensions/api/system_indicator/OWNERS index 8d997bdb..6f1cc7b 100644 --- a/chrome/browser/extensions/api/system_indicator/OWNERS +++ b/chrome/browser/extensions/api/system_indicator/OWNERS
@@ -1,4 +1 @@ dewittj@chromium.org - -# TEAM: apps-dev@chromium.org -# COMPONENT: Platform>Apps
diff --git a/chrome/browser/extensions/api/system_private/DIR_METADATA b/chrome/browser/extensions/api/system_private/DIR_METADATA new file mode 100644 index 0000000..299fade --- /dev/null +++ b/chrome/browser/extensions/api/system_private/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "UI>Accessibility" +} +team_email: "chromium-accessibility@chromium.org"
diff --git a/chrome/browser/extensions/api/system_private/OWNERS b/chrome/browser/extensions/api/system_private/OWNERS index 285d43b..c32e0598 100644 --- a/chrome/browser/extensions/api/system_private/OWNERS +++ b/chrome/browser/extensions/api/system_private/OWNERS
@@ -1,4 +1 @@ dmazzoni@chromium.org - -# TEAM: chromium-accessibility@chromium.org -# COMPONENT: UI>Accessibility
diff --git a/chrome/browser/extensions/api/tab_capture/DIR_METADATA b/chrome/browser/extensions/api/tab_capture/DIR_METADATA new file mode 100644 index 0000000..ce3ee4c9 --- /dev/null +++ b/chrome/browser/extensions/api/tab_capture/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>GetUserMedia>Tab" +}
diff --git a/chrome/browser/extensions/api/tab_capture/OWNERS b/chrome/browser/extensions/api/tab_capture/OWNERS index 99f680c..90320c9 100644 --- a/chrome/browser/extensions/api/tab_capture/OWNERS +++ b/chrome/browser/extensions/api/tab_capture/OWNERS
@@ -1,4 +1,2 @@ miu@chromium.org mfoltz@chromium.org - -# COMPONENT: Blink>GetUserMedia>Tab
diff --git a/chrome/browser/extensions/api/tab_groups/DIR_METADATA b/chrome/browser/extensions/api/tab_groups/DIR_METADATA new file mode 100644 index 0000000..3e4f8093 --- /dev/null +++ b/chrome/browser/extensions/api/tab_groups/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>TabStrip>TabGroups" +}
diff --git a/chrome/browser/extensions/api/tab_groups/OWNERS b/chrome/browser/extensions/api/tab_groups/OWNERS index 2ad7968b..f3f733f 100644 --- a/chrome/browser/extensions/api/tab_groups/OWNERS +++ b/chrome/browser/extensions/api/tab_groups/OWNERS
@@ -1,3 +1 @@ -# COMPONENT: UI>Browser>TabStrip>TabGroups - -file://chrome/browser/ui/tabs/OWNERS +file://chrome/browser/ui/tabs/OWNERS \ No newline at end of file
diff --git a/chrome/browser/extensions/api/terminal/DIR_METADATA b/chrome/browser/extensions/api/terminal/DIR_METADATA new file mode 100644 index 0000000..b3cd940 --- /dev/null +++ b/chrome/browser/extensions/api/terminal/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Shell>Containers" +}
diff --git a/chrome/browser/extensions/api/terminal/OWNERS b/chrome/browser/extensions/api/terminal/OWNERS index dbcc5af3..4a587ed 100644 --- a/chrome/browser/extensions/api/terminal/OWNERS +++ b/chrome/browser/extensions/api/terminal/OWNERS
@@ -1,5 +1,3 @@ joelhockey@chromium.org juwa@google.com vapier@chromium.org - -# COMPONENT: UI>Shell>Containers
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/DIR_METADATA b/chrome/browser/extensions/api/virtual_keyboard_private/DIR_METADATA new file mode 100644 index 0000000..c209bae --- /dev/null +++ b/chrome/browser/extensions/api/virtual_keyboard_private/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Input>VirtualKeyboard" +}
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/OWNERS b/chrome/browser/extensions/api/virtual_keyboard_private/OWNERS index 94fbd75..a1be014b 100644 --- a/chrome/browser/extensions/api/virtual_keyboard_private/OWNERS +++ b/chrome/browser/extensions/api/virtual_keyboard_private/OWNERS
@@ -1,3 +1 @@ file://ash/keyboard/OWNERS - -# COMPONENT: UI>Input>VirtualKeyboard
diff --git a/chrome/browser/extensions/api/vpn_provider/DIR_METADATA b/chrome/browser/extensions/api/vpn_provider/DIR_METADATA new file mode 100644 index 0000000..3ecb477 --- /dev/null +++ b/chrome/browser/extensions/api/vpn_provider/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise" +}
diff --git a/chrome/browser/extensions/api/vpn_provider/OWNERS b/chrome/browser/extensions/api/vpn_provider/OWNERS index e1cacf4d..a913a05 100644 --- a/chrome/browser/extensions/api/vpn_provider/OWNERS +++ b/chrome/browser/extensions/api/vpn_provider/OWNERS
@@ -1,4 +1,2 @@ bartfab@chromium.org emaxx@chromium.org - -# COMPONENT: Enterprise
diff --git a/chrome/browser/extensions/api/web_request/DIR_METADATA b/chrome/browser/extensions/api/web_request/DIR_METADATA new file mode 100644 index 0000000..637eb4dc --- /dev/null +++ b/chrome/browser/extensions/api/web_request/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Extensions>API" +}
diff --git a/chrome/browser/extensions/api/web_request/OWNERS b/chrome/browser/extensions/api/web_request/OWNERS index 77b56cf0..b96c22f9 100644 --- a/chrome/browser/extensions/api/web_request/OWNERS +++ b/chrome/browser/extensions/api/web_request/OWNERS
@@ -1,3 +1 @@ file://extensions/browser/api/web_request/OWNERS - -# COMPONENT: Platform>Extensions>API
diff --git a/chrome/browser/extensions/api/web_view/DIR_METADATA b/chrome/browser/extensions/api/web_view/DIR_METADATA new file mode 100644 index 0000000..22d44120c --- /dev/null +++ b/chrome/browser/extensions/api/web_view/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Apps>BrowserTag" +}
diff --git a/chrome/browser/extensions/api/web_view/OWNERS b/chrome/browser/extensions/api/web_view/OWNERS index 74d34105..4da9c54 100644 --- a/chrome/browser/extensions/api/web_view/OWNERS +++ b/chrome/browser/extensions/api/web_view/OWNERS
@@ -1,3 +1 @@ file://components/guest_view/OWNERS - -# COMPONENT: Platform>Apps>BrowserTag
diff --git a/chrome/browser/extensions/component_extensions_allowlist/DIR_METADATA b/chrome/browser/extensions/component_extensions_allowlist/DIR_METADATA new file mode 100644 index 0000000..81a57a13 --- /dev/null +++ b/chrome/browser/extensions/component_extensions_allowlist/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/component_extensions_allowlist/OWNERS b/chrome/browser/extensions/component_extensions_allowlist/OWNERS index d3b8c8a..7edac8a 100644 --- a/chrome/browser/extensions/component_extensions_allowlist/OWNERS +++ b/chrome/browser/extensions/component_extensions_allowlist/OWNERS
@@ -3,6 +3,3 @@ set noparent file://chrome/browser/extensions/component_extensions_allowlist/EXTENSION_ALLOWLIST_OWNERS - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Platform>Extensions
diff --git a/chrome/browser/extensions/forced_extensions/DIR_METADATA b/chrome/browser/extensions/forced_extensions/DIR_METADATA new file mode 100644 index 0000000..6e4e82d --- /dev/null +++ b/chrome/browser/extensions/forced_extensions/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Enterprise>ExtensionReliability" +}
diff --git a/chrome/browser/extensions/forced_extensions/OWNERS b/chrome/browser/extensions/forced_extensions/OWNERS index 44afa5a..aa46929 100644 --- a/chrome/browser/extensions/forced_extensions/OWNERS +++ b/chrome/browser/extensions/forced_extensions/OWNERS
@@ -3,5 +3,3 @@ burunduk@chromium.org poromov@chromium.org swapnilgupta@google.com - -# COMPONENT: Enterprise>ExtensionReliability
diff --git a/chrome/browser/extensions/system_display/DIR_METADATA b/chrome/browser/extensions/system_display/DIR_METADATA new file mode 100644 index 0000000..1dbbfb1f --- /dev/null +++ b/chrome/browser/extensions/system_display/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "OS>Systems>Display" +}
diff --git a/chrome/browser/extensions/system_display/OWNERS b/chrome/browser/extensions/system_display/OWNERS index 671dbe7f..21a3ab6d 100644 --- a/chrome/browser/extensions/system_display/OWNERS +++ b/chrome/browser/extensions/system_display/OWNERS
@@ -1,5 +1,3 @@ afakhry@chromium.org file://chrome/browser/resources/settings/OWNERS - -# COMPONENT: OS>Systems>Display
diff --git a/chrome/browser/extensions/updater/DIR_METADATA b/chrome/browser/extensions/updater/DIR_METADATA new file mode 100644 index 0000000..81a57a13 --- /dev/null +++ b/chrome/browser/extensions/updater/DIR_METADATA
@@ -0,0 +1,4 @@ +monorail { + component: "Platform>Extensions" +} +team_email: "extensions-dev@chromium.org"
diff --git a/chrome/browser/extensions/updater/OWNERS b/chrome/browser/extensions/updater/OWNERS index 7421bdb..ec81839 100644 --- a/chrome/browser/extensions/updater/OWNERS +++ b/chrome/browser/extensions/updater/OWNERS
@@ -1,5 +1,2 @@ sorin@chromium.org waffles@chromium.org - -# TEAM: extensions-dev@chromium.org -# COMPONENT: Platform>Extensions
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index bfc0736..ed24e90 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -1507,8 +1507,8 @@ }, { "name": "enable-desktop-pwas-run-on-os-login", - "owners": [ "cafrias@microsoft.com", "desktop-pwas-team@google.com" ], - "expiry_milestone": 88 + "owners": [ "mjackson@microsoft.com", "desktop-pwas-team@google.com" ], + "expiry_milestone": 90 }, { "name": "enable-desktop-pwas-tab-strip", @@ -2028,7 +2028,7 @@ { "name": "enable-pointer-lock-options", "owners": [ "eirage", "nzolghadr", "input-dev" ], - "expiry_milestone": 87 + "expiry_milestone": 92 }, { "name": "enable-portals",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 016f1fa..ce79fd4 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -977,6 +977,7 @@ "Enable using server-provided resource loading hints to provide a preview " "over slow network connections."; +const char kEnableTabSearchFlagId[] = "enable-tab-search"; const char kEnableTabSearchName[] = "Enable Tab Search"; const char kEnableTabSearchDescription[] = "Enable the Tab Search feature in Top Chrome UI, which will show a popup " @@ -1943,6 +1944,7 @@ "Allows raw / unsanitized clipboard content to be read and written. " "See https://github.com/WICG/raw-clipboard-access."; +const char kReadLaterFlagId[] = "read-later"; const char kReadLaterName[] = "Read Later"; const char kReadLaterDescription[] = "Allow users to save tabs for later. Enables a new button and menu for "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 0d653a2..daa901b 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -573,6 +573,7 @@ extern const char kEnableSubresourceRedirectName[]; extern const char kEnableSubresourceRedirectDescription[]; +extern const char kEnableTabSearchFlagId[]; extern const char kEnableTabSearchName[]; extern const char kEnableTabSearchDescription[]; @@ -1133,6 +1134,7 @@ extern const char kRawClipboardName[]; extern const char kRawClipboardDescription[]; +extern const char kReadLaterFlagId[]; extern const char kReadLaterName[]; extern const char kReadLaterDescription[];
diff --git a/chrome/browser/lifetime/browser_shutdown.h b/chrome/browser/lifetime/browser_shutdown.h index eed4b72e..d132425 100644 --- a/chrome/browser/lifetime/browser_shutdown.h +++ b/chrome/browser/lifetime/browser_shutdown.h
@@ -65,6 +65,8 @@ // Returns true if OnShutdownStarting has been called to note that shutdown has // started. +// TODO (crbug/1155597): Make this work in sync with +// BrowserProcessImpl::IsShuttingDown. bool HasShutdownStarted(); // Returns true if OnShutdownStarting has been called and unload handlers (e.g.,
diff --git a/chrome/browser/media/webrtc/desktop_capture_access_handler.cc b/chrome/browser/media/webrtc/desktop_capture_access_handler.cc index 04530ce..11b7408 100644 --- a/chrome/browser/media/webrtc/desktop_capture_access_handler.cc +++ b/chrome/browser/media/webrtc/desktop_capture_access_handler.cc
@@ -470,7 +470,7 @@ if (!base::FeatureList::IsEnabled( features::kDesktopCaptureTabSharingInfobar) || request.requested_video_device_id.empty()) { - picker = picker_factory_->CreatePicker(); + picker = picker_factory_->CreatePicker(&request); if (!picker) { std::move(callback).Run( blink::MediaStreamDevices(),
diff --git a/chrome/browser/media/webrtc/desktop_media_picker.h b/chrome/browser/media/webrtc/desktop_media_picker.h index 483952f1..4690836 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker.h +++ b/chrome/browser/media/webrtc/desktop_media_picker.h
@@ -15,6 +15,7 @@ #include "base/optional.h" #include "base/strings/string16.h" #include "content/public/browser/desktop_media_id.h" +#include "content/public/browser/media_stream_request.h" #include "content/public/browser/web_contents_observer.h" #include "ui/base/ui_base_types.h" #include "ui/gfx/native_widget_types.h" @@ -25,8 +26,10 @@ class WebContents; } -// Abstract interface for desktop media picker UI. It's used by Desktop Media -// API and by ARC to let user choose a desktop media source. +// Base class for desktop media picker UI. It's used by Desktop Media API, and +// by ARC to let user choose a desktop media source. It is also used by +// getCurrentBrowsingContextMedia API to request user's permission to share the +// current browser context. // // TODO(crbug.com/987001): Rename this class. class DesktopMediaPicker { @@ -68,12 +71,14 @@ bool select_only_screen = false; }; - // Creates default implementation of DesktopMediaPicker for the current - // platform. - static std::unique_ptr<DesktopMediaPicker> Create(); + // Creates a picker dialog/confirmation box depending on the value of + // |request|. If no request is available the default picker, namely + // DesktopMediaPickerViews is used. + static std::unique_ptr<DesktopMediaPicker> Create( + const content::MediaStreamRequest* request = nullptr); - DesktopMediaPicker() {} - virtual ~DesktopMediaPicker() {} + DesktopMediaPicker() = default; + virtual ~DesktopMediaPicker() = default; // Shows dialog with list of desktop media sources (screens, windows, tabs) // provided by |sources_lists|.
diff --git a/chrome/browser/media/webrtc/desktop_media_picker_controller.cc b/chrome/browser/media/webrtc/desktop_media_picker_controller.cc index 239bf79..2fac9c0 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker_controller.cc +++ b/chrome/browser/media/webrtc/desktop_media_picker_controller.cc
@@ -101,7 +101,7 @@ } void DesktopMediaPickerController::ShowPickerDialog() { - picker_ = picker_factory_->CreatePicker(); + picker_ = picker_factory_->CreatePicker(/*request=*/nullptr); if (!picker_) { OnPickerDialogResults( "Desktop Capture API is not yet implemented for this platform.", {});
diff --git a/chrome/browser/media/webrtc/desktop_media_picker_controller_unittest.cc b/chrome/browser/media/webrtc/desktop_media_picker_controller_unittest.cc index 545d149..ffaf41b 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker_controller_unittest.cc +++ b/chrome/browser/media/webrtc/desktop_media_picker_controller_unittest.cc
@@ -46,7 +46,9 @@ class MockDesktopMediaPickerFactory : public DesktopMediaPickerFactory { public: - MOCK_METHOD0(CreatePicker, std::unique_ptr<DesktopMediaPicker>()); + MOCK_METHOD1(CreatePicker, + std::unique_ptr<DesktopMediaPicker>( + const content::MediaStreamRequest* request)); MOCK_METHOD1(CreateMediaList, std::vector<std::unique_ptr<DesktopMediaList>>( const std::vector<content::DesktopMediaID::Type>& types)); @@ -55,9 +57,10 @@ class DesktopMediaPickerControllerTest : public testing::Test { public: void SetUp() override { - ON_CALL(factory_, CreatePicker).WillByDefault([this]() { - return std::unique_ptr<DesktopMediaPicker>(std::move(picker_)); - }); + ON_CALL(factory_, CreatePicker) + .WillByDefault([this](const content::MediaStreamRequest* request) { + return std::unique_ptr<DesktopMediaPicker>(std::move(picker_)); + }); ON_CALL(factory_, CreateMediaList).WillByDefault([this](const auto& types) { std::vector<std::unique_ptr<DesktopMediaList>> lists; lists.push_back(std::move(media_list_)); @@ -80,7 +83,7 @@ // Test that the picker dialog is shown and the selected media ID is returned. TEST_F(DesktopMediaPickerControllerTest, ShowPicker) { - EXPECT_CALL(factory_, CreatePicker()); + EXPECT_CALL(factory_, CreatePicker(nullptr)); EXPECT_CALL(factory_, CreateMediaList(source_types_)); EXPECT_CALL(done_, Run("", media_id_)); EXPECT_CALL(*picker_, Show) @@ -95,7 +98,7 @@ // Test that a null result is returned in response to WebContentsDestroyed(). TEST_F(DesktopMediaPickerControllerTest, WebContentsDestroyed) { - EXPECT_CALL(factory_, CreatePicker()); + EXPECT_CALL(factory_, CreatePicker(nullptr)); EXPECT_CALL(factory_, CreateMediaList(source_types_)); EXPECT_CALL(done_, Run("", content::DesktopMediaID())); EXPECT_CALL(*picker_, Show); @@ -113,7 +116,7 @@ source.id = media_id_; source.name = base::ASCIIToUTF16("fake name"); - EXPECT_CALL(factory_, CreatePicker()).Times(0); + EXPECT_CALL(factory_, CreatePicker(nullptr)).Times(0); EXPECT_CALL(factory_, CreateMediaList(source_types_)); EXPECT_CALL(done_, Run("", source.id)); EXPECT_CALL(*picker_, Show).Times(0);
diff --git a/chrome/browser/media/webrtc/desktop_media_picker_factory.h b/chrome/browser/media/webrtc/desktop_media_picker_factory.h index 0e393e9..8da89c3 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker_factory.h +++ b/chrome/browser/media/webrtc/desktop_media_picker_factory.h
@@ -12,6 +12,7 @@ #include "chrome/browser/media/webrtc/desktop_media_list.h" #include "chrome/browser/media/webrtc/desktop_media_picker.h" #include "content/public/browser/desktop_media_id.h" +#include "content/public/browser/media_stream_request.h" // Interface for factory creating DesktopMediaList and DesktopMediaPicker // instances. @@ -19,7 +20,8 @@ public: virtual ~DesktopMediaPickerFactory(); - virtual std::unique_ptr<DesktopMediaPicker> CreatePicker() = 0; + virtual std::unique_ptr<DesktopMediaPicker> CreatePicker( + const content::MediaStreamRequest* request) = 0; virtual std::vector<std::unique_ptr<DesktopMediaList>> CreateMediaList( const std::vector<content::DesktopMediaID::Type>& types) = 0;
diff --git a/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.cc b/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.cc index d55e7ace..7855ded 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.cc +++ b/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.cc
@@ -22,12 +22,12 @@ return impl.get(); } -std::unique_ptr<DesktopMediaPicker> -DesktopMediaPickerFactoryImpl::CreatePicker() { +std::unique_ptr<DesktopMediaPicker> DesktopMediaPickerFactoryImpl::CreatePicker( + const content::MediaStreamRequest* request) { // DesktopMediaPicker is implemented only for Windows, OSX and Aura Linux // builds. -#if defined(TOOLKIT_VIEWS) || defined(OS_MAC) - return DesktopMediaPicker::Create(); +#if defined(TOOLKIT_VIEWS) + return DesktopMediaPicker::Create(request); #else return nullptr; #endif
diff --git a/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.h b/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.h index 4888b59..c6015b6 100644 --- a/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.h +++ b/chrome/browser/media/webrtc/desktop_media_picker_factory_impl.h
@@ -12,6 +12,7 @@ #include "chrome/browser/media/webrtc/desktop_media_picker.h" #include "chrome/browser/media/webrtc/desktop_media_picker_factory.h" #include "content/public/browser/desktop_media_id.h" +#include "content/public/browser/media_stream_request.h" // Factory creating DesktopMediaList and DesktopMediaPicker instances. class DesktopMediaPickerFactoryImpl : public DesktopMediaPickerFactory { @@ -24,7 +25,8 @@ // DesktopMediaPickerFactory implementation // Can return |nullptr| if platform doesn't support DesktopMediaPicker. - std::unique_ptr<DesktopMediaPicker> CreatePicker() override; + std::unique_ptr<DesktopMediaPicker> CreatePicker( + const content::MediaStreamRequest* request) override; std::vector<std::unique_ptr<DesktopMediaList>> CreateMediaList( const std::vector<content::DesktopMediaID::Type>& types) override;
diff --git a/chrome/browser/media/webrtc/display_media_access_handler.cc b/chrome/browser/media/webrtc/display_media_access_handler.cc index 52b49928..10026f1e 100644 --- a/chrome/browser/media/webrtc/display_media_access_handler.cc +++ b/chrome/browser/media/webrtc/display_media_access_handler.cc
@@ -138,17 +138,8 @@ } #endif // defined(OS_MAC) - if (request.video_type == - blink::mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB) { - // TODO(crbug.com/1136942): Add support for capture-this-tab instead of - // returning an error - std::move(callback).Run( - blink::MediaStreamDevices(), - blink::mojom::MediaStreamRequestResult::NOT_SUPPORTED, nullptr); - return; - } - - std::unique_ptr<DesktopMediaPicker> picker = picker_factory_->CreatePicker(); + std::unique_ptr<DesktopMediaPicker> picker = + picker_factory_->CreatePicker(&request); if (!picker) { std::move(callback).Run( blink::MediaStreamDevices(),
diff --git a/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.cc b/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.cc index db8e997..cfc6d30 100644 --- a/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.cc +++ b/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.cc
@@ -84,8 +84,8 @@ current_test_ = 0; } -std::unique_ptr<DesktopMediaPicker> -FakeDesktopMediaPickerFactory::CreatePicker() { +std::unique_ptr<DesktopMediaPicker> FakeDesktopMediaPickerFactory::CreatePicker( + const content::MediaStreamRequest* request) { EXPECT_LE(current_test_, tests_count_); if (current_test_ >= tests_count_) return std::unique_ptr<DesktopMediaPicker>();
diff --git a/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.h b/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.h index 76e8c1b..3b1074a 100644 --- a/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.h +++ b/chrome/browser/media/webrtc/fake_desktop_media_picker_factory.h
@@ -40,7 +40,8 @@ void SetTestFlags(TestFlags* test_flags, int tests_count); FakeDesktopMediaPicker* picker() const { return picker_; } // DesktopMediaPickerFactory implementation - std::unique_ptr<DesktopMediaPicker> CreatePicker() override; + std::unique_ptr<DesktopMediaPicker> CreatePicker( + const content::MediaStreamRequest* request) override; std::vector<std::unique_ptr<DesktopMediaList>> CreateMediaList( const std::vector<content::DesktopMediaID::Type>& types) override;
diff --git a/chrome/browser/metrics/cached_metrics_profile.cc b/chrome/browser/metrics/cached_metrics_profile.cc index 14f68e70..1caa78e 100644 --- a/chrome/browser/metrics/cached_metrics_profile.cc +++ b/chrome/browser/metrics/cached_metrics_profile.cc
@@ -4,12 +4,30 @@ #include "chrome/browser/metrics/cached_metrics_profile.h" +#include "build/chromeos_buildflags.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" +#if BUILDFLAG(IS_CHROMEOS_ASH) +#include "chrome/browser/chromeos/profiles/profile_helper.h" +#include "components/user_manager/user.h" +#include "components/user_manager/user_manager.h" +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + namespace metrics { +namespace { + +#if BUILDFLAG(IS_CHROMEOS_ASH) +bool IsLoggedIn() { + return user_manager::UserManager::IsInitialized() && + user_manager::UserManager::Get()->IsUserLoggedIn(); +} +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + +} // namespace + CachedMetricsProfile::CachedMetricsProfile() = default; CachedMetricsProfile::~CachedMetricsProfile() = default; @@ -20,16 +38,28 @@ return nullptr; // If there is a cached profile, reuse that. However, check that it is still - // valid first. + // valid first. This logic is valid for all platforms, including ChromeOS Ash. if (cached_profile_ && profile_manager->IsValidProfile(cached_profile_)) return cached_profile_; +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Select the primary user profile for ChromeOS. + if (!IsLoggedIn()) + return nullptr; + const user_manager::User* primary_user = + user_manager::UserManager::Get()->GetPrimaryUser(); + if (!primary_user || !primary_user->is_profile_created()) + return nullptr; + cached_profile_ = + chromeos::ProfileHelper::Get()->GetProfileByUser(primary_user); +#else // Find a suitable profile to use, and cache it so that we continue to report // statistics on the same profile. We would simply use // ProfileManager::GetLastUsedProfile(), except that that has the side effect // of creating a profile if it does not yet exist. cached_profile_ = profile_manager->GetProfileByPath( profile_manager->GetLastUsedProfileDir(profile_manager->user_data_dir())); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) if (cached_profile_) { // Ensure that the returned profile is not an incognito profile. cached_profile_ = cached_profile_->GetOriginalProfile();
diff --git a/chrome/browser/metrics/cached_metrics_profile.h b/chrome/browser/metrics/cached_metrics_profile.h index 0d8a839..755b0b7 100644 --- a/chrome/browser/metrics/cached_metrics_profile.h +++ b/chrome/browser/metrics/cached_metrics_profile.h
@@ -5,8 +5,6 @@ #ifndef CHROME_BROWSER_METRICS_CACHED_METRICS_PROFILE_H_ #define CHROME_BROWSER_METRICS_CACHED_METRICS_PROFILE_H_ -#include "base/macros.h" - class Profile; namespace metrics { @@ -16,6 +14,8 @@ class CachedMetricsProfile { public: CachedMetricsProfile(); + CachedMetricsProfile(const CachedMetricsProfile&) = delete; + CachedMetricsProfile& operator=(const CachedMetricsProfile&) = delete; ~CachedMetricsProfile(); // Returns the profile for which metrics will be gathered. Once a suitable @@ -28,8 +28,6 @@ // its value is cached here so that GetMetricsProfile() can return a // consistent value. Profile* cached_profile_ = nullptr; - - DISALLOW_COPY_AND_ASSIGN(CachedMetricsProfile); }; } // namespace metrics
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc index b6e19e90..7742ee95 100644 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -386,8 +386,10 @@ class ProfileClientImpl : public metrics::DemographicMetricsProvider::ProfileClient { public: - ~ProfileClientImpl() override {} ProfileClientImpl() = default; + ProfileClientImpl(const ProfileClientImpl&) = delete; + ProfileClientImpl& operator=(const ProfileClientImpl&) = delete; + ~ProfileClientImpl() override = default; int GetNumberOfProfilesOnDisk() override { return g_browser_process->profile_manager()->GetNumberOfProfiles(); @@ -425,8 +427,6 @@ private: // Provides the same cached Profile each time. metrics::CachedMetricsProfile cached_metrics_profile_; - - DISALLOW_COPY_AND_ASSIGN(ProfileClientImpl); }; std::unique_ptr<metrics::DemographicMetricsProvider>
diff --git a/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc b/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc index 253ccf1..5259387 100644 --- a/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc +++ b/chrome/browser/metrics/chromeos_metrics_provider_unittest.cc
@@ -13,6 +13,7 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" #include "chrome/browser/chromeos/multidevice_setup/multidevice_setup_client_factory.h" +#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile_manager.h" @@ -75,6 +76,10 @@ } }; +const AccountId account_id1(AccountId::FromUserEmail("user1@example.com")); +const AccountId account_id2(AccountId::FromUserEmail("user2@example.com")); +const AccountId account_id3(AccountId::FromUserEmail("user3@example.com")); + } // namespace class ChromeOSMetricsProviderTest : public testing::Test { @@ -100,9 +105,7 @@ profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(profile_manager_->SetUp()); - TestingProfile* profile = - profile_manager_->CreateTestingProfile("test_name"); - profile_manager_->UpdateLastUser(profile); + testing_profile_ = profile_manager_->CreateTestingProfile("test_name"); // Set statistic provider for hardware class tests. chromeos::system::StatisticsProvider::SetTestProvider( @@ -128,6 +131,7 @@ base::test::ScopedFeatureList scoped_feature_list_; chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_; std::unique_ptr<TestingProfileManager> profile_manager_; + TestingProfile* testing_profile_ = nullptr; std::unique_ptr<FakeMultiDeviceSetupClientImplFactory> fake_multidevice_setup_client_impl_factory_; @@ -138,13 +142,10 @@ }; TEST_F(ChromeOSMetricsProviderTest, MultiProfileUserCount) { - const AccountId account_id1(AccountId::FromUserEmail("user1@example.com")); - const AccountId account_id2(AccountId::FromUserEmail("user2@example.com")); - const AccountId account_id3(AccountId::FromUserEmail("user3@example.com")); - // |scoped_enabler| takes over the lifetime of |user_manager|. chromeos::FakeChromeUserManager* user_manager = new chromeos::FakeChromeUserManager(); + // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. user_manager::ScopedUserManager scoped_enabler( base::WrapUnique(user_manager)); user_manager->AddKioskAppUser(account_id1); @@ -162,13 +163,10 @@ } TEST_F(ChromeOSMetricsProviderTest, MultiProfileCountInvalidated) { - const AccountId account_id1(AccountId::FromUserEmail("user1@example.com")); - const AccountId account_id2(AccountId::FromUserEmail("user2@example.com")); - const AccountId account_id3(AccountId::FromUserEmail("user3@example.com")); - // |scoped_enabler| takes over the lifetime of |user_manager|. chromeos::FakeChromeUserManager* user_manager = new chromeos::FakeChromeUserManager(); + // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. user_manager::ScopedUserManager scoped_enabler( base::WrapUnique(user_manager)); user_manager->AddKioskAppUser(account_id1); @@ -203,6 +201,18 @@ chromeos::multidevice_setup::mojom::Feature::kMessages, chromeos::multidevice_setup::mojom::FeatureState::kFurtherSetupRequired); + // |scoped_enabler| takes over the lifetime of |user_manager|. + chromeos::FakeChromeUserManager* user_manager = + new chromeos::FakeChromeUserManager(); + // TODO(crbug/1154780): Overload operator-> in ScopedUserManager. + user_manager::ScopedUserManager scoped_enabler( + base::WrapUnique(user_manager)); + user_manager->AddKioskAppUser(account_id1); + user_manager->LoginUser(account_id1); + const user_manager::User* primary_user = user_manager->GetPrimaryUser(); + chromeos::ProfileHelper::Get()->SetUserToProfileMappingForTesting( + primary_user, testing_profile_); + TestChromeOSMetricsProvider provider; metrics::SystemProfileProto system_profile; provider.ProvideSystemProfileMetrics(&system_profile);
diff --git a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc index 6b3cedbfb..2145694 100644 --- a/chrome/browser/offline_pages/background_loader_offliner_unittest.cc +++ b/chrome/browser/offline_pages/background_loader_offliner_unittest.cc
@@ -779,30 +779,6 @@ EXPECT_EQ(Offliner::RequestStatus::LOADED_PAGE_IS_BLOCKED, request_status()); } -TEST_F(BackgroundLoaderOfflinerTest, FailsOnInterstitialPage) { - base::Time creation_time = base::Time::Now(); - SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time, - kUserRequested); - EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), - progress_callback())); - - // Sets the page as being an interstitial. - offliner()->set_page_type(content::PageType::PAGE_TYPE_INTERSTITIAL); - // Called after calling LoadAndSave so we have web_contents to work with. - content::MockNavigationHandle handle( - HttpUrl(), offliner()->web_contents()->GetMainFrame()); - handle.set_has_committed(true); - offliner()->DidFinishNavigation(&handle); - - CompleteLoading(); - PumpLoop(); - - EXPECT_FALSE(SaveInProgress()); - EXPECT_TRUE(completion_callback_called()); - EXPECT_EQ(Offliner::RequestStatus::LOADED_PAGE_IS_CHROME_INTERNAL, - request_status()); -} - TEST_F(BackgroundLoaderOfflinerTest, FailsOnInternetDisconnected) { base::Time creation_time = base::Time::Now(); SavePageRequest request(kRequestId, HttpUrl(), kClientId, creation_time,
diff --git a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc index 2bc777b..67be550 100644 --- a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc +++ b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc
@@ -38,10 +38,13 @@ class FrozenFrameAggregatorTest : public GraphTestHarness { protected: + using Super = GraphTestHarness; + FrozenFrameAggregatorTest() = default; ~FrozenFrameAggregatorTest() override = default; void SetUp() override { + Super::SetUp(); ffa_ = new FrozenFrameAggregator(); graph()->PassToGraph(base::WrapUnique(ffa_)); process_node_ = CreateNode<ProcessNodeImpl>();
diff --git a/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc b/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc index 0f01156..ac49b299 100644 --- a/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc +++ b/chrome/browser/performance_manager/decorators/process_metrics_decorator_unittest.cc
@@ -102,10 +102,13 @@ class ProcessMetricsDecoratorTest : public GraphTestHarness { protected: + using Super = GraphTestHarness; + ProcessMetricsDecoratorTest() = default; ~ProcessMetricsDecoratorTest() override = default; void SetUp() override { + Super::SetUp(); std::unique_ptr<TestProcessMetricsDecorator> decorator = std::make_unique<TestProcessMetricsDecorator>(); decorator_raw_ = decorator.get();
diff --git a/chrome/browser/performance_manager/metrics/memory_pressure_metrics_unittest.cc b/chrome/browser/performance_manager/metrics/memory_pressure_metrics_unittest.cc index 4fe6f740..2381b46 100644 --- a/chrome/browser/performance_manager/metrics/memory_pressure_metrics_unittest.cc +++ b/chrome/browser/performance_manager/metrics/memory_pressure_metrics_unittest.cc
@@ -19,6 +19,8 @@ class MemoryPressureMetricsTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + MemoryPressureMetricsTest() = default; ~MemoryPressureMetricsTest() override = default; MemoryPressureMetricsTest(const MemoryPressureMetricsTest& other) = delete; @@ -26,6 +28,7 @@ delete; void SetUp() override { + Super::SetUp(); std::unique_ptr<MemoryPressureMetrics> metrics = std::make_unique<MemoryPressureMetrics>(); metrics_ = metrics.get(); @@ -38,6 +41,7 @@ void TearDown() override { process_node_.reset(); histogram_tester_.reset(); + Super::TearDown(); } protected:
diff --git a/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc b/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc index e031013..e06a6ef 100644 --- a/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc +++ b/chrome/browser/performance_manager/observers/isolation_context_metrics_unittest.cc
@@ -42,6 +42,8 @@ class IsolationContextMetricsTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + IsolationContextMetricsTest() : GraphTestHarness( base::test::TaskEnvironment::ThreadPoolExecutionMode::QUEUED, @@ -64,6 +66,7 @@ static constexpr int32_t kSID3 = 3; void SetUp() override { + Super::SetUp(); metrics_ = new TestIsolationContextMetrics(); // Sets a valid starting time.
diff --git a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc index 0216dac7..82f0870 100644 --- a/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc +++ b/chrome/browser/performance_manager/observers/metrics_collector_unittest.cc
@@ -34,9 +34,12 @@ #endif class MAYBE_MetricsCollectorTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + MAYBE_MetricsCollectorTest() : GraphTestHarness() {} void SetUp() override { + Super::SetUp(); metrics_collector_ = new MetricsCollector(); graph()->PassToGraph(base::WrapUnique(metrics_collector_)); } @@ -44,7 +47,7 @@ void TearDown() override { graph()->TakeFromGraph(metrics_collector_); // Destroy the observer. metrics_collector_ = nullptr; - GraphTestHarness::TearDown(); + Super::TearDown(); } protected:
diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_policy_unittest.cc b/chrome/browser/performance_manager/policies/background_tab_loading_policy_unittest.cc index 976ceb4..cc62d324 100644 --- a/chrome/browser/performance_manager/policies/background_tab_loading_policy_unittest.cc +++ b/chrome/browser/performance_manager/policies/background_tab_loading_policy_unittest.cc
@@ -32,6 +32,8 @@ class BackgroundTabLoadingPolicyTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + BackgroundTabLoadingPolicyTest() = default; ~BackgroundTabLoadingPolicyTest() override = default; BackgroundTabLoadingPolicyTest(const BackgroundTabLoadingPolicyTest& other) = @@ -40,6 +42,8 @@ const BackgroundTabLoadingPolicyTest&) = delete; void SetUp() override { + Super::SetUp(); + // Create the policy. auto policy = std::make_unique<BackgroundTabLoadingPolicy>(); policy_ = policy.get(); @@ -55,7 +59,10 @@ policy_->SetFreeMemoryForTesting(150); } - void TearDown() override { graph()->TakeFromGraph(policy_); } + void TearDown() override { + graph()->TakeFromGraph(policy_); + Super::TearDown(); + } protected: BackgroundTabLoadingPolicy* policy() { return policy_; }
diff --git a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_unittest.cc b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_unittest.cc index 93273d0..a1e7a1bd 100644 --- a/chrome/browser/performance_manager/policies/working_set_trimmer_policy_unittest.cc +++ b/chrome/browser/performance_manager/policies/working_set_trimmer_policy_unittest.cc
@@ -25,10 +25,15 @@ class WorkingSetTrimmerPolicyTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + WorkingSetTrimmerPolicyTest() {} ~WorkingSetTrimmerPolicyTest() override {} - void SetUp() override { policy_.reset(new WorkingSetTrimmerPolicy); } + void SetUp() override { + Super::SetUp(); + policy_.reset(new WorkingSetTrimmerPolicy); + } void SetLastTrimTime(const ProcessNode* node, base::TimeTicks time) { policy_->SetLastTrimTime(node, time);
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index a094be2..271e6b7 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1544,6 +1544,13 @@ chrome_schema, SCHEMA_ALLOW_UNKNOWN, SimpleSchemaValidatingPolicyHandler::RECOMMENDED_ALLOWED, SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED)); + + handlers->AddHandler(std::make_unique<SimpleSchemaValidatingPolicyHandler>( + key::kClearBrowsingDataOnExitList, + browsing_data::prefs::kClearBrowsingDataOnExitList, chrome_schema, + SCHEMA_ALLOW_UNKNOWN, + SimpleSchemaValidatingPolicyHandler::RECOMMENDED_PROHIBITED, + SimpleSchemaValidatingPolicyHandler::MANDATORY_ALLOWED)); #endif // defined(OS_ANDROID) #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/printing/print_backend_browsertest.cc b/chrome/browser/printing/print_backend_browsertest.cc index 7ec3df9..65b3092a 100644 --- a/chrome/browser/printing/print_backend_browsertest.cc +++ b/chrome/browser/printing/print_backend_browsertest.cc
@@ -18,6 +18,7 @@ #include "content/public/test/browser_test.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" +#include "printing/backend/print_backend.h" #include "printing/backend/test_print_backend.h" #include "testing/gtest/include/gtest/gtest.h" @@ -73,8 +74,16 @@ // Initialize and load the backend service with some test print drivers. void DoInitAndSetupTestData() { print_backend_service_->Init(/*locale=*/""); - print_backend_service_->test_print_backend_->SetDefaultPrinterName( - kDefaultPrinterName); + + auto printer_info = std::make_unique<PrinterBasicInfo>( + /*printer_name=*/kDefaultPrinterName, + /*display_name=*/"default test printer", + /*printer_description=*/"Default printer for testing.", + /*printer_status=*/0, /*is_default=*/true, + /*options=*/PrinterBasicInfoOptions{}); + + print_backend_service_->test_print_backend_->AddValidPrinter( + kDefaultPrinterName, nullptr, std::move(printer_info)); } // Public callbacks used by tests. @@ -131,10 +140,7 @@ EXPECT_FALSE(default_printer_name.has_value()); } -// TODO(crbug.com/809738): Re-enable after the updates for setting up the -// printer test environment are made to print_backend_service.mojom. -IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, - DISABLED_GetDefaultPrinterName) { +IN_PROC_BROWSER_TEST_F(PrintBackendBrowserTest, GetDefaultPrinterName) { base::Optional<std::string> default_printer_name; DoInitAndSetupTestData();
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 1549a38..196465ed 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc
@@ -128,10 +128,13 @@ #else #include "chrome/browser/accessibility/caption_controller.h" #include "chrome/browser/accessibility/caption_controller_factory.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.h" #include "chrome/browser/first_run/first_run.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" +#include "components/browsing_data/core/pref_names.h" #endif #if BUILDFLAG(IS_CHROMEOS_ASH) @@ -1297,6 +1300,17 @@ if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableCaretBrowsing)) profile->GetPrefs()->SetBoolean(prefs::kCaretBrowsingEnabled, true); + + // Delete browsing data specified by the ClearBrowsingDataOnExitList policy + // if they were not properly deleted on the last browser shutdown. + auto* browsing_data_lifetime_manager = + ChromeBrowsingDataLifetimeManagerFactory::GetForProfile(profile); + if (browsing_data_lifetime_manager && !profile->IsOffTheRecord() && + profile->GetPrefs()->GetBoolean( + browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending)) { + browsing_data_lifetime_manager->ClearBrowsingDataForOnExitPolicy( + /*keep_browser_alive=*/false); + } #endif } @@ -2012,6 +2026,17 @@ } // Delete if the profile is an ephemeral profile. ScheduleForcedEphemeralProfileForDeletion(path); + } else if (!profile->IsOffTheRecord()) { +#if !defined(OS_ANDROID) + auto* browsing_data_lifetime_manager = + ChromeBrowsingDataLifetimeManagerFactory::GetForProfile( + original_profile); + if (browsing_data_lifetime_manager) { + // Delete browsing data set by the ClearBrowsingDataOnExitList policy. + browsing_data_lifetime_manager->ClearBrowsingDataForOnExitPolicy( + /*keep_browser_alive=*/true); + } +#endif } }
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc index 0ceb21c5..bee19f6 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -794,8 +794,6 @@ void RenderViewContextMenu::InitMenu() { RenderViewContextMenuBase::InitMenu(); - AppendQuickAnswersItems(); - if (content_type_->SupportsGroup( ContextMenuContentType::ITEM_GROUP_PASSWORD)) { AppendPasswordItems(); @@ -947,6 +945,11 @@ if (added_accessibility_labels_items && menu_model_.GetItemCount() == 1) { menu_model_.RemoveItemAt(0); } + + // Always add Quick Answers view last, as it is rendered next to the context + // menu, meaning that each menu item added/removed in this function will cause + // it to visibly jump on the screen (see b/173569669). + AppendQuickAnswersItems(); } Profile* RenderViewContextMenu::GetProfile() const {
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/pointer_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/pointer_handler.js index b63717f8..bcc4cc75 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/pointer_handler.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/pointer_handler.js
@@ -47,7 +47,7 @@ }); if (localStorage['speakTextUnderMouse'] === String(true)) { - chrome.accessibilityPrivate.enableChromeVoxMouseEvents(true); + chrome.accessibilityPrivate.enableMouseEvents(true); } }
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_hi.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_hi.xtb index f7d596f..0eeebfb 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_hi.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_hi.xtb
@@ -849,7 +849,7 @@ <translation id="7308519659008003150">पहले से कोई फ़ॉर्म फ़ील्ड नहीं है</translation> <translation id="731121099745151312">tritm</translation> <translation id="7317017974771324508">आंशिक रूप से चुना गया</translation> -<translation id="7344012264516629579">अन्य जंप कमांड (पेज पर सीधे किसी खास आइटम पर पहुंचने के निर्देश) में, 'लिंक से पहुंचे', बटन, और चेकबॉक्स वगैरह शामिल हैं. जंप कमांड की पूरी सूची, ChromeVox के मेन्यू में है. मेन्यू खोलने के लिए, खोज बटन और पीरियड (फ़ुल स्टॉप) दबाएं.</translation> +<translation id="7344012264516629579">अन्य जंप कमांड (पेज पर सीधे किसी खास आइटम पर पहुंचने के निर्देश) में, 'लिंक से पहुंचें', बटन, चेकबॉक्स वगैरह शामिल हैं. जंप कमांड की पूरी सूची, ChromeVox के मेन्यू में है. मेन्यू खोलने के लिए, खोज बटन और पीरियड (फ़ुल स्टॉप) दबाएं.</translation> <translation id="7356165926712028380">8 बिंदु ब्रेल पर स्विच करें</translation> <translation id="7356610683936413584">जानकारी वाली सूची का ब्यौरा</translation> <translation id="7370432716629432284">{COUNT,plural, =1{ऐम्परसेंड}one{# ऐम्परसेंड}other{# ऐम्परसेंड}}</translation>
diff --git a/chrome/browser/resources/kaleidoscope/BUILD.gn b/chrome/browser/resources/kaleidoscope/BUILD.gn index f7a4789..c23a99d 100644 --- a/chrome/browser/resources/kaleidoscope/BUILD.gn +++ b/chrome/browser/resources/kaleidoscope/BUILD.gn
@@ -31,5 +31,6 @@ js_library("toolbar") { deps = [ "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", + "//ui/webui/resources/cr_elements/cr_toolbar:cr_toolbar.m", ] }
diff --git a/chrome/browser/resources/kaleidoscope/toolbar.html b/chrome/browser/resources/kaleidoscope/toolbar.html index 39d800e..df5880a 100644 --- a/chrome/browser/resources/kaleidoscope/toolbar.html +++ b/chrome/browser/resources/kaleidoscope/toolbar.html
@@ -12,6 +12,7 @@ show-menu on-search-changed="onSearchChanged_" menu-label="[[menuLabel]]" - page-name="[[pageName]]"> + page-name="[[pageName]]" + search-prompt="[[searchPrompt]]"> <slot></slot> </cr-toolbar>
diff --git a/chrome/browser/resources/kaleidoscope/toolbar.js b/chrome/browser/resources/kaleidoscope/toolbar.js index 08dadde..3a56a64b 100644 --- a/chrome/browser/resources/kaleidoscope/toolbar.js +++ b/chrome/browser/resources/kaleidoscope/toolbar.js
@@ -22,13 +22,36 @@ // Sets the text displayed beside the menu button. pageName: {type: String, value: ''}, + + // Sets the text displayed in the search box. + searchPrompt: {type: String, value: ''}, }; } - constructor() { - super(); + connectedCallback() { + super.connectedCallback(); + this.hideSearch(); - this.timeoutInterval_ = null; + const toolbar = /** @type {CrToolbarElement} */ (this.$.toolbar); + const input = toolbar.getSearchField().getSearchInput(); + input.addEventListener('keyup', (e) => { + if (e.keyCode == 13) { + const event = + new CustomEvent('ks-search-updated', {detail: input.value}); + this.dispatchEvent(event); + } + }); + } + + hideSearch() { + const toolbar = /** @type {CrToolbarElement} */ (this.$.toolbar); + toolbar.getSearchField().style.display = 'none'; + } + + showSearch() { + const toolbar = /** @type {CrToolbarElement} */ (this.$.toolbar); + toolbar.getSearchField().style.display = ''; + toolbar.getSearchField().getSearchInput().focus(); } /** @@ -36,14 +59,10 @@ * @private */ onSearchChanged_(e) { - clearInterval(this.timeoutInterval_); - - // Add a 300ms debounce so we don't fire for every character but should not - // be noticeable to the user. - this.timeoutInterval_ = setTimeout(() => { - const event = new CustomEvent('ks-search-updated', {detail: e.detail}); + if (e.detail.length == 0) { + const event = new CustomEvent('ks-search-cleared'); this.dispatchEvent(event); - }, 300); + } } }
diff --git a/chrome/browser/resources/tab_search/app.html b/chrome/browser/resources/tab_search/app.html index 25fe163..5aec5a0 100644 --- a/chrome/browser/resources/tab_search/app.html +++ b/chrome/browser/resources/tab_search/app.html
@@ -53,7 +53,8 @@ </iron-iconset-svg> <tab-search-search-field id="searchField" autofocus clear-label="$i18n{clearSearch}" label="$i18n{searchTabs}" on-focus="onSearchFocus_" - on-keydown="onSearchKeyDown_" on-search-changed="onSearchChanged_"> + on-keydown="onSearchKeyDown_" on-search-changed="onSearchChanged_" + search-result-text="[[searchResultText_]]"> </tab-search-search-field> <div hidden="[[!filteredOpenTabs_.length]]"> <infinite-list id="tabsList" items="[[filteredOpenTabs_]]" >
diff --git a/chrome/browser/resources/tab_search/app.js b/chrome/browser/resources/tab_search/app.js index 955dd928..0d22bf2 100644 --- a/chrome/browser/resources/tab_search/app.js +++ b/chrome/browser/resources/tab_search/app.js
@@ -89,6 +89,9 @@ type: Boolean, value: () => loadTimeData.getBoolean('moveActiveTabToBottom'), }, + + /** @private */ + searchResultText_: {type: String, value: ''} }; } @@ -228,6 +231,14 @@ /** @type {!InfiniteList} */ (this.$.tabsList).selected = this.filteredOpenTabs_.length > 0 ? 0 : NO_SELECTION; + this.$.searchField.announce(this.getA11ySearchResultText_()); + } + + /** + * @return {string} + * @private + */ + getA11ySearchResultText_() { const length = this.filteredOpenTabs_.length; let text; if (this.searchText_.length > 0) { @@ -238,7 +249,7 @@ text = loadTimeData.getStringF( length == 1 ? 'a11yFoundTab' : 'a11yFoundTabs', length); } - this.announceA11y_(text); + return text; } /** @private */ @@ -376,10 +387,9 @@ e.stopPropagation(); e.preventDefault(); - // For some reasons setting combobox/aria-activedescendant on - // tab-search-search-field has no effect, so manually announce a11y - // message here. - this.announceA11y_( + // TODO(tluk): Fix this to use aria-activedescendant when it's updated to + // work with ShadowDOM elements. + this.$.searchField.announce( this.ariaLabel_(this.filteredOpenTabs_[this.getSelectedIndex()])); } else if (e.key === 'Enter') { this.apiProxy_.switchToTab( @@ -437,6 +447,7 @@ }); this.filteredOpenTabs_ = fuzzySearch(this.searchText_, result, this.fuzzySearchOptions_); + this.searchResultText_ = this.getA11ySearchResultText_(); } /** return {!Tab} */
diff --git a/chrome/browser/resources/tab_search/tab_search_search_field.html b/chrome/browser/resources/tab_search/tab_search_search_field.html index 9db6523..5dc223c 100644 --- a/chrome/browser/resources/tab_search/tab_search_search_field.html +++ b/chrome/browser/resources/tab_search/tab_search_search_field.html
@@ -60,6 +60,13 @@ color: var(--google-blue-refresh-300); } } + + #inputAnnounce, + #searchResultText { + clip: rect(0,0,0,0); + display: inline-block; + position: fixed; + } </style> <iron-icon id="searchIcon" icon="mwb16:search"></iron-icon> @@ -67,9 +74,14 @@ <label id="searchLabel" for="searchInput" aria-hidden="true"> <span>[[label]]</span> <span>[[shortcut_]]</span> + <span id="searchResultText">[[searchResultText]]</span> </label> <input id="searchInput" aria-labelledby="searchLabel" autofocus="[[autofocus]]" autocomplete="off" on-search="onSearchTermSearch" on-input="onSearchTermInput" type="search" - spellcheck="false"> + spellcheck="false" aria-describedby="inputAnnounce" + on-blur="onInputBlur_"> + <span id="inputAnnounce" aria-live="assertive"> + [[announceText_]] + </span> </div>
diff --git a/chrome/browser/resources/tab_search/tab_search_search_field.js b/chrome/browser/resources/tab_search/tab_search_search_field.js index c53fabcd..ec75e55 100644 --- a/chrome/browser/resources/tab_search/tab_search_search_field.js +++ b/chrome/browser/resources/tab_search/tab_search_search_field.js
@@ -40,11 +40,25 @@ value: false, }, + /** + * Text that describes the resulting tabs currently present in the list. + */ + searchResultText: { + type: String, + value: '', + }, + /** @private {string} */ shortcut_: { type: String, value: () => loadTimeData.getString('shortcutText'), }, + + /** @private {string} */ + announceText_: { + type: String, + value: '', + }, }; } @@ -52,6 +66,35 @@ getSearchInput() { return /** @type {!HTMLInputElement} */ (this.$.searchInput); } + + /** + * Cause a text string to be announced by screen readers. Used for announcing + * when the input field has focus for better compatibility with screen + * readers. + * @param {string} text The text that should be announced. + */ + announce(text) { + this.$.searchWrapper.append( + this.$.searchWrapper.removeChild(this.$.inputAnnounce)); + if (this.announceText_ === text) { + // A timeout is required when announcing duplicate text for certain + // screen readers. + this.announceText_ = ''; + setTimeout(() => { + this.announceText_ = text; + }, 100); + } else { + this.announceText_ = text; + } + } + + /** + * Clear |announceText_| when focus leaves the input field to ensure the text + * is not re-announced when focus returns to the input field. + */ + onInputBlur_(text) { + this.announceText_ = ''; + } } customElements.define(TabSearchSearchField.is, TabSearchSearchField);
diff --git a/chrome/browser/search_engines/template_url_service_sync_unittest.cc b/chrome/browser/search_engines/template_url_service_sync_unittest.cc index a3d6ff2..c58150c 100644 --- a/chrome/browser/search_engines/template_url_service_sync_unittest.cc +++ b/chrome/browser/search_engines/template_url_service_sync_unittest.cc
@@ -31,12 +31,14 @@ #include "components/sync_preferences/testing_pref_service_syncable.h" #include "components/url_formatter/url_formatter.h" #include "content/public/test/browser_task_environment.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using base::ASCIIToUTF16; -using base::UTF8ToUTF16; using base::Time; using base::TimeDelta; +using base::UTF8ToUTF16; +using testing::NotNull; namespace { @@ -319,16 +321,17 @@ syncer::SyncDataList TemplateURLServiceSyncTest::CreateInitialSyncData() const { syncer::SyncDataList list; - std::unique_ptr<TemplateURL> turl = CreateTestTemplateURL( - ASCIIToUTF16("key1"), "http://key1.com", "key1", 90); + std::unique_ptr<TemplateURL> turl = + CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "guid1", + base::Time::FromTimeT(90)); list.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl.get())); - turl = CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com", "key2", - 90); + turl = CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com", "guid2", + base::Time::FromTimeT(90)); list.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl.get())); - turl = CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "key3", - 90); + turl = CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "guid3", + base::Time::FromTimeT(90)); list.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl.get())); @@ -490,7 +493,8 @@ model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com")); model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com")); model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", - std::string(), 100, false, true)); + std::string(), base::Time::FromTimeT(100), + false, true)); syncer::SyncDataList all_sync_data = model()->GetAllSyncData(syncer::SEARCH_ENGINES); @@ -586,18 +590,21 @@ // The local data is the same as the sync data merged in, but timestamps have // changed. Ensure the right fields are merged in. syncer::SyncDataList initial_data; - TemplateURL* turl1 = model()->Add(CreateTestTemplateURL( - ASCIIToUTF16("abc.com"), "http://abc.com", "abc", 9000)); + TemplateURL* turl1 = model()->Add( + CreateTestTemplateURL(ASCIIToUTF16("abc.com"), "http://abc.com", "abc", + base::Time::FromTimeT(9000))); model()->Add(CreateTestTemplateURL(ASCIIToUTF16("xyz.com"), "http://xyz.com", - "xyz", 9000)); + "xyz", base::Time::FromTimeT(9000))); - std::unique_ptr<TemplateURL> turl1_newer = CreateTestTemplateURL( - ASCIIToUTF16("abc.com"), "http://abc.ca", "abc", 9999); + std::unique_ptr<TemplateURL> turl1_newer = + CreateTestTemplateURL(ASCIIToUTF16("abc.com"), "http://abc.ca", "abc", + base::Time::FromTimeT(9999)); initial_data.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl1_newer)); - std::unique_ptr<TemplateURL> turl2_older = CreateTestTemplateURL( - ASCIIToUTF16("xyz.com"), "http://xyz.ca", "xyz", 8888); + std::unique_ptr<TemplateURL> turl2_older = + CreateTestTemplateURL(ASCIIToUTF16("xyz.com"), "http://xyz.ca", "xyz", + base::Time::FromTimeT(8888)); initial_data.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl2_older)); @@ -623,14 +630,18 @@ // GUIDs all differ, so this is data to be added from Sync, but the timestamps // from Sync are older. Set up the local data so that one is a dupe, one has a // conflicting keyword, and the last has no conflicts (a clean ADD). + // Duplicate keyword, same hostname model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", - "aaa", 100)); // dupe + "localguid1", base::Time::FromTimeT(100))); + // Duplicate keyword, different hostname model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"), - "http://expected.com", "bbb", 100)); // keyword conflict + "http://expected.com", "localguid2", + base::Time::FromTimeT(100))); + // Add model()->Add(CreateTestTemplateURL(ASCIIToUTF16("unique"), - "http://unique.com", "ccc")); // add + "http://unique.com", "localguid3")); ASSERT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); MergeAndExpectNotify(CreateInitialSyncData(), 1); @@ -640,94 +651,98 @@ // be added. EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - // The key1 duplicate results in the local copy winning. Ensure that Sync's - // copy was not added, and the local copy is pushed upstream to Sync as an - // update. The local copy should have received the sync data's GUID. - EXPECT_TRUE(model()->GetTemplateURLForGUID("key1")); + // The key1 duplicate keyword results in the local copy winning. Ensure that + // Sync's copy was not added, and the local copy is pushed upstream to Sync as + // an update. The local copy should have received the sync data's GUID. + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid1")); // Check changes for the UPDATE. - ASSERT_TRUE(processor()->contains_guid("key1")); - syncer::SyncChange key1_change = processor()->change_for_guid("key1"); - EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, key1_change.change_type()); + ASSERT_TRUE(processor()->contains_guid("guid1")); + syncer::SyncChange guid1_change = processor()->change_for_guid("guid1"); + EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, guid1_change.change_type()); // The local sync_guid should no longer be found. - EXPECT_FALSE(model()->GetTemplateURLForGUID("aaa")); + EXPECT_FALSE(model()->GetTemplateURLForGUID("localguid1")); - // The key2 keyword conflict results in a merge, with the values of the local + // The key2 duplicate keyword results in a merge, with the values of the local // copy winning, so ensure it retains the original URL, and that an update to // the sync guid is pushed upstream to Sync. - const TemplateURL* key2 = model()->GetTemplateURLForGUID("key2"); - ASSERT_TRUE(key2); - EXPECT_EQ(ASCIIToUTF16("key2"), key2->keyword()); - EXPECT_EQ("http://expected.com", key2->url()); + const TemplateURL* guid2 = model()->GetTemplateURLForGUID("guid2"); + ASSERT_TRUE(guid2); + EXPECT_EQ(ASCIIToUTF16("key2"), guid2->keyword()); + EXPECT_EQ("http://expected.com", guid2->url()); // Check changes for the UPDATE. - ASSERT_TRUE(processor()->contains_guid("key2")); - syncer::SyncChange key2_change = processor()->change_for_guid("key2"); - EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, key2_change.change_type()); - EXPECT_EQ("key2", GetKeyword(key2_change.sync_data())); - EXPECT_EQ("http://expected.com", GetURL(key2_change.sync_data())); + ASSERT_TRUE(processor()->contains_guid("guid2")); + syncer::SyncChange guid2_change = processor()->change_for_guid("guid2"); + EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, guid2_change.change_type()); + EXPECT_EQ("key2", GetKeyword(guid2_change.sync_data())); + EXPECT_EQ("http://expected.com", GetURL(guid2_change.sync_data())); // The local sync_guid should no longer be found. - EXPECT_FALSE(model()->GetTemplateURLForGUID("bbb")); + EXPECT_FALSE(model()->GetTemplateURLForGUID("localguid2")); // The last TemplateURL should have had no conflicts and was just added. It // should not have replaced the third local TemplateURL. - EXPECT_TRUE(model()->GetTemplateURLForGUID("ccc")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("localguid3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid3")); // Two UPDATEs and one ADD. EXPECT_EQ(3U, processor()->change_list_size()); // One ADDs should be pushed up to Sync. - ASSERT_TRUE(processor()->contains_guid("ccc")); + ASSERT_TRUE(processor()->contains_guid("localguid3")); EXPECT_EQ(syncer::SyncChange::ACTION_ADD, - processor()->change_for_guid("ccc").change_type()); + processor()->change_for_guid("localguid3").change_type()); } TEST_F(TemplateURLServiceSyncTest, MergeAddFromNewerSyncData) { // GUIDs all differ, so Sync may overtake some entries, but the timestamps // from Sync are newer. Set up the local data so that one is a dupe, one has a // conflicting keyword, and the last has no conflicts (a clean ADD). + // Duplicate keyword, same hostname model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", - "aaa", 10, false, false, 111)); // dupe + "localguid1", base::Time::FromTimeT(10), + false, false, 111)); - model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"), - "http://expected.com", "bbb", 10, false, - false, 112)); // keyword conflict + // Duplicate keyword, different hostname + model()->Add(CreateTestTemplateURL( + ASCIIToUTF16("key2"), "http://expected.com", "localguid2", + base::Time::FromTimeT(10), false, false, 112)); - model()->Add(CreateTestTemplateURL(ASCIIToUTF16("unique"), - "http://unique.com", "ccc", 10, false, - false, 113)); // add + // Add + model()->Add(CreateTestTemplateURL( + ASCIIToUTF16("unique"), "http://unique.com", "localguid3", + base::Time::FromTimeT(10), false, false, 113)); ASSERT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); MergeAndExpectNotify(CreateInitialSyncData(), 1); - // The dupe and keyword conflict results in merges. The unique keyword be - // added to the model. + // The duplicate keywords results in merges. The unique keyword be added to + // the model. EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - // The key1 duplicate results in Sync's copy winning. Ensure that Sync's - // copy replaced the local copy. - EXPECT_TRUE(model()->GetTemplateURLForGUID("key1")); - EXPECT_FALSE(model()->GetTemplateURLForGUID("aaa")); - EXPECT_FALSE(processor()->contains_guid("key1")); - EXPECT_FALSE(processor()->contains_guid("aaa")); + // The key1 duplicate keyword results in Sync's copy winning. Ensure that + // Sync's copy replaced the local copy. + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid1")); + EXPECT_FALSE(model()->GetTemplateURLForGUID("localguid1")); + EXPECT_FALSE(processor()->contains_guid("guid1")); + EXPECT_FALSE(processor()->contains_guid("localguid1")); - // The key2 keyword conflict results in Sync's copy winning, so ensure it + // The key2 duplicate keyword results in Sync's copy winning, so ensure it // retains the original keyword and is added. The local copy should be // removed. - const TemplateURL* key2_sync = model()->GetTemplateURLForGUID("key2"); - ASSERT_TRUE(key2_sync); - EXPECT_EQ(ASCIIToUTF16("key2"), key2_sync->keyword()); - EXPECT_FALSE(model()->GetTemplateURLForGUID("bbb")); + const TemplateURL* guid2_sync = model()->GetTemplateURLForGUID("guid2"); + ASSERT_TRUE(guid2_sync); + EXPECT_EQ(ASCIIToUTF16("key2"), guid2_sync->keyword()); + EXPECT_FALSE(model()->GetTemplateURLForGUID("localguid2")); // The last TemplateURL should have had no conflicts and was just added. It // should not have replaced the third local TemplateURL. - EXPECT_TRUE(model()->GetTemplateURLForGUID("ccc")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("localguid3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid3")); // One ADD. EXPECT_EQ(1U, processor()->change_list_size()); // One ADDs should be pushed up to Sync. - ASSERT_TRUE(processor()->contains_guid("ccc")); + ASSERT_TRUE(processor()->contains_guid("localguid3")); EXPECT_EQ(syncer::SyncChange::ACTION_ADD, - processor()->change_for_guid("ccc").change_type()); + processor()->change_for_guid("localguid3").change_type()); } TEST_F(TemplateURLServiceSyncTest, ProcessChangesEmptyModel) { @@ -736,19 +751,22 @@ // Set up a bunch of ADDs. syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, - CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "key1"))); - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, - CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com", "key2"))); - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, - CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "key3"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_ADD, + CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "guid1"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_ADD, + CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com", "guid2"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_ADD, + CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "guid3"))); ProcessAndExpectNotify(changes, 1); EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); EXPECT_EQ(0U, processor()->change_list_size()); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key1")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key2")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid1")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid2")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid3")); } TEST_F(TemplateURLServiceSyncTest, ProcessChangesNoConflicts) { @@ -756,26 +774,29 @@ // Process different types of changes, without conflicts. syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, - CreateTestTemplateURL(ASCIIToUTF16("key4"), "http://key4.com", "key4"))); - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), "http://new.com", - "key2"))); - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_DELETE, - CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "key3"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_ADD, + CreateTestTemplateURL(ASCIIToUTF16("key4"), "http://key4.com", "guid4"))); + changes.push_back( + CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), + "http://new.com", "guid2"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_DELETE, + CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "guid3"))); ProcessAndExpectNotify(changes, 1); // Add one, remove one, update one, so the number shouldn't change. EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); EXPECT_EQ(0U, processor()->change_list_size()); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key1")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key2")); - const TemplateURL* turl = model()->GetTemplateURLForGUID("key2"); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid1")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid2")); + const TemplateURL* turl = model()->GetTemplateURLForGUID("guid2"); EXPECT_TRUE(turl); EXPECT_EQ(ASCIIToUTF16("newkeyword"), turl->keyword()); EXPECT_EQ("http://new.com", turl->url()); - EXPECT_FALSE(model()->GetTemplateURLForGUID("key3")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key4")); + EXPECT_FALSE(model()->GetTemplateURLForGUID("guid3")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid4")); } TEST_F(TemplateURLServiceSyncTest, @@ -787,29 +808,30 @@ syncer::SyncChangeList changes; changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://new.com", "aaa"))); - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "key1"))); + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "guid1"))); ProcessAndExpectNotify(changes, 1); // Add one, update one, so we're up to 4. ASSERT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - // aaa duplicates the keyword of key2 and wins. key2 still has its keyword, + // aaa duplicates the keyword of guid2 and wins. guid2 still has its keyword, // but is shadowed by aaa. EXPECT_TRUE(model()->GetTemplateURLForGUID("aaa")); EXPECT_EQ(model()->GetTemplateURLForGUID("aaa"), model()->GetTemplateURLForKeyword(ASCIIToUTF16("key2"))); - TemplateURL* key2_turl = model()->GetTemplateURLForGUID("key2"); - ASSERT_TRUE(key2_turl); - ASSERT_EQ(ASCIIToUTF16("key2"), key2_turl->keyword()); - // key1 update duplicates the keyword of key3 and wins. key3 still has its - // keyword but is shadowed by key1 now. - EXPECT_TRUE(model()->GetTemplateURLForGUID("key1")); - EXPECT_EQ(model()->GetTemplateURLForGUID("key1"), + TemplateURL* guid2_turl = model()->GetTemplateURLForGUID("guid2"); + ASSERT_TRUE(guid2_turl); + ASSERT_EQ(ASCIIToUTF16("key2"), guid2_turl->keyword()); + // guid1 update duplicates the keyword of guid3 and wins. guid3 still has its + // keyword but is shadowed by guid3 now. + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid1")); + EXPECT_EQ(model()->GetTemplateURLForGUID("guid1"), model()->GetTemplateURLForKeyword(ASCIIToUTF16("key3"))); - TemplateURL* key3_turl = model()->GetTemplateURLForGUID("key3"); - ASSERT_TRUE(key3_turl); - EXPECT_EQ(ASCIIToUTF16("key3"), key3_turl->keyword()); + TemplateURL* guid3_turl = model()->GetTemplateURLForGUID("guid3"); + ASSERT_TRUE(guid3_turl); + EXPECT_EQ(ASCIIToUTF16("key3"), guid3_turl->keyword()); // Sync is always newer here, so it should always win. But we DO NOT create // new sync updates in response to processing sync changes. That could cause @@ -824,37 +846,40 @@ // Process different types of changes, with duplicate keywords. Note that all // this data has an older timestamp, so the local data will win in this case. syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_ADD, CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://new.com", "aaa", - 10))); - // Update the keyword of engine with GUID "key1" to "key3", which will - // duplicate the keyword of engine with GUID "key3". - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "key1", - 10))); + base::Time::FromTimeT(10)))); + // Update the keyword of engine with GUID "guid1" to "key3", which will + // duplicate the keyword of engine with GUID "guid3". + changes.push_back(CreateTestSyncChange( + syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", "guid1", + base::Time::FromTimeT(10)))); ProcessAndExpectNotify(changes, 1); // Add one, update one, so we're up to 4. ASSERT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - // aaa duplicates the keyword of key2 and loses. It still exists, and kept its - // keyword as "key2", but it's NOT best TemplateURL for "key2". + // aaa duplicates the keyword of guid2 and loses. It still exists, and kept + // its keyword as "key2", but it's NOT best TemplateURL for "key2". TemplateURL* aaa_turl = model()->GetTemplateURLForGUID("aaa"); ASSERT_TRUE(aaa_turl); EXPECT_EQ(ASCIIToUTF16("key2"), aaa_turl->keyword()); - TemplateURL* key2_turl = model()->GetTemplateURLForGUID("key2"); - ASSERT_TRUE(key2_turl); - EXPECT_NE(aaa_turl, key2_turl); - EXPECT_EQ(key2_turl, model()->GetTemplateURLForKeyword(ASCIIToUTF16("key2"))); + TemplateURL* guid2_turl = model()->GetTemplateURLForGUID("guid2"); + ASSERT_TRUE(guid2_turl); + EXPECT_NE(aaa_turl, guid2_turl); + EXPECT_EQ(guid2_turl, + model()->GetTemplateURLForKeyword(ASCIIToUTF16("key2"))); - // key1 update duplicates the keyword of key3 and loses. It updates its + // guid1 update duplicates the keyword of guid3 and loses. It updates its // keyword to "key3", but is NOT the best TemplateURL for "key3". - TemplateURL* key1_turl = model()->GetTemplateURLForGUID("key1"); - ASSERT_TRUE(key1_turl); - EXPECT_EQ(ASCIIToUTF16("key3"), key1_turl->keyword()); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key3")); - EXPECT_EQ(model()->GetTemplateURLForGUID("key3"), + TemplateURL* guid1_turl = model()->GetTemplateURLForGUID("guid1"); + ASSERT_TRUE(guid1_turl); + EXPECT_EQ(ASCIIToUTF16("key3"), guid1_turl->keyword()); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid3")); + EXPECT_EQ(model()->GetTemplateURLForGUID("guid3"), model()->GetTemplateURLForKeyword(ASCIIToUTF16("key3"))); // Local data wins twice, but we specifically DO NOT push updates to Sync @@ -878,21 +903,21 @@ EXPECT_EQ("http://baidu.cn", GetURL(change.sync_data())); // Change a keyword. - TemplateURL* existing_turl = model()->GetTemplateURLForGUID("key1"); + TemplateURL* existing_turl = model()->GetTemplateURLForGUID("guid1"); model()->ResetTemplateURL(existing_turl, existing_turl->short_name(), ASCIIToUTF16("k"), existing_turl->url()); EXPECT_EQ(1U, processor()->change_list_size()); - ASSERT_TRUE(processor()->contains_guid("key1")); - change = processor()->change_for_guid("key1"); + ASSERT_TRUE(processor()->contains_guid("guid1")); + change = processor()->change_for_guid("guid1"); EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, change.change_type()); EXPECT_EQ("k", GetKeyword(change.sync_data())); // Remove an existing search engine. - existing_turl = model()->GetTemplateURLForGUID("key2"); + existing_turl = model()->GetTemplateURLForGUID("guid2"); model()->Remove(existing_turl); EXPECT_EQ(1U, processor()->change_list_size()); - ASSERT_TRUE(processor()->contains_guid("key2")); - change = processor()->change_for_guid("key2"); + ASSERT_TRUE(processor()->contains_guid("guid2")); + change = processor()->change_for_guid("guid2"); EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, change.change_type()); } @@ -919,7 +944,8 @@ changes.push_back(CreateTestSyncChange( syncer::SyncChange::ACTION_ADD, CreateTestTemplateURL(ASCIIToUTF16("keyword1"), "http://aaa.com", - std::string(), 100, true, false, 0))); + std::string(), base::Time::FromTimeT(100), true, + false, 0))); changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD, CreateTestTemplateURL(ASCIIToUTF16("keyword2"), "http://bbb.com"))); ProcessAndExpectNotify(changes, 1); @@ -942,11 +968,11 @@ // Create a couple of sync entries with autogenerated keywords. syncer::SyncDataList initial_data; std::unique_ptr<TemplateURL> turl = - CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "key1"); + CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "guid1"); initial_data.push_back( CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid())); turl = CreateTestTemplateURL( - ASCIIToUTF16("key2"), "{google:baseURL}search?q={searchTerms}", "key2"); + ASCIIToUTF16("key2"), "{google:baseURL}search?q={searchTerms}", "guid2"); initial_data.push_back( CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid(), 99)); @@ -954,26 +980,26 @@ MergeAndExpectNotify(initial_data, 1); // Both entries should have been added, with explicit keywords. - TemplateURL* key1 = model()->GetTemplateURLForHost("key1.com"); - ASSERT_FALSE(key1 == NULL); - EXPECT_EQ(ASCIIToUTF16("key1.com"), key1->keyword()); + TemplateURL* guid1 = model()->GetTemplateURLForHost("key1.com"); + ASSERT_THAT(guid1, NotNull()); + EXPECT_EQ(ASCIIToUTF16("key1.com"), guid1->keyword()); GURL google_url(model()->search_terms_data().GoogleBaseURLValue()); - TemplateURL* key2 = model()->GetTemplateURLForHost(google_url.host()); - ASSERT_FALSE(key2 == NULL); + TemplateURL* guid2 = model()->GetTemplateURLForHost(google_url.host()); + ASSERT_THAT(guid2, NotNull()); base::string16 google_keyword( base::ASCIIToUTF16(url_formatter::StripWWW(google_url.host()))); - EXPECT_EQ(google_keyword, key2->keyword()); + EXPECT_EQ(google_keyword, guid2->keyword()); // We should also have gotten some corresponding UPDATEs pushed upstream. EXPECT_GE(processor()->change_list_size(), 2U); - ASSERT_TRUE(processor()->contains_guid("key1")); - syncer::SyncChange key1_change = processor()->change_for_guid("key1"); - EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, key1_change.change_type()); - EXPECT_EQ("key1.com", GetKeyword(key1_change.sync_data())); - ASSERT_TRUE(processor()->contains_guid("key2")); - syncer::SyncChange key2_change = processor()->change_for_guid("key2"); - EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, key2_change.change_type()); - EXPECT_EQ(google_keyword, UTF8ToUTF16(GetKeyword(key2_change.sync_data()))); + ASSERT_TRUE(processor()->contains_guid("guid1")); + syncer::SyncChange guid1_change = processor()->change_for_guid("guid1"); + EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, guid1_change.change_type()); + EXPECT_EQ("key1.com", GetKeyword(guid1_change.sync_data())); + ASSERT_TRUE(processor()->contains_guid("guid2")); + syncer::SyncChange guid2_change = processor()->change_for_guid("guid2"); + EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, guid2_change.change_type()); + EXPECT_EQ(google_keyword, UTF8ToUTF16(GetKeyword(guid2_change.sync_data()))); } TEST_F(TemplateURLServiceSyncTest, AutogeneratedKeywordConflicts) { @@ -990,13 +1016,13 @@ syncer::SyncDataList initial_data; std::unique_ptr<TemplateURL> turl = CreateTestTemplateURL( ASCIIToUTF16("sync1"), "{google:baseURL}2/search?q={searchTerms}", - "sync1", 50); + "sync1", base::Time::FromTimeT(50)); initial_data.push_back( CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid())); const std::string synced_other_url = "http://other.com/search?q={searchTerms}"; turl = CreateTestTemplateURL(ASCIIToUTF16("sync2"), synced_other_url, "sync2", - 150); + base::Time::FromTimeT(150)); initial_data.push_back( CreateCustomSyncData(*turl, true, turl->url(), turl->sync_guid())); @@ -1102,13 +1128,15 @@ // Set up A so we have some interesting duplicates and conflicts. model_a()->Add(CreateTestTemplateURL(ASCIIToUTF16("key4"), "http://key4.com", - "key4")); // Added + "guid4")); // Added model_a()->Add(CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com", - "key2")); // Merge - Copy of key2. - model_a()->Add(CreateTestTemplateURL(ASCIIToUTF16("key3"), "http://key3.com", - "key5", 10)); // Merge - Dupe of key3. - model_a()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key6.com", - "key6", 10)); // Conflict with key1 + "guid2")); // Merge - Copy of guid2. + model_a()->Add(CreateTestTemplateURL( + ASCIIToUTF16("key3"), "http://key3.com", "guid5", + base::Time::FromTimeT(10))); // Merge - Dupe of guid3. + model_a()->Add( + CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key6.com", "guid6", + base::Time::FromTimeT(10))); // Conflict with guid1 // Merge A and B. std::unique_ptr<syncer::SyncChangeProcessorWrapperForTest> delegate_b( @@ -1129,9 +1157,10 @@ model()->StopSyncing(syncer::SEARCH_ENGINES); syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), "http://new.com", - "key2"))); + changes.push_back( + CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), + "http://new.com", "guid2"))); // Because the sync data is never applied locally, there should not be any // notification. base::Optional<syncer::ModelError> process_error = @@ -1139,7 +1168,7 @@ EXPECT_TRUE(process_error.has_value()); // Ensure that the sync changes were not accepted. - EXPECT_TRUE(model()->GetTemplateURLForGUID("key2")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid2")); EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("newkeyword"))); } @@ -1154,16 +1183,17 @@ // to push data into the local model are rejected, since the model was never // successfully associated with Sync in the first place. syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), "http://new.com", - "key2"))); + changes.push_back( + CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), + "http://new.com", "guid2"))); processor()->set_erroneous(false); base::Optional<syncer::ModelError> process_error = ProcessAndExpectNotify(changes, 0); EXPECT_TRUE(process_error.has_value()); // Ensure that the sync changes were not accepted. - EXPECT_TRUE(model()->GetTemplateURLForGUID("key2")); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid2")); EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("newkeyword"))); } @@ -1175,9 +1205,10 @@ ASSERT_FALSE(merge_error.has_value()); syncer::SyncChangeList changes; - changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, - CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), "http://new.com", - "key2"))); + changes.push_back( + CreateTestSyncChange(syncer::SyncChange::ACTION_UPDATE, + CreateTestTemplateURL(ASCIIToUTF16("newkeyword"), + "http://new.com", "guid2"))); processor()->set_erroneous(true); // Because changes make it to local before the error, still need to notify. base::Optional<syncer::ModelError> process_error = @@ -1192,7 +1223,8 @@ initial_data.push_back(CreateInitialSyncData()[0]); model()->Add(CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", - "key1", 10)); // earlier + "guid1", + base::Time::FromTimeT(10))); // earlier base::Optional<syncer::ModelError> error = MergeAndExpectNotify(initial_data, 1); @@ -1200,9 +1232,9 @@ // We should have updated the original TemplateURL with Sync's version. // Keep a copy of it so we can compare it after we re-merge. - TemplateURL* key1_url = model()->GetTemplateURLForGUID("key1"); - ASSERT_TRUE(key1_url); - std::unique_ptr<TemplateURL> updated_turl(new TemplateURL(key1_url->data())); + TemplateURL* guid1_url = model()->GetTemplateURLForGUID("guid1"); + ASSERT_TRUE(guid1_url); + std::unique_ptr<TemplateURL> updated_turl(new TemplateURL(guid1_url->data())); EXPECT_EQ(Time::FromTimeT(90), updated_turl->last_modified()); // Modify a single field of the initial data. This should not be updated in @@ -1224,7 +1256,7 @@ ASSERT_FALSE(error.has_value()); // Check that the TemplateURL was not modified. - const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("key1"); + const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("guid1"); ASSERT_TRUE(reupdated_turl); AssertEquals(*updated_turl, *reupdated_turl); } @@ -1233,11 +1265,12 @@ syncer::SyncDataList initial_data = CreateInitialSyncData(); // The default search provider should support replacement. std::unique_ptr<TemplateURL> turl(CreateTestTemplateURL( - ASCIIToUTF16("key2"), "http://key2.com/{searchTerms}", "key2", 90)); + ASCIIToUTF16("key2"), "http://key2.com/{searchTerms}", "guid2", + base::Time::FromTimeT(90))); initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl); MergeAndExpectNotify(initial_data, 1); model()->SetUserSelectedDefaultSearchProvider( - model()->GetTemplateURLForGUID("key2")); + model()->GetTemplateURLForGUID("guid2")); EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); const TemplateURL* default_search = model()->GetDefaultSearchProvider(); @@ -1280,7 +1313,8 @@ syncer::SyncDataList initial_data; // The default search provider should support replacement. std::unique_ptr<TemplateURL> turl1 = CreateTestTemplateURL( - ASCIIToUTF16("key1"), "http://key1.com/{searchTerms}", "key1", 90); + ASCIIToUTF16("key1"), "http://key1.com/{searchTerms}", "guid1", + base::Time::FromTimeT(90)); // Create a second default search provider for the // FindNewDefaultSearchProvider method to find. TemplateURLData data; @@ -1293,7 +1327,7 @@ data.last_modified = Time::FromTimeT(100); data.created_by_policy = false; data.prepopulate_id = 999999; - data.sync_guid = "key2"; + data.sync_guid = "guid2"; std::unique_ptr<TemplateURL> turl2(new TemplateURL(data)); initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL( *turl1)); @@ -1301,8 +1335,8 @@ *turl2)); MergeAndExpectNotify(initial_data, 1); model()->SetUserSelectedDefaultSearchProvider( - model()->GetTemplateURLForGUID("key1")); - ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid()); + model()->GetTemplateURLForGUID("guid1")); + ASSERT_EQ("guid1", model()->GetDefaultSearchProvider()->sync_guid()); EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); const TemplateURL* default_search = model()->GetDefaultSearchProvider(); @@ -1313,7 +1347,7 @@ profile_a()->GetTestingPrefService()->SetString( prefs::kSyncedDefaultSearchProviderGUID, "newdefault"); - ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid()); + ASSERT_EQ("guid1", model()->GetDefaultSearchProvider()->sync_guid()); EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString( prefs::kSyncedDefaultSearchProviderGUID)); @@ -1328,7 +1362,7 @@ EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("key1"))); EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - EXPECT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid()); + EXPECT_EQ("guid1", model()->GetDefaultSearchProvider()->sync_guid()); EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString( prefs::kSyncedDefaultSearchProviderGUID)); @@ -1363,7 +1397,7 @@ // the model but is expected in the initial sync. Ensure that this doesn't // change our default since we're not quite syncing yet. profile_a()->GetTestingPrefService()->SetString( - prefs::kSyncedDefaultSearchProviderGUID, "key2"); + prefs::kSyncedDefaultSearchProviderGUID, "guid2"); EXPECT_EQ(default_search, model()->GetDefaultSearchProvider()); @@ -1372,7 +1406,8 @@ syncer::SyncDataList initial_data = CreateInitialSyncData(); // The default search provider should support replacement. std::unique_ptr<TemplateURL> turl(CreateTestTemplateURL( - ASCIIToUTF16("key2"), "http://key2.com/{searchTerms}", "key2", 90)); + ASCIIToUTF16("key2"), "http://key2.com/{searchTerms}", "guid2", + base::Time::FromTimeT(90))); initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl); // When the default changes, a second notify is triggered. @@ -1381,7 +1416,7 @@ // Ensure that the new default has been set. EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); ASSERT_NE(default_search, model()->GetDefaultSearchProvider()); - ASSERT_EQ("key2", model()->GetDefaultSearchProvider()->sync_guid()); + ASSERT_EQ("guid2", model()->GetDefaultSearchProvider()->sync_guid()); } TEST_F(TemplateURLServiceSyncTest, SyncedDefaultAlreadySetOnStartup) { @@ -1416,7 +1451,7 @@ // default search provider. MergeAndExpectNotify(CreateInitialSyncData(), 1); model()->SetUserSelectedDefaultSearchProvider( - model()->GetTemplateURLForGUID("key2")); + model()->GetTemplateURLForGUID("guid2")); EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); ASSERT_FALSE(model()->is_default_search_managed()); @@ -1470,14 +1505,14 @@ // default search provider. MergeAndExpectNotify(CreateInitialSyncData(), 1); model()->SetUserSelectedDefaultSearchProvider( - model()->GetTemplateURLForGUID("key2")); + model()->GetTemplateURLForGUID("guid2")); // Expect one change because of user default engine change. const size_t pending_changes = processor()->change_list_size(); EXPECT_EQ(1U, pending_changes); - ASSERT_TRUE(processor()->contains_guid("key2")); + ASSERT_TRUE(processor()->contains_guid("guid2")); EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, - processor()->change_for_guid("key2").change_type()); + processor()->change_for_guid("guid2").change_type()); const size_t sync_engines_count = model()->GetAllSyncData(syncer::SEARCH_ENGINES).size(); @@ -1591,7 +1626,7 @@ changes.push_back(CreateTestSyncChange( syncer::SyncChange::ACTION_ADD, CreateTestTemplateURL(kCommonKeyword, "http://normal.com", "normal_guid", - 10))); + base::Time::FromTimeT(10)))); ProcessAndExpectNotify(changes, 1); // Expect new engine synced in and kept keyword. @@ -1610,7 +1645,8 @@ changes.push_back(CreateTestSyncChange( syncer::SyncChange::ACTION_UPDATE, CreateTestTemplateURL(ASCIIToUTF16("nonconflicting_keyword"), - "http://normal.com", "normal_guid", 11))); + "http://normal.com", "normal_guid", + base::Time::FromTimeT(11)))); ProcessAndExpectNotify(changes, 1); normal_turl = model()->GetTemplateURLForGUID("normal_guid"); ASSERT_TRUE(normal_turl); @@ -1625,7 +1661,7 @@ changes.push_back(CreateTestSyncChange( syncer::SyncChange::ACTION_UPDATE, CreateTestTemplateURL(kCommonKeyword, "http://normal.com", "normal_guid", - 12))); + base::Time::FromTimeT(12)))); ProcessAndExpectNotify(changes, 1); normal_turl = model()->GetTemplateURLForGUID("normal_guid"); ASSERT_TRUE(normal_turl); @@ -1647,35 +1683,37 @@ // should safely replace the local value and set as the new default. TemplateURL* default_turl = model()->Add(CreateTestTemplateURL( ASCIIToUTF16("key1"), "http://key1.com/{searchTerms}", "whateverguid", - 10)); + base::Time::FromTimeT(10))); model()->SetUserSelectedDefaultSearchProvider(default_turl); syncer::SyncDataList initial_data = CreateInitialSyncData(); - // The key1 entry should be a duplicate of the default. + // The guid1 entry should be a duplicate of the default. std::unique_ptr<TemplateURL> turl(CreateTestTemplateURL( - ASCIIToUTF16("key1"), "http://key1.com/{searchTerms}", "key1", 90)); + ASCIIToUTF16("key1"), "http://key1.com/{searchTerms}", "guid1", + base::Time::FromTimeT(90))); initial_data[0] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl); MergeAndExpectNotify(initial_data, 1); EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); EXPECT_FALSE(model()->GetTemplateURLForGUID("whateverguid")); EXPECT_EQ(model()->GetDefaultSearchProvider(), - model()->GetTemplateURLForGUID("key1")); + model()->GetTemplateURLForGUID("guid1")); } TEST_F(TemplateURLServiceSyncTest, LocalDefaultWinsConflict) { // We expect that the local default always wins keyword conflict resolution. const base::string16 keyword(ASCIIToUTF16("key1")); const std::string url("http://whatever.com/{searchTerms}"); - TemplateURL* default_turl = - model()->Add(CreateTestTemplateURL(keyword, url, "whateverguid", 10)); + TemplateURL* default_turl = model()->Add(CreateTestTemplateURL( + keyword, url, "whateverguid", base::Time::FromTimeT(10))); model()->SetUserSelectedDefaultSearchProvider(default_turl); syncer::SyncDataList initial_data = CreateInitialSyncData(); - // The key1 entry should be different from the default but conflict in the + // The guid1 entry should be different from the default but conflict in the // keyword. - std::unique_ptr<TemplateURL> turl = CreateTestTemplateURL( - keyword, "http://key1.com/{searchTerms}", "key1", 90); + std::unique_ptr<TemplateURL> turl = + CreateTestTemplateURL(keyword, "http://key1.com/{searchTerms}", "guid1", + base::Time::FromTimeT(90)); initial_data[0] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl); MergeAndExpectNotify(initial_data, 1); @@ -1683,15 +1721,15 @@ // conflicting TemplateURL. However, its values should have been preserved // since it would have won conflict resolution due to being the default. EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - const TemplateURL* winner = model()->GetTemplateURLForGUID("key1"); + const TemplateURL* winner = model()->GetTemplateURLForGUID("guid1"); ASSERT_TRUE(winner); EXPECT_EQ(model()->GetDefaultSearchProvider(), winner); EXPECT_EQ(keyword, winner->keyword()); EXPECT_EQ(url, winner->url()); - ASSERT_TRUE(processor()->contains_guid("key1")); + ASSERT_TRUE(processor()->contains_guid("guid1")); EXPECT_EQ(syncer::SyncChange::ACTION_UPDATE, - processor()->change_for_guid("key1").change_type()); - EXPECT_EQ(url, GetURL(processor()->change_for_guid("key1").sync_data())); + processor()->change_for_guid("guid1").change_type()); + EXPECT_EQ(url, GetURL(processor()->change_for_guid("guid1").sync_data())); // There is no loser, as the two were merged together. The local sync_guid // should no longer be found in the model. @@ -1703,7 +1741,7 @@ // Create a couple of bogus entries to sync. syncer::SyncDataList initial_data; std::unique_ptr<TemplateURL> turl = - CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "key1"); + CreateTestTemplateURL(ASCIIToUTF16("key1"), "http://key1.com", "guid1"); initial_data.push_back( CreateCustomSyncData(*turl, false, std::string(), turl->sync_guid())); turl = CreateTestTemplateURL(ASCIIToUTF16("key2"), "http://key2.com"); @@ -1717,17 +1755,17 @@ // deletion. EXPECT_EQ(0U, model()->GetTemplateURLs().size()); EXPECT_EQ(2U, processor()->change_list_size()); - ASSERT_TRUE(processor()->contains_guid("key1")); + ASSERT_TRUE(processor()->contains_guid("guid1")); EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, - processor()->change_for_guid("key1").change_type()); + processor()->change_for_guid("guid1").change_type()); ASSERT_TRUE(processor()->contains_guid(std::string())); EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, processor()->change_for_guid(std::string()).change_type()); } TEST_F(TemplateURLServiceSyncTest, PreSyncDeletes) { - model()->pre_sync_deletes_.insert("key1"); - model()->pre_sync_deletes_.insert("key2"); + model()->pre_sync_deletes_.insert("guid1"); + model()->pre_sync_deletes_.insert("guid2"); model()->pre_sync_deletes_.insert("aaa"); model()->Add(CreateTestTemplateURL(ASCIIToUTF16("whatever"), "http://key1.com", "bbb")); @@ -1735,12 +1773,12 @@ MergeAndExpectNotify(CreateInitialSyncData(), 1); EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size()); - // We expect the model to have GUIDs {bbb, key3} after our initial merge. + // We expect the model to have GUIDs {bbb, guid3} after our initial merge. EXPECT_TRUE(model()->GetTemplateURLForGUID("bbb")); - EXPECT_TRUE(model()->GetTemplateURLForGUID("key3")); - syncer::SyncChange change = processor()->change_for_guid("key1"); + EXPECT_TRUE(model()->GetTemplateURLForGUID("guid3")); + syncer::SyncChange change = processor()->change_for_guid("guid1"); EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, change.change_type()); - change = processor()->change_for_guid("key2"); + change = processor()->change_for_guid("guid2"); EXPECT_EQ(syncer::SyncChange::ACTION_DELETE, change.change_type()); // "aaa" should have been pruned out on account of not being from Sync. EXPECT_FALSE(processor()->contains_guid("aaa")); @@ -1903,9 +1941,9 @@ local_keyword : ASCIIToUTF16("synckeyword"); const std::string local_url = "www.localurl.com"; const std::string sync_url = "www.syncurl.com"; - const time_t local_last_modified = 100; - const time_t sync_last_modified = - test_cases[i].conflict_winner == SYNC ? 110 : 90; + const base::Time local_last_modified = base::Time::FromTimeT(100); + const base::Time sync_last_modified = + base::Time::FromTimeT(test_cases[i].conflict_winner == SYNC ? 110 : 90); const std::string local_guid = "local_guid"; const std::string sync_guid = "sync_guid"; @@ -1966,7 +2004,7 @@ ASSERT_TRUE(model()->GetTemplateURLForGUID(local_guid)); EXPECT_EQ(expected_local_keyword, local_turl->keyword()); EXPECT_EQ(local_url, local_turl->url()); - EXPECT_EQ(local_last_modified, local_turl->last_modified().ToTimeT()); + EXPECT_EQ(local_last_modified, local_turl->last_modified()); model()->Remove(model()->GetTemplateURLForGUID(local_guid)); } if (test_cases[i].present_in_model == SYNC || @@ -1974,7 +2012,7 @@ ASSERT_TRUE(model()->GetTemplateURLForGUID(sync_guid)); EXPECT_EQ(expected_sync_keyword, sync_turl->keyword()); EXPECT_EQ(sync_url, sync_turl->url()); - EXPECT_EQ(sync_last_modified, sync_turl->last_modified().ToTimeT()); + EXPECT_EQ(sync_last_modified, sync_turl->last_modified()); model()->Remove(model()->GetTemplateURLForGUID(sync_guid)); } } // for @@ -2504,7 +2542,7 @@ syncer::SyncDataList initial_data; std::unique_ptr<TemplateURL> turl(CreateTestTemplateURL( ASCIIToUTF16("what"), "http://thewhat.com/{searchTerms}", "normal_guid", - 10, true, false, 0)); + base::Time::FromTimeT(10), true, false, 0)); initial_data.push_back( TemplateURLService::CreateSyncDataFromTemplateURL(*turl));
diff --git a/chrome/browser/search_engines/template_url_service_test_util.cc b/chrome/browser/search_engines/template_url_service_test_util.cc index 3080cb99..bbed4d9 100644 --- a/chrome/browser/search_engines/template_url_service_test_util.cc +++ b/chrome/browser/search_engines/template_url_service_test_util.cc
@@ -8,9 +8,9 @@ #include "base/macros.h" #include "base/run_loop.h" +#include "base/strings/string_util.h" #include "base/test/bind.h" #include "base/threading/thread_task_runner_handle.h" -#include "base/time/time.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/search_engines/chrome_template_url_service_client.h" #include "chrome/test/base/testing_profile.h" @@ -67,10 +67,14 @@ const base::string16& keyword, const std::string& url, const std::string& guid, - time_t last_mod, + base::Time last_modified, bool safe_for_autoreplace, bool created_by_policy, int prepopulate_id) { + DCHECK(!base::StartsWith(guid, "key")) + << "Don't use test GUIDs with the form \"key1\". Use \"guid1\" instead " + "for clarity."; + TemplateURLData data; data.SetShortName(base::ASCIIToUTF16("unittest")); data.SetKeyword(keyword); @@ -78,7 +82,7 @@ data.favicon_url = GURL("http://favicon.url"); data.safe_for_autoreplace = safe_for_autoreplace; data.date_created = base::Time::FromTimeT(100); - data.last_modified = base::Time::FromTimeT(last_mod); + data.last_modified = last_modified; data.created_by_policy = created_by_policy; data.prepopulate_id = prepopulate_id; if (!guid.empty())
diff --git a/chrome/browser/search_engines/template_url_service_test_util.h b/chrome/browser/search_engines/template_url_service_test_util.h index 1be7174..f009daf 100644 --- a/chrome/browser/search_engines/template_url_service_test_util.h +++ b/chrome/browser/search_engines/template_url_service_test_util.h
@@ -12,6 +12,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/strings/string16.h" +#include "base/time/time.h" #include "components/search_engines/template_url.h" #include "components/search_engines/template_url_data.h" #include "components/search_engines/template_url_service_observer.h" @@ -32,12 +33,11 @@ // Creates a TemplateURL with some test values. The caller owns the returned // TemplateURL*. -// TODO(tommycli): Change last_mod to more verbose name and make it base::Time. std::unique_ptr<TemplateURL> CreateTestTemplateURL( const base::string16& keyword, const std::string& url, const std::string& guid = std::string(), - time_t last_mod = 100, + base::Time last_modified = base::Time::FromTimeT(100), bool safe_for_autoreplace = false, bool created_by_policy = false, int prepopulate_id = 999999);
diff --git a/chrome/browser/ssl/ssl_browsertest_util.cc b/chrome/browser/ssl/ssl_browsertest_util.cc index e2a719c..504071b 100644 --- a/chrome/browser/ssl/ssl_browsertest_util.cc +++ b/chrome/browser/ssl/ssl_browsertest_util.cc
@@ -37,11 +37,7 @@ expected_authentication_state == AuthState::SHOWING_INTERSTITIAL) { EXPECT_EQ(content::PAGE_TYPE_ERROR, entry->GetPageType()); } else { - EXPECT_EQ( - !!(expected_authentication_state & AuthState::SHOWING_INTERSTITIAL) - ? content::PAGE_TYPE_INTERSTITIAL - : content::PAGE_TYPE_NORMAL, - entry->GetPageType()); + EXPECT_EQ(content::PAGE_TYPE_NORMAL, entry->GetPageType()); } bool displayed_insecure_content =
diff --git a/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc b/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc index bd78a73..3a00860 100644 --- a/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_search_engines_sync_test.cc
@@ -82,13 +82,13 @@ // "guid2" is newer, so it should be treated as better. fake_server_->InjectEntity(CreateFromTemplateURL(CreateTestTemplateURL( /*keyword=*/base::ASCIIToUTF16("key1"), /*url=*/"http://key1.com", - /*guid=*/"guid1", /*last_mod=*/10))); + /*guid=*/"guid1", base::Time::FromTimeT(10)))); fake_server_->InjectEntity(CreateFromTemplateURL(CreateTestTemplateURL( /*keyword=*/base::ASCIIToUTF16("key1"), /*url=*/"http://key1.com", - /*guid=*/"guid2", /*last_mod=*/5))); + /*guid=*/"guid2", base::Time::FromTimeT(5)))); fake_server_->InjectEntity(CreateFromTemplateURL(CreateTestTemplateURL( /*keyword=*/base::ASCIIToUTF16("key1"), /*url=*/"http://key1.com", - /*guid=*/"guid3", /*last_mod=*/5))); + /*guid=*/"guid3", base::Time::FromTimeT(5)))); ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; ASSERT_TRUE(UpdatedProgressMarkerChecker(GetSyncService(0)).Wait());
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 558c4e1..d51ce6f 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -3536,6 +3536,8 @@ "views/desktop_capture/desktop_media_source_view.h", "views/desktop_capture/desktop_media_tab_list.cc", "views/desktop_capture/desktop_media_tab_list.h", + "views/desktop_capture/get_current_browsing_context_media_dialog.cc", + "views/desktop_capture/get_current_browsing_context_media_dialog.h", "views/device_chooser_content_view.cc", "views/device_chooser_content_view.h", "views/devtools_process_observer.cc",
diff --git a/chrome/browser/ui/ash/holding_space/BUILD.gn b/chrome/browser/ui/ash/holding_space/BUILD.gn index 2c81354..f707f46 100644 --- a/chrome/browser/ui/ash/holding_space/BUILD.gn +++ b/chrome/browser/ui/ash/holding_space/BUILD.gn
@@ -20,9 +20,11 @@ "//base/test:test_support", "//chrome/browser", "//chrome/browser/chromeos", + "//chrome/browser/chromeos:test_support", "//chrome/browser/extensions", "//chrome/browser/ui", "//chrome/test:test_support_ui", + "//chromeos/dbus/power:power", "//content/test:test_support", "//ui/aura", "//ui/base",
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc index c9c2f6a3..df0d35e8 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.cc
@@ -41,10 +41,6 @@ : content::BrowserContext::GetDownloadManager(profile())); } -void HoldingSpaceDownloadsDelegate::Shutdown() { - RemoveObservers(); -} - void HoldingSpaceDownloadsDelegate::OnPersistenceRestored() { content::DownloadManager* download_manager = download_manager_for_testing
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h index 3867290..2242c32 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_downloads_delegate.h
@@ -47,7 +47,6 @@ private: // HoldingSpaceKeyedServiceDelegate: void Init() override; - void Shutdown() override; void OnPersistenceRestored() override; // content::DownloadManager::Observer:
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.cc index 5edb638..7569189 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.cc
@@ -9,6 +9,7 @@ #include "ash/public/cpp/holding_space/holding_space_model.h" #include "base/files/file_path.h" #include "base/files/file_path_watcher.h" +#include "base/files/file_util.h" #include "base/sequence_checker.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" @@ -32,15 +33,26 @@ FileSystemWatcher& operator=(const FileSystemWatcher&) = delete; ~FileSystemWatcher() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } - void AddWatch(const base::FilePath& file_path) { + void AddWatchForParent(const base::FilePath& file_path) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (base::Contains(watchers_, file_path)) - return; - watchers_[file_path] = std::make_unique<base::FilePathWatcher>(); - watchers_[file_path]->Watch( - file_path, base::FilePathWatcher::Type::kNonRecursive, - base::Bind(&FileSystemWatcher::OnFilePathChanged, - weak_factory_.GetWeakPtr())); + + // Observe the file path parent directory for changes - this reduces the + // number of inotify requests, and works well enough for detecting file + // deletion. + const base::FilePath path_to_watch = file_path.DirName(); + + if (!base::Contains(watchers_, path_to_watch)) { + watchers_[path_to_watch] = std::make_unique<base::FilePathWatcher>(); + watchers_[path_to_watch]->Watch( + path_to_watch, base::FilePathWatcher::Type::kNonRecursive, + base::Bind(&FileSystemWatcher::OnFilePathChanged, + weak_factory_.GetWeakPtr())); + } + + // If the target path got deleted while request to add a watcher was in + // flight, notify observers of path change immediately. + if (!base::PathExists(file_path)) + OnFilePathChanged(path_to_watch, /*error=*/false); } void RemoveWatch(const base::FilePath& file_path) { @@ -102,10 +114,6 @@ base::Unretained(this))); } -void HoldingSpaceFileSystemDelegate::Shutdown() { - volume_manager_observer_.RemoveAll(); -} - void HoldingSpaceFileSystemDelegate::OnHoldingSpaceItemAdded( const HoldingSpaceItem* item) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -113,7 +121,7 @@ if (item->IsFinalized()) { // Watch the directory containing `items`'s backing file. If the directory // is already being watched, this will no-op. - AddWatch(item->file_path().DirName()); + AddWatchForParent(item->file_path()); return; } @@ -162,7 +170,7 @@ void HoldingSpaceFileSystemDelegate::OnHoldingSpaceItemFinalized( const HoldingSpaceItem* item) { - AddWatch(item->file_path().DirName()); + AddWatchForParent(item->file_path()); } void HoldingSpaceFileSystemDelegate::OnVolumeMounted( @@ -188,11 +196,17 @@ void HoldingSpaceFileSystemDelegate::OnVolumeUnmounted( chromeos::MountError error_code, const file_manager::Volume& volume) { - model()->RemoveIf(base::BindRepeating( - [](const base::FilePath& volume_path, const HoldingSpaceItem* item) { - return volume_path.IsParent(item->file_path()); - }, - volume.mount_path())); + // Schedule task to remove items under the unmounted file path from the model. + // During suspend, some volumes get unmounted - for example, drive FS. The + // file system delegate gets shutdown to avoid removing items from unmounted + // volumes, but depending on the order in which observers are added to power + // manager dbus client, the file system delegate may get shutdown after + // unmounting a volume. To avoid observer ordering issues, schedule + // asynchronous task to remove unmounted items from the model. + base::SequencedTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::BindOnce(&HoldingSpaceFileSystemDelegate::RemoveItemsParentedByPath, + weak_factory_.GetWeakPtr(), volume.mount_path())); } void HoldingSpaceFileSystemDelegate::OnFilePathChanged( @@ -269,10 +283,11 @@ } } -void HoldingSpaceFileSystemDelegate::AddWatch(const base::FilePath& file_path) { +void HoldingSpaceFileSystemDelegate::AddWatchForParent( + const base::FilePath& file_path) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); file_system_watcher_runner_->PostTask( - FROM_HERE, base::BindOnce(&FileSystemWatcher::AddWatch, + FROM_HERE, base::BindOnce(&FileSystemWatcher::AddWatchForParent, file_system_watcher_->GetWeakPtr(), file_path)); } @@ -284,6 +299,15 @@ file_system_watcher_->GetWeakPtr(), file_path)); } +void HoldingSpaceFileSystemDelegate::RemoveItemsParentedByPath( + const base::FilePath& parent_path) { + model()->RemoveIf(base::BindRepeating( + [](const base::FilePath& parent_path, const HoldingSpaceItem* item) { + return parent_path.IsParent(item->file_path()); + }, + parent_path)); +} + void HoldingSpaceFileSystemDelegate::ClearNonFinalizedItems() { model()->RemoveIf(base::BindRepeating( [](const HoldingSpaceItem* item) { return !item->IsFinalized(); }));
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.h b/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.h index bfa3ca5..f9f4ab12 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_file_system_delegate.h
@@ -42,7 +42,6 @@ // HoldingSpaceKeyedServiceDelegate: void Init() override; - void Shutdown() override; void OnHoldingSpaceItemAdded(const HoldingSpaceItem* item) override; void OnHoldingSpaceItemRemoved(const HoldingSpaceItem* item) override; void OnHoldingSpaceItemFinalized(const HoldingSpaceItem* item) override; @@ -74,9 +73,15 @@ std::vector<base::FilePath> invalid_paths); // Adds/removes a watch for the specified `file_path`. - void AddWatch(const base::FilePath& file_path); + // Note that `AddWatchForParent` will add a watch for the `file_path`'s parent + // directory. + void AddWatchForParent(const base::FilePath& file_path); void RemoveWatch(const base::FilePath& file_path); + // Removes items that are (transitively) parented by `parent_path` from the + // holding space model. + void RemoveItemsParentedByPath(const base::FilePath& parent_path); + // Clears all non-finalized items from holding space model - runs with a delay // after profile initialization to clean up items from volumes that have not // been mounted during startup.
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc index 0e59574..a1edc9c 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc
@@ -96,7 +96,7 @@ } // Otherwise we need to wait for the profile to be added. - profile_manager_observer_.Add(profile_manager); + profile_manager_observer_.Observe(profile_manager); } HoldingSpaceKeyedService::~HoldingSpaceKeyedService() { @@ -269,18 +269,47 @@ } void HoldingSpaceKeyedService::Shutdown() { - for (auto& delegate : delegates_) - delegate->Shutdown(); + ShutdownDelegates(); } void HoldingSpaceKeyedService::OnProfileAdded(Profile* profile) { if (profile == profile_) { - profile_manager_observer_.Remove(GetProfileManager()); + profile_manager_observer_.RemoveObservation(); OnProfileReady(); } } void HoldingSpaceKeyedService::OnProfileReady() { + // Observe suspend status - the delegates will be shutdown during suspend. + if (chromeos::PowerManagerClient::Get()) + power_manager_observer_.Observe(chromeos::PowerManagerClient::Get()); + + InitializeDelegates(); + + HoldingSpaceController::Get()->RegisterClientAndModelForUser( + account_id_, &holding_space_client_, &holding_space_model_); +} + +void HoldingSpaceKeyedService::SuspendImminent( + power_manager::SuspendImminent::Reason reason) { + // Shutdown all delegates and clear the model when device suspends - some + // volumes may get unmounted during suspend, and may thus incorrectly get + // detected as deleted when device suspends - shutting down delegates during + // suspend avoids this issue, as it also disables file removal detection. + ShutdownDelegates(); + + // Clear the model as it will get restored from persistence when + // delegates are re-initialized after suspend. + holding_space_model_.RemoveAll(); +} + +void HoldingSpaceKeyedService::SuspendDone(base::TimeDelta sleep_duration) { + InitializeDelegates(); +} + +void HoldingSpaceKeyedService::InitializeDelegates() { + DCHECK(delegates_.empty()); + // The `HoldingSpaceDownloadsDelegate` monitors the status of downloads. delegates_.push_back(std::make_unique<HoldingSpaceDownloadsDelegate>( profile_, &holding_space_model_, @@ -309,12 +338,13 @@ delegate->Init(); } +void HoldingSpaceKeyedService::ShutdownDelegates() { + delegates_.clear(); +} + void HoldingSpaceKeyedService::OnPersistenceRestored() { for (auto& delegate : delegates_) delegate->NotifyPersistenceRestored(); - - HoldingSpaceController::Get()->RegisterClientAndModelForUser( - account_id_, &holding_space_client_, &holding_space_model_); } } // namespace ash
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h index 98f5bd36..c6f144c 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h
@@ -9,13 +9,14 @@ #include <vector> #include "ash/public/cpp/holding_space/holding_space_model.h" -#include "base/scoped_observer.h" +#include "base/scoped_observation.h" #include "base/strings/string16.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager_observer.h" #include "chrome/browser/ui/ash/holding_space/holding_space_client_impl.h" #include "chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.h" #include "chrome/browser/ui/ash/holding_space/holding_space_thumbnail_loader.h" +#include "chromeos/dbus/power/power_manager_client.h" #include "components/account_id/account_id.h" #include "components/keyed_service/core/keyed_service.h" #include "url/gurl.h" @@ -40,7 +41,8 @@ // * Manages the temporary holding space per-profile data model. // * Serves as an entry point to add holding space items from Chrome. class HoldingSpaceKeyedService : public KeyedService, - public ProfileManagerObserver { + public ProfileManagerObserver, + public chromeos::PowerManagerClient::Observer { public: HoldingSpaceKeyedService(Profile* profile, const AccountId& account_id); HoldingSpaceKeyedService(const HoldingSpaceKeyedService& other) = delete; @@ -102,9 +104,22 @@ // ProfileManagerObserver: void OnProfileAdded(Profile* profile) override; + // PowerManagerClient::Observer + void SuspendImminent(power_manager::SuspendImminent::Reason reason) override; + void SuspendDone(base::TimeDelta sleep_duration) override; + // Invoked when the associated profile is ready. void OnProfileReady(); + // Creates and initializes holding space delegates. Called when the associated + // profile finishes initialization, or when device suspend ends (the delegates + // are shutdown during suspend). + void InitializeDelegates(); + + // Shuts down and destroys existing holding space delegates. Called on + // profile shutdown, or when device suspend starts. + void ShutdownDelegates(); + // Invoked when holding space persistence has been restored. void OnPersistenceRestored(); @@ -121,9 +136,13 @@ // service. They operate autonomously of one another. std::vector<std::unique_ptr<HoldingSpaceKeyedServiceDelegate>> delegates_; - ScopedObserver<ProfileManager, ProfileManagerObserver> + base::ScopedObservation<ProfileManager, ProfileManagerObserver> profile_manager_observer_{this}; + base::ScopedObservation<chromeos::PowerManagerClient, + chromeos::PowerManagerClient::Observer> + power_manager_observer_{this}; + base::WeakPtrFactory<HoldingSpaceKeyedService> weak_factory_{this}; };
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc index 822de46..86e76b3 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_browsertest.cc
@@ -12,16 +12,26 @@ #include "ash/public/cpp/holding_space/holding_space_model_observer.h" #include "base/callback_helpers.h" #include "base/files/file_path.h" +#include "base/files/file_path_watcher.h" #include "base/files/file_util.h" +#include "base/path_service.h" #include "base/run_loop.h" +#include "base/scoped_observation.h" #include "base/test/bind.h" #include "base/test/scoped_feature_list.h" +#include "base/test/scoped_path_override.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "base/unguessable_token.h" +#include "chrome/browser/chromeos/drive/drive_integration_service.h" +#include "chrome/browser/chromeos/drive/drivefs_test_support.h" #include "chrome/browser/chromeos/file_manager/path_util.h" +#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/extensions/component_loader.h" #include "chrome/browser/ui/ash/holding_space/holding_space_util.h" #include "chrome/browser/ui/browser.h" +#include "chrome/common/chrome_paths.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chromeos/dbus/power/fake_power_manager_client.h" #include "content/public/test/browser_test.h" #include "storage/browser/file_system/external_mount_points.h" #include "testing/gmock/include/gmock/gmock.h" @@ -31,6 +41,11 @@ namespace ash { namespace { +// Types of file systems backing holding space items tested by +// HoldingSpaceKeyedServiceBrowserTest. The tests are parameterized by this +// enum. +enum class FileSystemType { kDownloads, kDriveFs }; + // Mocks ----------------------------------------------------------------------- // Mock observer which can be used to set expectations about model behavior. @@ -52,14 +67,6 @@ // Helpers --------------------------------------------------------------------- -// Posts a task and waits for it to run in order to flush the message loop. -void FlushMessageLoop() { - base::RunLoop run_loop; - base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE, - run_loop.QuitClosure()); - run_loop.Run(); -} - // Returns the path of the downloads mount point for the given `profile`. base::FilePath GetDownloadsPath(Profile* profile) { base::FilePath result; @@ -70,10 +77,12 @@ } // Creates a txt file at the path of the downloads mount point for `profile`. -base::FilePath CreateTextFile(Profile* profile) { - const std::string relative_path = base::StringPrintf( - "%s.txt", base::UnguessableToken::Create().ToString().c_str()); - const base::FilePath path = GetDownloadsPath(profile).Append(relative_path); +base::FilePath CreateTextFile( + const base::FilePath& root_path, + const base::Optional<std::string>& relative_path) { + const base::FilePath path = + root_path.Append(relative_path.value_or(base::StringPrintf( + "%s.txt", base::UnguessableToken::Create().ToString().c_str()))); base::ScopedAllowBlockingForTesting allow_blocking; if (!base::CreateDirectory(path.DirName())) @@ -84,41 +93,104 @@ return path; } -// Adds a holding space item backed by a txt file at the path of the downloads -// mount point for `profile`. A pointer to the added item is returned. -const HoldingSpaceItem* AddHoldingSpaceItem(Profile* profile) { +// Waits for a holding space item with the provided id to be added to the +// holding space model. +// Returns immediately if the item already exists. +void WaitForItemAddition(const std::string& item_id) { + auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); + if (holding_space_model->GetItem(item_id)) + return; + + testing::NiceMock<MockHoldingSpaceModelObserver> mock; + base::ScopedObservation<HoldingSpaceModel, HoldingSpaceModelObserver> + observer{&mock}; + observer.Observe(holding_space_model); + + base::RunLoop run_loop; + ON_CALL(mock, OnHoldingSpaceItemAdded) + .WillByDefault([&](const HoldingSpaceItem* item) { + if (item->id() == item_id) + run_loop.Quit(); + }); + run_loop.Run(); +} + +// Waits for a holding space item with the provided id to be removed from the +// holding space model. +// Returns immediately if the model does not contain such item. +void WaitForItemRemoval(const std::string& item_id) { + auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); + if (!holding_space_model->GetItem(item_id)) + return; + + testing::NiceMock<MockHoldingSpaceModelObserver> mock; + base::ScopedObservation<HoldingSpaceModel, HoldingSpaceModelObserver> + observer{&mock}; + observer.Observe(holding_space_model); + + base::RunLoop run_loop; + ON_CALL(mock, OnHoldingSpaceItemRemoved) + .WillByDefault([&](const HoldingSpaceItem* item) { + if (item->id() == item_id) + run_loop.Quit(); + }); + run_loop.Run(); +} + +// Waits for a holding space item with the provided id to be added to the +// holding space model and finalized. +// Returns immediately if the item already exists and is finalized. +void WaitForItemFinalization(const std::string& item_id) { + auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); + if (!holding_space_model->GetItem(item_id)) + WaitForItemAddition(item_id); + + const HoldingSpaceItem* item = holding_space_model->GetItem(item_id); + if (item->IsFinalized()) + return; + + testing::NiceMock<MockHoldingSpaceModelObserver> mock; + base::ScopedObservation<HoldingSpaceModel, HoldingSpaceModelObserver> + observer{&mock}; + observer.Observe(holding_space_model); + + base::RunLoop run_loop; + ON_CALL(mock, OnHoldingSpaceItemFinalized) + .WillByDefault([&](const HoldingSpaceItem* item) { + if (item->id() == item_id) + run_loop.Quit(); + }); + ON_CALL(mock, OnHoldingSpaceItemRemoved) + .WillByDefault([&](const HoldingSpaceItem* item) { + if (item->id() != item_id) + return; + ADD_FAILURE() << "Item unexpectedly removed " << item_id; + run_loop.Quit(); + }); + run_loop.Run(); +} + +// Adds a holding space item backed by a txt file at `item_path`. +// Returns a pointer to the added item. +const HoldingSpaceItem* AddHoldingSpaceItem(Profile* profile, + const base::FilePath& item_path) { EXPECT_TRUE(ash::HoldingSpaceController::Get()); auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); EXPECT_TRUE(holding_space_model); - const HoldingSpaceItem* result = nullptr; + std::unique_ptr<HoldingSpaceItem> item = + HoldingSpaceItem::CreateFileBackedItem( + HoldingSpaceItem::Type::kDownload, item_path, + holding_space_util::ResolveFileSystemUrl(profile, item_path), + std::make_unique<HoldingSpaceImage>( + /*placeholder=*/gfx::ImageSkia(), + /*async_bitmap_resolver=*/base::DoNothing())); - testing::StrictMock<MockHoldingSpaceModelObserver> mock; - ScopedObserver<HoldingSpaceModel, HoldingSpaceModelObserver> observer{&mock}; - observer.Add(holding_space_model); + const HoldingSpaceItem* item_ptr = item.get(); + holding_space_model->AddItem(std::move(item)); - base::RunLoop run_loop; - EXPECT_CALL(mock, OnHoldingSpaceItemAdded) - .WillOnce([&](const HoldingSpaceItem* item) { - result = item; - - // Explicitly flush the message loop after a holding space `item` is - // added to give file system watchers a chance to register. - FlushMessageLoop(); - run_loop.Quit(); - }); - - base::FilePath item_path = CreateTextFile(profile); - holding_space_model->AddItem(HoldingSpaceItem::CreateFileBackedItem( - HoldingSpaceItem::Type::kDownload, item_path, - holding_space_util::ResolveFileSystemUrl(profile, item_path), - std::make_unique<HoldingSpaceImage>( - /*placeholder=*/gfx::ImageSkia(), - /*async_bitmap_resolver=*/base::DoNothing()))); - - run_loop.Run(); - return result; + return item_ptr; } // Removes a `holding_space_item` by running the specified `closure`. @@ -127,29 +199,18 @@ base::OnceClosure closure) { EXPECT_TRUE(ash::HoldingSpaceController::Get()); - auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); - EXPECT_TRUE(holding_space_model); - - testing::StrictMock<MockHoldingSpaceModelObserver> mock; - ScopedObserver<HoldingSpaceModel, HoldingSpaceModelObserver> observer{&mock}; - observer.Add(holding_space_model); - - base::RunLoop run_loop; - EXPECT_CALL(mock, OnHoldingSpaceItemRemoved) - .WillOnce([&](const HoldingSpaceItem* item) { - EXPECT_EQ(holding_space_item, item); - run_loop.Quit(); - }); - + const std::string item_id = holding_space_item->id(); std::move(closure).Run(); - run_loop.Run(); + WaitForItemRemoval(item_id); } } // namespace // HoldingSpaceKeyedServiceBrowserTest ----------------------------------------- -class HoldingSpaceKeyedServiceBrowserTest : public InProcessBrowserTest { +class HoldingSpaceKeyedServiceBrowserTest + : public InProcessBrowserTest, + public ::testing::WithParamInterface<FileSystemType> { public: HoldingSpaceKeyedServiceBrowserTest() { scoped_feature_list_.InitAndEnableFeature( @@ -157,43 +218,216 @@ } // InProcessBrowserTest: + bool SetUpUserDataDirectory() override { + base::FilePath user_data_dir; + if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) + return false; + + // Mount test volumes under user data dir to ensure it gets persisted after + // PRE test runs. + test_mount_point_ = user_data_dir.Append("test_mount").Append("test-user"); + + return GetParam() == FileSystemType::kDriveFs + ? drive::SetUpUserDataDirectoryForDriveFsTest() + : InProcessBrowserTest::SetUpUserDataDirectory(); + } + void SetUpInProcessBrowserTestFixture() override { InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); extensions::ComponentLoader::EnableBackgroundExtensionsForTesting(); + + // File system type specific setup. + switch (GetParam()) { + case FileSystemType::kDownloads: + // Override the default downloads path to point to the test mount point + // within user data dir. + downloads_override_ = std::make_unique<base::ScopedPathOverride>( + chrome::DIR_DEFAULT_DOWNLOADS, test_mount_point_, + /*is_absolute*/ true, + /*create*/ false); + break; + + case FileSystemType::kDriveFs: + // Set up drive integration service for test. + ASSERT_TRUE(test_cache_root_.CreateUniqueTempDir()); + create_drive_integration_service_ = base::Bind( + &HoldingSpaceKeyedServiceBrowserTest::CreateDriveIntegrationService, + base::Unretained(this)); + service_factory_for_test_ = std::make_unique< + drive::DriveIntegrationServiceFactory::ScopedFactoryForTest>( + &create_drive_integration_service_); + break; + } + + EnsurePredefinedTestFiles(); + } + + base::FilePath GetTestMountPoint() { return test_mount_point_; } + + base::FilePath GetPredefinedTestFile(size_t index) const { + DCHECK_LT(index, predefined_test_files_.size()); + return predefined_test_files_[index]; + } + + void EnsurePredefinedTestFiles() { + if (!predefined_test_files_.empty()) + return; + predefined_test_files_.push_back( + CreateTextFile(GetTestMountPoint(), "root/test_file.txt")); + } + + drive::DriveIntegrationService* CreateDriveIntegrationService( + Profile* profile) { + // Ignore signin and lock screen apps profile. + if (profile->GetPath() == chromeos::ProfileHelper::GetSigninProfileDir() || + profile->GetPath() == + chromeos::ProfileHelper::GetLockScreenAppProfilePath()) { + return nullptr; + } + + fake_drivefs_helper_ = + std::make_unique<drive::FakeDriveFsHelper>(profile, test_mount_point_); + integration_service_ = new drive::DriveIntegrationService( + profile, "", test_cache_root_.GetPath(), + fake_drivefs_helper_->CreateFakeDriveFsListenerFactory()); + return integration_service_; + } + + void WaitForVolumeUnmountIfNeeded() { + // Drive fs gets unmounted on suspend, and the fake cros disks client + // deletes the mount point on unmount event - wait for the drive mount point + // to get deleted from file system. + if (GetParam() != FileSystemType::kDriveFs) + return; + + // Clear the list of predefined test files, as they are getting deleted with + // the mount point dir. + predefined_test_files_.clear(); + + const base::FilePath mount_path = GetTestMountPoint(); + base::ScopedAllowBlockingForTesting allow_blocking; + if (!base::PathExists(mount_path)) + return; + + base::RunLoop waiter_loop; + base::FilePathWatcher watcher; + watcher.Watch(mount_path, base::FilePathWatcher::Type::kNonRecursive, + base::BindRepeating( + [](const base::RepeatingClosure& callback, + const base::FilePath& path, bool error) { + if (!base::PathExists(path)) + callback.Run(); + }, + waiter_loop.QuitClosure())); + waiter_loop.Run(); } private: base::test::ScopedFeatureList scoped_feature_list_; + + // List of files paths that are created by default by the test suite. + std::vector<base::FilePath> predefined_test_files_; + + // The path under which test volume is mounted. + base::FilePath test_mount_point_; + + // Used to override downloads mount point for downloads tests. + std::unique_ptr<base::ScopedPathOverride> downloads_override_; + + // Used to set up drive fs for for drive tests. + base::ScopedTempDir test_cache_root_; + std::unique_ptr<drive::FakeDriveFsHelper> fake_drivefs_helper_; + drive::DriveIntegrationService* integration_service_ = nullptr; + drive::DriveIntegrationServiceFactory::FactoryCallback + create_drive_integration_service_; + std::unique_ptr<drive::DriveIntegrationServiceFactory::ScopedFactoryForTest> + service_factory_for_test_; }; +INSTANTIATE_TEST_SUITE_P(FileSystem, + HoldingSpaceKeyedServiceBrowserTest, + ::testing::Values(FileSystemType::kDownloads, + FileSystemType::kDriveFs)); + // Tests ----------------------------------------------------------------------- // Verifies that holding space items are removed when their backing files // "disappear". Note that a "disappearance" could be due to file move or delete. -IN_PROC_BROWSER_TEST_F(HoldingSpaceKeyedServiceBrowserTest, +IN_PROC_BROWSER_TEST_P(HoldingSpaceKeyedServiceBrowserTest, RemovesItemsWhenBackingFileDisappears) { - { - // Verify that items are removed when their backing files are deleted. - const auto* holding_space_item = AddHoldingSpaceItem(browser()->profile()); - RemoveHoldingSpaceItemViaClosure( - holding_space_item, base::BindLambdaForTesting([&]() { - base::ScopedAllowBlockingForTesting allow_blocking; - EXPECT_TRUE(base::DeleteFile(holding_space_item->file_path())); - })); - } + // Verify that items are removed when their backing files are deleted. + const auto* holding_space_item_to_delete = AddHoldingSpaceItem( + browser()->profile(), CreateTextFile(GetTestMountPoint(), + /*relative_path=*/base::nullopt)); - { - // Verify that items are removed when their backing files are moved. - const auto* holding_space_item = AddHoldingSpaceItem(browser()->profile()); - RemoveHoldingSpaceItemViaClosure( - holding_space_item, base::BindLambdaForTesting([&]() { - base::ScopedAllowBlockingForTesting allow_blocking; - EXPECT_TRUE(base::Move( - holding_space_item->file_path(), - GetDownloadsPath(browser()->profile()) - .Append(base::UnguessableToken::Create().ToString()))); - })); - } + // Verify that items are removed when their backing files are moved. + const auto* holding_space_item_to_move = AddHoldingSpaceItem( + browser()->profile(), CreateTextFile(GetTestMountPoint(), + /*relative_path=*/base::nullopt)); + + RemoveHoldingSpaceItemViaClosure( + holding_space_item_to_delete, base::BindLambdaForTesting([&]() { + base::ScopedAllowBlockingForTesting allow_blocking; + EXPECT_TRUE( + base::DeleteFile(holding_space_item_to_delete->file_path())); + })); + + RemoveHoldingSpaceItemViaClosure( + holding_space_item_to_move, base::BindLambdaForTesting([&]() { + base::ScopedAllowBlockingForTesting allow_blocking; + EXPECT_TRUE( + base::Move(holding_space_item_to_move->file_path(), + GetTestMountPoint().Append( + base::UnguessableToken::Create().ToString()))); + })); +} + +IN_PROC_BROWSER_TEST_P(HoldingSpaceKeyedServiceBrowserTest, + ItemsNotRemovedDuringSuspend) { + const auto* holding_space_item = + AddHoldingSpaceItem(browser()->profile(), GetPredefinedTestFile(0)); + + auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); + EXPECT_TRUE(holding_space_model); + ASSERT_TRUE(holding_space_model->GetItem(holding_space_item->id())); + const std::string item_id = holding_space_item->id(); + + chromeos::FakePowerManagerClient::Get()->SendSuspendImminent( + power_manager::SuspendImminent::IDLE); + base::RunLoop().RunUntilIdle(); + + // Holding space model gets cleared on suspend. + EXPECT_TRUE(holding_space_model->items().empty()); + + // Wait for test volume unmount to finish, if necessary for the test file + // system - for example, the drive fs will be unmounted, and fake cros disks + // client will delete the backing directory from files system. + WaitForVolumeUnmountIfNeeded(); + + EnsurePredefinedTestFiles(); + // Verify that holding space model gets restored on resume. + chromeos::FakePowerManagerClient::Get()->SendSuspendDone(); + + WaitForItemFinalization(item_id); + EXPECT_TRUE(holding_space_model->GetItem(item_id)); +} + +// Test that creates a holding space item during PRE_ part, and verifies that +// the item gets restored after restart. +IN_PROC_BROWSER_TEST_P(HoldingSpaceKeyedServiceBrowserTest, + PRE_RestoreItemsOnRestart) { + const auto* holding_space_item = + AddHoldingSpaceItem(browser()->profile(), GetPredefinedTestFile(0)); + + auto* holding_space_model = ash::HoldingSpaceController::Get()->model(); + ASSERT_TRUE(holding_space_model); + EXPECT_TRUE(holding_space_model->GetItem(holding_space_item->id())); +} + +IN_PROC_BROWSER_TEST_P(HoldingSpaceKeyedServiceBrowserTest, + RestoreItemsOnRestart) { + WaitForItemFinalization(HoldingSpaceItem::GetFileBackedItemId( + HoldingSpaceItem::Type::kDownload, GetPredefinedTestFile(0))); } } // namespace ash
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.cc index f636a638..d0c822a60 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.cc
@@ -19,8 +19,6 @@ HoldingSpaceKeyedServiceDelegate::~HoldingSpaceKeyedServiceDelegate() = default; -void HoldingSpaceKeyedServiceDelegate::Shutdown() {} - void HoldingSpaceKeyedServiceDelegate::NotifyPersistenceRestored() { DCHECK(is_restoring_persistence_); is_restoring_persistence_ = false;
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.h b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.h index e8e6eab..e736974e 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_delegate.h
@@ -19,16 +19,12 @@ public: ~HoldingSpaceKeyedServiceDelegate() override; - // Invoked by `HoldingSpaceKeyedService` to initialize the delegate - // immediately after its construction. Delegates accepting callbacks from - // the service should *not* invoke callbacks during construction but are free - // to do so during or anytime after initialization. + // Invoked by `HoldingSpaceKeyedService` to initialize the delegate. + // Called immediately after the delegate's construction. Delegates accepting + // callbacks from the service should *not* invoke callbacks during + // construction but are free to do so during or anytime after initialization. virtual void Init() = 0; - // Invoked by `HoldingSpaceKeyedService` when the service is shutting down. - // Delegates should perform any necessary clean up. - virtual void Shutdown(); - // Invoked by `HoldingSpaceKeyedService` to notify delegates when holding // space persistence has been restored. void NotifyPersistenceRestored();
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc index c7214b2d..59be5de 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
@@ -1085,6 +1085,7 @@ EXPECT_EQ(3u, holding_space_model->items().size()); test_mount_1.reset(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(1u, GetProfile() ->GetPrefs()
diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h index bf5394f..9e01097d 100644 --- a/chrome/browser/ui/browser_dialogs.h +++ b/chrome/browser/ui/browser_dialogs.h
@@ -296,6 +296,7 @@ CROSTINI_RECOVERY = 103, PARENT_PERMISSION = 104, // ChromeOS only. SIGNIN_REAUTH = 105, + CURRENT_BROWSING_CONTEXT_CONFIRMATION_BOX = 106, // Add values above this line with a corresponding label in // tools/metrics/histograms/enums.xml MAX_VALUE
diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc index 2e0a004..2cb705c6 100644 --- a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc +++ b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
@@ -109,10 +109,8 @@ if (login_tab_helper && login_tab_helper->IsShowingPrompt()) return login_tab_helper->ShouldDisplayURL(); - if (entry->IsViewSourceMode() || - entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { + if (entry->IsViewSourceMode()) return true; - } const auto is_ntp = [](const GURL& url) { return url.SchemeIs(content::kChromeUIScheme) &&
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc index d0676ecc..045c239 100644 --- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc +++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views.cc
@@ -18,6 +18,7 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/desktop_capture/desktop_media_source_view.h" +#include "chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" #include "components/constrained_window/constrained_window_views.h" @@ -25,6 +26,7 @@ #include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/media_stream_request.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents_delegate.h" #include "ui/base/l10n/l10n_util.h" @@ -486,6 +488,12 @@ } // static -std::unique_ptr<DesktopMediaPicker> DesktopMediaPicker::Create() { - return std::unique_ptr<DesktopMediaPicker>(new DesktopMediaPickerViews()); +std::unique_ptr<DesktopMediaPicker> DesktopMediaPicker::Create( + const content::MediaStreamRequest* request) { + if (request && + request->video_type == + blink::mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB) { + return std::make_unique<GetCurrentBrowsingContextMediaDialog>(); + } + return std::make_unique<DesktopMediaPickerViews>(); }
diff --git a/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.cc b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.cc new file mode 100644 index 0000000..fc01bbe --- /dev/null +++ b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.cc
@@ -0,0 +1,172 @@ +// Copyright 2020 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/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h" + +#include "chrome/browser/media/webrtc/desktop_media_picker_manager.h" +#include "chrome/browser/ui/browser_finder.h" +#include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/views/chrome_layout_provider.h" +#include "chrome/grit/generated_resources.h" +#include "components/constrained_window/constrained_window_views.h" +#include "components/web_modal/web_contents_modal_dialog_manager.h" +#include "content/public/browser/browser_task_traits.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/web_contents_delegate.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/models/dialog_model.h" +#include "ui/views/controls/button/checkbox.h" +#include "ui/views/controls/textfield/textfield.h" +#include "ui/views/layout/box_layout.h" + +namespace { +constexpr int kCheckboxId = 1; + +class GetCurrentBrowsingContextMediaDialogDelegate + : public ui::DialogModelDelegate { + public: + GetCurrentBrowsingContextMediaDialogDelegate( + const DesktopMediaPicker::Params& params, + GetCurrentBrowsingContextMediaDialog* parent) + : render_process_id_( + params.web_contents->GetMainFrame()->GetProcess()->GetID()), + render_frame_id_(params.web_contents->GetMainFrame()->GetRoutingID()), + parent_(parent) { + DCHECK(parent_); + } + + // Callback functions for when the permission is granted. + void OnAccept() { + // |id| is non-null if and only if it refers to a native screen/window. + content::DesktopMediaID source(content::DesktopMediaID::TYPE_WEB_CONTENTS, + /*id=*/content::DesktopMediaID::kNullId, + content::WebContentsMediaCaptureId( + render_process_id_, render_frame_id_)); + + source.audio_share = + dialog_model()->HasField(kCheckboxId) && + dialog_model()->GetCheckboxByUniqueId(kCheckboxId)->is_checked(); + + // Gets the tab to be shared, which is the current tab in this + // case. + content::WebContents* const tab = content::WebContents::FromRenderFrameHost( + content::RenderFrameHost::FromID(render_process_id_, render_frame_id_)); + // Activates the current tab and browser as confirmation that this is the + // tab being shared as the user might tab away between the time "share" was + // pressed and the actual share starts. + tab->GetDelegate()->ActivateContents(tab); + Browser* browser = chrome::FindBrowserWithWebContents(tab); + if (browser && browser->window()) { + browser->window()->Activate(); + } + + if (parent_) { + parent_->NotifyDialogResult(source); + parent_ = nullptr; + } + } + + // Callback functions for when the permission is rejected or if the + // dialog/window is closed by the user. + void OnClose() { + if (parent_) { + parent_->NotifyDialogResult(content::DesktopMediaID()); + parent_ = nullptr; + } + } + + private: + // The pair of values (render_process_id_, render_frame_id_) together define + // the browsing context which is to be shared. + const int render_process_id_; + const int render_frame_id_; + + GetCurrentBrowsingContextMediaDialog* parent_ = nullptr; + + DISALLOW_COPY_AND_ASSIGN(GetCurrentBrowsingContextMediaDialogDelegate); +}; +} // namespace + +GetCurrentBrowsingContextMediaDialog::GetCurrentBrowsingContextMediaDialog() = + default; + +GetCurrentBrowsingContextMediaDialog::~GetCurrentBrowsingContextMediaDialog() = + default; + +void GetCurrentBrowsingContextMediaDialog::NotifyDialogResult( + const content::DesktopMediaID& source) { + DesktopMediaPickerManager::Get()->OnHideDialog(); + + if (callback_) { + std::move(callback_).Run(source); + } +} + +void GetCurrentBrowsingContextMediaDialog::Show( + const DesktopMediaPicker::Params& params, + std::vector<std::unique_ptr<DesktopMediaList>> source_lists, + DoneCallback done_callback) { + DCHECK(params.web_contents); + + DesktopMediaPickerManager::Get()->OnShowDialog(); + callback_ = std::move(done_callback); + std::unique_ptr<views::DialogDelegate> unique_delegate = + CreateDialogHost(params); + + constrained_window::ShowWebModalDialogViews(unique_delegate.release(), + params.web_contents); + + chrome::RecordDialogCreation( + chrome::DialogIdentifier::CURRENT_BROWSING_CONTEXT_CONFIRMATION_BOX); +} + +std::unique_ptr<views::DialogDelegate> +GetCurrentBrowsingContextMediaDialog::CreateDialogHost( + const DesktopMediaPicker::Params& params) { + auto unique_model_delegate = + std::make_unique<GetCurrentBrowsingContextMediaDialogDelegate>(params, + this); + GetCurrentBrowsingContextMediaDialogDelegate* model_delegate = + unique_model_delegate.get(); + + ui::DialogModel::Builder dialog_builder(std::move(unique_model_delegate)); + // TODO(crbug.com/1136942): Reconcile design-doc and implementation wrt + // the body text; display frame's URL. + dialog_builder + .AddBodyText(ui::DialogModelLabel(l10n_util::GetStringFUTF16( + IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TEXT_REQUESTED_BY_APP, + params.target_name))) + .AddCancelButton( + base::BindOnce(&GetCurrentBrowsingContextMediaDialogDelegate::OnClose, + base::Unretained(model_delegate))) + .AddOkButton( + base::BindOnce( + &GetCurrentBrowsingContextMediaDialogDelegate::OnAccept, + base::Unretained(model_delegate)), + l10n_util::GetStringUTF16( + IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_SHARE_BUTTON)) + .SetCloseCallback( + base::BindOnce(&GetCurrentBrowsingContextMediaDialogDelegate::OnClose, + base::Unretained(model_delegate))) + .SetTitle(l10n_util::GetStringUTF16( + IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE)); + + if (params.request_audio) { + dialog_builder.AddCheckbox( + kCheckboxId, + ui::DialogModelLabel(l10n_util::GetStringUTF16( + IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_AUDIO_SHARE)), + ui::DialogModelCheckbox::Params().SetIsChecked( + params.approve_audio_by_default)); + } + + auto dialog_host = views::BubbleDialogModelHost::CreateModal( + dialog_builder.Build(), params.modality); + dialog_host->SetDefaultButton(ui::DIALOG_BUTTON_CANCEL); + dialog_host->SetOwnedByWidget(true); + dialog_model_host_for_testing_ = dialog_host.get(); + return dialog_host; +}
diff --git a/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h new file mode 100644 index 0000000..b2f51f64 --- /dev/null +++ b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h
@@ -0,0 +1,44 @@ +// Copyright 2020 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_UI_VIEWS_DESKTOP_CAPTURE_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_H_ +#define CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_H_ + +#include "base/macros.h" +#include "build/build_config.h" +#include "chrome/browser/media/webrtc/desktop_media_picker.h" +#include "chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h" +#include "ui/base/models/dialog_model.h" +#include "ui/base/models/dialog_model_field.h" +#include "ui/views/bubble/bubble_dialog_model_host.h" +#include "ui/views/window/dialog_delegate.h" + +class GetCurrentBrowsingContextMediaDialog : public DesktopMediaPicker { + public: + GetCurrentBrowsingContextMediaDialog(); + ~GetCurrentBrowsingContextMediaDialog() override; + + void NotifyDialogResult(const content::DesktopMediaID& source); + + // DesktopMediaPicker: + void Show(const DesktopMediaPicker::Params& params, + std::vector<std::unique_ptr<DesktopMediaList>> source_lists, + DoneCallback done_callback) override; + + views::BubbleDialogModelHost* GetHostForTesting() { + return dialog_model_host_for_testing_; + } + + private: + // Used to create the dialog using ui::DialogModel. + std::unique_ptr<views::DialogDelegate> CreateDialogHost( + const DesktopMediaPicker::Params& params); + + DoneCallback callback_; + views::BubbleDialogModelHost* dialog_model_host_for_testing_ = nullptr; + + DISALLOW_COPY_AND_ASSIGN(GetCurrentBrowsingContextMediaDialog); +}; + +#endif // CHROME_BROWSER_UI_VIEWS_DESKTOP_CAPTURE_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_H_
diff --git a/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog_unittest.cc b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog_unittest.cc new file mode 100644 index 0000000..9cab1c1 --- /dev/null +++ b/chrome/browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog_unittest.cc
@@ -0,0 +1,289 @@ +// Copyright 2020 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/ui/views/desktop_capture/get_current_browsing_context_media_dialog.h" + +#include "base/bind.h" +#include "base/command_line.h" +#include "base/run_loop.h" +#include "base/strings/utf_string_conversions.h" +#include "base/task/post_task.h" +#include "build/build_config.h" +#include "chrome/browser/media/webrtc/desktop_media_picker_manager.h" +#include "chrome/grit/generated_resources.h" +#include "chrome/test/base/browser_with_test_window_test.h" +#include "components/web_modal/test_web_contents_modal_dialog_host.h" +#include "components/web_modal/test_web_contents_modal_dialog_manager_delegate.h" +#include "components/web_modal/web_contents_modal_dialog_manager.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/render_process_host.h" +#include "ipc/ipc_message.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/ui_base_switches.h" +#include "ui/views/controls/button/checkbox.h" +#include "ui/web_dialogs/web_dialog_web_contents_delegate.h" + +namespace { +#if defined(OS_MAC) +constexpr ui::KeyboardCode kAcceptKey = ui::VKEY_SPACE; +#else +constexpr ui::KeyboardCode kAcceptKey = ui::VKEY_RETURN; +#endif +} // namespace + +namespace views { + +class MockDialogObserver : public DesktopMediaPickerManager::DialogObserver { + public: + MOCK_METHOD(void, OnDialogOpened, (), (override)); + MOCK_METHOD(void, OnDialogClosed, (), (override)); +}; + +class MockWebContentsDelegate : public content::WebContentsDelegate {}; + +class GetCurrentBrowsingContextMediaDialogTest + : public BrowserWithTestWindowTest { + public: + void CustomSetUp(bool request_audio, + bool approve_audio_by_default, + bool is_closed_called) { +#if defined(OS_MAC) + // These tests create actual child Widgets, which normally have a closure + // animation on Mac; inhibit it here to avoid the tests flakily hanging. + base::CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kDisableModalAnimations); +#endif + DesktopMediaPickerManager::Get()->AddObserver(&mock_dialog_observer_); + AddTab(browser(), GURL(url::kAboutBlankURL)); + + web_contents_ = browser()->tab_strip_model()->DetachWebContentsAt(0); + web_contents_->SetDelegate(&web_delegate_); + + // Creates the parent widget which is needed for creating child widgets. + auto dialog_delegate = std::make_unique<views::DialogDelegateView>(); + dialog_delegate->SetModalType(ui::MODAL_TYPE_WINDOW); + parent_widget_ = views::DialogDelegate::CreateDialogWidget( + dialog_delegate.release(), GetContext(), nullptr); + + // Creates and sets the dialog host. + dialog_host_ = std::make_unique<web_modal::TestWebContentsModalDialogHost>( + parent_widget_->GetNativeView()); + dialog_host_->set_max_dialog_size(gfx::Size(500, 500)); + manager_delegate_.set_web_contents_modal_dialog_host(dialog_host_.get()); + + // Sets delegate for web_contents_. + web_modal::WebContentsModalDialogManager::CreateForWebContents( + web_contents_.get()); + auto* manager = web_modal::WebContentsModalDialogManager::FromWebContents( + web_contents_.get()); + manager->SetDelegate(&manager_delegate_); + + DesktopMediaPicker::Params dialog_params; + // Sets the parameters for the confirmation dialog. + dialog_params.web_contents = web_contents_.get(); + dialog_params.context = GetContext(); + dialog_params.parent = parent_widget_->GetNativeWindow(); + dialog_params.app_name = base::ASCIIToUTF16("OriginApp"); + dialog_params.target_name = base::ASCIIToUTF16("TargetApp"); + dialog_params.request_audio = request_audio; + dialog_params.approve_audio_by_default = approve_audio_by_default; + + EXPECT_CALL(mock_dialog_observer_, OnDialogOpened()); + if (is_closed_called) { + EXPECT_CALL(mock_dialog_observer_, OnDialogClosed()); + } + + dialog_.Show( + dialog_params, {}, + base::BindOnce(&GetCurrentBrowsingContextMediaDialogTest::OnDialogDone, + base::Unretained(this))); + + // TODO(crbug.com/1154677): Remove this work-around. + dialog_.GetHostForTesting() + ->GetWidget() + ->SetVisibilityChangedAnimationsEnabled(false); + + render_process_id_ = web_contents_->GetMainFrame()->GetProcess()->GetID(); + render_frame_id_ = web_contents_->GetMainFrame()->GetRoutingID(); + } + + void TearDown() override { + DesktopMediaPickerManager::Get()->RemoveObserver(&mock_dialog_observer_); + parent_widget_->CloseWithReason(Widget::ClosedReason::kUnspecified); + web_contents_.reset(); + BrowserWithTestWindowTest::TearDown(); + } + + base::Optional<content::DesktopMediaID> WaitForDialogDone() { + run_loop_.Run(); + return dialog_id_; + } + + void DoubleTapShareButton() { + ui::GestureEventDetails details(ui::ET_GESTURE_TAP); + details.set_tap_count(2); + ui::GestureEvent double_tap(/*x=*/10, /*y=*/10, /*flags=*/0, + base::TimeTicks(), details); + dialog_.GetHostForTesting()->GetOkButton()->OnGestureEvent(&double_tap); + } + + void SimulateKeyPress(ui::KeyboardCode key) { + ui::KeyEvent event(ui::ET_KEY_PRESSED, key, ui::EF_NONE); + dialog_.GetHostForTesting()->GetWidget()->OnKeyEvent(&event); + } + + void OnDialogDone(content::DesktopMediaID dialog_id) { + dialog_id_ = dialog_id; + run_loop_.Quit(); + } + + protected: + base::Optional<content::DesktopMediaID> dialog_id_; + int render_process_id_ = MSG_ROUTING_NONE; + int render_frame_id_ = MSG_ROUTING_NONE; + std::unique_ptr<content::WebContents> web_contents_; + // dialog_ is responsible for creating the confirmation dialog and is + // used to access the host for testing. + GetCurrentBrowsingContextMediaDialog dialog_; + MockDialogObserver mock_dialog_observer_; + MockWebContentsDelegate web_delegate_; + std::unique_ptr<web_modal::TestWebContentsModalDialogHost> dialog_host_; + web_modal::TestWebContentsModalDialogManagerDelegate manager_delegate_; + Widget* parent_widget_; + base::RunLoop run_loop_; +}; + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, CancelButtonAlwaysEnabled) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/false); + EXPECT_TRUE(dialog_.GetHostForTesting()->IsDialogButtonEnabled( + ui::DIALOG_BUTTON_CANCEL)); +} + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, ShareButtonAlwaysEnabled) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/false); + EXPECT_TRUE( + dialog_.GetHostForTesting()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK)); +} + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, DefaultAudioSelection) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + kResultId.audio_share = true; + dialog_.GetHostForTesting()->AcceptDialog(); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + DoneCallbackCalledWhenWindowClosed) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + dialog_.GetHostForTesting()->Close(); + EXPECT_EQ(content::DesktopMediaID(), WaitForDialogDone()); +} + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + DoneCallbackCalledWhenWindowClosedWithoutCheckboxTicked) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/false, + /*is_closed_called=*/true); + dialog_.GetHostForTesting()->Close(); + EXPECT_EQ(content::DesktopMediaID(), WaitForDialogDone()); +} + +// Verifies that audio share information is recorded if the checkbox +// is checked. +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + DoneCallbackCalledWithAudioShare) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + kResultId.audio_share = true; + dialog_.GetHostForTesting()->AcceptDialog(); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +// Verifies that audio share information is recorded if there is no checkbox. +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + DoneCallbackCalledWithNoAudioShare) { + CustomSetUp(/*request_audio=*/false, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + dialog_.GetHostForTesting()->AcceptDialog(); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +// Verifies that audio share information is recorded if the checkbox +// is not checked. +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + DoneCallbackCalledWithAudioShareFalse) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/false, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + dialog_.GetHostForTesting()->AcceptDialog(); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +#if !defined(OS_CHROMEOS) +TEST_F(GetCurrentBrowsingContextMediaDialogTest, PressingDefaultButtonCancels) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + SimulateKeyPress(kAcceptKey); + EXPECT_EQ(content::DesktopMediaID(), WaitForDialogDone()); +} +#endif + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, ShareButtonAccepts) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + kResultId.audio_share = true; + dialog_.GetHostForTesting()->GetOkButton()->OnKeyPressed( + ui::KeyEvent(ui::ET_KEY_PRESSED, kAcceptKey, 0)); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +TEST_F(GetCurrentBrowsingContextMediaDialogTest, DoubleTapOnShare) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/true); + content::DesktopMediaID kResultId( + content::DesktopMediaID::TYPE_WEB_CONTENTS, 0, + content::WebContentsMediaCaptureId(render_process_id_, render_frame_id_)); + kResultId.audio_share = true; + DoubleTapShareButton(); + EXPECT_EQ(kResultId, WaitForDialogDone()); +} + +// Validates that the cancel button is initially focused and enabled. +TEST_F(GetCurrentBrowsingContextMediaDialogTest, InitiallyFocusesCancel) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/false); + EXPECT_EQ(dialog_.GetHostForTesting()->GetCancelButton(), + dialog_.GetHostForTesting()->GetInitiallyFocusedView()); +} + +// Validate that the title of the confirmation box shows the correct text. +TEST_F(GetCurrentBrowsingContextMediaDialogTest, + ConfirmationBoxShowsCorrectTitle) { + CustomSetUp(/*request_audio=*/true, /*approve_audio_by_default=*/true, + /*is_closed_called=*/false); + EXPECT_EQ(dialog_.GetHostForTesting()->GetWindowTitle(), + l10n_util::GetStringUTF16( + IDS_GET_CURRENT_BROWSING_CONTEXT_MEDIA_DIALOG_TITLE)); +} + +} // namespace views
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc index c3249a4..44f3121 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.cc
@@ -10,50 +10,55 @@ #include "chrome/browser/ui/webui/flags_ui.h" #include "chrome/grit/generated_resources.h" #include "components/flags_ui/pref_service_flags_storage.h" +#include "ui/gfx/color_palette.h" +#include "ui/views/background.h" #include "ui/views/controls/button/md_text_button.h" #include "ui/views/controls/label.h" #include "ui/views/layout/flex_layout.h" +#include "ui/views/layout/layout_provider.h" namespace { ChromeLabsBubbleView* g_chrome_labs_bubble = nullptr; -} // namespace - -// TODO(elainechien): Add screenshots and strings for translation when UI is -// finished. class ChromeLabsFooter : public views::View { public: ChromeLabsFooter() { SetLayoutManager(std::make_unique<views::FlexLayout>()) ->SetOrientation(views::LayoutOrientation::kVertical); - AddChildView(views::Builder<views::Label>() - .CopyAddressTo(&restart_label_) - .SetText(base::ASCIIToUTF16( - "Your changes will take effect the next time you " - "relaunch Google Chrome.")) - .SetMultiLine(true) - .Build()); + AddChildView( + views::Builder<views::Label>() + .CopyAddressTo(&restart_label_) + .SetText(base::ASCIIToUTF16( + "Your changes will take effect the next time you " + "relaunch Google Chrome.")) + .SetMultiLine(true) + .SetHorizontalAlignment(gfx::ALIGN_LEFT) + .SetProperty(views::kFlexBehaviorKey, + views::FlexSpecification( + views::MinimumFlexSizeRule::kPreferred, + views::MaximumFlexSizeRule::kPreferred, true)) + .Build()); AddChildView(views::Builder<views::MdTextButton>() .CopyAddressTo(&restart_button_) .SetCallback(base::BindRepeating(&chrome::AttemptRestart)) .SetText(base::ASCIIToUTF16("Relaunch")) .Build()); - restart_label_->SizeToFit( - restart_button_->CalculatePreferredSize().width()); + SetBackground(views::CreateSolidBackground(gfx::kGoogleGrey200)); + SetBorder(views::CreateEmptyBorder( + views::LayoutProvider::Get()->GetInsetsMetric(views::INSETS_DIALOG))); + SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred, true)); } - // views::View - gfx::Size CalculatePreferredSize() const override { - int width = restart_button_->CalculatePreferredSize().width(); - int height = GetHeightForWidth(width); - return gfx::Size(width, height); - } - private: views::MdTextButton* restart_button_; views::Label* restart_label_; }; +} // namespace + // static void ChromeLabsBubbleView::Show(views::View* anchor_view) { g_chrome_labs_bubble = new ChromeLabsBubbleView( @@ -73,28 +78,36 @@ SetShowCloseButton(true); SetTitle(base::ASCIIToUTF16("Chrome Labs")); SetLayoutManager(std::make_unique<views::FlexLayout>()) - ->SetOrientation(views::LayoutOrientation::kVertical) - .SetDefault(views::kMarginsKey, gfx::Insets(5)); + ->SetOrientation(views::LayoutOrientation::kVertical); + set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric( + views::DISTANCE_BUBBLE_PREFERRED_WIDTH)); + set_margins(gfx::Insets(0)); // TODO(elainechien): ChromeOS specific logic for creating FlagsStorage flags_storage_ = std::make_unique<flags_ui::PrefServiceFlagsStorage>( g_browser_process->local_state()); flags_state_ = about_flags::GetCurrentFlagsState(); - menu_item_container_ = AddChildView(std::make_unique<views::View>()); + menu_item_container_ = AddChildView( + views::Builder<views::View>() + .SetProperty(views::kFlexBehaviorKey, + views::FlexSpecification( + views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred, true)) + .Build()); menu_item_container_->SetLayoutManager(std::make_unique<views::FlexLayout>()) - ->SetOrientation(views::LayoutOrientation::kHorizontal) + ->SetOrientation(views::LayoutOrientation::kVertical) .SetDefault(views::kMarginsKey, gfx::Insets(10)); // Create each lab item. - std::vector<std::string> lab_internal_names = model_->GetLabInfo(); - for (const auto& internal_name : lab_internal_names) { + const std::vector<LabInfo>& all_labs = model_->GetLabInfo(); + for (const auto& lab : all_labs) { const flags_ui::FeatureEntry* entry = - flags_state_->FindFeatureEntryByName(internal_name); + flags_state_->FindFeatureEntryByName(lab.internal_name); DCHECK_EQ(entry->type, flags_ui::FeatureEntry::FEATURE_VALUE); int default_index = GetIndexOfEnabledLabState(entry); menu_item_container_->AddChildView( - CreateLabItem(internal_name, default_index, entry)); + CreateLabItem(lab, default_index, entry)); } // TODO(elainechien): Build UI for 0 experiments case. DCHECK(menu_item_container_->children().size() >= 1); @@ -104,7 +117,7 @@ } std::unique_ptr<ChromeLabsItemView> ChromeLabsBubbleView::CreateLabItem( - std::string internal_name, + const LabInfo& lab, int default_index, const flags_ui::FeatureEntry* entry) { auto combobox_callback = [](ChromeLabsBubbleView* bubble_view, @@ -117,9 +130,16 @@ bubble_view->ShowRelaunchPrompt(); }; - return std::make_unique<ChromeLabsItemView>( - internal_name, default_index, entry, - base::BindRepeating(combobox_callback, this, internal_name)); + std::unique_ptr<ChromeLabsItemView> item_view = + std::make_unique<ChromeLabsItemView>( + lab, default_index, entry, + base::BindRepeating(combobox_callback, this, lab.internal_name)); + + item_view->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kScaleToZero, + views::MaximumFlexSizeRule::kPreferred, true)); + return item_view; } int ChromeLabsBubbleView::GetIndexOfEnabledLabState(
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h index ec6464f5a..a2e1405f 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h +++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view.h
@@ -13,6 +13,9 @@ #include "ui/views/bubble/bubble_dialog_delegate_view.h" // TODO(elainechien): Use composition instead of inheritance. +// TODO(elainechien): Add screenshots and strings for translation when UI is +// finished. +// TODO(elainechien): Formatting for items in child views. class ChromeLabsBubbleView : public views::BubbleDialogDelegateView { public: static void Show(views::View* anchor_view); @@ -35,7 +38,7 @@ std::unique_ptr<ChromeLabsBubbleViewModel> model); std::unique_ptr<ChromeLabsItemView> CreateLabItem( - std::string internal_name, + const LabInfo& lab, int default_index, const flags_ui::FeatureEntry* entry);
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.cc b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.cc index 2e70fd23..f5d163e 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.cc
@@ -4,13 +4,14 @@ #include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/flag_descriptions.h" ChromeLabsBubbleViewModel::ChromeLabsBubbleViewModel() { SetUpLabs(); } -std::vector<std::string> ChromeLabsBubbleViewModel::GetLabInfo() const { - return lab_internal_names_; +const std::vector<LabInfo>& ChromeLabsBubbleViewModel::GetLabInfo() const { + return lab_info_; } // TODO(elainechien): Explore better ways to allow developers to add their @@ -19,7 +20,19 @@ // (Default, Enabled, Disabled states). Experiments with multiple parameters may // be considered in the future. void ChromeLabsBubbleViewModel::SetUpLabs() { - lab_internal_names_.push_back("read-later"); + // Read Later. + lab_info_.emplace_back(LabInfo( + flag_descriptions::kReadLaterFlagId, base::ASCIIToUTF16("Reading List"), + base::ASCIIToUTF16( + "Right click on a tab or click the star to add tabs to a reading " + "list. Access from the Bookmarks bar."))); + + // Tab Search. + lab_info_.emplace_back( + LabInfo(flag_descriptions::kEnableTabSearchFlagId, + base::ASCIIToUTF16("Tab Search"), + base::ASCIIToUTF16("Enable a popup bubble in Top Chrome UI to " + "search over currently open tabs."))); } ChromeLabsBubbleViewModel::~ChromeLabsBubbleViewModel() = default;
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h index a299f52..6202b3f 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h +++ b/chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h
@@ -8,17 +8,33 @@ #include <vector> #include "base/strings/string16.h" +// Currently there are differences in both visible name and visible description +// between about_flags and what we want for Chrome Labs. We are coordinating to +// match these. LabInfo struct can be removed after that. +struct LabInfo { + LabInfo(const std::string& internal_name, + const base::string16& visible_name, + const base::string16& visible_description) + : internal_name(internal_name), + visible_name(visible_name), + visible_description(visible_description) {} + + std::string internal_name; + base::string16 visible_name; + base::string16 visible_description; +}; + class ChromeLabsBubbleViewModel { public: ChromeLabsBubbleViewModel(); ~ChromeLabsBubbleViewModel(); - std::vector<std::string> GetLabInfo() const; + const std::vector<LabInfo>& GetLabInfo() const; private: void SetUpLabs(); - std::vector<std::string> lab_internal_names_; + std::vector<LabInfo> lab_info_; }; #endif // CHROME_BROWSER_UI_VIEWS_TOOLBAR_CHROME_LABS_BUBBLE_VIEW_MODEL_H_
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc index 6a7c0e9..0e35b72b 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.cc
@@ -3,9 +3,11 @@ // found in the LICENSE file. #include "chrome/browser/ui/views/toolbar/chrome_labs_item_view.h" +#include "chrome/browser/ui/views/toolbar/chrome_labs_bubble_view_model.h" #include "ui/base/models/combobox_model.h" #include "ui/views/controls/label.h" #include "ui/views/layout/flex_layout.h" +#include "ui/views/layout/flex_layout_types.h" class LabsComboboxModel : public ui::ComboboxModel { public: @@ -29,18 +31,29 @@ }; ChromeLabsItemView::ChromeLabsItemView( - std::string internal_name, + const LabInfo& lab, int default_index, const flags_ui::FeatureEntry* feature_entry, base::RepeatingCallback<void(ChromeLabsItemView* item_view)> combobox_callback) - : internal_name_(internal_name), feature_entry_(feature_entry) { + : feature_entry_(feature_entry) { SetLayoutManager(std::make_unique<views::FlexLayout>()) - ->SetOrientation(views::LayoutOrientation::kHorizontal) + ->SetOrientation(views::LayoutOrientation::kVertical) .SetDefault(views::kMarginsKey, gfx::Insets(10)); AddChildView(views::Builder<views::Label>() - .SetText(base::ASCIIToUTF16(feature_entry->visible_name)) + .SetText(lab.visible_name) + .SetHorizontalAlignment(gfx::ALIGN_LEFT) .Build()); + AddChildView( + views::Builder<views::Label>() + .SetText(lab.visible_description) + .SetMultiLine(true) + .SetHorizontalAlignment(gfx::ALIGN_LEFT) + .SetProperty(views::kFlexBehaviorKey, + views::FlexSpecification( + views::MinimumFlexSizeRule::kPreferred, + views::MaximumFlexSizeRule::kPreferred, true)) + .Build()); AddChildView(views::Builder<views::Combobox>() .CopyAddressTo(&lab_state_combobox_) .SetOwnedModel(std::make_unique<LabsComboboxModel>(
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.h b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.h index 2de6eed8..e11e5bb 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs_item_view.h +++ b/chrome/browser/ui/views/toolbar/chrome_labs_item_view.h
@@ -10,10 +10,12 @@ #include "ui/views/controls/combobox/combobox.h" #include "ui/views/view.h" +struct LabInfo; + class ChromeLabsItemView : public views::View { public: ChromeLabsItemView( - std::string internal_name, + const LabInfo& lab, int default_index, const flags_ui::FeatureEntry* feature_entry, base::RepeatingCallback<void(ChromeLabsItemView* item_view)> @@ -31,8 +33,6 @@ // Combobox with selected state of the lab. views::Combobox* lab_state_combobox_; - std::string internal_name_; - const flags_ui::FeatureEntry* feature_entry_; };
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc new file mode 100644 index 0000000..a2e1ea3 --- /dev/null +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
@@ -0,0 +1,146 @@ +// Copyright 2020 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/test/bind.h" +#include "chrome/app/chrome_command_ids.h" +#include "chrome/browser/banners/test_app_banner_manager_desktop.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_commands.h" +#include "chrome/browser/ui/browser_dialogs.h" +#include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/frame/toolbar_button_provider.h" +#include "chrome/browser/ui/views/page_action/page_action_icon_view.h" +#include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h" +#include "chrome/browser/ui/web_applications/web_app_dialog_utils.h" +#include "chrome/browser/web_applications/components/web_app_id.h" +#include "chrome/browser/web_applications/test/web_app_install_observer.h" +#include "chrome/common/chrome_switches.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/ui_test_utils.h" +#include "content/public/test/browser_test.h" +#include "content/public/test/test_navigation_observer.h" +#include "net/dns/mock_host_resolver.h" +#include "net/test/embedded_test_server/embedded_test_server.h" +#include "services/network/public/cpp/network_switches.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace web_app { + +struct NavigateToSiteResult { + content::WebContents* web_contents; + banners::TestAppBannerManagerDesktop* app_banner_manager; + bool installable; +}; + +class WebAppIntegrationBrowserTest : public InProcessBrowserTest { + public: + WebAppIntegrationBrowserTest() + : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} + ~WebAppIntegrationBrowserTest() override = default; + + WebAppIntegrationBrowserTest(const WebAppIntegrationBrowserTest&) = delete; + WebAppIntegrationBrowserTest& operator=(const WebAppIntegrationBrowserTest&) = + delete; + + // InProcessBrowserTest + void SetUp() override { + https_server_.AddDefaultHandlers(GetChromeTestDataDir()); + ASSERT_TRUE(https_server_.Start()); + + banners::TestAppBannerManagerDesktop::SetUp(); + + InProcessBrowserTest::SetUp(); + } + + // BrowserTestBase + void SetUpOnMainThread() override { + pwa_install_view_ = + BrowserView::GetBrowserViewForBrowser(browser()) + ->toolbar_button_provider() + ->GetPageActionIconView(PageActionIconType::kPwaInstall); + ASSERT_TRUE(pwa_install_view_); + EXPECT_FALSE(pwa_install_view_->GetVisible()); + } + + void SetUpCommandLine(base::CommandLine* command_line) override { + command_line->AppendSwitchASCII( + network::switches::kUnsafelyTreatInsecureOriginAsSecure, + GetInstallableAppURL().GetOrigin().spec()); + } + + NavigateToSiteResult NavigateToSite(Browser* browser, const GURL& url) { + content::WebContents* web_contents = GetCurrentTab(browser); + auto* app_banner_manager = + banners::TestAppBannerManagerDesktop::FromWebContents(web_contents); + DCHECK(!app_banner_manager->WaitForInstallableCheck()); + + ui_test_utils::NavigateToURL(browser, url); + bool installable = app_banner_manager->WaitForInstallableCheck(); + + return NavigateToSiteResult{web_contents, app_banner_manager, installable}; + } + + GURL GetInstallableAppURL() { + return https_server_.GetURL("/banners/manifest_test_page.html"); + } + + content::WebContents* GetCurrentTab(Browser* browser) { + return browser->tab_strip_model()->GetActiveWebContents(); + } + + web_app::AppId ExecutePwaInstallIcon() { + chrome::SetAutoAcceptPWAInstallConfirmationForTesting(true); + + web_app::AppId app_id; + base::RunLoop run_loop; + web_app::SetInstalledCallbackForTesting(base::BindLambdaForTesting( + [&app_id, &run_loop](const web_app::AppId& installed_app_id, + web_app::InstallResultCode code) { + app_id = installed_app_id; + run_loop.Quit(); + })); + + pwa_install_view()->ExecuteForTesting(); + + run_loop.Run(); + + chrome::SetAutoAcceptPWAInstallConfirmationForTesting(false); + + return app_id; + } + + protected: + PageActionIconView* pwa_install_view() { return pwa_install_view_; } + + private: + net::EmbeddedTestServer https_server_; + PageActionIconView* pwa_install_view_ = nullptr; +}; + +// Tests that installing a PWA will cause the install icon to be hidden, and +// the launch icon to be shown. +IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest, + InstallAndVerifyUIUpdates) { + bool installable = + NavigateToSite(browser(), GetInstallableAppURL()).installable; + ASSERT_TRUE(installable); + + EXPECT_EQ(GetAppMenuCommandState(IDC_CREATE_SHORTCUT, browser()), kEnabled); + EXPECT_EQ(GetAppMenuCommandState(IDC_INSTALL_PWA, browser()), kEnabled); + EXPECT_TRUE(pwa_install_view()->GetVisible()); + EXPECT_EQ(GetAppMenuCommandState(IDC_OPEN_IN_PWA_WINDOW, browser()), + kNotPresent); + + ExecutePwaInstallIcon(); + + chrome::NewTab(browser()); + NavigateToSite(browser(), GetInstallableAppURL()); + EXPECT_EQ(GetAppMenuCommandState(IDC_INSTALL_PWA, browser()), kNotPresent); + EXPECT_FALSE(pwa_install_view()->GetVisible()); + EXPECT_EQ(GetAppMenuCommandState(IDC_OPEN_IN_PWA_WINDOW, browser()), + kEnabled); +} + +} // namespace web_app
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_internals/multidevice_internals_phone_hub_handler.cc b/chrome/browser/ui/webui/chromeos/multidevice_internals/multidevice_internals_phone_hub_handler.cc index 8b1e36ba..d3846a4 100644 --- a/chrome/browser/ui/webui/chromeos/multidevice_internals/multidevice_internals_phone_hub_handler.cc +++ b/chrome/browser/ui/webui/chromeos/multidevice_internals/multidevice_internals_phone_hub_handler.cc
@@ -296,7 +296,8 @@ CHECK(args->GetBoolean(0, &enabled)); PA_LOG(VERBOSE) << "Setting Do Not Disturb state to " << enabled; fake_phone_hub_manager_->fake_do_not_disturb_controller() - ->SetDoNotDisturbStateInternal(enabled); + ->SetDoNotDisturbStateInternal(enabled, + /*can_request_new_dnd_state=*/true); } void MultidevicePhoneHubHandler::HandleSetFindMyDeviceStatus(
diff --git a/chrome/browser/usb/frame_usb_services.cc b/chrome/browser/usb/frame_usb_services.cc index cdab257..c8724e6 100644 --- a/chrome/browser/usb/frame_usb_services.cc +++ b/chrome/browser/usb/frame_usb_services.cc
@@ -26,7 +26,7 @@ // The renderer performs its own feature policy checks so a request that gets // to the browser process indicates malicious code. const char kFeaturePolicyViolation[] = - "Feature policy blocks access to WebUSB."; + "Permissions policy blocks access to WebUSB."; } // namespace
diff --git a/chrome/browser/web_applications/components/BUILD.gn b/chrome/browser/web_applications/components/BUILD.gn index 9f58345..b34cdca3 100644 --- a/chrome/browser/web_applications/components/BUILD.gn +++ b/chrome/browser/web_applications/components/BUILD.gn
@@ -101,6 +101,7 @@ # Desktop linux, doesn't count ChromeOS. sources += [ "web_app_file_handler_registration_linux.cc", + "web_app_run_on_os_login_linux.cc", "web_app_shortcut_linux.cc", "web_app_shortcut_linux.h", ] @@ -197,6 +198,7 @@ # Desktop linux, doesn't count ChromeOS. sources += [ "web_app_file_handler_registration_linux_unittest.cc", + "web_app_run_on_os_login_linux_unittest.cc", "web_app_shortcut_linux_unittest.cc", ] }
diff --git a/chrome/browser/web_applications/components/os_integration_manager.cc b/chrome/browser/web_applications/components/os_integration_manager.cc index 5cf6967..46102d0 100644 --- a/chrome/browser/web_applications/components/os_integration_manager.cc +++ b/chrome/browser/web_applications/components/os_integration_manager.cc
@@ -193,7 +193,7 @@ if (os_hooks[OsHookType::kRunOnOsLogin] && base::FeatureList::IsEnabled(features::kDesktopPWAsRunOnOsLogin)) { UnregisterRunOnOsLogin( - shortcut_info->profile_path, shortcut_info->title, + app_id, shortcut_info->profile_path, shortcut_info->title, barrier->CreateBarrierCallbackForType(OsHookType::kRunOnOsLogin)); } @@ -400,10 +400,11 @@ } void OsIntegrationManager::UnregisterRunOnOsLogin( + const AppId& app_id, const base::FilePath& profile_path, const base::string16& shortcut_title, UnregisterRunOnOsLoginCallback callback) { - ScheduleUnregisterRunOnOsLogin(profile_path, shortcut_title, + ScheduleUnregisterRunOnOsLogin(app_id, profile_path, shortcut_title, std::move(callback)); }
diff --git a/chrome/browser/web_applications/components/os_integration_manager.h b/chrome/browser/web_applications/components/os_integration_manager.h index ad5df33a..60fe9b5b 100644 --- a/chrome/browser/web_applications/components/os_integration_manager.h +++ b/chrome/browser/web_applications/components/os_integration_manager.h
@@ -182,7 +182,8 @@ // Uninstallation: virtual bool UnregisterShortcutsMenu(const AppId& app_id); - virtual void UnregisterRunOnOsLogin(const base::FilePath& profile_path, + virtual void UnregisterRunOnOsLogin(const AppId& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title, UnregisterRunOnOsLoginCallback callback); virtual void DeleteShortcuts(const AppId& app_id,
diff --git a/chrome/browser/web_applications/components/os_integration_manager_unittest.cc b/chrome/browser/web_applications/components/os_integration_manager_unittest.cc index 09ea40f..26a88b0 100644 --- a/chrome/browser/web_applications/components/os_integration_manager_unittest.cc +++ b/chrome/browser/web_applications/components/os_integration_manager_unittest.cc
@@ -79,7 +79,8 @@ MOCK_METHOD(bool, UnregisterShortcutsMenu, (const AppId& app_id), (override)); MOCK_METHOD(void, UnregisterRunOnOsLogin, - (const base::FilePath& profile_path, + (const AppId& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title, UnregisterRunOnOsLoginCallback callback), (override));
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login.cc index f50b0fb..1373257 100644 --- a/chrome/browser/web_applications/components/web_app_run_on_os_login.cc +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login.cc
@@ -31,16 +31,19 @@ namespace internals { -#if !defined(OS_WIN) +#if !(defined(OS_WIN) || defined(OS_LINUX)) // TODO(crbug.com/897302): This boilerplate function is used for platforms -// other than Windows, currently the feature is only supported in Windows. +// that don't support Run On OS Login. Currently the feature is supported on +// Windows and Linux. bool RegisterRunOnOsLogin(const ShortcutInfo& shortcut_info) { return false; } // TODO(crbug.com/897302): This boilerplate function is used for platforms -// other than Windows, currently the feature is only supported in Windows. -bool UnregisterRunOnOsLogin(const base::FilePath& profile_path, +// that don't support Run On OS Login. Currently the feature is supported on +// Windows and Linux. +bool UnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title) { return true; } @@ -57,14 +60,15 @@ std::move(shortcut_info)); } -void ScheduleUnregisterRunOnOsLogin(const base::FilePath& profile_path, +void ScheduleUnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title, UnregisterRunOnOsLoginCallback callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); internals::GetShortcutIOTaskRunner()->PostTaskAndReplyWithResult( FROM_HERE, - base::BindOnce(&internals::UnregisterRunOnOsLogin, profile_path, + base::BindOnce(&internals::UnregisterRunOnOsLogin, app_id, profile_path, shortcut_title), std::move(callback)); }
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login.h b/chrome/browser/web_applications/components/web_app_run_on_os_login.h index d29d7d6..163c3c1 100644 --- a/chrome/browser/web_applications/components/web_app_run_on_os_login.h +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login.h
@@ -39,7 +39,8 @@ // Unregisters the app with the OS from running on startup. Platform specific // implementations are required for this. // See web_app_run_on_os_login_win.cc for Windows implementation as example. -bool UnregisterRunOnOsLogin(const base::FilePath& profile_path, +bool UnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title); } // namespace internals @@ -53,7 +54,8 @@ // Schedules a call to |UnregisterRunOnOsLogin| on the Shortcut IO thread and // invokes |callback| when complete. This function must be called from the UI // thread. -void ScheduleUnregisterRunOnOsLogin(const base::FilePath& profile_path, +void ScheduleUnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title, UnregisterRunOnOsLoginCallback callback);
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login_linux.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login_linux.cc new file mode 100644 index 0000000..e72dbb0 --- /dev/null +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login_linux.cc
@@ -0,0 +1,58 @@ +// Copyright 2020 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/web_applications/components/web_app_run_on_os_login.h" + +#include <memory> + +#include "base/files/file_util.h" +#include "base/threading/scoped_blocking_call.h" +#include "chrome/browser/web_applications/components/web_app_shortcut.h" +#include "chrome/browser/web_applications/components/web_app_shortcut_linux.h" + +namespace web_app { + +namespace internals { + +bool RegisterRunOnOsLogin(const ShortcutInfo& shortcut_info) { +#if !defined(OS_CHROMEOS) + base::FilePath shortcut_data_dir = GetShortcutDataDir(shortcut_info); + + ShortcutLocations locations; + locations.in_startup = true; + + return CreatePlatformShortcuts(shortcut_data_dir, locations, + SHORTCUT_CREATION_BY_USER, shortcut_info); + +#else + return false; +#endif +} + +bool UnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, + const base::string16& shortcut_title) { +#if !defined(OS_CHROMEOS) + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, + base::BlockingType::MAY_BLOCK); + + ShortcutLocations locations; + locations.in_startup = true; + + std::vector<base::FilePath> all_shortcut_files = + GetShortcutLocations(locations, profile_path, app_id); + bool result = true; + for (const auto& shortcut_file : all_shortcut_files) { + if (!base::DeleteFile(shortcut_file)) + result = false; + } + return result; +#else + return true; +#endif +} + +} // namespace internals + +} // namespace web_app
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login_linux_unittest.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login_linux_unittest.cc new file mode 100644 index 0000000..db9c9ef --- /dev/null +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login_linux_unittest.cc
@@ -0,0 +1,85 @@ +// Copyright 2020 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/web_applications/components/web_app_run_on_os_login.h" + +#include <vector> + +#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/web_applications/components/web_app_shortcut.h" +#include "chrome/browser/web_applications/components/web_app_shortcut_linux.h" +#include "chrome/browser/web_applications/components/web_application_info.h" +#include "chrome/browser/web_applications/test/web_app_test.h" +#include "chrome/common/auto_start_linux.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/image/image_skia.h" + +namespace web_app { + +namespace { + +constexpr char kAppTitle[] = {"app"}; +constexpr char kAppId[] = {"app-id"}; + +} // namespace + +class WebAppRunOnOsLoginLinuxTest : public WebAppTest { + public: + void TearDown() override { + ASSERT_TRUE(base::DeleteFile(GetPathToAutoStartFile())); + WebAppTest::TearDown(); + } + + std::unique_ptr<ShortcutInfo> GetShortcutInfo() { + auto shortcut_info = std::make_unique<ShortcutInfo>(); + shortcut_info->extension_id = kAppId; + shortcut_info->title = base::UTF8ToUTF16(kAppTitle); + shortcut_info->profile_path = profile()->GetPath(); + + gfx::ImageFamily image_family; + SquareSizePx icon_size_in_px = GetDesiredIconSizesForShortcut().back(); + gfx::ImageSkia image_skia = CreateDefaultApplicationIcon(icon_size_in_px); + image_family.Add(gfx::Image(image_skia)); + shortcut_info->favicon = std::move(image_family); + + return shortcut_info; + } + + base::FilePath GetPathToAutoStartFile() { + std::unique_ptr<base::Environment> env(base::Environment::Create()); + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env.get()); + EXPECT_FALSE(autostart_path.empty()); + + base::FilePath shortcut_filename = + GetAppShortcutFilename(profile()->GetPath(), kAppId); + EXPECT_FALSE(shortcut_filename.empty()); + + return autostart_path.Append(shortcut_filename); + } +}; + +TEST_F(WebAppRunOnOsLoginLinuxTest, Register) { + std::unique_ptr<ShortcutInfo> shortcut_info = GetShortcutInfo(); + bool result = internals::RegisterRunOnOsLogin(*shortcut_info); + EXPECT_TRUE(result); + EXPECT_TRUE(base::PathExists(GetPathToAutoStartFile())); +} + +TEST_F(WebAppRunOnOsLoginLinuxTest, Unregister) { + std::unique_ptr<ShortcutInfo> shortcut_info = GetShortcutInfo(); + bool result = internals::RegisterRunOnOsLogin(*shortcut_info); + EXPECT_TRUE(result); + EXPECT_TRUE(base::PathExists(GetPathToAutoStartFile())); + + result = internals::UnregisterRunOnOsLogin(shortcut_info->extension_id, + profile()->GetPath(), + base::UTF8ToUTF16(kAppTitle)); + EXPECT_TRUE(result); + EXPECT_FALSE(base::PathExists(GetPathToAutoStartFile())); +} + +} // namespace web_app
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login_win.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login_win.cc index 69a52c7..93cfcec 100644 --- a/chrome/browser/web_applications/components/web_app_run_on_os_login_win.cc +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login_win.cc
@@ -24,7 +24,8 @@ SHORTCUT_CREATION_BY_USER, shortcut_info); } -bool UnregisterRunOnOsLogin(const base::FilePath& profile_path, +bool UnregisterRunOnOsLogin(const std::string& app_id, + const base::FilePath& profile_path, const base::string16& shortcut_title) { web_app::ShortcutLocations all_shortcut_locations; all_shortcut_locations.in_startup = true;
diff --git a/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc b/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc index 838d100..c5cc534 100644 --- a/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_run_on_os_login_win_unittest.cc
@@ -88,7 +88,8 @@ EXPECT_TRUE(result); VerifyShortcutCreated(); - internals::UnregisterRunOnOsLogin(profile()->GetPath(), + internals::UnregisterRunOnOsLogin(shortcut_info->extension_id, + profile()->GetPath(), base::UTF8ToUTF16(kAppTitle)); VerifyShortcutDeleted(); }
diff --git a/chrome/browser/web_applications/components/web_app_shortcut_linux.cc b/chrome/browser/web_applications/components/web_app_shortcut_linux.cc index 1d9ae91..7e376926 100644 --- a/chrome/browser/web_applications/components/web_app_shortcut_linux.cc +++ b/chrome/browser/web_applications/components/web_app_shortcut_linux.cc
@@ -28,6 +28,7 @@ #include "chrome/browser/shell_integration_linux.h" #include "chrome/browser/web_applications/components/web_app_id.h" #include "chrome/browser/web_applications/components/web_app_shortcut.h" +#include "chrome/common/auto_start_linux.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_constants.h" @@ -158,51 +159,69 @@ return icon_name; } -bool CreateShortcutOnDesktop(const base::FilePath& shortcut_filename, - const std::string& contents) { +bool CreateShortcutAtLocation(const base::FilePath location_path, + const base::FilePath& shortcut_filename, + const std::string& contents) { // Make sure that we will later call openat in a secure way. DCHECK_EQ(shortcut_filename.BaseName().value(), shortcut_filename.value()); - base::FilePath desktop_path; - if (!base::PathService::Get(base::DIR_USER_DESKTOP, &desktop_path)) { - RecordCreateShortcut(CreateShortcutResult::kFailToGetDesktopPath); - return false; - } - - int desktop_fd = open(desktop_path.value().c_str(), O_RDONLY | O_DIRECTORY); - if (desktop_fd < 0) { + int location_fd = open(location_path.value().c_str(), O_RDONLY | O_DIRECTORY); + if (location_fd < 0) { RecordCreateShortcut(CreateShortcutResult::kFailToOpenDesktopDir); return false; } - int fd = openat(desktop_fd, shortcut_filename.value().c_str(), + int fd = openat(location_fd, shortcut_filename.value().c_str(), O_CREAT | O_EXCL | O_WRONLY, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); if (fd < 0) { - if (IGNORE_EINTR(close(desktop_fd)) < 0) + if (IGNORE_EINTR(close(location_fd)) < 0) PLOG(ERROR) << "close"; RecordCreateShortcut(CreateShortcutResult::kFailToOpenShortcutFilepath); return false; } if (!base::WriteFileDescriptor(fd, contents.c_str(), contents.size())) { - // Delete the file. No shortuct is better than corrupted one. Use unlinkat + // Delete the file. No shortcut is better than corrupted one. Use unlinkat // to make sure we're deleting the file in the directory we think we are. // Even if an attacker manager to put something other at // |shortcut_filename| we'll just undo their action. RecordCreateShortcut(CreateShortcutResult::kCorruptDesktopShortcut); - unlinkat(desktop_fd, shortcut_filename.value().c_str(), 0); + unlinkat(location_fd, shortcut_filename.value().c_str(), 0); } if (IGNORE_EINTR(close(fd)) < 0) PLOG(ERROR) << "close"; - if (IGNORE_EINTR(close(desktop_fd)) < 0) + if (IGNORE_EINTR(close(location_fd)) < 0) PLOG(ERROR) << "close"; return true; } +bool CreateShortcutOnDesktop(const base::FilePath& shortcut_filename, + const std::string& contents) { + base::FilePath desktop_path; + if (!base::PathService::Get(base::DIR_USER_DESKTOP, &desktop_path)) { + RecordCreateShortcut(CreateShortcutResult::kFailToGetDesktopPath); + return false; + } + + return CreateShortcutAtLocation(desktop_path, shortcut_filename, contents); +} + +bool CreateShortcutInAutoStart(base::Environment* env, + const base::FilePath& shortcut_filename, + const std::string& contents) { + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env); + if (!base::DirectoryExists(autostart_path) && + !base::CreateDirectory(autostart_path)) { + return false; + } + + return CreateShortcutAtLocation(autostart_path, shortcut_filename, contents); +} + // Creates a shortcut with |shortcut_filename| and |contents| in the system // applications menu. If |directory_filename| is non-empty, creates a sub-menu // with |directory_filename| and |directory_contents|, and stores the shortcut @@ -309,6 +328,12 @@ return result; } +bool DeleteShortcutInAutoStart(base::Environment* env, + const base::FilePath& shortcut_filename) { + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env); + return base::DeleteFile(autostart_path.Append(shortcut_filename)); +} + bool DeleteShortcutInApplicationsMenu( const base::FilePath& shortcut_filename, const base::FilePath& directory_filename) { @@ -346,6 +371,9 @@ if (creation_locations.on_desktop) DeleteShortcutOnDesktop(shortcut_filename); + if (creation_locations.in_startup) + DeleteShortcutInAutoStart(env, shortcut_filename); + if (creation_locations.applications_menu_location != APP_MENU_LOCATION_NONE) { DeleteShortcutInApplicationsMenu(shortcut_filename, base::FilePath()); @@ -374,12 +402,18 @@ return false; } - if (creation_locations.on_desktop) { + if (creation_locations.on_desktop || creation_locations.in_startup) { std::string contents = shell_integration_linux::GetDesktopFileContents( chrome_exe_path, app_name, shortcut_info.url, shortcut_info.extension_id, shortcut_info.title, icon_name, shortcut_info.profile_path, "", "", false); - success = CreateShortcutOnDesktop(shortcut_filename, contents); + + if (creation_locations.on_desktop) + success = CreateShortcutOnDesktop(shortcut_filename, contents); + + if (creation_locations.in_startup) + success = CreateShortcutInAutoStart(env, shortcut_filename, contents) && + success; } if (creation_locations.applications_menu_location == APP_MENU_LOCATION_NONE) { @@ -444,6 +478,12 @@ base::PathExists(desktop_path.Append(shortcut_filename)); } + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env); + if (!autostart_path.empty()) { + locations.in_startup = + base::PathExists(autostart_path.Append(shortcut_filename)); + } + // Determine whether there is a shortcut in the applications directory. std::string shortcut_contents; if (shell_integration_linux::GetExistingShortcutContents( @@ -461,7 +501,8 @@ return locations; } -bool DeleteDesktopShortcuts(const base::FilePath& profile_path, +bool DeleteDesktopShortcuts(base::Environment* env, + const base::FilePath& profile_path, const std::string& extension_id) { base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); @@ -475,9 +516,14 @@ // Note that it is possible that shortcuts were not created in the Chrome Apps // directory. It doesn't matter: this will still delete the shortcut even if // it isn't in the directory. + + bool deleted_from_autostart = + DeleteShortcutInAutoStart(env, shortcut_filename); + bool deleted_from_application_menu = DeleteShortcutInApplicationsMenu( shortcut_filename, base::FilePath(kDirectoryFilename)); - return (deleted_from_desktop && deleted_from_application_menu); + return (deleted_from_desktop && deleted_from_autostart && + deleted_from_application_menu); } bool DeleteAllDesktopShortcuts(base::Environment* env, @@ -498,6 +544,15 @@ } } + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env); + std::vector<base::FilePath> shortcut_filenames_autostart = + shell_integration_linux::GetExistingProfileShortcutFilenames( + profile_path, autostart_path); + for (const auto& shortcut : shortcut_filenames_autostart) { + if (!DeleteShortcutInAutoStart(env, shortcut)) + result = false; + } + // Delete shortcuts from |kDirectoryFilename|. base::FilePath applications_menu = shell_integration_linux::GetDataWriteLocation(env); @@ -532,6 +587,46 @@ CreateDesktopShortcut(env, shortcut_info, creation_locations); } +std::vector<base::FilePath> GetShortcutLocations( + base::Environment* env, + const ShortcutLocations& locations, + const base::FilePath& profile_path, + const std::string& app_id) { + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, + base::BlockingType::MAY_BLOCK); + + std::vector<base::FilePath> shortcut_locations; + base::FilePath shortcut_filename = + GetAppShortcutFilename(profile_path, app_id); + DCHECK(!shortcut_filename.empty()); + + if (locations.on_desktop) { + base::FilePath desktop_path; + // If Get returns false, just leave |desktop_path| empty. + base::PathService::Get(base::DIR_USER_DESKTOP, &desktop_path); + if (!desktop_path.empty()) { + base::FilePath desktop_shortcut_path = + desktop_path.Append(shortcut_filename); + if (base::PathExists(desktop_shortcut_path)) + shortcut_locations.push_back(desktop_shortcut_path); + } + } + + if (locations.in_startup) { + base::FilePath autostart_path = AutoStart::GetAutostartDirectory(env); + if (!autostart_path.empty()) { + base::FilePath autostart_shortcut_path = + autostart_path.Append(shortcut_filename); + if (base::PathExists(autostart_shortcut_path)) + shortcut_locations.push_back(autostart_shortcut_path); + } + } + + // Can't retrieve file name for applications menu location. + DCHECK(!locations.applications_menu_location); + return shortcut_locations; +} + namespace internals { bool CreatePlatformShortcuts(const base::FilePath& /*web_app_path*/, @@ -551,7 +646,8 @@ bool DeletePlatformShortcuts(const base::FilePath& web_app_path, const ShortcutInfo& shortcut_info) { #if !BUILDFLAG(IS_CHROMEOS_ASH) - return DeleteDesktopShortcuts(shortcut_info.profile_path, + std::unique_ptr<base::Environment> env(base::Environment::Create()); + return DeleteDesktopShortcuts(env.get(), shortcut_info.profile_path, shortcut_info.extension_id); #endif return true; @@ -573,6 +669,17 @@ #endif } +std::vector<base::FilePath> GetShortcutLocations( + const ShortcutLocations& locations, + const base::FilePath& profile_path, + const std::string& app_id) { +#if !defined(IS_CHROMEOS_ASH) + std::unique_ptr<base::Environment> env(base::Environment::Create()); + return GetShortcutLocations(env.get(), locations, profile_path, app_id); +#endif + return std::vector<base::FilePath>(); +} + } // namespace internals } // namespace web_app
diff --git a/chrome/browser/web_applications/components/web_app_shortcut_linux.h b/chrome/browser/web_applications/components/web_app_shortcut_linux.h index 161f375..4f1e5b9 100644 --- a/chrome/browser/web_applications/components/web_app_shortcut_linux.h +++ b/chrome/browser/web_applications/components/web_app_shortcut_linux.h
@@ -55,7 +55,8 @@ // Delete any desktop shortcuts on desktop or in the application menu that have // been added for the extension with |extension_id| in |profile_path|. Returns // true on successful deletion. -bool DeleteDesktopShortcuts(const base::FilePath& profile_path, +bool DeleteDesktopShortcuts(base::Environment* env, + const base::FilePath& profile_path, const std::string& extension_id); // Delete any desktop shortcuts on desktop or in the application menu that have @@ -63,6 +64,25 @@ bool DeleteAllDesktopShortcuts(base::Environment* env, const base::FilePath& profile_path); +// Returns the shortcuts that match profile for |profile_path| and +// web app with id |appid|. +std::vector<base::FilePath> GetShortcutLocations( + base::Environment* env, + const ShortcutLocations& locations, + const base::FilePath& profile_path, + const std::string& app_id); + +namespace internals { + +// Returns the shortcuts that match profile for |profile_path| and +// web app with id |appid| using the default environment. +std::vector<base::FilePath> GetShortcutLocations( + const ShortcutLocations& locations, + const base::FilePath& profile_path, + const std::string& app_id); + +} // namespace internals + } // namespace web_app #endif // CHROME_BROWSER_WEB_APPLICATIONS_COMPONENTS_WEB_APP_SHORTCUT_LINUX_H_
diff --git a/chrome/browser/web_applications/components/web_app_shortcut_linux_unittest.cc b/chrome/browser/web_applications/components/web_app_shortcut_linux_unittest.cc index 253aa9a..06c5e37 100644 --- a/chrome/browser/web_applications/components/web_app_shortcut_linux_unittest.cc +++ b/chrome/browser/web_applications/components/web_app_shortcut_linux_unittest.cc
@@ -18,6 +18,7 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/logging.h" +#include "base/nix/xdg_util.h" #include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -108,6 +109,25 @@ base::ScopedTempDir temp_dir_; }; +class ScopedAutoStartPath { + public: + ScopedAutoStartPath() { EXPECT_TRUE(temp_dir_.CreateUniqueTempDir()); } + ScopedAutoStartPath(const ScopedAutoStartPath&) = delete; + ScopedAutoStartPath& operator=(const ScopedAutoStartPath&) = delete; + + base::FilePath GetPath() { + base::FilePath autostart_path = temp_dir_.GetPath(); + autostart_path = autostart_path.AppendASCII("autostart"); + EXPECT_TRUE(base::CreateDirectory(autostart_path)); + return autostart_path; + } + + base::FilePath GetConfigHomePath() { return temp_dir_.GetPath(); } + + private: + base::ScopedTempDir temp_dir_; +}; + } // namespace class WebAppShortcutLinuxTest : public WebAppTest { @@ -292,26 +312,48 @@ EXPECT_FALSE(result.in_startup); } - // Shortcut on desktop and in applications directory. + // Shortcut in autostart directory. + { + ScopedAutoStartPath autostart_path; + MockEnvironment env; + + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); + CreateShortcutInPath(autostart_path.GetPath()); + + ShortcutLocations result = + GetExistingShortcutLocations(&env, GetProfilePath(), GetAppId()); + EXPECT_FALSE(result.on_desktop); + EXPECT_EQ(APP_MENU_LOCATION_NONE, result.applications_menu_location); + EXPECT_FALSE(result.in_quick_launch_bar); + EXPECT_TRUE(result.in_startup); + } + + // Shortcut on desktop, in autostart folder, and in applications directory. { ScopedDesktopPath scoped_desktop_path; base::ScopedPathOverride user_desktop_override( base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); ScopedApplicationsPath scoped_applications_path; + ScopedAutoStartPath autostart_path; MockEnvironment env; env.Set("XDG_DATA_HOME", scoped_applications_path.GetDataHomePath().value()); + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); CreateShortcutInPath(scoped_desktop_path.GetPath()); CreateShortcutInPath(scoped_applications_path.GetPath()); + CreateShortcutInPath(autostart_path.GetPath()); ShortcutLocations result = GetExistingShortcutLocations(&env, GetProfilePath(), GetAppId()); + EXPECT_TRUE(result.on_desktop); EXPECT_EQ(APP_MENU_LOCATION_SUBDIR_CHROMEAPPS, result.applications_menu_location); EXPECT_FALSE(result.in_quick_launch_bar); - EXPECT_FALSE(result.in_startup); + EXPECT_TRUE(result.in_startup); } } @@ -326,6 +368,13 @@ CreateShortcutInPath(scoped_desktop_path.GetPath()); base::ScopedPathOverride user_desktop_override(base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); + ScopedAutoStartPath autostart_path; + base::FilePath autostart_shortcut_path = + CreateShortcutInPath(autostart_path.GetPath()); + MockEnvironment env; + + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); int invoke_count = 0; auto DeleteApplicationsLaunchXdgUtility = base::BindLambdaForTesting( @@ -339,9 +388,11 @@ SetLaunchXdgUtilityForTesting(DeleteApplicationsLaunchXdgUtility); EXPECT_TRUE(base::PathExists(desktop_shortcut_path)); - EXPECT_TRUE(DeleteDesktopShortcuts(GetProfilePath(), GetAppId())); + EXPECT_TRUE(base::PathExists(autostart_shortcut_path)); + EXPECT_TRUE(DeleteDesktopShortcuts(&env, GetProfilePath(), GetAppId())); EXPECT_EQ(invoke_count, 1); EXPECT_FALSE(base::PathExists(desktop_shortcut_path)); + EXPECT_FALSE(base::PathExists(autostart_shortcut_path)); } TEST_F(WebAppShortcutLinuxTest, DeleteAllDesktopShortcuts) { @@ -351,11 +402,18 @@ base::ScopedPathOverride user_desktop_override(base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); + ScopedAutoStartPath autostart_path; + base::FilePath autostart_shortcut_path = + CreateShortcutInPath(autostart_path.GetPath()); + ScopedApplicationsPath scoped_applications_path; base::FilePath application_shortcut_path = CreateShortcutInPath(scoped_applications_path.GetPath()); MockEnvironment env; + env.Set("XDG_DATA_HOME", scoped_applications_path.GetDataHomePath().value()); + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); int invoke_count = 0; auto DeleteApplicationsLaunchXdgUtility = base::BindLambdaForTesting( @@ -369,18 +427,24 @@ SetLaunchXdgUtilityForTesting(DeleteApplicationsLaunchXdgUtility); EXPECT_TRUE(base::PathExists(desktop_shortcut_path)); + EXPECT_TRUE(base::PathExists(autostart_shortcut_path)); EXPECT_TRUE(DeleteAllDesktopShortcuts(&env, GetProfilePath())); EXPECT_EQ(invoke_count, 1); EXPECT_FALSE(base::PathExists(desktop_shortcut_path)); + EXPECT_FALSE(base::PathExists(autostart_shortcut_path)); } TEST_F(WebAppShortcutLinuxTest, CreateDesktopShortcut) { ScopedDesktopPath scoped_desktop_path; ScopedApplicationsPath scoped_applications_path; + ScopedAutoStartPath autostart_path; base::ScopedPathOverride user_desktop_override(base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); + MockEnvironment env; env.Set("XDG_DATA_HOME", scoped_applications_path.GetDataHomePath().value()); + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); int invoke_count = 0; LaunchXdgUtilityForTesting CreateDesktopShortcutLaunchXdgUtility = @@ -400,6 +464,7 @@ std::unique_ptr<ShortcutInfo> shortcut_info = GetShortcutInfo(); ShortcutLocations locations; locations.on_desktop = true; + locations.in_startup = true; locations.applications_menu_location = APP_MENU_LOCATION_SUBDIR_CHROMEAPPS; EXPECT_TRUE(CreateDesktopShortcut(&env, *shortcut_info, locations)); @@ -417,22 +482,101 @@ "chrome-test_extension-Profile_1", shortcut_info->profile_path, "", "", false); - base::FilePath desktop_shortcut_path = - scoped_desktop_path.GetPath().Append(GetTemplateFilename()); - ASSERT_TRUE(base::PathExists(desktop_shortcut_path)); + { + base::FilePath desktop_shortcut_path = + scoped_desktop_path.GetPath().Append(GetTemplateFilename()); + ASSERT_TRUE(base::PathExists(desktop_shortcut_path)); - std::string actual_contents; - ASSERT_TRUE(base::ReadFileToString(desktop_shortcut_path, &actual_contents)); - EXPECT_EQ(expected_contents, actual_contents); + std::string actual_contents; + ASSERT_TRUE( + base::ReadFileToString(desktop_shortcut_path, &actual_contents)); + EXPECT_EQ(expected_contents, actual_contents); + } + + { + base::FilePath autostart_shortcut_path = + autostart_path.GetPath().Append(GetTemplateFilename()); + ASSERT_TRUE(base::PathExists(autostart_shortcut_path)); + + std::string actual_contents; + ASSERT_TRUE( + base::ReadFileToString(autostart_shortcut_path, &actual_contents)); + EXPECT_EQ(expected_contents, actual_contents); + } +} + +TEST_F(WebAppShortcutLinuxTest, + CreateDesktopShortcutWithNonExistantUserDesktopDir) { + ScopedDesktopPath scoped_desktop_path; + ScopedApplicationsPath scoped_applications_path; + ScopedAutoStartPath autostart_path; + base::ScopedPathOverride user_desktop_override(base::DIR_USER_DESKTOP, + scoped_desktop_path.GetPath()); + + MockEnvironment env; + env.Set("XDG_DATA_HOME", scoped_applications_path.GetDataHomePath().value()); + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); + + auto CreateDesktopShortcutLaunchXdgUtility = base::BindLambdaForTesting( + [&](const std::vector<std::string>& argv, int* exit_code) -> bool { + ValidateCreateDesktopShortcutLaunchXdgUtility( + argv, exit_code, scoped_applications_path.GetPath(), 1); + return true; + }); + + SetLaunchXdgUtilityForTesting(CreateDesktopShortcutLaunchXdgUtility); + + std::unique_ptr<ShortcutInfo> shortcut_info = GetShortcutInfo(); + ShortcutLocations locations; + locations.on_desktop = true; + locations.in_startup = true; + locations.applications_menu_location = APP_MENU_LOCATION_NONE; + + // Force a failure by deleting the |scoped_desktop_path| location. + base::FilePath desktop_path = scoped_desktop_path.GetPath(); + EXPECT_TRUE(DeletePathRecursively(desktop_path)); + EXPECT_FALSE(CreateDesktopShortcut(&env, *shortcut_info, locations)); + + // At this point, we've already validated creation in the Application menu + // because of the hook into XdgUtilityForTesting. + // Validate the shortcut was created, and the contents are what we expect + // them to be. + std::string expected_contents = + shell_integration_linux::GetDesktopFileContents( + shell_integration_linux::internal::GetChromeExePath(), + GenerateApplicationNameFromInfo(*shortcut_info), shortcut_info->url, + shortcut_info->extension_id, shortcut_info->title, + "chrome-test_extension-Profile_1", shortcut_info->profile_path, "", + "", false); + + // |scoped_desktop_path| was deleted earlier, confirm it wasn't recreated. + EXPECT_FALSE(base::DirectoryExists(desktop_path)); + + // However, despite the failure, the contents of the autostart file + // should still be correct. + { + base::FilePath autostart_shortcut_path = + autostart_path.GetPath().Append(GetTemplateFilename()); + ASSERT_TRUE(base::PathExists(autostart_shortcut_path)); + + std::string actual_contents; + ASSERT_TRUE( + base::ReadFileToString(autostart_shortcut_path, &actual_contents)); + EXPECT_EQ(expected_contents, actual_contents); + } } TEST_F(WebAppShortcutLinuxTest, CreateDesktopShortcutEmptyExtension) { ScopedDesktopPath scoped_desktop_path; ScopedApplicationsPath scoped_applications_path; + ScopedAutoStartPath autostart_path; base::ScopedPathOverride user_desktop_override(base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); MockEnvironment env; env.Set("XDG_DATA_HOME", scoped_applications_path.GetDataHomePath().value()); + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); int invoke_count = 0; LaunchXdgUtilityForTesting CreateDesktopShortcutLaunchXdgUtility = @@ -505,6 +649,7 @@ ShortcutLocations locations; locations.on_desktop = true; + locations.in_startup = true; locations.applications_menu_location = APP_MENU_LOCATION_SUBDIR_CHROMEAPPS; EXPECT_TRUE(CreateDesktopShortcut(&env, *shortcut_info, locations)); @@ -522,13 +667,27 @@ "chrome-https___example.com_", shortcut_info->profile_path, "", "", false); - base::FilePath desktop_shortcut_path = scoped_desktop_path.GetPath().Append( - "chrome-https___example.com_.desktop"); - ASSERT_TRUE(base::PathExists(desktop_shortcut_path)); + { + base::FilePath desktop_shortcut_path = scoped_desktop_path.GetPath().Append( + "chrome-https___example.com_.desktop"); + ASSERT_TRUE(base::PathExists(desktop_shortcut_path)); - std::string actual_contents; - ASSERT_TRUE(base::ReadFileToString(desktop_shortcut_path, &actual_contents)); - EXPECT_EQ(expected_contents, actual_contents); + std::string actual_contents; + ASSERT_TRUE( + base::ReadFileToString(desktop_shortcut_path, &actual_contents)); + EXPECT_EQ(expected_contents, actual_contents); + } + + { + base::FilePath autostart_shortcut_path = + autostart_path.GetPath().Append("chrome-https___example.com_.desktop"); + ASSERT_TRUE(base::PathExists(autostart_shortcut_path)); + + std::string actual_contents; + ASSERT_TRUE( + base::ReadFileToString(autostart_shortcut_path, &actual_contents)); + EXPECT_EQ(expected_contents, actual_contents); + } } TEST_F(WebAppShortcutLinuxTest, UpdateDesktopShortcuts) { @@ -582,4 +741,82 @@ EXPECT_EQ(expected_contents, actual_contents); } +TEST_F(WebAppShortcutLinuxTest, GetShortcutLocations) { + // No existing shortcuts. + { + MockEnvironment env; + ShortcutLocations locations; + std::vector<base::FilePath> result = + GetShortcutLocations(&env, locations, GetProfilePath(), GetAppId()); + EXPECT_EQ(result.size(), 0u); + } + + // Shortcut on desktop. + { + ScopedDesktopPath scoped_desktop_path; + base::ScopedPathOverride user_desktop_override( + base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); + base::FilePath desktop_shortcut_path = + CreateShortcutInPath(scoped_desktop_path.GetPath()); + + MockEnvironment env; + ShortcutLocations locations; + locations.on_desktop = true; + + EXPECT_TRUE(base::PathExists(desktop_shortcut_path)); + std::vector<base::FilePath> result = + GetShortcutLocations(&env, locations, GetProfilePath(), GetAppId()); + EXPECT_EQ(result.size(), 1u); + EXPECT_EQ(result[0], desktop_shortcut_path); + } + + // Shortcut in autostart directory. + { + ScopedAutoStartPath autostart_path; + base::FilePath autostart_shortcut_path = + CreateShortcutInPath(autostart_path.GetPath()); + MockEnvironment env; + + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); + + ShortcutLocations locations; + locations.in_startup = true; + + EXPECT_TRUE(base::PathExists(autostart_shortcut_path)); + std::vector<base::FilePath> result = + GetShortcutLocations(&env, locations, GetProfilePath(), GetAppId()); + EXPECT_EQ(result.size(), 1u); + EXPECT_EQ(result[0], autostart_shortcut_path); + } + + // Shortcut on desktop, and in autostart folder. + { + ScopedDesktopPath scoped_desktop_path; + base::ScopedPathOverride user_desktop_override( + base::DIR_USER_DESKTOP, scoped_desktop_path.GetPath()); + base::FilePath desktop_shortcut_path = + CreateShortcutInPath(scoped_desktop_path.GetPath()); + ScopedAutoStartPath autostart_path; + base::FilePath autostart_shortcut_path = + CreateShortcutInPath(autostart_path.GetPath()); + MockEnvironment env; + + env.Set(base::nix::kXdgConfigHomeEnvVar, + autostart_path.GetConfigHomePath().value()); + + ShortcutLocations locations; + locations.in_startup = true; + locations.on_desktop = true; + + EXPECT_TRUE(base::PathExists(desktop_shortcut_path)); + EXPECT_TRUE(base::PathExists(autostart_shortcut_path)); + std::vector<base::FilePath> result = + GetShortcutLocations(&env, locations, GetProfilePath(), GetAppId()); + EXPECT_EQ(result.size(), 2u); + EXPECT_EQ(result[0], desktop_shortcut_path); + EXPECT_EQ(result[1], autostart_shortcut_path); + } +} + } // namespace web_app
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.h b/chrome/browser/webauthn/authenticator_request_dialog_model.h index 28294bf..db7c1bd 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.h +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.h
@@ -38,8 +38,6 @@ class AuthenticatorRequestDialogModel { public: using RequestCallback = device::FidoRequestHandlerBase::RequestCallback; - using BlePairingCallback = device::FidoRequestHandlerBase::BlePairingCallback; - using BleDevicePairedCallback = base::RepeatingCallback<void(std::string)>; using TransportAvailabilityInfo = device::FidoRequestHandlerBase::TransportAvailabilityInfo;
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index cdf9198..6c7b1fb3 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-master-1607082643-9d7584569e97498303bfc8f363e6d14838d94e40.profdata +chrome-linux-master-1607104719-553836ec892e604b847a609e48d12198e967747c.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index aa65cb2..79b25e9 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1607082643-ec3aa91ed6cc9a4e56961da34010bfe7d1bfcfad.profdata +chrome-mac-master-1607104719-e1d1a8dd7fb3b6aba7965596c29afef7497a651e.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 7242510c2..dcc347e 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1607061555-9d7880873554417bd44ed300f865acac635c5256.profdata +chrome-win64-master-1607070900-a3f370d99263588b261e824540349b020ef94941.profdata
diff --git a/chrome/common/auto_start_linux.cc b/chrome/common/auto_start_linux.cc index f2129d0..d43910a 100644 --- a/chrome/common/auto_start_linux.cc +++ b/chrome/common/auto_start_linux.cc
@@ -18,17 +18,9 @@ const base::FilePath::CharType kAutostart[] = "autostart"; -base::FilePath GetAutostartDirectory(base::Environment* environment) { - base::FilePath result = base::nix::GetXDGDirectory( - environment, - base::nix::kXdgConfigHomeEnvVar, - base::nix::kDotConfigDir); - result = result.Append(kAutostart); - return result; -} - } // namespace +// static bool AutoStart::AddApplication(const std::string& autostart_filename, const std::string& application_name, const std::string& command_line, @@ -59,6 +51,7 @@ return true; } +// static bool AutoStart::Remove(const std::string& autostart_filename) { std::unique_ptr<base::Environment> environment(base::Environment::Create()); base::FilePath autostart_directory = GetAutostartDirectory(environment.get()); @@ -67,6 +60,7 @@ return base::DeleteFile(autostart_file); } +// static bool AutoStart::GetAutostartFileContents( const std::string& autostart_filename, std::string* contents) { std::unique_ptr<base::Environment> environment(base::Environment::Create()); @@ -76,6 +70,7 @@ return base::ReadFileToString(autostart_file, contents); } +// static bool AutoStart::GetAutostartFileValue(const std::string& autostart_filename, const std::string& value_name, std::string* value) { @@ -92,3 +87,12 @@ } return false; } + +// static +base::FilePath AutoStart::GetAutostartDirectory( + base::Environment* environment) { + base::FilePath result = base::nix::GetXDGDirectory( + environment, base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); + result = result.Append(kAutostart); + return result; +}
diff --git a/chrome/common/auto_start_linux.h b/chrome/common/auto_start_linux.h index e04e3b6..600c6ad4 100644 --- a/chrome/common/auto_start_linux.h +++ b/chrome/common/auto_start_linux.h
@@ -9,6 +9,11 @@ #include "base/macros.h" +namespace base { +class FilePath; +class Environment; +} // namespace base + class AutoStart { public: // Registers an application to autostart on user login. |is_terminal_app| @@ -26,6 +31,9 @@ static bool GetAutostartFileValue(const std::string& autostart_filename, const std::string& value_name, std::string* value); + // Gets the path to the autostart directory. + static base::FilePath GetAutostartDirectory(base::Environment* environment); + private: DISALLOW_IMPLICIT_CONSTRUCTORS(AutoStart); };
diff --git a/chrome/common/extensions/api/accessibility_private.json b/chrome/common/extensions/api/accessibility_private.json index 030bd3a..63d69cb 100644 --- a/chrome/common/extensions/api/accessibility_private.json +++ b/chrome/common/extensions/api/accessibility_private.json
@@ -402,14 +402,14 @@ "platforms": ["chromeos"] }, { - "name": "enableChromeVoxMouseEvents", + "name": "enableMouseEvents", "type": "function", - "description": "Enables or disables mouse events in ChromeVox.", + "description": "Enables or disables mouse events in accessibility extensions", "parameters": [ { "name": "enabled", "type": "boolean", - "description": "True if ChromeVox should receive mouse events." + "description": "True if accessibility component extensions should receive mouse events." } ], "platforms": ["chromeos"]
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn index 01fc562..3ea05ee 100644 --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn
@@ -98,8 +98,8 @@ "previews/resource_loading_hints_agent.h", "subresource_redirect/public_image_hints_url_loader_throttle.cc", "subresource_redirect/public_image_hints_url_loader_throttle.h", - "subresource_redirect/robots_rules_decider.cc", - "subresource_redirect/robots_rules_decider.h", + "subresource_redirect/robots_rules_parser.cc", + "subresource_redirect/robots_rules_parser.h", "subresource_redirect/subresource_redirect_hints_agent.cc", "subresource_redirect/subresource_redirect_hints_agent.h", "subresource_redirect/subresource_redirect_params.cc",
diff --git a/chrome/renderer/subresource_redirect/robots_rules_decider_unittest.cc b/chrome/renderer/subresource_redirect/robots_rules_decider_unittest.cc deleted file mode 100644 index 1153cdd..0000000 --- a/chrome/renderer/subresource_redirect/robots_rules_decider_unittest.cc +++ /dev/null
@@ -1,396 +0,0 @@ -// Copyright 2019 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 <memory> - -#include "base/memory/weak_ptr.h" -#include "base/test/metrics/histogram_tester.h" -#include "base/test/scoped_feature_list.h" -#include "base/test/task_environment.h" -#include "base/time/time.h" -#include "chrome/renderer/subresource_redirect/robots_rules_decider.h" -#include "components/data_reduction_proxy/proto/robots_rules.pb.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/features.h" - -namespace subresource_redirect { - -namespace { - -constexpr char kTestOrigin[] = "https://test.com"; - -const bool kRuleTypeAllow = true; -const bool kRuleTypeDisallow = false; - -struct Rule { - Rule(bool rule_type, std::string pattern) - : rule_type(rule_type), pattern(pattern) {} - - bool rule_type; - std::string pattern; -}; - -class CheckResultReceiver { - public: - void OnCheckRobotsRulesResult(RobotsRulesDecider::CheckResult check_result) { - EXPECT_FALSE(did_receive_result_); - did_receive_result_ = true; - check_result_ = check_result; - } - RobotsRulesDecider::CheckResultCallback GetCallback() { - return base::BindOnce(&CheckResultReceiver::OnCheckRobotsRulesResult, - weak_ptr_factory_.GetWeakPtr()); - } - RobotsRulesDecider::CheckResult check_result() const { return check_result_; } - bool did_receive_result() const { return did_receive_result_; } - - private: - RobotsRulesDecider::CheckResult check_result_; - bool did_receive_result_ = false; - base::WeakPtrFactory<CheckResultReceiver> weak_ptr_factory_{this}; -}; - -std::string GetRobotsRulesProtoString(const std::vector<Rule>& patterns) { - proto::RobotsRules robots_rules; - for (const auto& pattern : patterns) { - auto* new_rule = robots_rules.add_image_ordered_rules(); - if (pattern.rule_type == kRuleTypeAllow) { - new_rule->set_allowed_pattern(pattern.pattern); - } else { - new_rule->set_disallowed_pattern(pattern.pattern); - } - } - return robots_rules.SerializeAsString(); -} - -class SubresourceRedirectRobotsRulesDeciderTest : public testing::Test { - public: - SubresourceRedirectRobotsRulesDeciderTest() - : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME) {} - void SetUp() override { - scoped_feature_list_.InitWithFeaturesAndParameters( - {{blink::features::kSubresourceRedirect, {{}}}}, {}); - } - - void SetUpRobotsRules(const std::vector<Rule>& patterns) { - robots_rules_decider_.UpdateRobotsRules( - GetRobotsRulesProtoString(patterns)); - } - - void CheckRobotsRules(const std::string& url_path_with_query, - RobotsRulesDecider::CheckResult expected_result) { - CheckResultReceiver result_receiver; - robots_rules_decider_.CheckRobotsRules( - GURL(kTestOrigin + url_path_with_query), result_receiver.GetCallback()); - EXPECT_TRUE(result_receiver.did_receive_result()); - EXPECT_EQ(expected_result, result_receiver.check_result()); - } - - std::unique_ptr<CheckResultReceiver> CheckRobotsRulesAsync( - const std::string& url_path_with_query) { - auto result_receiver = std::make_unique<CheckResultReceiver>(); - robots_rules_decider_.CheckRobotsRules( - GURL(kTestOrigin + url_path_with_query), - result_receiver->GetCallback()); - return result_receiver; - } - - void VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult result) { - histogram_tester().ExpectUniqueSample( - "SubresourceRedirect.RobotRulesDecider.ReceiveResult", result, 1); - } - - void VerifyReceivedRobotsRulesCountHistogram(size_t count) { - histogram_tester().ExpectUniqueSample( - "SubresourceRedirect.RobotRulesDecider.Count", count, 1); - } - - void VerifyTotalRobotsRulesApplyHistograms(size_t total) { - histogram_tester().ExpectTotalCount( - "SubresourceRedirect.RobotRulesDecider.ApplyDuration", total); - } - - const base::HistogramTester& histogram_tester() { return histogram_tester_; } - - protected: - base::test::ScopedFeatureList scoped_feature_list_; - base::test::TaskEnvironment task_environment_; - base::HistogramTester histogram_tester_; - RobotsRulesDecider robots_rules_decider_; -}; - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - InvalidProtoParseErrorDisallowsAllPaths) { - robots_rules_decider_.UpdateRobotsRules("INVALID PROTO"); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kParseError); - histogram_tester().ExpectTotalCount( - "SubresourceRedirect.RobotRulesDecider.Count", 0); - - // All url paths should be disallowed. - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo/bar.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(0); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, EmptyRulesAllowsAllPaths) { - SetUpRobotsRules({}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(0); - - // All url paths should be allowed. - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo/bar.jpg", RobotsRulesDecider::CheckResult::kAllowed); - VerifyTotalRobotsRulesApplyHistograms(4); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - RulesReceiveTimeoutDisallowsAllPaths) { - // Let the rule fetch timeout. - task_environment_.FastForwardBy(base::TimeDelta::FromSeconds(10)); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kTimeout); - - // All url paths should be disallowed. - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo/bar.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(0); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - CheckResultCallbackAfterRulesReceived) { - auto receiver1 = CheckRobotsRulesAsync("/foo.jpg"); - auto receiver2 = CheckRobotsRulesAsync("/bar"); - EXPECT_FALSE(receiver1->did_receive_result()); - EXPECT_FALSE(receiver2->did_receive_result()); - VerifyTotalRobotsRulesApplyHistograms(0); - - // Once the rules are received the callback should get called with the result. - SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(2); - - EXPECT_TRUE(receiver1->did_receive_result()); - EXPECT_TRUE(receiver2->did_receive_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kAllowed, - receiver1->check_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kDisallowed, - receiver2->check_result()); - VerifyTotalRobotsRulesApplyHistograms(2); - - CheckRobotsRules("/foo.png", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/bar", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/baz", RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(5); -} - -// Verify if the callback is called before the decider gets destroyed. -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - VerifyCallbackCalledBeforeDeciderDestroy) { - auto robots_rules_decider = std::make_unique<RobotsRulesDecider>(); - auto receiver1 = std::make_unique<CheckResultReceiver>(); - auto receiver2 = std::make_unique<CheckResultReceiver>(); - - robots_rules_decider->CheckRobotsRules(GURL("https://test.com/foo.jpg"), - receiver1->GetCallback()); - robots_rules_decider->CheckRobotsRules(GURL("https://test.com/bar"), - receiver2->GetCallback()); - EXPECT_FALSE(receiver1->did_receive_result()); - EXPECT_FALSE(receiver2->did_receive_result()); - VerifyTotalRobotsRulesApplyHistograms(0); - - robots_rules_decider->UpdateRobotsRules(GetRobotsRulesProtoString( - {{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}})); - - // Destroying the decider should trigger the callbacks. - robots_rules_decider.reset(); - - EXPECT_TRUE(receiver1->did_receive_result()); - EXPECT_TRUE(receiver2->did_receive_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kAllowed, - receiver1->check_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kDisallowed, - receiver2->check_result()); - VerifyTotalRobotsRulesApplyHistograms(2); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - CheckResultCallbackAfterRulesReceiveTimeout) { - auto receiver1 = CheckRobotsRulesAsync("/foo.jpg"); - auto receiver2 = CheckRobotsRulesAsync("/bar"); - EXPECT_FALSE(receiver1->did_receive_result()); - EXPECT_FALSE(receiver2->did_receive_result()); - VerifyTotalRobotsRulesApplyHistograms(0); - - // Once the rule fetch timesout,the callback should get called with the - // result. - task_environment_.FastForwardBy(base::TimeDelta::FromSeconds(10)); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kTimeout); - - EXPECT_TRUE(receiver1->did_receive_result()); - EXPECT_TRUE(receiver2->did_receive_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kTimedout, - receiver1->check_result()); - EXPECT_EQ(RobotsRulesDecider::CheckResult::kTimedout, - receiver2->check_result()); - VerifyTotalRobotsRulesApplyHistograms(0); - - SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}}); - - CheckRobotsRules("/foo.png", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/bar", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/baz", RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(3); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, FullAllowRule) { - SetUpRobotsRules({{kRuleTypeAllow, "*"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(1); - - // All url paths should be allowed. - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo/bar.jpg", RobotsRulesDecider::CheckResult::kAllowed); - VerifyTotalRobotsRulesApplyHistograms(4); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, FullDisallowRule) { - SetUpRobotsRules({{kRuleTypeDisallow, "*"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(1); - - // All url paths should be disallowed. - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo/bar.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(4); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, TwoAllowRules) { - SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, - {kRuleTypeAllow, "/bar$"}, - {kRuleTypeDisallow, "*"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(3); - - CheckRobotsRules("", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo/baz.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/bar", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/bar.jpg", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/baz", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("foo", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("bar", RobotsRulesDecider::CheckResult::kDisallowed); - VerifyTotalRobotsRulesApplyHistograms(9); -} - -// When the URL path matches multiple allow and disallow rules, whichever rule -// that comes first in the list should take precedence. -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, - FirstAllowRuleMatchOverridesLaterDisallowRule) { - SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/foo"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(2); - - CheckRobotsRules("/foo", RobotsRulesDecider::CheckResult::kAllowed); - - SetUpRobotsRules({{kRuleTypeDisallow, "/foo"}, {kRuleTypeAllow, "/foo"}}); - CheckRobotsRules("/foo", RobotsRulesDecider::CheckResult::kDisallowed); - - SetUpRobotsRules({{kRuleTypeAllow, "/foo.jpg"}, {kRuleTypeDisallow, "/foo"}}); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/foo", RobotsRulesDecider::CheckResult::kDisallowed); - - SetUpRobotsRules({{kRuleTypeDisallow, "/foo.jpg"}, {kRuleTypeAllow, "/foo"}}); - CheckRobotsRules("/foo.jpg", RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/foo", RobotsRulesDecider::CheckResult::kAllowed); - - VerifyTotalRobotsRulesApplyHistograms(6); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, TestURLWithArguments) { - SetUpRobotsRules({{kRuleTypeAllow, "/*.jpg$"}, - {kRuleTypeDisallow, "/*.png?*arg_disallowed"}, - {kRuleTypeAllow, "/*.png"}, - {kRuleTypeDisallow, "/*.gif?*arg_disallowed"}, - {kRuleTypeAllow, "/*.gif"}, - {kRuleTypeDisallow, "/"}}); - VerifyRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult:: - kSuccess); - VerifyReceivedRobotsRulesCountHistogram(6); - - CheckRobotsRules("/allowed.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/allowed.png", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/allowed.gif", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/disallowed.jpg?arg", - RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/allowed.png?arg", - RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/allowed.png?arg_allowed", - RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/allowed.png?arg_allowed&arg_allowed2", - RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/allowed.png?arg_disallowed", - RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/allowed.png?arg_disallowed&arg_disallowed2", - RobotsRulesDecider::CheckResult::kDisallowed); - - VerifyTotalRobotsRulesApplyHistograms(9); -} - -TEST_F(SubresourceRedirectRobotsRulesDeciderTest, TestRulesAreCaseSensitive) { - SetUpRobotsRules({{kRuleTypeAllow, "/allowed"}, - {kRuleTypeAllow, "/CamelCase"}, - {kRuleTypeAllow, "/CAPITALIZE"}, - {kRuleTypeDisallow, "/"}}); - VerifyReceivedRobotsRulesCountHistogram(4); - - CheckRobotsRules("/allowed.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/CamelCase.jpg", RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/CAPITALIZE.jpg", - RobotsRulesDecider::CheckResult::kAllowed); - CheckRobotsRules("/Allowed.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/camelcase.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - CheckRobotsRules("/capitalize.jpg", - RobotsRulesDecider::CheckResult::kDisallowed); - - VerifyTotalRobotsRulesApplyHistograms(6); -} - -} // namespace - -} // namespace subresource_redirect
diff --git a/chrome/renderer/subresource_redirect/robots_rules_decider.cc b/chrome/renderer/subresource_redirect/robots_rules_parser.cc similarity index 88% rename from chrome/renderer/subresource_redirect/robots_rules_decider.cc rename to chrome/renderer/subresource_redirect/robots_rules_parser.cc index 6925f0dd..fe2f990 100644 --- a/chrome/renderer/subresource_redirect/robots_rules_decider.cc +++ b/chrome/renderer/subresource_redirect/robots_rules_parser.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/renderer/subresource_redirect/robots_rules_decider.h" +#include "chrome/renderer/subresource_redirect/robots_rules_parser.h" #include "base/callback.h" #include "base/logging.h" @@ -66,7 +66,7 @@ } void RecordRobotsRulesReceiveResultHistogram( - RobotsRulesDecider::SubresourceRedirectRobotsRulesReceiveResult result) { + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult result) { UMA_HISTOGRAM_ENUMERATION( "SubresourceRedirect.RobotRulesDecider.ReceiveResult", result); } @@ -78,27 +78,27 @@ } // namespace -bool RobotsRulesDecider::RobotsRule::Match(const std::string& path) const { +bool RobotsRulesParser::RobotsRule::Match(const std::string& path) const { return IsMatchingRobotsRule(path, pattern_); } -RobotsRulesDecider::RobotsRulesDecider() { +RobotsRulesParser::RobotsRulesParser() { // Using base::Unretained(this) is safe here, since the timer // |rules_receive_timeout_timer_| is owned by |this| and destroyed before // |this|. rules_receive_timeout_timer_.Start( FROM_HERE, GetRobotsRulesReceiveTimeout(), - base::BindOnce(&RobotsRulesDecider::OnRulesReceiveTimeout, + base::BindOnce(&RobotsRulesParser::OnRulesReceiveTimeout, base::Unretained(this))); } -RobotsRulesDecider::~RobotsRulesDecider() { +RobotsRulesParser::~RobotsRulesParser() { // Consider this as a timeout if (rules_receive_timeout_timer_.IsRunning()) rules_receive_timeout_timer_.FireNow(); } -void RobotsRulesDecider::UpdateRobotsRules(const std::string& rules) { +void RobotsRulesParser::UpdateRobotsRules(const std::string& rules) { robots_rules_.reset(); rules_receive_timeout_timer_.Stop(); @@ -133,8 +133,8 @@ pending_check_requests_.clear(); } -void RobotsRulesDecider::CheckRobotsRules(const GURL& url, - CheckResultCallback callback) { +void RobotsRulesParser::CheckRobotsRules(const GURL& url, + CheckResultCallback callback) { std::string path_with_query = url.path(); if (url.has_query()) base::StrAppend(&path_with_query, {"?", url.query()}); @@ -149,7 +149,7 @@ : CheckResult::kDisallowed); } -bool RobotsRulesDecider::IsAllowed(const std::string& url_path) const { +bool RobotsRulesParser::IsAllowed(const std::string& url_path) const { // Rules not received. Could be rule parse error or timeout. if (!robots_rules_) return false; @@ -167,7 +167,7 @@ return true; } -void RobotsRulesDecider::OnRulesReceiveTimeout() { +void RobotsRulesParser::OnRulesReceiveTimeout() { DCHECK(!rules_receive_timeout_timer_.IsRunning()); for (auto& request : pending_check_requests_) std::move(request.first).Run(CheckResult::kTimedout);
diff --git a/chrome/renderer/subresource_redirect/robots_rules_decider.h b/chrome/renderer/subresource_redirect/robots_rules_parser.h similarity index 88% rename from chrome/renderer/subresource_redirect/robots_rules_decider.h rename to chrome/renderer/subresource_redirect/robots_rules_parser.h index 012cd211..3522b942 100644 --- a/chrome/renderer/subresource_redirect/robots_rules_decider.h +++ b/chrome/renderer/subresource_redirect/robots_rules_parser.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_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_DECIDER_H_ -#define CHROME_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_DECIDER_H_ +#ifndef CHROME_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_PARSER_H_ +#define CHROME_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_PARSER_H_ #include <map> #include <vector> @@ -20,7 +20,7 @@ // url path is allowed or disallowed. Also supports a timeout to receive the // robots rules after which it will be treated as a full disallow. The check // result is delivered via callback asynchronously. -class RobotsRulesDecider { +class RobotsRulesParser { public: // The final result of robots rule retrieval. // This should be kept in sync with @@ -41,11 +41,11 @@ // Callback to notify the check robot rules result. using CheckResultCallback = base::OnceCallback<void(CheckResult)>; - RobotsRulesDecider(); - ~RobotsRulesDecider(); + RobotsRulesParser(); + ~RobotsRulesParser(); - RobotsRulesDecider(const RobotsRulesDecider&) = delete; - RobotsRulesDecider& operator=(const RobotsRulesDecider&) = delete; + RobotsRulesParser(const RobotsRulesParser&) = delete; + RobotsRulesParser& operator=(const RobotsRulesParser&) = delete; // Update the robots rules. This causes any pending check requests to be // processed immediately and called with th result. @@ -95,4 +95,4 @@ } // namespace subresource_redirect -#endif // CHROME_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_DECIDER_H_ +#endif // CHROME_RENDERER_SUBRESOURCE_REDIRECT_ROBOTS_RULES_PARSER_H_
diff --git a/chrome/renderer/subresource_redirect/robots_rules_parser_unittest.cc b/chrome/renderer/subresource_redirect/robots_rules_parser_unittest.cc new file mode 100644 index 0000000..5a5204cb --- /dev/null +++ b/chrome/renderer/subresource_redirect/robots_rules_parser_unittest.cc
@@ -0,0 +1,381 @@ +// Copyright 2019 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 <memory> + +#include "base/memory/weak_ptr.h" +#include "base/test/metrics/histogram_tester.h" +#include "base/test/scoped_feature_list.h" +#include "base/test/task_environment.h" +#include "base/time/time.h" +#include "chrome/renderer/subresource_redirect/robots_rules_parser.h" +#include "components/data_reduction_proxy/proto/robots_rules.pb.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/common/features.h" + +namespace subresource_redirect { + +namespace { + +constexpr char kTestOrigin[] = "https://test.com"; + +const bool kRuleTypeAllow = true; +const bool kRuleTypeDisallow = false; + +struct Rule { + Rule(bool rule_type, std::string pattern) + : rule_type(rule_type), pattern(pattern) {} + + bool rule_type; + std::string pattern; +}; + +class CheckResultReceiver { + public: + void OnCheckRobotsRulesResult(RobotsRulesParser::CheckResult check_result) { + EXPECT_FALSE(did_receive_result_); + did_receive_result_ = true; + check_result_ = check_result; + } + RobotsRulesParser::CheckResultCallback GetCallback() { + return base::BindOnce(&CheckResultReceiver::OnCheckRobotsRulesResult, + weak_ptr_factory_.GetWeakPtr()); + } + RobotsRulesParser::CheckResult check_result() const { return check_result_; } + bool did_receive_result() const { return did_receive_result_; } + + private: + RobotsRulesParser::CheckResult check_result_; + bool did_receive_result_ = false; + base::WeakPtrFactory<CheckResultReceiver> weak_ptr_factory_{this}; +}; + +std::string GetRobotsRulesProtoString(const std::vector<Rule>& patterns) { + proto::RobotsRules robots_rules; + for (const auto& pattern : patterns) { + auto* new_rule = robots_rules.add_image_ordered_rules(); + if (pattern.rule_type == kRuleTypeAllow) { + new_rule->set_allowed_pattern(pattern.pattern); + } else { + new_rule->set_disallowed_pattern(pattern.pattern); + } + } + return robots_rules.SerializeAsString(); +} + +class SubresourceRedirectRobotsRulesParserTest : public testing::Test { + public: + SubresourceRedirectRobotsRulesParserTest() + : task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME) {} + void SetUp() override { + scoped_feature_list_.InitWithFeaturesAndParameters( + {{blink::features::kSubresourceRedirect, {{}}}}, {}); + } + + void SetUpRobotsRules(const std::vector<Rule>& patterns) { + robots_rules_parser_.UpdateRobotsRules(GetRobotsRulesProtoString(patterns)); + } + + void CheckRobotsRules(const std::string& url_path_with_query, + RobotsRulesParser::CheckResult expected_result) { + CheckResultReceiver result_receiver; + robots_rules_parser_.CheckRobotsRules( + GURL(kTestOrigin + url_path_with_query), result_receiver.GetCallback()); + EXPECT_TRUE(result_receiver.did_receive_result()); + EXPECT_EQ(expected_result, result_receiver.check_result()); + } + + std::unique_ptr<CheckResultReceiver> CheckRobotsRulesAsync( + const std::string& url_path_with_query) { + auto result_receiver = std::make_unique<CheckResultReceiver>(); + robots_rules_parser_.CheckRobotsRules( + GURL(kTestOrigin + url_path_with_query), + result_receiver->GetCallback()); + return result_receiver; + } + + void VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult result) { + histogram_tester().ExpectUniqueSample( + "SubresourceRedirect.RobotRulesDecider.ReceiveResult", result, 1); + } + + void VerifyReceivedRobotsRulesCountHistogram(size_t count) { + histogram_tester().ExpectUniqueSample( + "SubresourceRedirect.RobotRulesDecider.Count", count, 1); + } + + void VerifyTotalRobotsRulesApplyHistograms(size_t total) { + histogram_tester().ExpectTotalCount( + "SubresourceRedirect.RobotRulesDecider.ApplyDuration", total); + } + + const base::HistogramTester& histogram_tester() { return histogram_tester_; } + + protected: + base::test::ScopedFeatureList scoped_feature_list_; + base::test::TaskEnvironment task_environment_; + base::HistogramTester histogram_tester_; + RobotsRulesParser robots_rules_parser_; +}; + +TEST_F(SubresourceRedirectRobotsRulesParserTest, + InvalidProtoParseErrorDisallowsAllPaths) { + robots_rules_parser_.UpdateRobotsRules("INVALID PROTO"); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult:: + kParseError); + histogram_tester().ExpectTotalCount( + "SubresourceRedirect.RobotRulesDecider.Count", 0); + + // All url paths should be disallowed. + CheckRobotsRules("", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo/bar.jpg", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(0); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, EmptyRulesAllowsAllPaths) { + SetUpRobotsRules({}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(0); + + // All url paths should be allowed. + CheckRobotsRules("", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo/bar.jpg", RobotsRulesParser::CheckResult::kAllowed); + VerifyTotalRobotsRulesApplyHistograms(4); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, + RulesReceiveTimeoutDisallowsAllPaths) { + // Let the rule fetch timeout. + task_environment_.FastForwardBy(base::TimeDelta::FromSeconds(10)); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kTimeout); + + // All url paths should be disallowed. + CheckRobotsRules("", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo/bar.jpg", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(0); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, + CheckResultCallbackAfterRulesReceived) { + auto receiver1 = CheckRobotsRulesAsync("/foo.jpg"); + auto receiver2 = CheckRobotsRulesAsync("/bar"); + EXPECT_FALSE(receiver1->did_receive_result()); + EXPECT_FALSE(receiver2->did_receive_result()); + VerifyTotalRobotsRulesApplyHistograms(0); + + // Once the rules are received the callback should get called with the result. + SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(2); + + EXPECT_TRUE(receiver1->did_receive_result()); + EXPECT_TRUE(receiver2->did_receive_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kAllowed, + receiver1->check_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kDisallowed, + receiver2->check_result()); + VerifyTotalRobotsRulesApplyHistograms(2); + + CheckRobotsRules("/foo.png", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/bar", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/baz", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(5); +} + +// Verify if the callback is called before the decider gets destroyed. +TEST_F(SubresourceRedirectRobotsRulesParserTest, + VerifyCallbackCalledBeforeDeciderDestroy) { + auto robots_rules_parser = std::make_unique<RobotsRulesParser>(); + auto receiver1 = std::make_unique<CheckResultReceiver>(); + auto receiver2 = std::make_unique<CheckResultReceiver>(); + + robots_rules_parser->CheckRobotsRules(GURL("https://test.com/foo.jpg"), + receiver1->GetCallback()); + robots_rules_parser->CheckRobotsRules(GURL("https://test.com/bar"), + receiver2->GetCallback()); + EXPECT_FALSE(receiver1->did_receive_result()); + EXPECT_FALSE(receiver2->did_receive_result()); + VerifyTotalRobotsRulesApplyHistograms(0); + + robots_rules_parser->UpdateRobotsRules(GetRobotsRulesProtoString( + {{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}})); + + // Destroying the decider should trigger the callbacks. + robots_rules_parser.reset(); + + EXPECT_TRUE(receiver1->did_receive_result()); + EXPECT_TRUE(receiver2->did_receive_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kAllowed, + receiver1->check_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kDisallowed, + receiver2->check_result()); + VerifyTotalRobotsRulesApplyHistograms(2); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, + CheckResultCallbackAfterRulesReceiveTimeout) { + auto receiver1 = CheckRobotsRulesAsync("/foo.jpg"); + auto receiver2 = CheckRobotsRulesAsync("/bar"); + EXPECT_FALSE(receiver1->did_receive_result()); + EXPECT_FALSE(receiver2->did_receive_result()); + VerifyTotalRobotsRulesApplyHistograms(0); + + // Once the rule fetch timesout,the callback should get called with the + // result. + task_environment_.FastForwardBy(base::TimeDelta::FromSeconds(10)); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kTimeout); + + EXPECT_TRUE(receiver1->did_receive_result()); + EXPECT_TRUE(receiver2->did_receive_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kTimedout, + receiver1->check_result()); + EXPECT_EQ(RobotsRulesParser::CheckResult::kTimedout, + receiver2->check_result()); + VerifyTotalRobotsRulesApplyHistograms(0); + + SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/"}}); + + CheckRobotsRules("/foo.png", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/bar", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/baz", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(3); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, FullAllowRule) { + SetUpRobotsRules({{kRuleTypeAllow, "*"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(1); + + // All url paths should be allowed. + CheckRobotsRules("", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo/bar.jpg", RobotsRulesParser::CheckResult::kAllowed); + VerifyTotalRobotsRulesApplyHistograms(4); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, FullDisallowRule) { + SetUpRobotsRules({{kRuleTypeDisallow, "*"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(1); + + // All url paths should be disallowed. + CheckRobotsRules("", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo/bar.jpg", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(4); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, TwoAllowRules) { + SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, + {kRuleTypeAllow, "/bar$"}, + {kRuleTypeDisallow, "*"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(3); + + CheckRobotsRules("", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo/baz.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/bar", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/bar.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/baz", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("foo", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("bar", RobotsRulesParser::CheckResult::kDisallowed); + VerifyTotalRobotsRulesApplyHistograms(9); +} + +// When the URL path matches multiple allow and disallow rules, whichever rule +// that comes first in the list should take precedence. +TEST_F(SubresourceRedirectRobotsRulesParserTest, + FirstAllowRuleMatchOverridesLaterDisallowRule) { + SetUpRobotsRules({{kRuleTypeAllow, "/foo"}, {kRuleTypeDisallow, "/foo"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(2); + + CheckRobotsRules("/foo", RobotsRulesParser::CheckResult::kAllowed); + + SetUpRobotsRules({{kRuleTypeDisallow, "/foo"}, {kRuleTypeAllow, "/foo"}}); + CheckRobotsRules("/foo", RobotsRulesParser::CheckResult::kDisallowed); + + SetUpRobotsRules({{kRuleTypeAllow, "/foo.jpg"}, {kRuleTypeDisallow, "/foo"}}); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/foo", RobotsRulesParser::CheckResult::kDisallowed); + + SetUpRobotsRules({{kRuleTypeDisallow, "/foo.jpg"}, {kRuleTypeAllow, "/foo"}}); + CheckRobotsRules("/foo.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/foo", RobotsRulesParser::CheckResult::kAllowed); + + VerifyTotalRobotsRulesApplyHistograms(6); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, TestURLWithArguments) { + SetUpRobotsRules({{kRuleTypeAllow, "/*.jpg$"}, + {kRuleTypeDisallow, "/*.png?*arg_disallowed"}, + {kRuleTypeAllow, "/*.png"}, + {kRuleTypeDisallow, "/*.gif?*arg_disallowed"}, + {kRuleTypeAllow, "/*.gif"}, + {kRuleTypeDisallow, "/"}}); + VerifyRobotsRulesReceiveResultHistogram( + RobotsRulesParser::SubresourceRedirectRobotsRulesReceiveResult::kSuccess); + VerifyReceivedRobotsRulesCountHistogram(6); + + CheckRobotsRules("/allowed.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/allowed.png", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/allowed.gif", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/disallowed.jpg?arg", + RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/allowed.png?arg", + RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/allowed.png?arg_allowed", + RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/allowed.png?arg_allowed&arg_allowed2", + RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/allowed.png?arg_disallowed", + RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/allowed.png?arg_disallowed&arg_disallowed2", + RobotsRulesParser::CheckResult::kDisallowed); + + VerifyTotalRobotsRulesApplyHistograms(9); +} + +TEST_F(SubresourceRedirectRobotsRulesParserTest, TestRulesAreCaseSensitive) { + SetUpRobotsRules({{kRuleTypeAllow, "/allowed"}, + {kRuleTypeAllow, "/CamelCase"}, + {kRuleTypeAllow, "/CAPITALIZE"}, + {kRuleTypeDisallow, "/"}}); + VerifyReceivedRobotsRulesCountHistogram(4); + + CheckRobotsRules("/allowed.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/CamelCase.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/CAPITALIZE.jpg", RobotsRulesParser::CheckResult::kAllowed); + CheckRobotsRules("/Allowed.jpg", RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/camelcase.jpg", + RobotsRulesParser::CheckResult::kDisallowed); + CheckRobotsRules("/capitalize.jpg", + RobotsRulesParser::CheckResult::kDisallowed); + + VerifyTotalRobotsRulesApplyHistograms(6); +} + +} // namespace + +} // namespace subresource_redirect
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 6fec07ee..fadfb708 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -1489,6 +1489,7 @@ "../browser/ui/views/tabs/tab_search_button_browsertest.cc", "../browser/ui/views/tabs/tab_strip_browsertest.cc", "../browser/ui/views/web_apps/web_app_frame_toolbar_browsertest.cc", + "../browser/ui/views/web_apps/web_app_integration_browsertest.cc", "../browser/ui/views/web_apps/web_app_minimal_ui_test.cc", "../browser/ui/views/web_apps/web_app_tab_strip_browsertest.cc", "../browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc", @@ -3816,7 +3817,7 @@ "../renderer/media/flash_embed_rewrite_unittest.cc", "../renderer/net/net_error_helper_core_unittest.cc", "../renderer/plugins/plugin_uma_unittest.cc", - "../renderer/subresource_redirect/robots_rules_decider_unittest.cc", + "../renderer/subresource_redirect/robots_rules_parser_unittest.cc", "../renderer/subresource_redirect/subresource_redirect_util_unittest.cc", "../renderer/v8_unwinder_unittest.cc", "../test/base/chrome_render_view_test.cc", @@ -6013,6 +6014,7 @@ "../browser/ui/views/confirm_bubble_views_unittest.cc", "../browser/ui/views/content_setting_bubble_contents_unittest.cc", "../browser/ui/views/desktop_capture/desktop_media_picker_views_unittest.cc", + "../browser/ui/views/desktop_capture/get_current_browsing_context_media_dialog_unittest.cc", "../browser/ui/views/device_chooser_content_view_unittest.cc", "../browser/ui/views/download/download_in_progress_dialog_view_unittest.cc", "../browser/ui/views/download/download_shelf_view_unittest.cc",
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index b3e2ba7..f75b44f 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -8270,7 +8270,7 @@ "policy_pref_mapping_tests": [ { "policies": { "BrowsingDataLifetime": [{"data_types": ["browsing_history"], "time_to_live_in_hours": 2}] }, - "prefs": { "browsing_data_lifetime": { "value": [{"data_types": ["browsing_history"], "time_to_live_in_hours": 2}]} } + "prefs": { "browser.clear_data.browsing_data_lifetime": { "value": [{"data_types": ["browsing_history"], "time_to_live_in_hours": 2}]} } } ] }, @@ -8297,5 +8297,14 @@ } } ] + }, + "ClearBrowsingDataOnExitList": { + "os": ["win", "linux", "mac", "chromeos"], + "policy_pref_mapping_test": [ + { + "policies": { "ClearBrowsingDataOnExitList": ["browsing_history"] }, + "prefs": { "browser.clear_data.clear_on_exit": { "value": ["browsing_history"]}} + } + ] } }
diff --git a/chrome/updater/README.md b/chrome/updater/README.md index 013f08b..4058afcb 100644 --- a/chrome/updater/README.md +++ b/chrome/updater/README.md
@@ -1,8 +1,9 @@ An updater for desktop client software using Chromium code and tools. * The code lives in //chrome/updater. -* Design Doc: http://bit.ly/chromium-updater -* Please join chrome-updates-dev@chromium.org for topics related to the project. +* Design Doc: https://bit.ly/chromium-updater +* Please join chrome-updates-dev@chromium.org or +https://chromium.slack.com#updater for topics related to the project. The updater will be built from a common, platform neutral code base, as part of the Chrome build. The updater is going to be a drop-in replacement for Google
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn index afda68c..1ee2f40 100644 --- a/chromeos/BUILD.gn +++ b/chromeos/BUILD.gn
@@ -326,6 +326,9 @@ # crbug.com/1154794 "policy.DefaultGeolocationSetting", + + # crbug.com/1115622 + "inputs.VirtualKeyboardOOBE", ] }
diff --git a/chromeos/components/cdm_factory_daemon/DEPS b/chromeos/components/cdm_factory_daemon/DEPS index 4590f48f..e2c63d0 100644 --- a/chromeos/components/cdm_factory_daemon/DEPS +++ b/chromeos/components/cdm_factory_daemon/DEPS
@@ -3,6 +3,7 @@ "+content/public/browser", "+content/public/test", "+media/base", + "+media/cdm", "+media/mojo/mojom", "+ui/display", ]
diff --git a/chromeos/components/cdm_factory_daemon/chromeos_cdm_context.h b/chromeos/components/cdm_factory_daemon/chromeos_cdm_context.h index de4d061..41bbc98 100644 --- a/chromeos/components/cdm_factory_daemon/chromeos_cdm_context.h +++ b/chromeos/components/cdm_factory_daemon/chromeos_cdm_context.h
@@ -5,10 +5,12 @@ #ifndef CHROMEOS_COMPONENTS_CDM_FACTORY_DAEMON_CHROMEOS_CDM_CONTEXT_H_ #define CHROMEOS_COMPONENTS_CDM_FACTORY_DAEMON_CHROMEOS_CDM_CONTEXT_H_ +#include <memory> #include <string> #include <vector> #include "base/callback.h" +#include "media/base/cdm_context.h" #include "media/base/decryptor.h" namespace media { @@ -33,6 +35,9 @@ const std::vector<uint8_t>& hw_identifier, GetHwKeyDataCB callback) = 0; + // Gets a CdmContextRef linked with the associated CDM for keeping it alive. + virtual std::unique_ptr<media::CdmContextRef> GetCdmContextRef() = 0; + protected: virtual ~ChromeOsCdmContext() = default; };
diff --git a/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.cc b/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.cc index 929503f..cbabd9f4 100644 --- a/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.cc +++ b/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.cc
@@ -7,11 +7,13 @@ #include <utility> #include "base/bind.h" +#include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "media/base/cdm_promise.h" #include "media/base/decoder_buffer.h" #include "media/base/eme_constants.h" #include "media/base/subsample_entry.h" +#include "media/cdm/cdm_context_ref_impl.h" namespace { @@ -243,6 +245,17 @@ return this; } +void ContentDecryptionModuleAdapter::DeleteOnCorrectThread() const { + DVLOG(1) << __func__; + + if (!mojo_task_runner_->RunsTasksInCurrentSequence()) { + // When DeleteSoon returns false, |this| will be leaked, which is okay. + mojo_task_runner_->DeleteSoon(FROM_HERE, this); + } else { + delete this; + } +} + std::unique_ptr<media::CallbackRegistration> ContentDecryptionModuleAdapter::RegisterEventCB(EventCB event_cb) { return event_callbacks_.Register(std::move(event_cb)); @@ -283,6 +296,11 @@ std::move(callback)); } +std::unique_ptr<media::CdmContextRef> +ContentDecryptionModuleAdapter::GetCdmContextRef() { + return std::make_unique<media::CdmContextRefImpl>(base::WrapRefCounted(this)); +} + void ContentDecryptionModuleAdapter::OnSessionMessage( const std::string& session_id, media::CdmMessageType message_type,
diff --git a/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.h b/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.h index df09013..63715330 100644 --- a/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.h +++ b/chromeos/components/cdm_factory_daemon/content_decryption_module_adapter.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/memory/weak_ptr.h" +#include "base/sequenced_task_runner_helpers.h" #include "base/threading/thread_checker.h" #include "chromeos/components/cdm_factory_daemon/cdm_storage_adapter.h" #include "chromeos/components/cdm_factory_daemon/chromeos_cdm_context.h" @@ -36,8 +37,12 @@ // clear and not decoding. // // This implementation runs in the GPU process and expects all calls to be -// executed on the mojo thread. Decrypt, RegisterEventCB and CancelDecrypt -// are exceptions, and can be called from any thread. +// executed on the mojo thread. Decrypt, RegisterEventCB, CancelDecrypt, +// GetCdmContext, GetDecryptor, GetChromeOsCdmContext, GetHwKeyData and +// GetCdmContextRef are exceptions, and can be called from any thread. +// +// Instances of this class will always be destructed on the mojo thread +// automatically. class COMPONENT_EXPORT(CDM_FACTORY_DAEMON) ContentDecryptionModuleAdapter : public cdm::mojom::ContentDecryptionModuleClient, public media::ContentDecryptionModule, @@ -87,6 +92,7 @@ void RemoveSession(const std::string& session_id, std::unique_ptr<media::SimpleCdmPromise> promise) override; media::CdmContext* GetCdmContext() override; + void DeleteOnCorrectThread() const override; // media::CdmContext: std::unique_ptr<media::CallbackRegistration> RegisterEventCB( @@ -98,6 +104,7 @@ void GetHwKeyData(const media::DecryptConfig* decrypt_config, const std::vector<uint8_t>& hw_identifier, GetHwKeyDataCB callback) override; + std::unique_ptr<media::CdmContextRef> GetCdmContextRef() override; // cdm::mojom::ContentDecryptionModuleClient: void OnSessionMessage(const std::string& session_id, @@ -130,6 +137,9 @@ bool CanAlwaysDecrypt() override; private: + // For DeleteSoon() in DeleteOnCorrectThread(). + friend class base::DeleteHelper<ContentDecryptionModuleAdapter>; + ~ContentDecryptionModuleAdapter() override; void OnConnectionError(); void RejectTrackedPromise(uint32_t promise_id,
diff --git a/chromeos/components/connectivity_diagnostics/network_diagnostics_resource_provider.cc b/chromeos/components/connectivity_diagnostics/network_diagnostics_resource_provider.cc index 4e8a1984a..f4e4b45 100644 --- a/chromeos/components/connectivity_diagnostics/network_diagnostics_resource_provider.cc +++ b/chromeos/components/connectivity_diagnostics/network_diagnostics_resource_provider.cc
@@ -108,6 +108,20 @@ IDR_CR_COMPONENTS_CHROMEOS_NETWORK_DIAGNOSTICS_WARNING_ICON}, }; +struct StringMap { + const char* name; + const char* value; +}; + +// TODO(crbug/1142857): Localize these strings after UX approval. +constexpr StringMap kPlaceholderStrings[] = { + {"NetworkDiagnosticsConnectionGroup", "Connection"}, + {"NetworkDiagnosticsWifiGroup", "WiFi"}, + {"NetworkDiagnosticsGatewayGroup", "Gateway"}, + {"NetworkDiagnosticsFirewallGroup", "Firewall"}, + {"NetworkDiagnosticsDnsGroup", "DNS"}, +}; + } // namespace void AddResources(content::WebUIDataSource* html_source) { @@ -116,6 +130,9 @@ for (const auto& resource : kResources) html_source->AddResourcePath(resource.name, resource.id); + + for (const auto& str : kPlaceholderStrings) + html_source->AddString(str.name, str.value); } } // namespace network_diagnostics
diff --git a/chromeos/components/connectivity_diagnostics/resources/connectivity_diagnostics.html b/chromeos/components/connectivity_diagnostics/resources/connectivity_diagnostics.html index 0b30908..a115108 100644 --- a/chromeos/components/connectivity_diagnostics/resources/connectivity_diagnostics.html +++ b/chromeos/components/connectivity_diagnostics/resources/connectivity_diagnostics.html
@@ -23,6 +23,7 @@ } .content { + height: 100%; overflow: scroll; } </style>
diff --git a/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.html b/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.html index e96da99..f1be742 100644 --- a/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.html +++ b/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.html
@@ -11,6 +11,7 @@ --diagnostics-overview-font-size: 13px; --diagnostics-chart-label-font-size: 15px; --diagnostics-chart-tick-font-size: 12px; + --diagnostics-chart-legend-font-size: 12px; --diagnostics-default-font-weight: 500; --diagnostics-header-font-weight: 600; @@ -59,6 +60,10 @@ font-family: var(--diagnostics-header-font-family); font-size: var(--diagnostics-chart-tick-font-size); }; + --diagnostics-chart-legend-font: { + font-family: var(--diagnostics-header-font-family); + font-size: var(--diagnostics-chart-legend-font-size); + }; } </style> </template> \ No newline at end of file
diff --git a/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.html b/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.html index f3e70f1f..43a3f69 100644 --- a/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.html +++ b/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.html
@@ -19,19 +19,6 @@ visibility: hidden; } - #chart-legend { - text-align: center; - } - - #chart-legend > div { - display: inline; - padding: 5px; - } - - #chart-legend > div > span { - padding: 2px; - } - #plotGroup { fill: none; stroke-width: 1.5px; @@ -62,6 +49,48 @@ .gradient-opacity { stop-opacity: 0; } + + #chart-legend { + text-align: right; + @apply --diagnostics-chart-legend-font; + padding-right: 5px; + } + + #chart-legend > .divider { + display: inline-block; + height: 24px; + position: relative; + top: 8px; + } + + div.legend-group { + display: inline-block; + padding: 0 20px 8px 0; + text-align: left; + } + + div.legend-group > span { + display: inline-block; + padding-left: 8px; + text-align: right; + width: 25px; + } + + #legend-bar { + border-radius: 1px; + display: inline-block; + height: 2px; + margin: 0 16px 3px 0; + width: 10px; + } + + #legend-bar.user { + background-color: var(--google-blue-600); + } + + #legend-bar.system { + background-color: var(--google-yellow-600); + } </style> <svg id="chart" width$="[[width_]]" height$="[[height_]]"> @@ -90,11 +119,14 @@ </g> </svg> <div id="chart-legend"> - <div id="legend-user"> + <div id="legend-user" class="legend-group"> + <div id="legend-bar" class="user"></div> <label>[[i18n('cpuUsageUser')]]</label> <span>[[getPercentageLabel_(user)]]</span> </div> - <div id="legend-system"> + <div class="divider"></div> + <div id="legend-system" class="legend-group"> + <div id="legend-bar" class="system"></div> <label>[[i18n('cpuUsageSystem')]]</label> <span>[[getPercentageLabel_(system)]]</span> </div>
diff --git a/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js b/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js index 99cdb77..9a40960 100644 --- a/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js +++ b/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js
@@ -120,7 +120,7 @@ /** @private {!Object} */ padding_: { type: Object, - value: {top: 10, right: 20, bottom: 10, left: 50, tick: 10}, + value: {top: 10, right: 5, bottom: 8, left: 50, tick: 10}, }, /** @private {number} */
diff --git a/chromeos/components/phonehub/connection_manager_impl.cc b/chromeos/components/phonehub/connection_manager_impl.cc index 92592d5..43ebaad 100644 --- a/chromeos/components/phonehub/connection_manager_impl.cc +++ b/chromeos/components/phonehub/connection_manager_impl.cc
@@ -53,8 +53,7 @@ case ConnectionManager::Status::kDisconnected: if (prev_status == ConnectionManager::Status::kConnected) { UMA_HISTOGRAM_TIMES("PhoneHub.Connectivity.Duration", delta); - } else { - DCHECK(prev_status == ConnectionManager::Status::kConnecting); + } else if (prev_status == ConnectionManager::Status::kConnecting) { RecordConnectionSuccessMetric(false); } break;
diff --git a/chromeos/components/phonehub/do_not_disturb_controller.h b/chromeos/components/phonehub/do_not_disturb_controller.h index fdcc166..cc3df10b 100644 --- a/chromeos/components/phonehub/do_not_disturb_controller.h +++ b/chromeos/components/phonehub/do_not_disturb_controller.h
@@ -29,6 +29,10 @@ virtual bool IsDndEnabled() const = 0; + // Returns whether a new DoNotDisturb state can be set. If this returns false, + // then we are disabling the DoNotDisturb mode feature on the CrOS device. + virtual bool CanRequestNewDndState() const = 0; + // Note: Setting DND state is not a synchronous operation, since it requires // sending a message to the connected phone. Use the observer interface to be // notified of when the state changes. @@ -42,9 +46,11 @@ DoNotDisturbController(); - // This only sets the internal state of the DoNotDisturb mode and does not - // send a request to set the state of the remote phone device. - virtual void SetDoNotDisturbStateInternal(bool is_dnd_enabled) = 0; + // This sets the internal state of the DoNotDisturb mode and and whether the + // DoNotDisturb state can be changed. This does not send a request to set the + // state of the remote phone device. + virtual void SetDoNotDisturbStateInternal(bool is_dnd_enabled, + bool can_request_new_dnd_state) = 0; void NotifyDndStateChanged();
diff --git a/chromeos/components/phonehub/do_not_disturb_controller_impl.cc b/chromeos/components/phonehub/do_not_disturb_controller_impl.cc index 9b38eb72..ec6fc8e 100644 --- a/chromeos/components/phonehub/do_not_disturb_controller_impl.cc +++ b/chromeos/components/phonehub/do_not_disturb_controller_impl.cc
@@ -23,13 +23,25 @@ } void DoNotDisturbControllerImpl::SetDoNotDisturbStateInternal( - bool is_dnd_enabled) { - if (is_dnd_enabled == is_dnd_enabled_) + bool is_dnd_enabled, + bool can_request_new_dnd_state) { + if (is_dnd_enabled_ == is_dnd_enabled && + can_request_new_dnd_state_ == can_request_new_dnd_state) { return; + } - PA_LOG(INFO) << "Do Not Disturb state updated: " << is_dnd_enabled_ << " => " - << is_dnd_enabled; - is_dnd_enabled_ = is_dnd_enabled; + if (is_dnd_enabled != is_dnd_enabled_) { + PA_LOG(INFO) << "Do Not Disturb state updated: " << is_dnd_enabled_ + << " => " << is_dnd_enabled; + is_dnd_enabled_ = is_dnd_enabled; + } + + if (can_request_new_dnd_state != can_request_new_dnd_state_) { + PA_LOG(INFO) << "Can request new Do Not Disturb state updated: " + << can_request_new_dnd_state_ << " => " + << can_request_new_dnd_state; + can_request_new_dnd_state_ = can_request_new_dnd_state; + } NotifyDndStateChanged(); } @@ -42,5 +54,9 @@ message_sender_->SendUpdateNotificationModeRequest(enabled); } +bool DoNotDisturbControllerImpl::CanRequestNewDndState() const { + return can_request_new_dnd_state_; +} + } // namespace phonehub } // namespace chromeos
diff --git a/chromeos/components/phonehub/do_not_disturb_controller_impl.h b/chromeos/components/phonehub/do_not_disturb_controller_impl.h index 4c0d2e19..3e12595 100644 --- a/chromeos/components/phonehub/do_not_disturb_controller_impl.h +++ b/chromeos/components/phonehub/do_not_disturb_controller_impl.h
@@ -16,7 +16,7 @@ // feature of the user's remote phone. class DoNotDisturbControllerImpl : public DoNotDisturbController { public: - DoNotDisturbControllerImpl(MessageSender* message_sender); + explicit DoNotDisturbControllerImpl(MessageSender* message_sender); ~DoNotDisturbControllerImpl() override; private: @@ -24,10 +24,13 @@ // DoNotDisturbController: bool IsDndEnabled() const override; - void SetDoNotDisturbStateInternal(bool is_dnd_enabled) override; + void SetDoNotDisturbStateInternal(bool is_dnd_enabled, + bool can_request_new_dnd_state) override; void RequestNewDoNotDisturbState(bool enabled) override; + bool CanRequestNewDndState() const override; bool is_dnd_enabled_ = false; + bool can_request_new_dnd_state_ = false; MessageSender* message_sender_; };
diff --git a/chromeos/components/phonehub/do_not_disturb_controller_impl_unittest.cc b/chromeos/components/phonehub/do_not_disturb_controller_impl_unittest.cc index 09e7051..775cdaa5 100644 --- a/chromeos/components/phonehub/do_not_disturb_controller_impl_unittest.cc +++ b/chromeos/components/phonehub/do_not_disturb_controller_impl_unittest.cc
@@ -50,8 +50,14 @@ bool IsDndEnabled() const { return controller_->IsDndEnabled(); } - void SetDoNotDisturbInternal(bool is_dnd_enabled) { - controller_->SetDoNotDisturbStateInternal(is_dnd_enabled); + bool CanRequestNewDndState() const { + return controller_->CanRequestNewDndState(); + } + + void SetDoNotDisturbInternal(bool is_dnd_enabled, + bool can_request_new_dnd_state) { + controller_->SetDoNotDisturbStateInternal(is_dnd_enabled, + can_request_new_dnd_state); } void RequestNewDoNotDisturbState(bool enabled) { @@ -77,19 +83,46 @@ TEST_F(DoNotDisturbControllerImplTest, SetInternalStatesWithObservers) { EXPECT_FALSE(IsDndEnabled()); - SetDoNotDisturbInternal(/*is_dnd_enabled=*/true); + SetDoNotDisturbInternal(/*is_dnd_enabled=*/true, + /*can_request_new_dnd_state=*/true); EXPECT_TRUE(IsDndEnabled()); + EXPECT_TRUE(CanRequestNewDndState()); EXPECT_EQ(1u, GetNumObserverCalls()); - SetDoNotDisturbInternal(/*is_dnd_enabled=*/false); + SetDoNotDisturbInternal(/*is_dnd_enabled=*/false, + /*can_request_new_dnd_state=*/true); EXPECT_FALSE(IsDndEnabled()); + EXPECT_TRUE(CanRequestNewDndState()); EXPECT_EQ(2u, GetNumObserverCalls()); - // Setting internal state with the same previous state will not trigger an + // Setting internal dnd state with the same previous state will not trigger an // observer event. - SetDoNotDisturbInternal(/*is_dnd_enabled=*/false); + SetDoNotDisturbInternal(/*is_dnd_enabled=*/false, + /*can_request_new_dnd_state=*/true); EXPECT_FALSE(IsDndEnabled()); + EXPECT_TRUE(CanRequestNewDndState()); EXPECT_EQ(2u, GetNumObserverCalls()); + + // Changing |can_request_new_dnd_state| should also trigger an observer event. + SetDoNotDisturbInternal(/*is_dnd_enabled=*/false, + /*can_request_new_dnd_state=*/false); + EXPECT_FALSE(IsDndEnabled()); + EXPECT_FALSE(CanRequestNewDndState()); + EXPECT_EQ(3u, GetNumObserverCalls()); + + // No new changes, expect no observer call. + SetDoNotDisturbInternal(/*is_dnd_enabled=*/false, + /*can_request_new_dnd_state=*/false); + EXPECT_FALSE(IsDndEnabled()); + EXPECT_FALSE(CanRequestNewDndState()); + EXPECT_EQ(3u, GetNumObserverCalls()); + + // Both states are changed, expect an observer call. + SetDoNotDisturbInternal(/*is_dnd_enabled=*/true, + /*can_request_new_dnd_state=*/true); + EXPECT_TRUE(IsDndEnabled()); + EXPECT_TRUE(CanRequestNewDndState()); + EXPECT_EQ(4u, GetNumObserverCalls()); } TEST_F(DoNotDisturbControllerImplTest, RequestNewDoNotDisturbState) { @@ -97,13 +130,15 @@ EXPECT_TRUE(GetRecentUpdateNotificationModeRequest()); EXPECT_EQ(1u, GetUpdateNotificationModeRequestCallCount()); // Simulate receiving a response and setting the internal value. - SetDoNotDisturbInternal(/*is_dnd_enabled=*/true); + SetDoNotDisturbInternal(/*is_dnd_enabled=*/true, + /*can_request_new_dnd_state=*/true); RequestNewDoNotDisturbState(/*enabled=*/false); EXPECT_FALSE(GetRecentUpdateNotificationModeRequest()); EXPECT_EQ(2u, GetUpdateNotificationModeRequestCallCount()); // Simulate receiving a response and setting the internal value. - SetDoNotDisturbInternal(/*is_dnd_enabled=*/false); + SetDoNotDisturbInternal(/*is_dnd_enabled=*/false, + /*can_request_new_dnd_state=*/true); // Requesting for a the same state as the currently set state is a no-op. RequestNewDoNotDisturbState(/*enabled=*/false);
diff --git a/chromeos/components/phonehub/fake_do_not_disturb_controller.cc b/chromeos/components/phonehub/fake_do_not_disturb_controller.cc index b1bb3fc..29a8c5d 100644 --- a/chromeos/components/phonehub/fake_do_not_disturb_controller.cc +++ b/chromeos/components/phonehub/fake_do_not_disturb_controller.cc
@@ -16,17 +16,26 @@ } void FakeDoNotDisturbController::SetDoNotDisturbStateInternal( - bool is_dnd_enabled) { - if (is_dnd_enabled_ == is_dnd_enabled) + bool is_dnd_enabled, + bool can_request_new_dnd_state) { + if (is_dnd_enabled_ == is_dnd_enabled && + can_request_new_dnd_state_ == can_request_new_dnd_state) { return; + } is_dnd_enabled_ = is_dnd_enabled; + can_request_new_dnd_state_ = can_request_new_dnd_state; + NotifyDndStateChanged(); } void FakeDoNotDisturbController::RequestNewDoNotDisturbState(bool enabled) { if (!should_request_fail_) - SetDoNotDisturbStateInternal(enabled); + SetDoNotDisturbStateInternal(enabled, /*can_request_new_dnd_state=*/true); +} + +bool FakeDoNotDisturbController::CanRequestNewDndState() const { + return can_request_new_dnd_state_; } void FakeDoNotDisturbController::SetShouldRequestFail(
diff --git a/chromeos/components/phonehub/fake_do_not_disturb_controller.h b/chromeos/components/phonehub/fake_do_not_disturb_controller.h index 1a25293..749cf4a 100644 --- a/chromeos/components/phonehub/fake_do_not_disturb_controller.h +++ b/chromeos/components/phonehub/fake_do_not_disturb_controller.h
@@ -17,13 +17,16 @@ // DoNotDisturbController: bool IsDndEnabled() const override; - void SetDoNotDisturbStateInternal(bool is_dnd_enabled) override; + void SetDoNotDisturbStateInternal(bool is_dnd_enabled, + bool can_request_new_dnd_state) override; void RequestNewDoNotDisturbState(bool enabled) override; + bool CanRequestNewDndState() const override; void SetShouldRequestFail(bool should_request_fail); private: bool is_dnd_enabled_ = false; + bool can_request_new_dnd_state_ = false; // Indicates if the connection to the phone is working correctly. If it is // true, there is a problem and the phone cannot change its state.
diff --git a/chromeos/components/phonehub/find_my_device_controller_impl_unittest.cc b/chromeos/components/phonehub/find_my_device_controller_impl_unittest.cc index 1519a18..abc6220a 100644 --- a/chromeos/components/phonehub/find_my_device_controller_impl_unittest.cc +++ b/chromeos/components/phonehub/find_my_device_controller_impl_unittest.cc
@@ -82,7 +82,7 @@ // Simulate flipping DoNotDisturb mode to enabled, this should set the // FindMyPhone status to kRingingNotAvailable. fake_do_not_disturb_controller_->SetDoNotDisturbStateInternal( - /*is_dnd_enabled=*/true); + /*is_dnd_enabled=*/true, /*can_request_new_dnd_state=*/true); EXPECT_EQ(FindMyDeviceController::Status::kRingingNotAvailable, GetPhoneRingingStatus()); // Simulate initiating phone ringing when DoNotDisturb mode is enabled. This @@ -95,7 +95,7 @@ // Flip DoNotDisturb back to disabled, expect status to reset back to its // previous state. fake_do_not_disturb_controller_->SetDoNotDisturbStateInternal( - /*is_dnd_enabled=*/false); + /*is_dnd_enabled=*/false, /*can_request_new_dnd_state=*/true); // Since we previously recorded that the phone should be ringing during // DoNotDisturb mode was enabled, we return to that state once DoNotDisturb // is disabled. @@ -117,7 +117,7 @@ // Simulate flipping DoNotDisturb mode to enabled, this should set the // FindMyPhone status to kRingingNotAvailable and not send any new messages. fake_do_not_disturb_controller_->SetDoNotDisturbStateInternal( - /*is_dnd_enabled=*/true); + /*is_dnd_enabled=*/true, /*can_request_new_dnd_state=*/true); EXPECT_EQ(FindMyDeviceController::Status::kRingingNotAvailable, GetPhoneRingingStatus()); @@ -130,7 +130,7 @@ // Flip DoNotDisturb mode to disabled, expect that messages are able to be // sent again. fake_do_not_disturb_controller_->SetDoNotDisturbStateInternal( - /*is_dnd_enabled=*/false); + /*is_dnd_enabled=*/false, /*can_request_new_dnd_state=*/true); EXPECT_EQ(FindMyDeviceController::Status::kRingingOff, GetPhoneRingingStatus());
diff --git a/chromeos/components/phonehub/phone_status_processor.cc b/chromeos/components/phonehub/phone_status_processor.cc index 5e9ab5dd..1da7ab7 100644 --- a/chromeos/components/phonehub/phone_status_processor.cc +++ b/chromeos/components/phonehub/phone_status_processor.cc
@@ -216,7 +216,8 @@ do_not_disturb_controller_->SetDoNotDisturbStateInternal( phone_properties.notification_mode() == - proto::NotificationMode::DO_NOT_DISTURB_ON); + proto::NotificationMode::DO_NOT_DISTURB_ON, + phone_properties.profile_type() != proto::ProfileType::WORK_PROFILE); notification_access_manager_->SetHasAccessBeenGrantedInternal( phone_properties.notification_access_state() ==
diff --git a/chromeos/components/phonehub/phone_status_processor_unittest.cc b/chromeos/components/phonehub/phone_status_processor_unittest.cc index 24a72bc..d875b674 100644 --- a/chromeos/components/phonehub/phone_status_processor_unittest.cc +++ b/chromeos/components/phonehub/phone_status_processor_unittest.cc
@@ -108,6 +108,8 @@ auto expected_phone_properties = std::make_unique<proto::PhoneProperties>(); expected_phone_properties->set_notification_mode( proto::NotificationMode::DO_NOT_DISTURB_ON); + expected_phone_properties->set_profile_type( + proto::ProfileType::DEFAULT_PROFILE); expected_phone_properties->set_notification_access_state( proto::NotificationAccessState::ACCESS_GRANTED); expected_phone_properties->set_ring_status( @@ -137,6 +139,7 @@ EXPECT_EQ(base::UTF8ToUTF16(test_remote_device_.name()), *mutable_phone_model_->phone_name()); EXPECT_TRUE(fake_do_not_disturb_controller_->IsDndEnabled()); + EXPECT_TRUE(fake_do_not_disturb_controller_->CanRequestNewDndState()); EXPECT_EQ(FindMyDeviceController::Status::kRingingOn, fake_find_my_device_controller_->GetPhoneRingingStatus()); EXPECT_TRUE(fake_notification_access_manager_->HasAccessBeenGranted()); @@ -171,6 +174,7 @@ auto expected_phone_properties = std::make_unique<proto::PhoneProperties>(); expected_phone_properties->set_notification_mode( proto::NotificationMode::DO_NOT_DISTURB_ON); + expected_phone_properties->set_profile_type(proto::ProfileType::WORK_PROFILE); expected_phone_properties->set_notification_access_state( proto::NotificationAccessState::ACCESS_GRANTED); expected_phone_properties->set_ring_status( @@ -199,6 +203,7 @@ EXPECT_EQ(base::UTF8ToUTF16(test_remote_device_.name()), *mutable_phone_model_->phone_name()); EXPECT_TRUE(fake_do_not_disturb_controller_->IsDndEnabled()); + EXPECT_FALSE(fake_do_not_disturb_controller_->CanRequestNewDndState()); EXPECT_EQ(FindMyDeviceController::Status::kRingingOn, fake_find_my_device_controller_->GetPhoneRingingStatus()); EXPECT_TRUE(fake_notification_access_manager_->HasAccessBeenGranted()); @@ -223,6 +228,7 @@ EXPECT_EQ(base::UTF8ToUTF16(test_remote_device_.name()), *mutable_phone_model_->phone_name()); EXPECT_TRUE(fake_do_not_disturb_controller_->IsDndEnabled()); + EXPECT_FALSE(fake_do_not_disturb_controller_->CanRequestNewDndState()); EXPECT_EQ(FindMyDeviceController::Status::kRingingOn, fake_find_my_device_controller_->GetPhoneRingingStatus()); EXPECT_TRUE(fake_notification_access_manager_->HasAccessBeenGranted());
diff --git a/chromeos/components/phonehub/tether_controller_impl.cc b/chromeos/components/phonehub/tether_controller_impl.cc index 3beca33..ed883cf 100644 --- a/chromeos/components/phonehub/tether_controller_impl.cc +++ b/chromeos/components/phonehub/tether_controller_impl.cc
@@ -6,6 +6,7 @@ #include "chromeos/components/multidevice/logging/logging.h" #include "chromeos/components/phonehub/phone_status_model.h" +#include "chromeos/components/phonehub/util/histogram_util.h" #include "chromeos/services/network_config/in_process_instance.h" namespace chromeos { @@ -113,6 +114,8 @@ } PA_LOG(INFO) << "Attempting connection; current status is " << status_; + util::LogTetherConnectionResult( + util::TetherConnectionResult::kAttemptConnection); FeatureState feature_state = multidevice_setup_client_->GetFeatureState(Feature::kInstantTethering); @@ -383,6 +386,11 @@ PA_LOG(INFO) << "TetherController status update: " << status_ << " => " << status; + + // Log the connection attempt result if it has succeed. + if (status == Status::kConnected) + util::LogTetherConnectionResult(util::TetherConnectionResult::kSuccess); + status_ = status; NotifyStatusChanged();
diff --git a/chromeos/components/phonehub/util/histogram_util.cc b/chromeos/components/phonehub/util/histogram_util.cc index f2989ee6..5c20d4ab 100644 --- a/chromeos/components/phonehub/util/histogram_util.cc +++ b/chromeos/components/phonehub/util/histogram_util.cc
@@ -4,14 +4,19 @@ #include "chromeos/components/phonehub/util/histogram_util.h" -#include "base/metrics/histogram_macros.h" +#include "base/metrics/histogram_functions.h" namespace chromeos { namespace phonehub { namespace util { void LogFeatureOptInEntryPoint(OptInEntryPoint entry_point) { - UMA_HISTOGRAM_ENUMERATION("PhoneHub.OptInEntryPoint", entry_point); + base::UmaHistogramEnumeration("PhoneHub.OptInEntryPoint", entry_point); +} + +void LogTetherConnectionResult(TetherConnectionResult result) { + base::UmaHistogramEnumeration( + "PhoneHub.TaskCompletion.TetherConnection.Result", result); } } // namespace util
diff --git a/chromeos/components/phonehub/util/histogram_util.h b/chromeos/components/phonehub/util/histogram_util.h index 7447b6a..db9826a 100644 --- a/chromeos/components/phonehub/util/histogram_util.h +++ b/chromeos/components/phonehub/util/histogram_util.h
@@ -20,9 +20,19 @@ kMaxValue = kSettings, }; +// Enumeration of results of a tethering connection attempt. +enum class TetherConnectionResult { + kAttemptConnection = 0, + kSuccess = 1, + kMaxValue = kSuccess, +}; + // Logs a given opt-in |entry_point| for the PhoneHub feature. void LogFeatureOptInEntryPoint(OptInEntryPoint entry_point); +// Logs a given |result| of a tethering connection attempt. +void LogTetherConnectionResult(TetherConnectionResult result); + } // namespace util } // namespace phonehub } // namespace chromeos
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index 3006f7e..ac14c2f7 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-89-4324.9-1606733211-benchmark-89.0.4342.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-89-4324.9-1606733211-benchmark-89.0.4343.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 9fd7be4..d5e97e5d 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-89-4324.9-1606737320-benchmark-89.0.4342.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-89-4324.9-1606737320-benchmark-89.0.4343.0-r1-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_af.xtb b/chromeos/strings/chromeos_strings_af.xtb index 24888adc..dab98e54 100644 --- a/chromeos/strings/chromeos_strings_af.xtb +++ b/chromeos/strings/chromeos_strings_af.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Skandeer</translation> <translation id="2570743873672969996">Laat loop tans <ph name="TEST_NAME" />-toets …</translation> <translation id="2620436844016719705">Stelsel</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Programme</translation> <translation id="2872961005593481000">Skakel af</translation> <translation id="3008341117444806826">HERLAAI</translation>
diff --git a/chromeos/strings/chromeos_strings_am.xtb b/chromeos/strings/chromeos_strings_am.xtb index 2eaf8368..cbcae1a3 100644 --- a/chromeos/strings/chromeos_strings_am.xtb +++ b/chromeos/strings/chromeos_strings_am.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">ቃኝ</translation> <translation id="2570743873672969996">የ<ph name="TEST_NAME" /> ሙከራን በማሄድ ላይ...</translation> <translation id="2620436844016719705">ስርዓት</translation> +<translation id="2740531572673183784">እሺ</translation> <translation id="2805756323405976993">መተግበሪያዎች</translation> <translation id="2872961005593481000">ዝጋ</translation> <translation id="3008341117444806826">አድስ</translation>
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index 51a8552a..75cdc72 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">فحص</translation> <translation id="2570743873672969996">جارٍ تنفيذ اختبار <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">النظام</translation> +<translation id="2740531572673183784">حسنًا</translation> <translation id="2805756323405976993">التطبيقات</translation> <translation id="2872961005593481000">إيقاف التشغيل</translation> <translation id="3008341117444806826">إعادة التحميل</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index f22dd70..1eb11c6 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">স্কেন কৰক</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> পৰীক্ষা চলাই থকা হৈছে...</translation> <translation id="2620436844016719705">ছিষ্টেম</translation> +<translation id="2740531572673183784">ঠিক আছে</translation> <translation id="2805756323405976993">এপ্</translation> <translation id="2872961005593481000">শ্বাট ডাউন কৰক</translation> <translation id="3008341117444806826">ৰিফ্ৰেশ্ব কৰক</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index bcc07ea6..63da0d7 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Skan edin</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> testi icra edilir...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Tətbiq</translation> <translation id="2872961005593481000">Qapadın</translation> <translation id="3008341117444806826">YENİLƏYİN</translation>
diff --git a/chromeos/strings/chromeos_strings_be.xtb b/chromeos/strings/chromeos_strings_be.xtb index 2723286..2aa5e5c4 100644 --- a/chromeos/strings/chromeos_strings_be.xtb +++ b/chromeos/strings/chromeos_strings_be.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Пошук</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> праходзіць праверку...</translation> <translation id="2620436844016719705">Сістэма</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Праграмы</translation> <translation id="2872961005593481000">Завяршыць працу</translation> <translation id="3008341117444806826">АБНАВІЦЬ</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index a72c684f..b3a58e6 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Сканиране</translation> <translation id="2570743873672969996">Изпълняван тест: <ph name="TEST_NAME" /></translation> <translation id="2620436844016719705">Система</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Приложения</translation> <translation id="2872961005593481000">Изключване</translation> <translation id="3008341117444806826">ОПРЕСНЯВАНЕ</translation>
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index 44ed08a..22c5bb012 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> এই ব্যবহারকারীকে ম্যানেজ করে এবং তার ফলে এটি হয়ত অন্য জায়গা থেকে সেটিংস ম্যানেজ করতে এবং ব্যবহারকারীর অ্যাক্টিভিটির উপর নজর রাখতে পারে।</translation> <translation id="150962533380566081">ভুল PUK।</translation> <translation id="1510238584712386396">লঞ্চার</translation> +<translation id="1621067168122174824">চার্জ টেস্ট করুন</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" />টি থ্রেড)</translation> <translation id="1641857168437328880">ডকুমেন্ট ফিডার (এক পিঠের)</translation> <translation id="1644574205037202324">ইতিহাস</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS সমাধানকারী স্ক্রিন পিন করা</translation> <translation id="1743558184855585519">ব্যাটারি নির্ধারিত সীমাতে পৌঁছে গেলেই শেষ হয়ে গেছে বলে ধরে নেওয়া হয়</translation> +<translation id="1792647875738159689">স্ক্যানিং বাতিল করা হচ্ছে</translation> <translation id="1905710495812624430">সর্বোচ্চ অনুমোদিত প্রচেষ্টা ছাড়িয়ে গেছে।</translation> <translation id="1930797645656624981">Chrome OS ইনপুট পদ্ধতি পরিষেবা</translation> <translation id="1947737735496445907">প্রিন্ট করা হয়েছে</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">স্ক্যান করুন</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> টেস্ট চলছে...</translation> <translation id="2620436844016719705">সিস্টেম</translation> +<translation id="2740531572673183784">ঠিক আছে</translation> <translation id="2805756323405976993">অ্যাপ্স</translation> <translation id="2872961005593481000">বন্ধ করুন</translation> <translation id="3008341117444806826">রিফ্রেশ করুন</translation> <translation id="3009958530611748826">কোন ফোল্ডারে সেভ করতে চান তা বেছে নিন</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">টেস্ট ব্যর্থ হয়েছে</translation> <translation id="3083667275341675831">কানেক্টিভিটি ডায়াগনস্টিকস</translation> <translation id="3091839911843451378">প্রিন্ট করা যায়নি - প্রিন্টার বন্ধ হয়ে গেছে</translation> <translation id="3102119246920354026">ক্যাশে</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">১ দিনের বেশি পুরনো প্রিন্ট জব সরিয়ে দেওয়া হবে</translation> <translation id="3268178239013324452">প্রিন্ট করা যায়নি - প্রিন্টারের ঢাকনা ভাল করে বন্ধ করা হয়নি</translation> <translation id="3310640316857623290">যতদূর পর্যন্ত লেটেন্সির ঊর্ধ্বসীমা অনুমোদন করা যায়, ডিএনএস লেটেন্সি উল্লেখযোগ্যভাবে তার চেয়ে বেশি</translation> +<translation id="3328783797891415197">টেস্ট করা হচ্ছে</translation> <translation id="3369013195428705271">আপনি কি সব প্রিন্ট ইতিহাস মুছে ফেলতে চান? এখন যে প্রিন্ট করার কাজগুলি চলছে সেগুলি মোছা হবে না।</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" />টি পৃষ্ঠার মধ্যে <ph name="PRINTED_PAGES" /> নম্বর পৃষ্ঠা প্রিন্ট করা হয়েছে।</translation> <translation id="3459509316159669723">প্রিন্ট হচ্ছে</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">প্রিন্টার</translation> <translation id="4131410914670010031">সাদা ও কালো</translation> <translation id="4145784616224233563">HTTP ফায়ারওয়াল</translation> +<translation id="4170700058716978431">ব্যর্থ হয়েছে</translation> <translation id="4227825898293920515">পাসওয়ার্ডের মেয়াদ <ph name="TIME" />-এ শেষ হবে</translation> <translation id="4238516577297848345">প্রিন্ট করার কোনও কাজ চালু নেই</translation> <translation id="4297501883039923494">বন্ধ হয়ে গেছে - অজানা সমস্যা</translation> @@ -104,16 +110,19 @@ <translation id="4773299976671772492">থামানো হয়েছে</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> প্রিন্ট করার কাজ বাতিল করা হয়েছে</translation> <translation id="4832079907277790330">Files অ্যাপে ফোল্ডার বেছে নিন...</translation> +<translation id="4848429997038228357">টেস্ট করা হচ্ছে</translation> <translation id="4890353053343094602">অবিলম্বে একটি নতুন পাসওয়ার্ড বেছে নিন</translation> <translation id="4917889632206600977">বন্ধ হয়ে গেছে - কাগজ শেষ হয়ে গেছে</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> সেকেন্ডে <ph name="RATE" /> চার্জ হয়েছে।</translation> <translation id="4932733599132424254">তারিখ</translation> <translation id="4985509611418653372">চালান</translation> +<translation id="500920857929044050">টেস্ট বন্ধ করুন</translation> <translation id="5154917547274118687">স্মৃতি</translation> <translation id="5168185087976003268">ব্যাটারির স্বাস্থ্য</translation> <translation id="520299634122159966">স্ক্যানার উপলভ্য নেই</translation> <translation id="5212543919916444558">আপনাকে সাহায্য করতে পারি এমন কিছুই আপনার স্ক্রিনে আমি খুঁজে পাইনি। আমাকে কিছু জিজ্ঞাসা করতে মাইকে ট্যাপ করুন।</translation> <translation id="5222676887888702881">সাইন-আউট করুন</translation> +<translation id="5264277876637023664">সিপিইউ টেস্ট করুন</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">রুটিন আবার রান করান</translation> <translation id="5317780077021120954">সেভ করুন</translation> @@ -126,17 +135,22 @@ <translation id="54609108002486618">পরিচালিত</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">সহায়তা কেন্দ্রে গিয়ে আরও জানুন</translation> +<translation id="5635169860413004179">রিপোর্ট দেখুন</translation> <translation id="5719918614880940190">এটি সিপিইউয়ের ব্যবহার পরিমাপ করে এবং এটি সব কোরের সংমিশ্রণ</translation> +<translation id="5797428682393400134">সফল হয়েছে</translation> <translation id="5832805196449965646">একজন ব্যক্তিকে যোগ করুন</translation> <translation id="5895138241574237353">পুনর্সূচনা</translation> +<translation id="5931523347251946569">ফাইল পাওয়া যায়নি</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, ভার্সন <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">বন্ধ</translation> <translation id="6048107060512778456">প্রিন্ট করা যায়নি - প্রিন্টারে কাগজ আটকে গেছে</translation> <translation id="6050189528197190982">গ্রেস্কেল</translation> <translation id="6058625436358447366">সম্পূর্ণ করতে, আপনার পুরনো ও নতুন পাসওয়ার্ড লিখুন</translation> <translation id="6061772781719867950">HTTP অনুরোধ সফল হয়নি</translation> +<translation id="6104112872696127344">স্ক্যানিং বাতিল করা হয়েছে</translation> <translation id="6106186594183574873">সম্পূর্ণ করতে, আপনার পুরনো পাসওয়ার্ড লিখুন</translation> <translation id="6108689792487843350">নেটওয়ার্ক গেটওয়ে অ্যাক্সেস করা যাচ্ছে না</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">সম্পূর্ণ করতে, আপনার নতুন পাসওয়ার্ড লিখুন</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">আরও জানুন</translation> @@ -147,6 +161,7 @@ <translation id="649050271426829538">বন্ধ হয়ে গেছে - প্রিন্টারে কাগজ আটকে গেছে</translation> <translation id="6517239166834772319">ঘুরে দেখুন</translation> <translation id="6527081081771465939">অজানা ওয়াই-ফাই সিকিউরিটি প্রোটোকল</translation> +<translation id="6532051501443766164">রিপোর্ট লুকিয়ে রাখুন</translation> <translation id="65587193855025101">ফ্ল্যাটবেড</translation> <translation id="6564646048574748301">প্রিন্ট করা যায়নি - প্রিন্টারের সাথে কানেক্ট করা যাচ্ছে না</translation> <translation id="6618744767048954150">চলছে</translation> @@ -154,6 +169,7 @@ <translation id="6643016212128521049">সাফ করুন</translation> <translation id="6704062477274546131">DNS রেজোলিউশন</translation> <translation id="6747215703636344499">বন্ধ হয়ে গেছে - আউটপুট ট্রে ভর্তি হয়ে গেছে</translation> +<translation id="6756731097889387912">স্ক্যানিং বাতিল করা যায়নি</translation> <translation id="6766275201586212568">DNS রেজোলিউশন সফল হয়নি</translation> <translation id="6768237774506518020">DNS রেজোলিউশনের বেশি ফেল রেট</translation> <translation id="6839141349259399400">স্ক্যানারের সাথে কানেক্ট করা যাচ্ছে না?</translation> @@ -169,6 +185,7 @@ <translation id="7648838807254605802">বেশি HTTPS লেটেন্সি</translation> <translation id="7658239707568436148">বাতিল</translation> <translation id="7690294790491645610">নতুন পাসওয়ার্ড নিশ্চিত করুন</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> টেস্ট</translation> <translation id="7805768142964895445">স্থিতি</translation> <translation id="7855434858642800953">স্ক্যান করা ফাইল সেভ হয়েছে!</translation> <translation id="7928373994957558460">ফাইলের লোকেশন দেখুন</translation> @@ -196,6 +213,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">ডিফল্ট</translation> <translation id="8845001906332463065">সাহায্য পান</translation> +<translation id="8881098542468797602">টেস্ট সফল হয়েছে</translation> <translation id="8910721771319628100">নেটওয়ার্ক লেটেন্সির যে ঊর্ধসীমা রয়েছে, তার চেয়ে ডিফল্ট নেটওয়ার্ক গেটওয়ের লেটেন্সি বেশি</translation> <translation id="8919837981463578619">প্রিন্ট করা যায়নি - ট্রে পাওয়া যাচ্ছে না</translation> <translation id="8928727111548978589">প্রিন্ট করা যায়নি - কাগজ শেষ হয়ে গেছে</translation> @@ -205,4 +223,6 @@ <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" />-এর টিকিট রিফ্রেশ করুন</translation> <translation id="9106415115617144481">স্ক্যান করা পৃষ্ঠা <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">আনলক</translation> +<translation id="9149391708638971077">মেমরি টেস্ট করুন</translation> +<translation id="982713511914535780">ডিসচার্জ টেস্ট করুন</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 5adc2023f..a087fff 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -22,7 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> upravlja ovim korisnikom i može udaljeno upravljati postavkama i pratiti aktivnost korisnika.</translation> <translation id="150962533380566081">Nevažeći PUK.</translation> <translation id="1510238584712386396">Pokretač</translation> -<translation id="1621067168122174824">Pokreni test napunjenosti</translation> +<translation id="1621067168122174824">Pokreni test punjenja</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (broj nizova: <ph name="THREAD_COUNT" />)</translation> <translation id="1641857168437328880">Ulagač za dokumente (jednostrano skeniranje)</translation> <translation id="1644574205037202324">Historija</translation> @@ -49,6 +49,7 @@ <translation id="2517472476991765520">Skeniraj</translation> <translation id="2570743873672969996">Pokretanje testa <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Uredu</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="3008341117444806826">OSVJEŽI</translation> @@ -64,7 +65,7 @@ <translation id="3246869037381808805">Zadaci za štampanje stariji od 1 dana će se ukloniti</translation> <translation id="3268178239013324452">Nije uspjelo – poklopac je otvoren</translation> <translation id="3310640316857623290">Latentnost DNS-a je znatno iznad dozvoljenog praga</translation> -<translation id="3328783797891415197">Test se izvodi</translation> +<translation id="3328783797891415197">Test je u toku</translation> <translation id="3369013195428705271">Jeste li sigurni da želite obrisati svu historiju štampanja? Vaši trenutni zadaci štampanja se neće izbrisati.</translation> <translation id="3456078764689556234">Odštampanih stanica: <ph name="PRINTED_PAGES" /> od <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Štampanje</translation> @@ -84,7 +85,7 @@ <translation id="4034824040120875894">Štampač</translation> <translation id="4131410914670010031">Crno-bijelo</translation> <translation id="4145784616224233563">HTTP zaštitni zid</translation> -<translation id="4170700058716978431">NIJE USPJELO</translation> +<translation id="4170700058716978431">NEUSPJEŠNO</translation> <translation id="4227825898293920515">Lozinka će isteći za <ph name="TIME" /></translation> <translation id="4238516577297848345">Nema aktivnih zadataka za štampanje</translation> <translation id="4297501883039923494">Zaustavljeno – nepoznata greška</translation> @@ -109,7 +110,7 @@ <translation id="4773299976671772492">Zaustavljeno</translation> <translation id="4808449224298348341">Zadatak za štampanje dokumenta <ph name="DOCUMENT_TITLE" /> je otkazan</translation> <translation id="4832079907277790330">Odaberite folder u aplikaciji Fajlovi...</translation> -<translation id="4848429997038228357">IZVODI SE</translation> +<translation id="4848429997038228357">U TOKU</translation> <translation id="4890353053343094602">Odmah odaberite novu lozinku</translation> <translation id="4917889632206600977">Zaustavljeno – nestalo je papira</translation> <translation id="4921665434385737356">Napunjeno <ph name="RATE" /> za <ph name="NUM_SECONDS" /> s.</translation> @@ -122,7 +123,7 @@ <translation id="5212543919916444558">Ne mogu pronaći ništa na ekranu u vezi s čim mogu pomoći. Pokušajte dodirnuti mikrofon da me nešto pitate.</translation> <translation id="5222676887888702881">Odjava</translation> -<translation id="5264277876637023664">Pokreni test procesora</translation> +<translation id="5264277876637023664">Pokreni test CPU-a</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Ponovo pokreni rutine</translation> <translation id="5317780077021120954">Sačuvaj</translation> @@ -135,12 +136,12 @@ <translation id="54609108002486618">Upravljani</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Saznajte više u Centru za pomoć</translation> -<translation id="5635169860413004179">Pogledaj izvješće</translation> +<translation id="5635169860413004179">Prikaži izvještaj</translation> <translation id="5719918614880940190">Ovim se mjeri korištenje CPU-a i predstavlja zbir svih jezgri</translation> -<translation id="5797428682393400134">USPJEH</translation> +<translation id="5797428682393400134">USPJEŠNO</translation> <translation id="5832805196449965646">Dodaj osobu</translation> <translation id="5895138241574237353">Ponovo pokreni</translation> -<translation id="5931523347251946569">Datoteka nije pronađena</translation> +<translation id="5931523347251946569">Fajl nije pronađen</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, verzija <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Zatvori</translation> <translation id="6048107060512778456">Nije uspjelo – papir je zaglavljen</translation> @@ -150,7 +151,7 @@ <translation id="6104112872696127344">Skeniranje je otkazano</translation> <translation id="6106186594183574873">Unesite staru lozinku da završite</translation> <translation id="6108689792487843350">Pristupnik je van dometa</translation> -<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Unesite novu lozinku da završite</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Saznajte više</translation> @@ -161,7 +162,7 @@ <translation id="649050271426829538">Zaustavljeno – papir je zaglavljen</translation> <translation id="6517239166834772319">Istražite</translation> <translation id="6527081081771465939">Nepoznati sigurnosni protokol za WiFi</translation> -<translation id="6532051501443766164">Sakrij izvješće</translation> +<translation id="6532051501443766164">Sakrij izvještaj</translation> <translation id="65587193855025101">Položeno</translation> <translation id="6564646048574748301">Nije uspjelo – štampač je nedostupan</translation> <translation id="6618744767048954150">Pokrenuto</translation> @@ -185,7 +186,7 @@ <translation id="7648838807254605802">Visoka HTTPs latentnost</translation> <translation id="7658239707568436148">Otkaži</translation> <translation id="7690294790491645610">Potvrdite novu lozinku</translation> -<translation id="7732651821766520760">Test <ph name="TEST_NAME" /></translation> +<translation id="7732651821766520760">Test: <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Status</translation> <translation id="7855434858642800953">Skenirani fajl je sačuvan!</translation> <translation id="7928373994957558460">Prikaži lokaciju fajla</translation> @@ -213,7 +214,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Zadano</translation> <translation id="8845001906332463065">Potražite pomoć</translation> -<translation id="8881098542468797602">Test je uspio</translation> +<translation id="8881098542468797602">Test je uspješan</translation> <translation id="8910721771319628100">Zadana mreža je iznad praga latentnosti</translation> <translation id="8919837981463578619">Nije uspjelo – nedostaje ladica</translation> <translation id="8928727111548978589">Nije uspjelo – nema papira</translation>
diff --git a/chromeos/strings/chromeos_strings_ca.xtb b/chromeos/strings/chromeos_strings_ca.xtb index 0689d0b..a95df974 100644 --- a/chromeos/strings/chromeos_strings_ca.xtb +++ b/chromeos/strings/chromeos_strings_ca.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Escaneja</translation> <translation id="2570743873672969996">S'està executant la prova <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">D'acord</translation> <translation id="2805756323405976993">Aplicacions</translation> <translation id="2872961005593481000">Apaga</translation> <translation id="3008341117444806826">ACTUALITZA</translation>
diff --git a/chromeos/strings/chromeos_strings_cs.xtb b/chromeos/strings/chromeos_strings_cs.xtb index d32aa4e..593b473 100644 --- a/chromeos/strings/chromeos_strings_cs.xtb +++ b/chromeos/strings/chromeos_strings_cs.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Vyhledat</translation> <translation id="2570743873672969996">Běží test <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Systém</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikace</translation> <translation id="2872961005593481000">Vypnout</translation> <translation id="3008341117444806826">OBNOVIT</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 81d2bcc..358b2e3 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Scan</translation> <translation id="2570743873672969996">Kører testen <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Sluk</translation> <translation id="3008341117444806826">OPDATER</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index fd42c50e..51a2d896 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Suchen</translation> <translation id="2570743873672969996">Test für <ph name="TEST_NAME" /> wird ausgeführt…</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Herunterfahren</translation> <translation id="3008341117444806826">AKTUALISIEREN</translation>
diff --git a/chromeos/strings/chromeos_strings_el.xtb b/chromeos/strings/chromeos_strings_el.xtb index a2755f39..64ff4c2 100644 --- a/chromeos/strings/chromeos_strings_el.xtb +++ b/chromeos/strings/chromeos_strings_el.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Σάρωση</translation> <translation id="2570743873672969996">Εκτέλεση δοκιμής <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Σύστημα</translation> +<translation id="2740531572673183784">ΟK</translation> <translation id="2805756323405976993">Εφαρμογές </translation> <translation id="2872961005593481000">Τερματισμός λειτουργίας</translation> <translation id="3008341117444806826">ΑΝΑΝΕΩΣΗ</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 4db77f8..9bbe855 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Scan</translation> <translation id="2570743873672969996">Running <ph name="TEST_NAME" /> test…</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="3008341117444806826">REFRESH</translation>
diff --git a/chromeos/strings/chromeos_strings_es-419.xtb b/chromeos/strings/chromeos_strings_es-419.xtb index a1a3be3..d255f19 100644 --- a/chromeos/strings/chromeos_strings_es-419.xtb +++ b/chromeos/strings/chromeos_strings_es-419.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Buscar</translation> <translation id="2570743873672969996">Ejecutando la prueba <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2872961005593481000">Apagar</translation> <translation id="3008341117444806826">ACTUALIZAR</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb index 0f3b7ee..67f24ae 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Buscar</translation> <translation id="2570743873672969996">Ejecutando prueba <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicaciones</translation> <translation id="2872961005593481000">Apagar</translation> <translation id="3008341117444806826">ACTUALIZAR</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index f326088..9dc9e1e8 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Kontrolli</translation> <translation id="2570743873672969996">Testi <ph name="TEST_NAME" /> käitamine …</translation> <translation id="2620436844016719705">Süsteem</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Rakendused</translation> <translation id="2872961005593481000">Lülita välja</translation> <translation id="3008341117444806826">VÄRSKENDA</translation>
diff --git a/chromeos/strings/chromeos_strings_eu.xtb b/chromeos/strings/chromeos_strings_eu.xtb index 319dc1e..102dda6c3 100644 --- a/chromeos/strings/chromeos_strings_eu.xtb +++ b/chromeos/strings/chromeos_strings_eu.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> domeinuak kudeatzen du erabiltzaile hau, eta baliteke urrunetik haren ezarpenak kudeatzea eta jarduerak gainbegiratzea.</translation> <translation id="150962533380566081">PUK kodeak ez du balio.</translation> <translation id="1510238584712386396">Abiarazlea</translation> +<translation id="1621067168122174824">Abiarazi karga-abiaduraren proba</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> hari)</translation> <translation id="1641857168437328880">Dokumentu-elikatzailea (alde bakarrekoa)</translation> <translation id="1644574205037202324">Historia</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS bidezko ebazlea badago</translation> <translation id="1743558184855585519">Bateria agortutzat jotzen da mugara iritsitakoan</translation> +<translation id="1792647875738159689">Eskaneatze-prozesua bertan behera uzten</translation> <translation id="1905710495812624430">Saiakera-muga gainditu da.</translation> <translation id="1930797645656624981">Chrome OS sistemako idazketa-metodoaren zerbitzua</translation> <translation id="1947737735496445907">Inprimatuta</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Bilatu</translation> <translation id="2570743873672969996">Abian da <ph name="TEST_NAME" /> proba…</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Ados</translation> <translation id="2805756323405976993">Aplikazioak</translation> <translation id="2872961005593481000">Itzali</translation> <translation id="3008341117444806826">FRESKATU</translation> <translation id="3009958530611748826">Hautatu zer karpetatan gorde nahi duzun</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Probak huts egin du</translation> <translation id="3083667275341675831">Konexio-diagnostikoak</translation> <translation id="3091839911843451378">Hutsegitea - Gelditu egin da</translation> <translation id="3102119246920354026">Cachea</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Egun bat baino gehiagoko inprimatze-lanak kendu egingo dira</translation> <translation id="3268178239013324452">Hutsegitea - Atea irekita dago</translation> <translation id="3310640316857623290">DNSaren itxarote-denbora onartzen den atalasetik askoz gorago dago</translation> +<translation id="3328783797891415197">Abian da proba</translation> <translation id="3369013195428705271">Ziur inprimatze-historia guztia garbitu nahi duzula? Ez dira garbituko abian dauden inprimatze-lanak.</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" /> orria inprimatu da.</translation> <translation id="3459509316159669723">Inprimaketa</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Inprimagailua</translation> <translation id="4131410914670010031">Zuri-beltzez</translation> <translation id="4145784616224233563">HTTP protokolorako suebakia</translation> +<translation id="4170700058716978431">EZ DA GAINDITU</translation> <translation id="4227825898293920515"><ph name="TIME" /> barru iraungiko da pasahitza</translation> <translation id="4238516577297848345">Ez dago inprimatze-lanik abian</translation> <translation id="4297501883039923494">Geldituta: errore ezezaguna</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Gelditu egin da</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> inprimatze-lana bertan behera utzi da</translation> <translation id="4832079907277790330">Hautatu karpeta Fitxategiak aplikazioan…</translation> +<translation id="4848429997038228357">ABIAN</translation> <translation id="4890353053343094602">Aukeratu beste bat berehala</translation> <translation id="4917889632206600977">Geldituta: ez dago paperik</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> segundo behar izan dira <ph name="RATE" /> kargatzeko.</translation> <translation id="4932733599132424254">Data</translation> <translation id="4985509611418653372">Exekutatu</translation> +<translation id="500920857929044050">Gelditu proba</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Bateriaren egoera</translation> <translation id="520299634122159966">Ez dago eskanerrik erabilgarri</translation> <translation id="5212543919916444558">Ezin dizut lagundu pantailako ezerekin. Sakatu mikrofonoa zerbait galdetu nahi badidazu.</translation> <translation id="5222676887888702881">Amaitu saioa</translation> +<translation id="5264277876637023664">Egin PUZaren proba</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" /> (<ph name="CREATION_TIME" />), <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Berrabiarazi ohiturak</translation> <translation id="5317780077021120954">Gorde</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Kudeatua</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Informazio gehiago lortzeko, joan Laguntza-zentroa atalera</translation> +<translation id="5635169860413004179">Ikusi txostena</translation> <translation id="5719918614880940190">PUZaren erabilera neurtzen du honek, eta nukleo guztien multzokatze bat da</translation> +<translation id="5797428682393400134">GAINDITU DA</translation> <translation id="5832805196449965646">Gehitu pertsona bat</translation> <translation id="5895138241574237353">Berrabiarazi</translation> +<translation id="5931523347251946569">Ez da aurkitu fitxategia</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, <ph name="MILESTONE_VERSION" /> bertsioa)</translation> <translation id="6040143037577758943">Itxi</translation> <translation id="6048107060512778456">Hutsegitea - Papera trabatuta dago</translation> <translation id="6050189528197190982">Gris-eskala</translation> <translation id="6058625436358447366">Amaitzeko, idatzi pasahitz zaharra eta berria</translation> <translation id="6061772781719867950">huts egin dute HTTP eskaerek</translation> +<translation id="6104112872696127344">Bertan behera utzi da eskaneatze-prozesua</translation> <translation id="6106186594183574873">Amaitzeko, idatzi pasahitz zaharra</translation> <translation id="6108689792487843350">Ezin da konektatu atebidera</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Amaitzeko, idatzi pasahitz berria</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Lortu informazio gehiago</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Geldituta: papera trabatuta dago</translation> <translation id="6517239166834772319">Arakatu</translation> <translation id="6527081081771465939">Wifiaren segurtasun-protokoloa ezezaguna da</translation> +<translation id="6532051501443766164">Ezkutatu txostena</translation> <translation id="65587193855025101">Eskaner horizontala</translation> <translation id="6564646048574748301">Hutsegitea - Inprimagailua ez da aurkitu</translation> <translation id="6618744767048954150">Abian</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Garbitu</translation> <translation id="6704062477274546131">DNS bidezko ebazpena</translation> <translation id="6747215703636344499">Geldituta: irteera-erretilua beteta dago</translation> +<translation id="6756731097889387912">Ezin izan da bertan behera utzi eskaneatze-prozesua</translation> <translation id="6766275201586212568">huts egin dute DNS bidezko ebazpenek</translation> <translation id="6768237774506518020">DNS bidezko ebazpenen hutsegite-tasa altua</translation> <translation id="6839141349259399400">Ezin zara konektatu eskanerretara?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">HTTPS eskaeren itxarote-denbora luzea</translation> <translation id="7658239707568436148">Utzi</translation> <translation id="7690294790491645610">Berretsi pasahitz berria</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> neurtzeko proba</translation> <translation id="7805768142964895445">Egoera</translation> <translation id="7855434858642800953">Gorde da eskaneatutako fitxategia</translation> <translation id="7928373994957558460">Erakutsi fitxategiaren kokapena</translation> @@ -181,7 +198,7 @@ <translation id="8208861521865154048">Abantailak</translation> <translation id="8230672074305416752">Ezin izan da egin ping sarerako atebide lehenetsian</translation> <translation id="8294431847097064396">Iturburua</translation> -<translation id="8302368968391049045">HTTPS protokolorako suebakia</translation> +<translation id="8302368968391049045">HTTPSrako suebakia</translation> <translation id="8347227221149377169">Inprimatze-lanak</translation> <translation id="8352772353338965963">Gehitu kontu bat saio-hasiera anitzean. Saioa hasita daukaten kontu guztiak pasahitzik gabe atzi daitezkeenez, kontu fidagarriekin soilik erabili behar da eginbide hori.</translation> <translation id="8364946094152050673">Izenen zerbitzariak hutsik daude</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Lehenetsia</translation> <translation id="8845001906332463065">Lortu laguntza</translation> +<translation id="8881098542468797602">Gainditu da proba</translation> <translation id="8910721771319628100">Sare lehenetsia itxarote-denboraren atalasetik gora dago</translation> <translation id="8919837981463578619">Hutsegitea - Erretilua falta da</translation> <translation id="8928727111548978589">Hutsegitea - Ez dago paperik</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> saiakera gelditzen dira</translation> +<translation id="8970109610781093811">Abiarazi berriro</translation> <translation id="9088306295921699330">Uneko erabilera</translation> <translation id="910415269708673980">Freskatu <ph name="PRINCIPAL_NAME" /> erabiltzailearen zerbitzu-eskaera</translation> <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />. orria eskaneatzen</translation> <translation id="9111102763498581341">Desblokeatu</translation> +<translation id="9149391708638971077">Egin memoriaren proba</translation> +<translation id="982713511914535780">Egin bateria deskargatzeko abiaduraren proba</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index e1f53eeb..753f6de 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> این کاربر را مدیریت میکند و میتواند ازراهدور تنظیمات را مدیریت کند و بر فعالیت کاربر نظارت داشته باشد.</translation> <translation id="150962533380566081">PUK نامعتبر.</translation> <translation id="1510238584712386396">راهانداز</translation> +<translation id="1621067168122174824">اجرای آزمایش شارژ</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> رشته)</translation> <translation id="1641857168437328880">تغذیهکننده سند (یکرو)</translation> <translation id="1644574205037202324">سابقه</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">موجود بودن رافع ساناد</translation> <translation id="1743558184855585519">وقتی باتری به این محدوده برسد، فرسوده بهحساب میآید</translation> +<translation id="1792647875738159689">درحال لغو اسکن کردن</translation> <translation id="1905710495812624430">به حداکثر تعداد مجاز تلاش رسیدهاید.</translation> <translation id="1930797645656624981">سرویس روش ورودی سیستمعامل Chrome</translation> <translation id="1947737735496445907">چاپشده</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">اسکن</translation> <translation id="2570743873672969996">درحال اجرای آزمایش <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">سیستم</translation> +<translation id="2740531572673183784">تأیید</translation> <translation id="2805756323405976993">برنامهها</translation> <translation id="2872961005593481000">خاموش کردن</translation> <translation id="3008341117444806826">بازخوانی</translation> <translation id="3009958530611748826">پوشهای را برای ذخیره در آن انتخاب کنید</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> میلیآمپر</translation> +<translation id="3069085583900247081">آزمایش ناموفق بود</translation> <translation id="3083667275341675831">تشخیص خطای اتصال</translation> <translation id="3091839911843451378">انجام نشد - متوقف شده است</translation> <translation id="3102119246920354026">حافظه پنهان</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">کارهای چاپ قدیمیتر از ۱ روز برداشته میشوند</translation> <translation id="3268178239013324452">انجام نشد - در باز است</translation> <translation id="3310640316857623290">تأخیر در ساناد بهمیزان قابلتوجهی از آستانه مجاز بالاتر است</translation> +<translation id="3328783797891415197">درحال اجرای آزمایش</translation> <translation id="3369013195428705271">مطمئن هستید که میخواهید همه سابقههای چاپ را حذف کنید؟ کارهای چاپ شما که درحال انجام هستند حذف نخواهند شد.</translation> <translation id="3456078764689556234">صفحه <ph name="PRINTED_PAGES" /> از مجموع <ph name="TOTAL_PAGES" /> صفحه چاپ شده است.</translation> <translation id="3459509316159669723">درحال چاپ</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">چاپگر</translation> <translation id="4131410914670010031">سیاه و سفید</translation> <translation id="4145784616224233563">دیوار آتش HTTPS</translation> +<translation id="4170700058716978431">ناموفق</translation> <translation id="4227825898293920515">گذرواژه <ph name="TIME" /> دیگر منقضی میشود</translation> <translation id="4238516577297848345">هیچ کار چاپی درحال انجام نیست</translation> <translation id="4297501883039923494">متوقف شد - خطای نامشخص</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">متوقف شد</translation> <translation id="4808449224298348341">کار چاپ <ph name="DOCUMENT_TITLE" /> لغو شد</translation> <translation id="4832079907277790330">انتخاب پوشه در برنامه Files…</translation> +<translation id="4848429997038228357">درحال اجرا</translation> <translation id="4890353053343094602">انتخاب فوری موردی جدید</translation> <translation id="4917889632206600977">متوقف شد - کاغذ تمام شده است</translation> <translation id="4921665434385737356">در <ph name="NUM_SECONDS" /> ثانیه <ph name="RATE" /> شارژ شد.</translation> <translation id="4932733599132424254">تاریخ</translation> <translation id="4985509611418653372">اجرا</translation> +<translation id="500920857929044050">توقف آزمایش</translation> <translation id="5154917547274118687">حافظه</translation> <translation id="5168185087976003268">سلامت باتری</translation> <translation id="520299634122159966">اسکنری دردسترس نیست</translation> <translation id="5212543919916444558">در صفحهتان چیزی پیدا نمیکنم تا درمورد آن کمکتان کنم. برای درخواست از من، روی میکروفون ضربه بزنید.</translation> <translation id="5222676887888702881">خروج از سیستم</translation> +<translation id="5264277876637023664">اجرای آزمایش واحد پردازش مرکزی</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />، <ph name="PRINTER_NAME" />، <ph name="CREATION_TIME" />، <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">اجرای دوباره روالها</translation> <translation id="5317780077021120954">ذخیره</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">مدیریت شده</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">در «مرکز راهنمایی» اطلاعات بیشتری کسب کنید</translation> +<translation id="5635169860413004179">دیدن گزارش</translation> <translation id="5719918614880940190">این مورد میزان استفاده از CPU را اندازهگیری میکند و مجموع همه هستهها است</translation> +<translation id="5797428682393400134">موفقیتآمیز</translation> <translation id="5832805196449965646">افزودن شخص</translation> <translation id="5895138241574237353">راهاندازی مجدد</translation> +<translation id="5931523347251946569">فایل پیدا نشد</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />، نسخه <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">بستن</translation> <translation id="6048107060512778456">انجام نشد - کاغذ گیر کرده است</translation> <translation id="6050189528197190982">سیاهوسفید</translation> <translation id="6058625436358447366">برای تکمیل کار، گذرواژههای قدیمی و جدیدتان را وارد کنید</translation> <translation id="6061772781719867950">درخواستهای HTTP ناموفق بود</translation> +<translation id="6104112872696127344">اسکن کردن لغو شده است</translation> <translation id="6106186594183574873">برای تکمیل کار، گذرواژه قدیمیتان را وارد کنید</translation> <translation id="6108689792487843350">دروازه قابل دسترسی نیست</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> گیگاهرتز / <ph name="MAX" /> گیگاهرتز</translation> <translation id="6146993107019042706">برای تکمیل کار، گذرواژه جدیدتان را وارد کنید</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">بیشتر بدانید</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">متوقف شد - کاغذ گیر کرده است</translation> <translation id="6517239166834772319">کاوش</translation> <translation id="6527081081771465939">پروتکل امنیتی Wi-Fi ناشناس است</translation> +<translation id="6532051501443766164">پنهان کردن گزارش</translation> <translation id="65587193855025101">صفحه مسطح</translation> <translation id="6564646048574748301">انجام نشد - دسترسی به چاپگر ممکن نیست</translation> <translation id="6618744767048954150">درحال اجرا</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">پاک کردن</translation> <translation id="6704062477274546131">وضوح ساناد</translation> <translation id="6747215703636344499">متوقف شد - خروجی پُر است</translation> +<translation id="6756731097889387912">اسکن کردن لغو نشد</translation> <translation id="6766275201586212568">تفکیک ساناد انجام نشد</translation> <translation id="6768237774506518020">میزان خطای تفکیک ساناد بالا است</translation> <translation id="6839141349259399400">نمیتوانید به اسکنر متصل شوید؟</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">تأخیر بالا در HTTPS</translation> <translation id="7658239707568436148">لغو</translation> <translation id="7690294790491645610">تأیید گذرواژه جدید</translation> +<translation id="7732651821766520760">آزمایش <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">وضعیت</translation> <translation id="7855434858642800953">فایل اسکنشده ذخیره شد!</translation> <translation id="7928373994957558460">نمایش مکان فایل</translation> @@ -197,6 +214,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">پیشفرض</translation> <translation id="8845001906332463065">دریافت راهنمایی</translation> +<translation id="8881098542468797602">آزمایش موفق بود</translation> <translation id="8910721771319628100">آستانه تأخیر در شبکه پیشفرض خیلی زیاد است</translation> <translation id="8919837981463578619">انجام نشد - سینی موجود نیست</translation> <translation id="8928727111548978589">انجام نشد - کاغذ تمام شده است</translation> @@ -206,4 +224,6 @@ <translation id="910415269708673980">بازخوانی بلیت برای <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">درحال اسکن کردن صفحه <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">باز کردن قفل</translation> +<translation id="9149391708638971077">اجرای آزمایش حافظه</translation> +<translation id="982713511914535780">اجرای آزمایش تخلیه شارژ</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_fi.xtb b/chromeos/strings/chromeos_strings_fi.xtb index 37f7f7d..b3044f07 100644 --- a/chromeos/strings/chromeos_strings_fi.xtb +++ b/chromeos/strings/chromeos_strings_fi.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Etsi</translation> <translation id="2570743873672969996">Tehdään testiä <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Järjestelmä</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Sovellukset</translation> <translation id="2872961005593481000">Sammuta</translation> <translation id="3008341117444806826">PÄIVITÄ</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index 4bd01597..a8f85ac 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">I-scan</translation> <translation id="2570743873672969996">Nagpapatakbo ng test sa <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Mga App</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="3008341117444806826">I-REFRESH</translation>
diff --git a/chromeos/strings/chromeos_strings_fr-CA.xtb b/chromeos/strings/chromeos_strings_fr-CA.xtb index 0b6d752..202f2c3f 100644 --- a/chromeos/strings/chromeos_strings_fr-CA.xtb +++ b/chromeos/strings/chromeos_strings_fr-CA.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> gère cet utilisateur et peut gérer ses paramètres et faire le suivi de son activité à distance.</translation> <translation id="150962533380566081">Clé PUK non valide.</translation> <translation id="1510238584712386396">Lanceur</translation> +<translation id="1621067168122174824">Exécuter le test de recharge</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> fils d'exécution)</translation> <translation id="1641857168437328880">Chargeur de document (recto)</translation> <translation id="1644574205037202324">Historique</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Lettre</translation> <translation id="1706391837335750954">Présence du résolveur DNS</translation> <translation id="1743558184855585519">On considère que la pile est épuisée lorsqu'elle atteint la limite</translation> +<translation id="1792647875738159689">Annulation de la numérisation en cours…</translation> <translation id="1905710495812624430">Nombre maximal autorisé de tentatives atteint.</translation> <translation id="1930797645656624981">Service de méthode d'entrée Chrome OS</translation> <translation id="1947737735496445907">Imprimée</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Rechercher</translation> <translation id="2570743873672969996">Le test <ph name="TEST_NAME" /> est en cours d'exécution…</translation> <translation id="2620436844016719705">Système</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2872961005593481000">Arrêter</translation> <translation id="3008341117444806826">ACTUALISER</translation> <translation id="3009958530611748826">Sélectionnez un dossier dans lequel enregistrer les fichiers</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Échec du test</translation> <translation id="3083667275341675831">Diagnostics de connectivité</translation> <translation id="3091839911843451378">Échec : imprimante arrêtée</translation> <translation id="3102119246920354026">Cache</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Les tâches d'impression de plus d'un jour seront retirées</translation> <translation id="3268178239013324452">Échec : porte de l'imprimante ouverte</translation> <translation id="3310640316857623290">La latence du DNS dépasse le seuil acceptable de manière considérable</translation> +<translation id="3328783797891415197">Exécution du test en cours…</translation> <translation id="3369013195428705271">Voulez-vous vraiment effacer tout l'historique d'impression? Vos tâches d'impression courantes ne seront pas effacées.</translation> <translation id="3456078764689556234">Page imprimée <ph name="PRINTED_PAGES" /> sur <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Impression</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Imprimante</translation> <translation id="4131410914670010031">Noir et blanc</translation> <translation id="4145784616224233563">Pare-feu HTTP</translation> +<translation id="4170700058716978431">ÉCHEC</translation> <translation id="4227825898293920515">Le mot de passe expire dans <ph name="TIME" /></translation> <translation id="4238516577297848345">Aucune tâche d'impression en cours</translation> <translation id="4297501883039923494">Tâche arrêtée : erreur inconnue</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Arrêté</translation> <translation id="4808449224298348341">Tâche d'impression annulée : <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Sélectionner un dossier dans l'application Fichiers…</translation> +<translation id="4848429997038228357">EXÉCUTION EN COURS…</translation> <translation id="4890353053343094602">Choisissez-en un immédiatement</translation> <translation id="4917889632206600977">Tâche arrêtée : à court de papier</translation> <translation id="4921665434385737356">L'appareil s'est rechargé de <ph name="RATE" /> en <ph name="NUM_SECONDS" /> secondes.</translation> <translation id="4932733599132424254">Date</translation> <translation id="4985509611418653372">Exécuter</translation> +<translation id="500920857929044050">Arrêter le test</translation> <translation id="5154917547274118687">Mémoire</translation> <translation id="5168185087976003268">État de la pile</translation> <translation id="520299634122159966">Aucun numériseur disponible</translation> <translation id="5212543919916444558">Je ne trouve aucun élément sur votre écran pour lequel je peux vous aider. Essayez de toucher le micro pour me demander ce que vous souhaitez.</translation> <translation id="5222676887888702881">Déconnexion</translation> +<translation id="5264277876637023664">Exécuter le test de processeur</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Relancer les routines</translation> <translation id="5317780077021120954">Enregistrer</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Géré</translation> <translation id="5493614766091057239"><ph name="VERDICT" /> : <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">En savoir plus dans notre centre d'aide</translation> +<translation id="5635169860413004179">Afficher le rapport</translation> <translation id="5719918614880940190">Il s'agit d'une mesure de l'usage du processeur, une agrégation de tous les cœurs</translation> +<translation id="5797428682393400134">OPÉRATION RÉUSSIE</translation> <translation id="5832805196449965646">Ajouter une personne</translation> <translation id="5895138241574237353">Redémarrer</translation> +<translation id="5931523347251946569">Fichier introuvable</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, version <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Fermer</translation> <translation id="6048107060512778456">Échec : bourrage de papier</translation> <translation id="6050189528197190982">Échelle de gris</translation> <translation id="6058625436358447366">Pour terminer cette opération, entrez votre ancien mot de passe et le nouveau</translation> <translation id="6061772781719867950">Requêtes HTTP échouées</translation> +<translation id="6104112872696127344">La numérisation a été annulée</translation> <translation id="6106186594183574873">Pour terminer cette opération, entrez votre ancien mot de passe</translation> <translation id="6108689792487843350">Impossible d'atteindre la passerelle</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Pour terminer cette opération, entrez votre nouveau mot de passe</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">En savoir plus</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Tâche arrêtée : bourrage de papier</translation> <translation id="6517239166834772319">Explorer</translation> <translation id="6527081081771465939">Protocole de sécurité Wi-Fi inconnu</translation> +<translation id="6532051501443766164">Masquer le rapport</translation> <translation id="65587193855025101">À plat</translation> <translation id="6564646048574748301">Échec : imprimante inaccessible</translation> <translation id="6618744767048954150">En cours…</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Effacer</translation> <translation id="6704062477274546131">Résolution DNS</translation> <translation id="6747215703636344499">Tâche arrêtée : le plateau de sortie est plein</translation> +<translation id="6756731097889387912">Impossible d'annuler la numérisation</translation> <translation id="6766275201586212568">Échec de résolutions DNS</translation> <translation id="6768237774506518020">Taux d'échec élevé des résolutions DNS</translation> <translation id="6839141349259399400">Impossible d'établir la connexion avec les numériseurs?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Latence HTTPS élevée</translation> <translation id="7658239707568436148">Annuler</translation> <translation id="7690294790491645610">Confirmez le nouveau mot de passe</translation> +<translation id="7732651821766520760">Test <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">État</translation> <translation id="7855434858642800953">Fichier numérisé enregistré!</translation> <translation id="7928373994957558460">Afficher le lieu du fichier</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Par défaut</translation> <translation id="8845001906332463065">Obtenir de l'aide</translation> +<translation id="8881098542468797602">Test réussi</translation> <translation id="8910721771319628100">Le seuil de latence du réseau par défaut est trop élevé</translation> <translation id="8919837981463578619">Échec : bac manquant</translation> <translation id="8928727111548978589">Échec : à court de papier</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" />. Nombre de tentatives restantes : <ph name="ATTEMPTS_LEFT" /></translation> +<translation id="8970109610781093811">Exécuter de nouveau</translation> <translation id="9088306295921699330">Utilisation actuelle</translation> <translation id="910415269708673980">Actualiser le ticket pour <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Numérisation de la page <ph name="PAGE_NUMBER" /> en cours…</translation> <translation id="9111102763498581341">Déverrouiller</translation> +<translation id="9149391708638971077">Exécuter le test de mémoire</translation> +<translation id="982713511914535780">Exécuter le test de décharge</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index deac1d4..6169db3b 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Rechercher</translation> <translation id="2570743873672969996">Exécution du test <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Système</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Applications</translation> <translation id="2872961005593481000">Éteindre</translation> <translation id="3008341117444806826">ACTUALISER</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 217dcbb4..d17ef39 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> xestiona este usuario, e pode axustar a súa configuración e supervisar a súa actividade de forma remota.</translation> <translation id="150962533380566081">O PUK non é válido.</translation> <translation id="1510238584712386396">Menú de aplicacións</translation> +<translation id="1621067168122174824">Realizar proba de carga</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> subprocesos)</translation> <translation id="1641857168437328880">Alimentador de documentos (a unha cara)</translation> <translation id="1644574205037202324">Historial</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">Presenza do solucionador de DNS</translation> <translation id="1743558184855585519">Considérase que a batería está esgotada cando alcanza o límite</translation> +<translation id="1792647875738159689">Cancelando escaneo</translation> <translation id="1905710495812624430">Superouse o número máximo de intentos.</translation> <translation id="1930797645656624981">Servizo do método de introdución de texto de Chrome OS</translation> <translation id="1947737735496445907">Impreso</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Buscar</translation> <translation id="2570743873672969996">Executando proba de <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Aceptar</translation> <translation id="2805756323405976993">Aplicacións</translation> <translation id="2872961005593481000">Pechar</translation> <translation id="3008341117444806826">ACTUALIZAR</translation> <translation id="3009958530611748826">Seleccionar un cartafol para gardar os ficheiros</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Produciuse un erro durante a proba</translation> <translation id="3083667275341675831">Diagnósticos de conectividade</translation> <translation id="3091839911843451378">Produciuse un erro: a impresora está detida</translation> <translation id="3102119246920354026">Caché</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Quitaranse os traballos de impresión de máis de 1 día</translation> <translation id="3268178239013324452">Produciuse un erro: a tapa da impresora está aberta</translation> <translation id="3310640316857623290">A latencia do DNS supera considerablemente o límite permitido</translation> +<translation id="3328783797891415197">Proba en curso</translation> <translation id="3369013195428705271">Seguro que queres borrar todo o historial de impresión? Non se borrarán os traballos de impresión en curso.</translation> <translation id="3456078764689556234">Páxina <ph name="PRINTED_PAGES" /> de <ph name="TOTAL_PAGES" /> impresa.</translation> <translation id="3459509316159669723">Impresión</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Impresora</translation> <translation id="4131410914670010031">Branco e negro</translation> <translation id="4145784616224233563">Firewall HTTP</translation> +<translation id="4170700058716978431">NON SE SUPEROU</translation> <translation id="4227825898293920515">O contrasinal caduca en <ph name="TIME" /></translation> <translation id="4238516577297848345">Non hai ningunha tarefa de impresión en curso</translation> <translation id="4297501883039923494">Detívose (produciuse un erro descoñecido)</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Detido</translation> <translation id="4808449224298348341">Cancelouse o traballo de impresión <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Seleccionar cartafol na aplicación Ficheiros…</translation> +<translation id="4848429997038228357">EN CURSO</translation> <translation id="4890353053343094602">Escolle un novo inmediatamente</translation> <translation id="4917889632206600977">Detívose (esgotouse o papel)</translation> <translation id="4921665434385737356">Cargouse un <ph name="RATE" /> en <ph name="NUM_SECONDS" /> segundos.</translation> <translation id="4932733599132424254">Data</translation> <translation id="4985509611418653372">Executar</translation> +<translation id="500920857929044050">Deter proba</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Estado da batería</translation> <translation id="520299634122159966">Non hai ningún escáner dispoñible</translation> <translation id="5212543919916444558">Non atopo nada na pantalla co que che poida axudar. Proba a tocar o micrófono para preguntarme algo.</translation> <translation id="5222676887888702881">Pechar sesión</translation> +<translation id="5264277876637023664">Realizar proba de CPU</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Volver executar rutinas</translation> <translation id="5317780077021120954">Gardar</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Dispositivo xestionado</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Máis información no Centro de Axuda</translation> +<translation id="5635169860413004179">Ver informe</translation> <translation id="5719918614880940190">Mide o uso da CPU sumando o de todos os núcleos</translation> +<translation id="5797428682393400134">SUPEROUSE</translation> <translation id="5832805196449965646">Engadir unha persoa</translation> <translation id="5895138241574237353">Reiniciar</translation> +<translation id="5931523347251946569">Non se encontrou o ficheiro</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, versión <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Pechar</translation> <translation id="6048107060512778456">Produciuse un erro: atasco de papel</translation> <translation id="6050189528197190982">Escala de grises</translation> <translation id="6058625436358447366">Para finalizar, introduce o teu antigo contrasinal e o novo</translation> <translation id="6061772781719867950">Produciuse un erro coas solicitudes HTTPS</translation> +<translation id="6104112872696127344">Cancelouse o escaneo</translation> <translation id="6106186594183574873">Para finalizar, introduce o teu antigo contrasinal</translation> <translation id="6108689792487843350">Non se puido acceder á pasarela</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Para finalizar, introduce o teu novo contrasinal</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Máis información</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Detívose (atasco de papel)</translation> <translation id="6517239166834772319">Explorar</translation> <translation id="6527081081771465939">Descoñécese o protocolo de seguranza da wifi</translation> +<translation id="6532051501443766164">Ocultar informe</translation> <translation id="65587193855025101">Superficie plana</translation> <translation id="6564646048574748301">Produciuse un erro: non se puido acceder á impresora</translation> <translation id="6618744767048954150">En execución</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Borrar</translation> <translation id="6704062477274546131">Resolución de DNS</translation> <translation id="6747215703636344499">Detívose (a saída está chea)</translation> +<translation id="6756731097889387912">Non se puido cancelar o escaneo</translation> <translation id="6766275201586212568">Produciuse un erro coas resolucións de DNS</translation> <translation id="6768237774506518020">Hai un alto índice de erros relacionados coas resolucións de DNS</translation> <translation id="6839141349259399400">Non podes conectarte a ningún escáner?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Latencia de HTTPS alta</translation> <translation id="7658239707568436148">Cancelar</translation> <translation id="7690294790491645610">Confirmar contrasinal novo</translation> +<translation id="7732651821766520760">Proba de <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Estado</translation> <translation id="7855434858642800953">Gardouse o ficheiro escaneado</translation> <translation id="7928373994957558460">Mostrar localización do ficheiro</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Predeterminado</translation> <translation id="8845001906332463065">Obter axuda</translation> +<translation id="8881098542468797602">Superouse a proba</translation> <translation id="8910721771319628100">A rede predeterminada supera o límite de latencia</translation> <translation id="8919837981463578619">Produciuse un erro: falta a bandexa</translation> <translation id="8928727111548978589">Produciuse un erro: a impresora quedou sen papel</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> Intentos restantes: <ph name="ATTEMPTS_LEFT" /></translation> +<translation id="8970109610781093811">Repetir proba</translation> <translation id="9088306295921699330">En uso</translation> <translation id="910415269708673980">Actualiza o tícket de <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Escaneando páxina <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Desbloquear</translation> +<translation id="9149391708638971077">Realizar proba de memoria</translation> +<translation id="982713511914535780">Realizar proba de descarga</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index a684c7a..e237267 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">સ્કૅન કરો</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> પરીક્ષણ ચલાવી રહ્યાં છીએ…</translation> <translation id="2620436844016719705">સિસ્ટમ</translation> +<translation id="2740531572673183784">બરાબર, સમજાઇ ગયું</translation> <translation id="2805756323405976993">એપ્સ</translation> <translation id="2872961005593481000">શટ ડાઉન કરો</translation> <translation id="3008341117444806826">રિફ્રેશ કરો</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 7972660..33b7b08 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">स्कैन करें</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> की जांच की जा रही है...</translation> <translation id="2620436844016719705">सिस्टम</translation> +<translation id="2740531572673183784">ठीक है</translation> <translation id="2805756323405976993">ऐप्स</translation> <translation id="2872961005593481000">शट डाउन करें</translation> <translation id="3008341117444806826">रीफ़्रेश करें</translation>
diff --git a/chromeos/strings/chromeos_strings_hr.xtb b/chromeos/strings/chromeos_strings_hr.xtb index 838d4e7b..4d5cff81 100644 --- a/chromeos/strings/chromeos_strings_hr.xtb +++ b/chromeos/strings/chromeos_strings_hr.xtb
@@ -46,6 +46,7 @@ <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> <translation id="2517472476991765520">Traži</translation> <translation id="2620436844016719705">Sustav</translation> +<translation id="2740531572673183784">U redu</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="3008341117444806826">OSVJEŽI</translation>
diff --git a/chromeos/strings/chromeos_strings_hu.xtb b/chromeos/strings/chromeos_strings_hu.xtb index e0fdd5f..0a1aeef 100644 --- a/chromeos/strings/chromeos_strings_hu.xtb +++ b/chromeos/strings/chromeos_strings_hu.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Keresés</translation> <translation id="2570743873672969996">„<ph name="TEST_NAME" />” teszt futtatása…</translation> <translation id="2620436844016719705">Rendszer</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Alkalmazások</translation> <translation id="2872961005593481000">Leállítás</translation> <translation id="3008341117444806826">FRISSÍTÉS</translation>
diff --git a/chromeos/strings/chromeos_strings_hy.xtb b/chromeos/strings/chromeos_strings_hy.xtb index 9427f62..75ab7ba 100644 --- a/chromeos/strings/chromeos_strings_hy.xtb +++ b/chromeos/strings/chromeos_strings_hy.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732">Այս օգտատերը կառավարվում է <ph name="MANAGER" />-ի կողմից, և վերջինս նաև կարող է հեռակա կառավարել կարգավորումներն ու վերահսկել օգտատիրոջ գործողությունները։</translation> <translation id="150962533380566081">Անվավեր PUK:</translation> <translation id="1510238584712386396">Գործարկիչ</translation> +<translation id="1621067168122174824">Փորձարկել լիցքավորումը</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> նամակագրություն)</translation> <translation id="1641857168437328880">Փաստաթղթերի մատակարար (միակողմանի)</translation> <translation id="1644574205037202324">Պատմություն</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS լուծիչը առկա է</translation> <translation id="1743558184855585519">Մարտկոցը լիցքը համարվում է սպառված, երբ դրա մակարդակը հասնում է սահմանաչափին</translation> +<translation id="1792647875738159689">Սկանավորումը չեղարկվում է</translation> <translation id="1905710495812624430">Փորձերի առավելագույն թույլատրելի քանակը սպառվել է:</translation> <translation id="1930797645656624981">Chrome OS-ում ներածման եղանակի ծառայություն</translation> <translation id="1947737735496445907">Տպված է</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Որոնել</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" />ը ստուգվում է…</translation> <translation id="2620436844016719705">Համակարգ</translation> +<translation id="2740531572673183784">Եղավ</translation> <translation id="2805756323405976993">Հավելվածներ</translation> <translation id="2872961005593481000">Անջատել</translation> <translation id="3008341117444806826">ԹԱՐՄԱՑՆԵԼ</translation> <translation id="3009958530611748826">Ընտրեք պանակ, որում պետք է պահել</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> մԱ</translation> +<translation id="3069085583900247081">Փորձարկումը ձախողվեց</translation> <translation id="3083667275341675831">Կապի դիագնոստիկա</translation> <translation id="3091839911843451378">Չհաջողվեց տպել – Տպիչի աշխատանքը դադարեցվել է</translation> <translation id="3102119246920354026">Հիշապահեստ</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Տպման առաջադրանքները, որոնք 1 օրից հին են, կհեռացվեն</translation> <translation id="3268178239013324452">Չհաջողվեց տպել – Կափարիչը բաց է</translation> <translation id="3310640316857623290">DNS-ի հապաղումը մեծ առավելություն ունի թույլատրելի սահմանափակման նկատմամբ</translation> +<translation id="3328783797891415197">Փորձարկում</translation> <translation id="3369013195428705271">Մաքրե՞լ ամբողջ տպման պատմությունը: Ընթացիկ տպման աշխատանքները չեն ջնջվի։</translation> <translation id="3456078764689556234">Տպված էջ՝ <ph name="PRINTED_PAGES" />/<ph name="TOTAL_PAGES" />։</translation> <translation id="3459509316159669723">Տպում</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Տպիչ</translation> <translation id="4131410914670010031">Սև ու սպիտակ</translation> <translation id="4145784616224233563">HTTP հրապատ</translation> +<translation id="4170700058716978431">ՁԱԽՈՂՎԵՑ</translation> <translation id="4227825898293920515">Գաղտնաբառի գործողության ժամկետը <ph name="TIME" />ից կսպառվի</translation> <translation id="4238516577297848345">Տպելու ընթացիկ առաջադրանքներ չկան</translation> <translation id="4297501883039923494">Դադարեցվել է – Անհայտ սխալ</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Դադարեցված է</translation> <translation id="4808449224298348341">Տպման առաջադրանքը չեղարկվեց՝ <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Ընտրել պանակ «Ֆայլեր» հավելվածում…</translation> +<translation id="4848429997038228357">ՓՈՐՁԱՐԿՎՈՒՄ Է</translation> <translation id="4890353053343094602">Հնարավորինս արագ փոխեք գաղտնաբառը</translation> <translation id="4917889632206600977">Դադարեցվել է – Թուղթ չկա</translation> <translation id="4921665434385737356">Լիցքավորվել է <ph name="RATE" />-ով՝ <ph name="NUM_SECONDS" /> վայրկյանում։</translation> <translation id="4932733599132424254">Ամսաթիվ</translation> <translation id="4985509611418653372">Գործարկել</translation> +<translation id="500920857929044050">Դադարեցնել փորձարկումը</translation> <translation id="5154917547274118687">Հիշողություն</translation> <translation id="5168185087976003268">Մարտկոցի կարգավիճակը</translation> <translation id="520299634122159966">Հասանելի սկաներներ չկան</translation> <translation id="5212543919916444558">Չհաջողվեց գտնել քարտեր էկրանին: Փորձեք օգտագործել խոսափողը` առաջադրանքներ տալու համար:</translation> <translation id="5222676887888702881">Դուրս գրվել</translation> +<translation id="5264277876637023664">Փորձարկել CPU-ն</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Նորից գործարկել ծրագրերը</translation> <translation id="5317780077021120954">Պահել</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Կառավարվող</translation> <translation id="5493614766091057239"><ph name="VERDICT" />՝ <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Իմանալ ավելին Օգնության կենտրոնում</translation> +<translation id="5635169860413004179">Դիտել հաշվետվությունը</translation> <translation id="5719918614880940190">Սա չափում է CPU-ի օգտագործումը և միավորում բոլոր ցուցանիշները</translation> +<translation id="5797428682393400134">ՀԱՋՈՂՎԵՑ</translation> <translation id="5832805196449965646">Ավելացնել անձ</translation> <translation id="5895138241574237353">Վերագործարկել</translation> +<translation id="5931523347251946569">Ֆայլը չի գտնվել</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, տարբերակ <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Փակել</translation> <translation id="6048107060512778456">Չհաջողվեց տպել – Թղթի խցանում</translation> <translation id="6050189528197190982">Գորշասանդղակ</translation> <translation id="6058625436358447366">Ավարտելու համար մուտքագրեք ձեր հին և նոր գաղտնաբառերը</translation> <translation id="6061772781719867950">Անհաջող HTTP հարցումներ</translation> +<translation id="6104112872696127344">Սկանավորումը չեղարկվել է</translation> <translation id="6106186594183574873">Ավարտելու համար մուտքագրեք ձեր հին գաղտնաբառը</translation> <translation id="6108689792487843350">Անցախուցն անհասանելի է</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> ԳՀց / <ph name="MAX" /> ԳՀց</translation> <translation id="6146993107019042706">Ավարտելու համար մուտքագրեք ձեր նոր գաղտնաբառը</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Իմանալ ավելին</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Դադարեցվել է – Թղթի խցանում</translation> <translation id="6517239166834772319">Հնարավորություններ</translation> <translation id="6527081081771465939">Wi-Fi-ի անվտանգության անհայտ հաղորդակարգ</translation> +<translation id="6532051501443766164">Թաքցնել հաշվետվությունը</translation> <translation id="65587193855025101">Պլանշետային</translation> <translation id="6564646048574748301">Չհաջողվեց տպել – Տպիչն անհասանելի է</translation> <translation id="6618744767048954150">Ստուգումն ընթացքում է</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Մաքրել</translation> <translation id="6704062477274546131">DNS-ի լուծաչափ</translation> <translation id="6747215703636344499">Դադարեցվել է – Ելքային դարակը լցված է</translation> +<translation id="6756731097889387912">Չհաջողվեց չեղարկել սկանավորումը</translation> <translation id="6766275201586212568">DNS-ի անհաջող լուծումներ</translation> <translation id="6768237774506518020">DNS-ի լուծման խափանումների բարձր մակարդակ</translation> <translation id="6839141349259399400">Չի՞ հաջողվում միանալ սկաներներին։</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">HTTPS-ի բարձր հապաղում</translation> <translation id="7658239707568436148">Չեղարկել</translation> <translation id="7690294790491645610">Հաստատեք նոր գաղտնաբառը</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> փորձարկում</translation> <translation id="7805768142964895445">Կարգավիճակ</translation> <translation id="7855434858642800953">Սկանավորված ֆայլը պահված է</translation> <translation id="7928373994957558460">Ցուցադրել ֆայլի հասցեն</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Կանխադրված</translation> <translation id="8845001906332463065">Օգնություն</translation> +<translation id="8881098542468797602">Փորձարկումը հաջողվեց</translation> <translation id="8910721771319628100">Կանխադրված ցանցը հապաղման սահմանափակման նկատմամբ առավելություն ունի</translation> <translation id="8919837981463578619">Չհաջողվեց տպել – Դարակը բացակայում է</translation> <translation id="8928727111548978589">Չհաջողվեց տպել – Թուղթը սպառվել է</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> Մնացած փորձերի քանակը՝ <ph name="ATTEMPTS_LEFT" />։</translation> +<translation id="8970109610781093811">Կրկնել</translation> <translation id="9088306295921699330">Օգտագործված տարածքը</translation> <translation id="910415269708673980">Թարմացրեք <ph name="PRINCIPAL_NAME" /> հաշվի տոմսը</translation> <translation id="9106415115617144481">Սկանավորվում է էջ <ph name="PAGE_NUMBER" />-ը</translation> <translation id="9111102763498581341">Ապակողպել</translation> +<translation id="9149391708638971077">Փորձարկել հիշողությունը</translation> +<translation id="982713511914535780">Փորձարկել լիցքաթափումը</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index 1893b1e..724e235d 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Pindai</translation> <translation id="2570743873672969996">Menjalankan pengujian <ph name="TEST_NAME" /> ...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Oke</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2872961005593481000">Matikan</translation> <translation id="3008341117444806826">PERBARUI</translation>
diff --git a/chromeos/strings/chromeos_strings_is.xtb b/chromeos/strings/chromeos_strings_is.xtb index a3b20a5f..42b924c 100644 --- a/chromeos/strings/chromeos_strings_is.xtb +++ b/chromeos/strings/chromeos_strings_is.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> hefur umsjón með þessum notanda og getur stjórnað stillingum og skoðað notendavirkni með fjartengingu.</translation> <translation id="150962533380566081">Ógilt PUK-númer.</translation> <translation id="1510238584712386396">Ræsiforrit</translation> +<translation id="1621067168122174824">Keyra hleðslupróf</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> þræðir)</translation> <translation id="1641857168437328880">Skjalamatari (einhliða)</translation> <translation id="1644574205037202324">Ferill</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Bréf</translation> <translation id="1706391837335750954">DNS-úrlausn til staðar</translation> <translation id="1743558184855585519">Rafhlaðan telst tóm þegar hún nær takmörkunum</translation> +<translation id="1792647875738159689">Hættir við að skanna</translation> <translation id="1905710495812624430">Farið var yfir hámarksfjölda tilrauna.</translation> <translation id="1930797645656624981">Innfærsluaðferð Chrome OS þjónustu</translation> <translation id="1947737735496445907">Prentað</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Leita</translation> <translation id="2570743873672969996">Keyrir prófið <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Kerfi</translation> +<translation id="2740531572673183784">Í lagi</translation> <translation id="2805756323405976993">Forrit</translation> <translation id="2872961005593481000">Slökkva</translation> <translation id="3008341117444806826">ENDURNÝJA</translation> <translation id="3009958530611748826">Veldu möppu til að vista í</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">Próf mistókst</translation> <translation id="3083667275341675831">Greining á tengigetu</translation> <translation id="3091839911843451378">Mistókst – stöðvaðist</translation> <translation id="3102119246920354026">Skyndiminni</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Prentverk sem eru meira en 1 dags gömul verða fjarlægð</translation> <translation id="3268178239013324452">Mistókst – hlíf er opin</translation> <translation id="3310640316857623290">DNS-biðtími er töluvert yfir leyfðum þröskuldi</translation> +<translation id="3328783797891415197">Próf í gangi</translation> <translation id="3369013195428705271">Viltu örugglega hreinsa allan prentferil? Prentverk sem eru í gangi verða ekki hreinsuð.</translation> <translation id="3456078764689556234">Prentaði síðu <ph name="PRINTED_PAGES" /> af <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Prentun</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Prentari</translation> <translation id="4131410914670010031">Svarthvítt</translation> <translation id="4145784616224233563">HTTP-eldveggur</translation> +<translation id="4170700058716978431">MISTÓKST</translation> <translation id="4227825898293920515">Aðgangsorð rennur út eftir <ph name="TIME" /></translation> <translation id="4238516577297848345">Engin prentun í gangi</translation> <translation id="4297501883039923494">Stöðvað – óþekkt villa</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Stöðvað</translation> <translation id="4808449224298348341">Hætt við prentverkið <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Velja möppu í forritinu Skrár...</translation> +<translation id="4848429997038228357">Í GANGI</translation> <translation id="4890353053343094602">Veldu nýtt án tafar</translation> <translation id="4917889632206600977">Stöðvað – pappír vantar</translation> <translation id="4921665434385737356">Hlóð <ph name="RATE" /> á <ph name="NUM_SECONDS" /> sekúndum.</translation> <translation id="4932733599132424254">Dagsetning</translation> <translation id="4985509611418653372">Keyra</translation> +<translation id="500920857929044050">Stöðva próf</translation> <translation id="5154917547274118687">Minni</translation> <translation id="5168185087976003268">Ástand rafhlöðu</translation> <translation id="520299634122159966">Engir skannar tiltækir</translation> <translation id="5212543919916444558">Ég finn ekkert á skjánum sem ég get aðstoðað þig með. Prófaðu að ýta á hljóðnemann til að spyrja mig að hverju sem er.</translation> <translation id="5222676887888702881">Skrá út</translation> +<translation id="5264277876637023664">Keyra örgjörvapróf</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Keyra rútínur aftur</translation> <translation id="5317780077021120954">Vista</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Stjórnað</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Frekari upplýsingar er að finna í Hjálparmiðstöðinni</translation> +<translation id="5635169860413004179">Skoða skýrslu</translation> <translation id="5719918614880940190">Þetta mælir örgjörvanotkun og er samansafn allra kjarna</translation> +<translation id="5797428682393400134">TÓKST</translation> <translation id="5832805196449965646">Bæta notanda við</translation> <translation id="5895138241574237353">Endurræsa</translation> +<translation id="5931523347251946569">Skráin fannst ekki</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, útgáfa <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Loka</translation> <translation id="6048107060512778456">Mistókst – pappírsstífla</translation> <translation id="6050189528197190982">Grátónar</translation> <translation id="6058625436358447366">Sláðu inn gamla aðgangsorðið og það nýja til að ganga frá þessu</translation> <translation id="6061772781719867950">HTTP-beiðnir mistókust</translation> +<translation id="6104112872696127344">Hætt var við að skanna</translation> <translation id="6106186594183574873">Sláðu inn gamla aðgangsorðið þitt til að ganga frá þessu</translation> <translation id="6108689792487843350">Ekki næst í gátt</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">Sláðu inn nýja aðgangsorðið til að ljúka þessu</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Frekari upplýsingar</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Stöðvað – pappírsstífla</translation> <translation id="6517239166834772319">Kanna</translation> <translation id="6527081081771465939">Óþekkt Wi-Fi öryggisregla</translation> +<translation id="6532051501443766164">Fela skýrslu</translation> <translation id="65587193855025101">Flatur skanni</translation> <translation id="6564646048574748301">Mistókst – ekki næst í prentara</translation> <translation id="6618744767048954150">Í gangi</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Hreinsa</translation> <translation id="6704062477274546131">DNS-upplausn</translation> <translation id="6747215703636344499">Stöðvað – úttakið er fullt</translation> +<translation id="6756731097889387912">Ekki tókst að hætta við að skanna</translation> <translation id="6766275201586212568">DNS-úrlausn mistókst</translation> <translation id="6768237774506518020">DNS-úrlausn mistekst oft</translation> <translation id="6839141349259399400">Er ekki hægt að tengjast skönnum?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Langur HTTPS-biðtími</translation> <translation id="7658239707568436148">Hætta við</translation> <translation id="7690294790491645610">Staðfestu nýtt aðgangsorð</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> próf</translation> <translation id="7805768142964895445">Staða</translation> <translation id="7855434858642800953">Skönnuð skrá vistuð!</translation> <translation id="7928373994957558460">Sýna staðsetningu skráar</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Sjálfgefið</translation> <translation id="8845001906332463065">Fá hjálp</translation> +<translation id="8881098542468797602">Próf tókst</translation> <translation id="8910721771319628100">Sjálfgefið net er yfir biðþröskuldi</translation> <translation id="8919837981463578619">Mistókst – bakka vantar</translation> <translation id="8928727111548978589">Mistókst – pappír vantar</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> tilraunir eftir</translation> +<translation id="8970109610781093811">Keyra aftur</translation> <translation id="9088306295921699330">Núverandi notkun</translation> <translation id="910415269708673980">Endurnýja miða fyrir <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Skannar síðu <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Taka úr lás</translation> +<translation id="9149391708638971077">Keyra minnispróf</translation> +<translation id="982713511914535780">Keyra afhleðslupróf</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_it.xtb b/chromeos/strings/chromeos_strings_it.xtb index 54cef106..10089d2 100644 --- a/chromeos/strings/chromeos_strings_it.xtb +++ b/chromeos/strings/chromeos_strings_it.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> gestisce questo utente e potrebbe gestire le impostazioni e monitorare l'attività utente da remoto.</translation> <translation id="150962533380566081">PUK non valido.</translation> <translation id="1510238584712386396">Avvio app</translation> +<translation id="1621067168122174824">Esegui test ricarica</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> thread)</translation> <translation id="1641857168437328880">Alimentatore di documenti (solo fronte)</translation> <translation id="1644574205037202324">Cronologia</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">Resolver DNS presente</translation> <translation id="1743558184855585519">La batteria viene considerata esaurita quando raggiunge il limite</translation> +<translation id="1792647875738159689">Annullamento scansione…</translation> <translation id="1905710495812624430">Numero massimo di tentativi consentiti superato.</translation> <translation id="1930797645656624981">Servizio metodo di immissione di Chrome OS</translation> <translation id="1947737735496445907">Stampato</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Scansiona</translation> <translation id="2570743873672969996">Esecuzione del test <ph name="TEST_NAME" /> in corso…</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">App</translation> <translation id="2872961005593481000">Spegni</translation> <translation id="3008341117444806826">AGGIORNA</translation> <translation id="3009958530611748826">Seleziona una cartella in cui salvare i file</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Test non riuscito</translation> <translation id="3083667275341675831">Diagnostica della connettività</translation> <translation id="3091839911843451378">Operazione non riuscita - Interruzione</translation> <translation id="3102119246920354026">Cache</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">I processi di stampa risalenti a oltre 1 giorno fa verranno rimossi</translation> <translation id="3268178239013324452">Operazione non riuscita - Sportello aperto</translation> <translation id="3310640316857623290">la latenza DNS è sostanzialmente al di sopra della soglia consentita</translation> +<translation id="3328783797891415197">Test in esecuzione</translation> <translation id="3369013195428705271">Vuoi cancellare l'intera cronologia di stampa? I processi di stampa in corso non verranno cancellati.</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> pagina stampata su <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Stampa</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Stampante</translation> <translation id="4131410914670010031">In bianco e nero</translation> <translation id="4145784616224233563">Firewall HTTP</translation> +<translation id="4170700058716978431">OPERAZIONE NON RIUSCITA</translation> <translation id="4227825898293920515">La password scade tra <ph name="TIME" /></translation> <translation id="4238516577297848345">Nessun processo di stampa in corso</translation> <translation id="4297501883039923494">Operazione interrotta - Errore sconosciuto</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Interrotta</translation> <translation id="4808449224298348341">Processo di stampa <ph name="DOCUMENT_TITLE" /> annullato</translation> <translation id="4832079907277790330">Seleziona cartella nell'app File…</translation> +<translation id="4848429997038228357">IN ESECUZIONE…</translation> <translation id="4890353053343094602">Scegline subito una nuova</translation> <translation id="4917889632206600977">Operazione interrotta - Carta esaurita</translation> <translation id="4921665434385737356">Ricarica del <ph name="RATE" /> in <ph name="NUM_SECONDS" /> secondi.</translation> <translation id="4932733599132424254">Data</translation> <translation id="4985509611418653372">Esegui</translation> +<translation id="500920857929044050">Interrompi test</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Condizioni batteria</translation> <translation id="520299634122159966">Nessuno scanner disponibile</translation> <translation id="5212543919916444558">Non riesco a trovare nulla sullo schermo per cui poterti essere utile. Prova a toccare il microfono per chiedermi qualcosa.</translation> <translation id="5222676887888702881">Esci</translation> +<translation id="5264277876637023664">Esegui test CPU</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Riesegui le routine</translation> <translation id="5317780077021120954">Salva</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Gestito</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Scopri di più nel Centro assistenza</translation> +<translation id="5635169860413004179">Visualizza rapporto</translation> <translation id="5719918614880940190">Questo valore indica l'utilizzo della CPU e aggrega tutti i core</translation> +<translation id="5797428682393400134">OPERAZIONE RIUSCITA</translation> <translation id="5832805196449965646">Aggiungi persona</translation> <translation id="5895138241574237353">Riavvia</translation> +<translation id="5931523347251946569">File non trovato</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, versione <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Chiudi</translation> <translation id="6048107060512778456">Operazione non riuscita - Fogli bloccati nella stampante</translation> <translation id="6050189528197190982">Scala di grigi</translation> <translation id="6058625436358447366">Per terminare, inserisci la password vecchia e quella nuova</translation> <translation id="6061772781719867950">Richieste HTTPS non riuscite</translation> +<translation id="6104112872696127344">La scansione è stata annullata</translation> <translation id="6106186594183574873">Per terminare, inserisci la vecchia password</translation> <translation id="6108689792487843350">gateway non raggiungibile</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz/<ph name="MAX" />GHz</translation> <translation id="6146993107019042706">Per terminare, inserisci la nuova password</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Ulteriori informazioni</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Operazione interrotta - Fogli bloccati nella stampante</translation> <translation id="6517239166834772319">Esplora</translation> <translation id="6527081081771465939">protocollo di sicurezza Wi-Fi sconosciuto</translation> +<translation id="6532051501443766164">Nascondi rapporto</translation> <translation id="65587193855025101">Flatbed</translation> <translation id="6564646048574748301">Operazione non riuscita - Stampante non raggiungibile</translation> <translation id="6618744767048954150">In corso</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Cancella</translation> <translation id="6704062477274546131">Risoluzione DNS</translation> <translation id="6747215703636344499">Operazione interrotta - Vassoio di uscita pieno</translation> +<translation id="6756731097889387912">Impossibile annullare la scansione</translation> <translation id="6766275201586212568">Risoluzioni DNS non riuscite</translation> <translation id="6768237774506518020">Percentuale errori di risoluzione DNS elevata</translation> <translation id="6839141349259399400">Non riesci a collegare gli scanner?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Latenza HTTPS elevata</translation> <translation id="7658239707568436148">Annulla</translation> <translation id="7690294790491645610">Conferma nuova password</translation> +<translation id="7732651821766520760">Test <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Stato</translation> <translation id="7855434858642800953">File sottoposto a scansione salvato.</translation> <translation id="7928373994957558460">Mostra la posizione del file</translation> @@ -197,6 +214,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Predefinito</translation> <translation id="8845001906332463065">Richiedi assistenza</translation> +<translation id="8881098542468797602">Test effettuato correttamente</translation> <translation id="8910721771319628100">la rete predefinita è al di sopra della soglia di latenza</translation> <translation id="8919837981463578619">Operazione non riuscita - Vassoio mancante</translation> <translation id="8928727111548978589">Operazione non riuscita - Carta esaurita</translation> @@ -206,4 +224,6 @@ <translation id="910415269708673980">Aggiorna la richiesta per <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Scansione pagina <ph name="PAGE_NUMBER" />…</translation> <translation id="9111102763498581341">Sblocca</translation> +<translation id="9149391708638971077">Esegui test memoria</translation> +<translation id="982713511914535780">Esegui test esaurimento batteria</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index 145ebc5..79cec07 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">סריקה</translation> <translation id="2570743873672969996">הבדיקה של <ph name="TEST_NAME" /> בתהליך…</translation> <translation id="2620436844016719705">מערכת</translation> +<translation id="2740531572673183784">אישור</translation> <translation id="2805756323405976993">אפליקציות</translation> <translation id="2872961005593481000">כיבוי</translation> <translation id="3008341117444806826">רענון</translation>
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb index 6700b1cb..338c513c 100644 --- a/chromeos/strings/chromeos_strings_ja.xtb +++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">スキャン</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> のテストを実行しています...</translation> <translation id="2620436844016719705">システム</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">アプリ</translation> <translation id="2872961005593481000">終了</translation> <translation id="3008341117444806826">更新</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index d4478652..7475efd5 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">სკანირება</translation> <translation id="2570743873672969996">გაშვებულია <ph name="TEST_NAME" /> ტესტი...</translation> <translation id="2620436844016719705">სისტემა</translation> +<translation id="2740531572673183784">კარგი</translation> <translation id="2805756323405976993">პროგრამები</translation> <translation id="2872961005593481000">გამორთვა</translation> <translation id="3008341117444806826">განახლება</translation>
diff --git a/chromeos/strings/chromeos_strings_kk.xtb b/chromeos/strings/chromeos_strings_kk.xtb index c89507dd..c423571 100644 --- a/chromeos/strings/chromeos_strings_kk.xtb +++ b/chromeos/strings/chromeos_strings_kk.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> бұл пайдаланушыны басқарады және параметрлер мен пайдаланушы әрекеттерін қашықтан бақылай алады.</translation> <translation id="150962533380566081">PUK коды жарамсыз.</translation> <translation id="1510238584712386396">Іске қосу құрылғысы</translation> +<translation id="1621067168122174824">Заряд тексерісін іске қосу</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> тізбек)</translation> <translation id="1641857168437328880">Құжат беруші (бір жақты)</translation> <translation id="1644574205037202324">Тарих</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS түрлендіргіші бар</translation> <translation id="1743558184855585519">Батарея шегіне жеткенде, толықтай отырды дегенді білдіреді.</translation> +<translation id="1792647875738159689">Сканерлеуді тоқтату</translation> <translation id="1905710495812624430">Максималды рұқсат етілетін әрекеттер шегінен асып кетті.</translation> <translation id="1930797645656624981">Chrome OS енгізу әдісі қызметі</translation> <translation id="1947737735496445907">Басып шығарылған</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Іздеу</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> сынағы жүруде…</translation> <translation id="2620436844016719705">Жүйе</translation> +<translation id="2740531572673183784">Жарайды</translation> <translation id="2805756323405976993">Қолданбалар</translation> <translation id="2872961005593481000">Өшіру</translation> <translation id="3008341117444806826">ЖАҢАРТУ</translation> <translation id="3009958530611748826">Сканерленген мазмұн сақталатын қалтаны таңдаңыз</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Тексерілмеді.</translation> <translation id="3083667275341675831">Байланыс диагностикасы</translation> <translation id="3091839911843451378">Сәтсіз: тоқтатылды</translation> <translation id="3102119246920354026">Кэш</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">1 күннен асқан баспа жұмыстары өшіріледі.</translation> <translation id="3268178239013324452">Сәтсіз: есігі ашық</translation> <translation id="3310640316857623290">DNS кідірісі рұқсат етілетін шектен әлдеқайда жоғары.</translation> +<translation id="3328783797891415197">Тексерілуде</translation> <translation id="3369013195428705271">Басып шығару тарихын шынымен толығымен тазалағыңыз келе ме? Қазір орындалып жатқан басып шығару жұмысының деректері сақталады.</translation> <translation id="3456078764689556234"><ph name="PRINTED_PAGES" /> бет (жалпы саны: <ph name="TOTAL_PAGES" />) басып шығарылды.</translation> <translation id="3459509316159669723">Басып шығару</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Принтер</translation> <translation id="4131410914670010031">Қара мен ақ</translation> <translation id="4145784616224233563">HTTP брандмауэрі</translation> +<translation id="4170700058716978431">СӘТСІЗ АЯҚТАЛДЫ.</translation> <translation id="4227825898293920515">Құпия сөздің мерзімі <ph name="TIME" /> өткен соң аяқталады.</translation> <translation id="4238516577297848345">Ешқандай баспа жұмысы орындалып жатқан жоқ.</translation> <translation id="4297501883039923494">Тоқтатылды: белгісіз қате</translation> @@ -104,16 +110,19 @@ <translation id="4773299976671772492">Тоқтатылды</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> құжатын басып шығарудан бас тартылды.</translation> <translation id="4832079907277790330">Files қолданбасында қалта таңдау...</translation> +<translation id="4848429997038228357">ТЕКСЕРІЛУДЕ</translation> <translation id="4890353053343094602">Дереу жаңа құпия сөз таңдаңыз.</translation> <translation id="4917889632206600977">Тоқтатылды: қағаз бітіп қалды</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> секундта <ph name="RATE" /> зарядталды.</translation> <translation id="4932733599132424254">Күні</translation> <translation id="4985509611418653372">Іске қосу</translation> +<translation id="500920857929044050">Тексеруді тоқтату</translation> <translation id="5154917547274118687">Жад</translation> <translation id="5168185087976003268">Батарея күйі</translation> <translation id="520299634122159966">Қолжетімді сканерлер жоқ.</translation> <translation id="5212543919916444558">Экранда мен көмектесе алатын ештеңе жоқ. Микрофон белгішесін түртіп, маған сұрақ қойыңыз.</translation> <translation id="5222676887888702881">Шығу</translation> +<translation id="5264277876637023664">Орталық процессор тексерісін іске қосу</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Режимдерді қайта іске қосу</translation> <translation id="5317780077021120954">Сақтау</translation> @@ -126,17 +135,22 @@ <translation id="54609108002486618">Басқарылады</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Толығырақ ақпаратты Анықтамалық орталықтан қарау</translation> +<translation id="5635169860413004179">Есепті көру</translation> <translation id="5719918614880940190">Бұл орталық процессорды қолдану трафигін есептейді және ол – барлық ядролар жинағы.</translation> +<translation id="5797428682393400134">СӘТТІ АЯҚТАЛДЫ.</translation> <translation id="5832805196449965646">Адам қосу</translation> <translation id="5895138241574237353">Қайта іске қосу</translation> +<translation id="5931523347251946569">Файл табылмады.</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, нұсқасы: <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Жабу</translation> <translation id="6048107060512778456">Сәтсіз: қағаз кептеліп қалды</translation> <translation id="6050189528197190982">Сұр шкаласы</translation> <translation id="6058625436358447366">Аяқтау үшін ескі және жаңа құпия сөздерді енгізіңіз.</translation> <translation id="6061772781719867950">HTTP сұраулары сәтсіз аяқталды.</translation> +<translation id="6104112872696127344">Сканерлеу тоқтатылды.</translation> <translation id="6106186594183574873">Аяқтау үшін ескі құпия сөзді енгізіңіз.</translation> <translation id="6108689792487843350">Шлюзбен байланыс орнату мүмкін емес.</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />ГГц / <ph name="MAX" />ГГц</translation> <translation id="6146993107019042706">Аяқтау үшін жаңа құпия сөзді енгізіңіз.</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Толығырақ</translation> @@ -147,6 +161,7 @@ <translation id="649050271426829538">Тоқтатылды: қағаз кептелісі</translation> <translation id="6517239166834772319">Шолу</translation> <translation id="6527081081771465939">WiFi қауіпсіздік протоколы белгісіз.</translation> +<translation id="6532051501443766164">Есепті жасыру</translation> <translation id="65587193855025101">Планшет</translation> <translation id="6564646048574748301">Сәтсіз: принтер қолжетімді емес</translation> <translation id="6618744767048954150">Жұмыс істеп тұр</translation> @@ -154,6 +169,7 @@ <translation id="6643016212128521049">Тазалау</translation> <translation id="6704062477274546131">DNS ажыратымдылығы</translation> <translation id="6747215703636344499">Тоқтатылды: шығыс науа толып кетті</translation> +<translation id="6756731097889387912">Сканерлеуді тоқтату мүмкін болмады.</translation> <translation id="6766275201586212568">DNS ажыратымдылықтары сәтсіз болды.</translation> <translation id="6768237774506518020">DNS ажыратымдылығының ақау көрсеткіші жоғары.</translation> <translation id="6839141349259399400">Сканерлерге қосыла алмадыңыз ба?</translation> @@ -169,6 +185,7 @@ <translation id="7648838807254605802">HTTPS кідірісі жоғары.</translation> <translation id="7658239707568436148">Бас тарту</translation> <translation id="7690294790491645610">Жаңа құпия сөзді қайталаңыз</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> тексерісі</translation> <translation id="7805768142964895445">Күйі</translation> <translation id="7855434858642800953">Сканерленген файл сақталды!</translation> <translation id="7928373994957558460">Файл орнын көрсету</translation> @@ -196,12 +213,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Әдепкі</translation> <translation id="8845001906332463065">Анықтама алу</translation> +<translation id="8881098542468797602">Тексеріс сәтті аяқталды.</translation> <translation id="8910721771319628100">Әдепкі желі кідірісі шекті мәннен асады.</translation> <translation id="8919837981463578619">Сәтсіз: науа жоқ</translation> <translation id="8928727111548978589">Сәтсіз: қағаз бітіп қалды</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" />. Қалған әрекеттер саны: <ph name="ATTEMPTS_LEFT" /></translation> +<translation id="8970109610781093811">Қайта тексеру</translation> <translation id="9088306295921699330">Қазір пайдаланылуы</translation> <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> үшін билетті жаңарту</translation> <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />-бет сканерленуде</translation> <translation id="9111102763498581341">Құлпын ашу</translation> +<translation id="9149391708638971077">Жад тексерісін іске қосу</translation> +<translation id="982713511914535780">Зарядтың азаюы тексерісін іске қосу</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_km.xtb b/chromeos/strings/chromeos_strings_km.xtb index e560a84..cf996ca 100644 --- a/chromeos/strings/chromeos_strings_km.xtb +++ b/chromeos/strings/chromeos_strings_km.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">ស្កេន</translation> <translation id="2570743873672969996">កំពុងដំណើរការតេស្ត <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">ប្រព័ន្ធ</translation> +<translation id="2740531572673183784">យល់ព្រម</translation> <translation id="2805756323405976993">កម្មវិធី</translation> <translation id="2872961005593481000">បិទ</translation> <translation id="3008341117444806826">ផ្ទុកឡើងវិញ</translation>
diff --git a/chromeos/strings/chromeos_strings_kn.xtb b/chromeos/strings/chromeos_strings_kn.xtb index f3141ff..ee7f5274 100644 --- a/chromeos/strings/chromeos_strings_kn.xtb +++ b/chromeos/strings/chromeos_strings_kn.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732">ಈ ಬಳಕೆದಾರರನ್ನು <ph name="MANAGER" /> ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ರಿಮೋಟ್ ಆಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು ಹಾಗೂ ಬಳಕೆದಾರರ ಚಟುವಟಿಕೆಯನ್ನು ಮಾನಿಟರ್ ಮಾಡಬಹುದು.</translation> <translation id="150962533380566081">ಅಮಾನ್ಯ PUK.</translation> <translation id="1510238584712386396">ಲಾಂಚರ್</translation> +<translation id="1621067168122174824">ಚಾರ್ಜ್ ಪರೀಕ್ಷೆಯನ್ನು ರನ್ ಮಾಡಿ</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> ಥ್ರೆಡ್ಗಳು)</translation> <translation id="1641857168437328880">ಡಾಕ್ಯುಮೆಂಟ್ ಫೀಡರ್ (ಒಂದು-ಬದಿಯದ್ದು)</translation> <translation id="1644574205037202324">ಇತಿಹಾಸ</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS ರೀಸಾಲ್ವರ್ ಅಸ್ತಿತ್ವ</translation> <translation id="1743558184855585519">ಮಿತಿಯನ್ನು ತಲುಪಿದ ನಂತರ, ಬ್ಯಾಟರಿ ಖಾಲಿಯಾಗಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ</translation> +<translation id="1792647875738159689">ಸ್ಕ್ಯಾನಿಂಗ್ ಮಾಡುವಿಕೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="1905710495812624430">ಅನುಮತಿಸಲಾದ ಗರಿಷ್ಟ ಪ್ರಯತ್ನಗಳು ಮೀರಿವೆ.</translation> <translation id="1930797645656624981">Chrome OS ಇನ್ಪುಟ್ ವಿಧಾನ ಸೇವೆ</translation> <translation id="1947737735496445907">ಮುದ್ರಿಸಲಾಗಿದೆ</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">ಸ್ಕ್ಯಾನ್</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ಪರೀಕ್ಷೆ ರನ್ ಆಗುತ್ತಿದೆ...</translation> <translation id="2620436844016719705">ಸಿಸ್ಟಂ</translation> +<translation id="2740531572673183784">ಸರಿ</translation> <translation id="2805756323405976993">ಆಪ್ಸ್</translation> <translation id="2872961005593481000">ಮುಚ್ಚಿಬಿಡಿ </translation> <translation id="3008341117444806826">ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation> <translation id="3009958530611748826">ಉಳಿಸಲು ಫೋಲ್ಡರ್ ಆಯ್ಕೆ ಮಾಡಿ</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">ಪರೀಕ್ಷೆ ವಿಫಲವಾಗಿದೆ</translation> <translation id="3083667275341675831">ಕನೆಕ್ಟಿವಿಟಿ ಡಯಾಗ್ನಾಸ್ಟಿಕ್ಸ್</translation> <translation id="3091839911843451378">ವಿಫಲವಾಗಿದೆ - ನಿಲ್ಲಿಸಲಾಗಿದೆ</translation> <translation id="3102119246920354026">ಸಂಗ್ರಹ</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">1 ದಿನಕ್ಕಿಂತ ಹಳೆಯದಾದ ಮುದ್ರಣ ಕಾರ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ</translation> <translation id="3268178239013324452">ವಿಫಲವಾಗಿದೆ - ಡೋರ್ ತೆರೆದಿದೆ</translation> <translation id="3310640316857623290">ಅನುಮತಿಸಬಹುದಾದ ಥ್ರೆಶ್ಹೋಲ್ಡ್ಗಿಂತ DNS ವಿಳಂಬವು ಗಮನಾರ್ಹವಾಗಿ ಮೇಲಿದೆ</translation> +<translation id="3328783797891415197">ಪರೀಕ್ಷೆ ರನ್ ಆಗುತ್ತಿದೆ</translation> <translation id="3369013195428705271">ಎಲ್ಲಾ ಪ್ರಿಂಟ್ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಲು ನೀವು ಬಯಸುವಿರಾ? ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿರುವ ನಿಮ್ಮ ಪ್ರಿಂಟ್ ಕಾರ್ಯವನ್ನು ತೆರವುಗೊಳಿಸುವುದಿಲ್ಲ.</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ರಲ್ಲಿ <ph name="PRINTED_PAGES" /> ಪುಟವನ್ನು ಮುದ್ರಿಸಲಾಗಿದೆ.</translation> <translation id="3459509316159669723">ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">ಪ್ರಿಂಟರ್</translation> <translation id="4131410914670010031">ಕಪ್ಪು ಮತ್ತು ಬಿಳುಪು</translation> <translation id="4145784616224233563">HTTP ಫೈರ್ವಾಲ್</translation> +<translation id="4170700058716978431">ವಿಫಲವಾಗಿದೆ</translation> <translation id="4227825898293920515"><ph name="TIME" /> ಸಮಯದಲ್ಲಿ ಪಾಸ್ವರ್ಡ್ನ ಅವಧಿ ಮುಗಿಯಲಿದೆ</translation> <translation id="4238516577297848345">ಯಾವುದೇ ಮುದ್ರಣ ಕಾರ್ಯಗಳು ಪ್ರಗತಿಯಲ್ಲಿಲ್ಲ</translation> <translation id="4297501883039923494">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಅಪರಿಚಿತ ದೋಷ</translation> @@ -104,16 +110,19 @@ <translation id="4773299976671772492">ನಿಲ್ಲಿಸಲಾಗಿದೆ</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> ಮುದ್ರಣ ಕಾರ್ಯವನ್ನು ರದ್ದುಮಾಡಲಾಗಿದೆ</translation> <translation id="4832079907277790330">Files ಆ್ಯಪ್ನಲ್ಲಿ ಫೋಲ್ಡರ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿ...</translation> +<translation id="4848429997038228357">ರನ್ ಆಗುತ್ತಿದೆ</translation> <translation id="4890353053343094602">ಹೊಸದೊಂದನ್ನು ತತ್ಕ್ಷಣ ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="4917889632206600977">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಪೇಪರ್ ಖಾಲಿಯಾಗಿದೆ</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> ಸೆಕೆಂಡ್ಗಳಲ್ಲಿ <ph name="RATE" /> ಶುಲ್ಕವನ್ನು ವಿಧಿಸಲಾಗಿದೆ.</translation> <translation id="4932733599132424254">ದಿನಾಂಕ</translation> <translation id="4985509611418653372">ರನ್ ಮಾಡಿ</translation> +<translation id="500920857929044050">ಪರೀಕ್ಷೆ ನಿಲ್ಲಿಸಿ</translation> <translation id="5154917547274118687">ಸ್ಮರಣೆ</translation> <translation id="5168185087976003268">ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ:</translation> <translation id="520299634122159966">ಯಾವುದೇ ಲಭ್ಯವಿರುವ ಸ್ಕ್ಯಾನರ್ಗಳಿಲ್ಲ</translation> <translation id="5212543919916444558">ನಾನು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದಾದ ಯಾವುದೇ ವಿಷಯ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ನನಗೆ ಕಾಣಿಸಿಲ್ಲ. ನನ್ನ ಬಳಿ ಏನಾದರೂ ಕೇಳಬೇಕಿದ್ದರೆ, ಮೈಕ್ ಟ್ಯಾಪ್ ಮಾಡಿ.</translation> <translation id="5222676887888702881">ಸೈನ್ ಔಟ್</translation> +<translation id="5264277876637023664">CPU ಪರೀಕ್ಷೆಯನ್ನು ರನ್ ಮಾಡಿ</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">ದಿನಚರಿಗಳನ್ನು ಪುನಃ ರನ್ ಮಾಡಿ</translation> <translation id="5317780077021120954">ಉಳಿಸು</translation> @@ -126,17 +135,22 @@ <translation id="54609108002486618">ನಿರ್ವಹಿಸಲಾಗಿದೆ</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">ಸಹಾಯ ಕೇಂದ್ರದಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation> +<translation id="5635169860413004179">ವರದಿಯನ್ನು ನೋಡಿ</translation> <translation id="5719918614880940190">ಇದು CPU ಬಳಕೆಯ ಜೊತೆಗೆ ಎಲ್ಲಾ ಕೋರ್ಗಳ ಒಟ್ಟು ಮೊತ್ತವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ</translation> +<translation id="5797428682393400134">ಯಶಸ್ವಿಯಾಗಿದೆ</translation> <translation id="5832805196449965646">ವ್ಯಕ್ತಿಯನ್ನು ಸೇರಿಸು</translation> <translation id="5895138241574237353">ಮರುಪ್ರಾರಂಭಿಸಿ</translation> +<translation id="5931523347251946569">ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, ಆವೃತ್ತಿ <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation> <translation id="6048107060512778456">ವಿಫಲವಾಗಿದೆ - ಕಾಗದ ಜಾಮ್ ಆಗಿದೆ</translation> <translation id="6050189528197190982">ಗ್ರೇಸ್ಕೇಲ್</translation> <translation id="6058625436358447366">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಹಳೆಯ ಹಾಗೂ ಹೊಸ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ನಮೂದಿಸಿ</translation> <translation id="6061772781719867950">HTTP ವಿನಂತಿಗಳು ವಿಫಲವಾಗಿವೆ</translation> +<translation id="6104112872696127344">ಸ್ಕ್ಯಾನಿಂಗ್ ರದ್ದುಗೊಂಡಿದೆ</translation> <translation id="6106186594183574873">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಹಳೆಯ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> <translation id="6108689792487843350">ಗೇಟ್ವೇ ತಲುಪಲಾಗುತ್ತಿಲ್ಲ</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">ಪೂರ್ಣಗೊಳಿಸಲು, ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation> @@ -147,6 +161,7 @@ <translation id="649050271426829538">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಪೇಪರ್ ಜಾಮ್ ಆಗಿದೆ</translation> <translation id="6517239166834772319">ಎಕ್ಸ್ಪ್ಲೋರ್</translation> <translation id="6527081081771465939">ಅಪರಿಚಿತ ವೈಫೈ ಸುರಕ್ಷತೆ ಪ್ರೊಟೊಕಾಲ್</translation> +<translation id="6532051501443766164">ರಿಪೋರ್ಟ್ ಅನ್ನು ಮರೆಮಾಡಿ</translation> <translation id="65587193855025101">ಫ್ಲಾಟ್ಬೆಡ್</translation> <translation id="6564646048574748301">ವಿಫಲವಾಗಿದೆ - ಪ್ರಿಂಟರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation> <translation id="6618744767048954150">ರನ್ ಆಗುತ್ತಿದೆ</translation> @@ -154,6 +169,7 @@ <translation id="6643016212128521049">ತೆರವುಗೊಳಿಸಿ</translation> <translation id="6704062477274546131">DNS ರೆಸಲ್ಯೂಷನ್</translation> <translation id="6747215703636344499">ನಿಲ್ಲಿಸಲಾಗಿದೆ - ಔಟ್ಪುಟ್ ಭರ್ತಿಯಾಗಿದೆ</translation> +<translation id="6756731097889387912">ಸ್ಕ್ಯಾನಿಂಗ್ ರದ್ದು ಮಾಡಲಾಗಲಿಲ್ಲ</translation> <translation id="6766275201586212568">DNS ರೆಸಲ್ಯೂಷನ್ಗಳು ವಿಫಲವಾಗಿವೆ</translation> <translation id="6768237774506518020">ಅಧಿಕ DNS ರೆಸಲ್ಯೂಷನ್ ವೈಫಲ್ಯ ದರ</translation> <translation id="6839141349259399400">ಸ್ಕ್ಯಾನರ್ಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲವೇ?</translation> @@ -169,6 +185,7 @@ <translation id="7648838807254605802">ಅಧಿಕ HTTPS ವಿಳಂಬ</translation> <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation> <translation id="7690294790491645610">ಹೊಸ ಪಾಸ್ವರ್ಡ್ ಖಚಿತಪಡಿಸಿ</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> ಪರೀಕ್ಷೆ</translation> <translation id="7805768142964895445">ಸ್ಥಿತಿ</translation> <translation id="7855434858642800953">ಸ್ಕ್ಯಾನ್ ಮಾಡಿದ ಫೈಲ್ ಅನ್ನು ಉಳಿಸಲಾಗಿದೆ!</translation> <translation id="7928373994957558460">ಫೈಲ್ ಸ್ಥಳವನ್ನು ತೋರಿಸಿ</translation> @@ -196,6 +213,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">ಡಿಫಾಲ್ಟ್</translation> <translation id="8845001906332463065">ಸಹಾಯ ಪಡೆಯಿರಿ</translation> +<translation id="8881098542468797602">ಪರೀಕ್ಷೆ ಯಶಸ್ವಿಯಾಗಿದೆ</translation> <translation id="8910721771319628100">ವಿಳಂಬ ಥ್ರೆಶ್ಹೋಲ್ಡ್ ಮೇಲಿನ ಡೀಫಾಲ್ಟ್ ನೆಟ್ವರ್ಕ್</translation> <translation id="8919837981463578619">ವಿಫಲವಾಗಿದೆ - ಟ್ರೇ ಕಾಣೆಯಾಗಿದೆ</translation> <translation id="8928727111548978589">ವಿಫಲವಾಗಿದೆ - ಕಾಗದ ಖಾಲಿಯಾಗಿದೆ</translation> @@ -205,4 +223,6 @@ <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> ಗಾಗಿ ಟಿಕೆಟ್ ರಿಫ್ರೆಶ್ ಮಾಡಿ</translation> <translation id="9106415115617144481">ಪುಟ <ph name="PAGE_NUMBER" /> ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="9111102763498581341">ಅನ್ಲಾಕ್</translation> +<translation id="9149391708638971077">ಮೆಮೊರಿ ಪರೀಕ್ಷೆ ರನ್ ಮಾಡಿ</translation> +<translation id="982713511914535780">ಡಿಸ್ಚಾರ್ಜ್ ಪರೀಕ್ಷೆಯನ್ನು ರನ್ ಮಾಡಿ</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb index 24d7773..608b1355 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">검색</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> 테스트 실행 중…</translation> <translation id="2620436844016719705">시스템</translation> +<translation id="2740531572673183784">확인</translation> <translation id="2805756323405976993">앱</translation> <translation id="2872961005593481000">종료</translation> <translation id="3008341117444806826">새로고침</translation>
diff --git a/chromeos/strings/chromeos_strings_ky.xtb b/chromeos/strings/chromeos_strings_ky.xtb index e49a244..d4a20d28 100644 --- a/chromeos/strings/chromeos_strings_ky.xtb +++ b/chromeos/strings/chromeos_strings_ky.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> алыстан жөндөөлөрдү башкарып, колдонуучунун аракеттерин көзөмөлдөй алат.</translation> <translation id="150962533380566081">Жараксыз PUK.</translation> <translation id="1510238584712386396">Жүргүзгүч</translation> +<translation id="1621067168122174824">Кубатталышын сыноо</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> топтом)</translation> <translation id="1641857168437328880">Документтерди берүүчү түзмөк (бир тараптуу)</translation> <translation id="1644574205037202324">Таржымал</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS которгучун текшерүү</translation> <translation id="1743558184855585519">Чекке жеткенде батарея сарпталды деп эсептелет</translation> +<translation id="1792647875738159689">Скандоо токтотулууда</translation> <translation id="1905710495812624430">Аракеттер уруксат берилген чегинен ашты.</translation> <translation id="1930797645656624981">Chrome OS киргизүү ыкмасынын кызматы</translation> <translation id="1947737735496445907">Басып чыгарылды</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Скандоо</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> тести аткарылууда...</translation> <translation id="2620436844016719705">Тутум</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Колдонмолор</translation> <translation id="2872961005593481000">Жабуу</translation> <translation id="3008341117444806826">ЖАҢЫРТУУ</translation> <translation id="3009958530611748826">Скандалган нерселерди сактоо үчүн папка тандаңыз</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />мА</translation> +<translation id="3069085583900247081">Сыналган жок</translation> <translation id="3083667275341675831">Байланыштагы мүчүлүштүктөрдү аныктоо</translation> <translation id="3091839911843451378">Басылып чыгарылган жок - Принтер токтоп калды</translation> <translation id="3102119246920354026">Кэш</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">1 күндөн мурунку басып чыгаруу тапшырмалары өчүрүлөт</translation> <translation id="3268178239013324452">Басылып чыгарылган жок - Принтердин эшиги ачык</translation> <translation id="3310640316857623290">DNS күтүү убакыты уруксат берилген босогодон бир кыйла жогору</translation> +<translation id="3328783797891415197">Сыноо аткарылууда</translation> <translation id="3369013195428705271">Басып чыгаруу тарыхын өчүрөсүзбү? Учурда басылып жаткан документтериңиз өчүрүлбөйт.</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> ичинен <ph name="PRINTED_PAGES" /> барак басылып чыгарылды.</translation> <translation id="3459509316159669723">Басып чыгаруу</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Принтер</translation> <translation id="4131410914670010031">Ак-кара</translation> <translation id="4145784616224233563">HTTP тармактык коргоосу</translation> +<translation id="4170700058716978431">АТКАРЫЛГАН ЖОК</translation> <translation id="4227825898293920515">Сырсөздүн мөөнөтү <ph name="TIME" /> кийин бүтөт</translation> <translation id="4238516577297848345">Аткарылып жаткан иш жок</translation> <translation id="4297501883039923494">Токтоду – Белгисиз ката</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Токтотулду</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> документин басып чыгаруу токтотулду</translation> <translation id="4832079907277790330">Files колдонмосунда папка тандоо...</translation> +<translation id="4848429997038228357">АТКАРЫЛУУДА</translation> <translation id="4890353053343094602">Дароо жаңы сырсөз тандаңыз</translation> <translation id="4917889632206600977">Токтоду – Кагаз түгөнүп калды</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> секундда <ph name="RATE" /> кубатталды.</translation> <translation id="4932733599132424254">Күнү</translation> <translation id="4985509611418653372">Иштетүү</translation> +<translation id="500920857929044050">Сынакты токтотуу</translation> <translation id="5154917547274118687">Эстутум</translation> <translation id="5168185087976003268">Батареянын иштөө мөөнөтү</translation> <translation id="520299634122159966">Жеткиликтүү сканерлер жок</translation> <translation id="5212543919916444558">Экраныңызда эч нерсе көрүнгөн жок. Мага суроо берүү үчүн микрофонду таптап коюңуз.</translation> <translation id="5222676887888702881">Чыгуу</translation> +<translation id="5264277876637023664">CPU'ну сыноо</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Программаларды кайра иштетүү</translation> <translation id="5317780077021120954">Сактоо</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Башкарылуучу</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Жардам борборунан көбүрөөк маалымат алуу</translation> +<translation id="5635169860413004179">Отчётту көрүү</translation> <translation id="5719918614880940190">Бул процессордун колдонулушун ченеп, бардык зымдардын бириктирилген жери болуп эсептелет</translation> +<translation id="5797428682393400134">ИЙГИЛИК</translation> <translation id="5832805196449965646">Адам кошуу</translation> <translation id="5895138241574237353">Өчүрүп күйгүзүү</translation> +<translation id="5931523347251946569">Файл табылган жок</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, <ph name="MILESTONE_VERSION" />-версия)</translation> <translation id="6040143037577758943">Жабуу</translation> <translation id="6048107060512778456">Басылып чыгарылган жок - Кагаз чайналып калды</translation> <translation id="6050189528197190982">Боз шкала</translation> <translation id="6058625436358447366">Бүтүрүү үчүн эски жана жаңы сырсөздөрүңүздү киргизиңиз</translation> <translation id="6061772781719867950">HTTP сурамдары орундалган жок</translation> +<translation id="6104112872696127344">Скандоо токтотулду</translation> <translation id="6106186594183574873">Бүтүрүү үчүн эски сырсөзүңүздү киргизиңиз</translation> <translation id="6108689792487843350">Шлюз жеткиликсиз</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />ГГц / <ph name="MAX" />ГГц</translation> <translation id="6146993107019042706">Бүтүрүү үчүн жаңы сырсөздү киргизиңиз</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Кошумча маалымат</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Токтоду – Кагаз чайналып калды</translation> <translation id="6517239166834772319">Изилдөө</translation> <translation id="6527081081771465939">Белгисиз WiFi коопсуздук протоколу</translation> +<translation id="6532051501443766164">Отчётту жашыруу</translation> <translation id="65587193855025101">Планшет</translation> <translation id="6564646048574748301">Басылып чыгарылган жок - Принтер жеткиликсиз</translation> <translation id="6618744767048954150">Иштеп жатат</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Тазалоо</translation> <translation id="6704062477274546131">DNS дааналыгы</translation> <translation id="6747215703636344499">Токтоду – Түпкүч толуп калды</translation> +<translation id="6756731097889387912">Скандоо токтотулбай калды</translation> <translation id="6766275201586212568">DNS резолюциялары орундалган жок</translation> <translation id="6768237774506518020">DNS резолюциясынын бузулуу деңгээли жогору</translation> <translation id="6839141349259399400">Сканерлерге туташуу мүмкүн болбой жатабы?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">HTTPS күтүү убакыты жогору</translation> <translation id="7658239707568436148">Жокко чыгаруу</translation> <translation id="7690294790491645610">Жаңы сырсөздү ырастаңыз</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> сыноосу</translation> <translation id="7805768142964895445">Статусу</translation> <translation id="7855434858642800953">Скандалган файл сакталды.</translation> <translation id="7928373994957558460">Файл сакталган жерди көрсөтүү</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Демейки</translation> <translation id="8845001906332463065">Жардам алуу</translation> +<translation id="8881098542468797602">Ийгиликтүү сыналды</translation> <translation id="8910721771319628100">Демейки тармак күтүү убакытынын босогосунан жогору</translation> <translation id="8919837981463578619">Басылып чыгарылган жок - Такта ордунда эмес</translation> <translation id="8928727111548978589">Басылып чыгарылган жок - Кагаз түгөнүп калды</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> аракет калды</translation> +<translation id="8970109610781093811">Кайра сыноо</translation> <translation id="9088306295921699330">Учурдагы колдонулушу</translation> <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> үчүн билетти жаңыртыңыз</translation> <translation id="9106415115617144481"><ph name="PAGE_NUMBER" />-бет скандалууда</translation> <translation id="9111102763498581341">Кулпуну ачуу</translation> +<translation id="9149391708638971077">Эстутумду сыноо</translation> +<translation id="982713511914535780">Батареянын сарпталышын сыноо</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index d981366..d5bb3a6e 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">ສະແກນ</translation> <translation id="2570743873672969996">ກຳລັງເອີ້ນໃຊ້ການທົດສອບ <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">ລະບົບ</translation> +<translation id="2740531572673183784">ຕົກລົງ</translation> <translation id="2805756323405976993">ແອັບ</translation> <translation id="2872961005593481000">ມອດ</translation> <translation id="3008341117444806826">ໂຫຼດຂໍ້ມູນໃໝ່</translation>
diff --git a/chromeos/strings/chromeos_strings_lt.xtb b/chromeos/strings/chromeos_strings_lt.xtb index eb541ff..f024527 100644 --- a/chromeos/strings/chromeos_strings_lt.xtb +++ b/chromeos/strings/chromeos_strings_lt.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Nuskaityti</translation> <translation id="2570743873672969996">Vykdomas „<ph name="TEST_NAME" />“ bandymas...</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Gerai</translation> <translation id="2805756323405976993">Taikomosios programos</translation> <translation id="2872961005593481000">Stabdyti</translation> <translation id="3008341117444806826">ATNAUJINTI</translation>
diff --git a/chromeos/strings/chromeos_strings_lv.xtb b/chromeos/strings/chromeos_strings_lv.xtb index f2bb95d..28a8458 100644 --- a/chromeos/strings/chromeos_strings_lv.xtb +++ b/chromeos/strings/chromeos_strings_lv.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Meklēt</translation> <translation id="2570743873672969996">Notiek testa “<ph name="TEST_NAME" />” izpilde...</translation> <translation id="2620436844016719705">Sistēma</translation> +<translation id="2740531572673183784">Labi</translation> <translation id="2805756323405976993">Lietotnes</translation> <translation id="2872961005593481000">Beidzēt</translation> <translation id="3008341117444806826">ATSVAIDZINĀT</translation>
diff --git a/chromeos/strings/chromeos_strings_mk.xtb b/chromeos/strings/chromeos_strings_mk.xtb index 07c85aa0..f04aec4 100644 --- a/chromeos/strings/chromeos_strings_mk.xtb +++ b/chromeos/strings/chromeos_strings_mk.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Скенирај</translation> <translation id="2570743873672969996">Се извршува тест за <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Систем</translation> +<translation id="2740531572673183784">Во ред</translation> <translation id="2805756323405976993">Апликации</translation> <translation id="2872961005593481000">Исклучи</translation> <translation id="3008341117444806826">ОСВЕЖИ</translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index d2b2386a..d49c12a 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">സ്കാൻ ചെയ്യുക</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> പരീക്ഷണം റൺ ചെയ്യുന്നു...</translation> <translation id="2620436844016719705">സിസ്റ്റം</translation> +<translation id="2740531572673183784">ശരി</translation> <translation id="2805756323405976993">ആപ്സ്</translation> <translation id="2872961005593481000">അടയ്ക്കുക</translation> <translation id="3008341117444806826">പുതുക്കിയെടുക്കുക</translation>
diff --git a/chromeos/strings/chromeos_strings_mn.xtb b/chromeos/strings/chromeos_strings_mn.xtb index 5948a9f4c..c547be5 100644 --- a/chromeos/strings/chromeos_strings_mn.xtb +++ b/chromeos/strings/chromeos_strings_mn.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Шалгах</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> тестийг ажиллуулж байна...</translation> <translation id="2620436844016719705">Систем</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Програм</translation> <translation id="2872961005593481000">Унтраах</translation> <translation id="3008341117444806826">ДАХИН ШИНЭЧЛЭХ</translation>
diff --git a/chromeos/strings/chromeos_strings_mr.xtb b/chromeos/strings/chromeos_strings_mr.xtb index f136451..350de107 100644 --- a/chromeos/strings/chromeos_strings_mr.xtb +++ b/chromeos/strings/chromeos_strings_mr.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">स्कॅन करा</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> चाचणी रन होत आहे...</translation> <translation id="2620436844016719705">सिस्टम</translation> +<translation id="2740531572673183784">ठीक आहे</translation> <translation id="2805756323405976993">ॲप्लिकेशन</translation> <translation id="2872961005593481000">बंद करा</translation> <translation id="3008341117444806826">रिफ्रेश करा</translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index 4f25bd9..c0efdf6c6 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Imbas</translation> <translation id="2570743873672969996">Menjalankan ujian <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Apl</translation> <translation id="2872961005593481000">Mematikan</translation> <translation id="3008341117444806826">MUAT SEMULA</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 474f3f2..1ee5b24 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">ရှာဖွေရန်</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> စစ်ဆေးမှု လုပ်ဆောင်နေသည်...</translation> <translation id="2620436844016719705">စနစ်</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">အက်ပ်များ</translation> <translation id="2872961005593481000">ပိတ်ရန်</translation> <translation id="3008341117444806826">ပြန်လည်စတင်ရန်</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index bd9db08..71fd2c38 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">स्क्यान गर्नुहोस्</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> परीक्षण गरिँदै छ...</translation> <translation id="2620436844016719705">सिस्टम</translation> +<translation id="2740531572673183784">ठिक छ</translation> <translation id="2805756323405976993">एप्स</translation> <translation id="2872961005593481000">बन्द गर्नुहोस्</translation> <translation id="3008341117444806826">पुनः ताजा गर्नुहोस्</translation>
diff --git a/chromeos/strings/chromeos_strings_nl.xtb b/chromeos/strings/chromeos_strings_nl.xtb index 2afdb012..bb08386 100644 --- a/chromeos/strings/chromeos_strings_nl.xtb +++ b/chromeos/strings/chromeos_strings_nl.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Scannen</translation> <translation id="2570743873672969996">Test <ph name="TEST_NAME" /> wordt uitgevoerd...</translation> <translation id="2620436844016719705">Systeem</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Afsluiten</translation> <translation id="3008341117444806826">VERNIEUWEN</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb index cb1579e..a2c2c54 100644 --- a/chromeos/strings/chromeos_strings_no.xtb +++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Skann</translation> <translation id="2570743873672969996">Kjører test av <ph name="TEST_NAME" /> …</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apper</translation> <translation id="2872961005593481000">Slå av</translation> <translation id="3008341117444806826">OPPDATER</translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index 3564d83..9eeef3b0 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">ସ୍କାନ୍ କରନ୍ତୁ</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ପରୀକ୍ଷା ଚଲାଯାଉଛି...</translation> <translation id="2620436844016719705">ସିଷ୍ଟମ୍</translation> +<translation id="2740531572673183784">ଠିକ୍ ଅଛି</translation> <translation id="2805756323405976993">ଆପ୍ସ</translation> <translation id="2872961005593481000">ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="3008341117444806826">ରିଫ୍ରେଶ୍ କରନ୍ତୁ</translation>
diff --git a/chromeos/strings/chromeos_strings_pa.xtb b/chromeos/strings/chromeos_strings_pa.xtb index 7bf511dd..e80f4dd 100644 --- a/chromeos/strings/chromeos_strings_pa.xtb +++ b/chromeos/strings/chromeos_strings_pa.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">ਸਕੈਨ ਕਰੋ</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...</translation> <translation id="2620436844016719705">ਸਿਸਟਮ</translation> +<translation id="2740531572673183784">ਠੀਕ</translation> <translation id="2805756323405976993">ਐਪਸ</translation> <translation id="2872961005593481000">ਸ਼ਟ ਡਾਊਨ</translation> <translation id="3008341117444806826">ਰਿਫ੍ਰੈਸ਼ ਕਰੋ</translation>
diff --git a/chromeos/strings/chromeos_strings_pl.xtb b/chromeos/strings/chromeos_strings_pl.xtb index a6d9c47..01509a0 100644 --- a/chromeos/strings/chromeos_strings_pl.xtb +++ b/chromeos/strings/chromeos_strings_pl.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Skanuj</translation> <translation id="2570743873672969996">Wykonuję test <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikacje</translation> <translation id="2872961005593481000">Wyłącz</translation> <translation id="3008341117444806826">ODŚWIEŻ</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-BR.xtb b/chromeos/strings/chromeos_strings_pt-BR.xtb index 995db21c..5fa2ea1 100644 --- a/chromeos/strings/chromeos_strings_pt-BR.xtb +++ b/chromeos/strings/chromeos_strings_pt-BR.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Verificar</translation> <translation id="2570743873672969996">Executando o teste <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Desligar</translation> <translation id="3008341117444806826">ATUALIZAR</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index 39a8a81..2964deb 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Analisar</translation> <translation id="2570743873672969996">A executar o teste <ph name="TEST_NAME" />…</translation> <translation id="2620436844016719705">Sistema</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Apps</translation> <translation id="2872961005593481000">Encerrar</translation> <translation id="3008341117444806826">ATUALIZAR</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index 4904dc47..f13e7466 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Scanează</translation> <translation id="2570743873672969996">Se rulează testul <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplicații</translation> <translation id="2872961005593481000">Închide</translation> <translation id="3008341117444806826">ACTUALIZEAZĂ</translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index 46c79879..c15b1d25 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Искать</translation> <translation id="2570743873672969996">Запуск теста "<ph name="TEST_NAME" />"…</translation> <translation id="2620436844016719705">Система</translation> +<translation id="2740531572673183784">ОК</translation> <translation id="2805756323405976993">Сервисы</translation> <translation id="2872961005593481000">Завершить работу</translation> <translation id="3008341117444806826">ОБНОВИТЬ</translation>
diff --git a/chromeos/strings/chromeos_strings_si.xtb b/chromeos/strings/chromeos_strings_si.xtb index 43f519bab..0a6a526 100644 --- a/chromeos/strings/chromeos_strings_si.xtb +++ b/chromeos/strings/chromeos_strings_si.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> මෙම පරිශීලකයා කළමනාකරණය කරන අතර දුරස්ථව සැකසීම් කළමනාකරණය කිරීමට සහ පරිශීලක ක්රියාකාරකම් නිරීක්ෂණය කිරීමට හැකිය.</translation> <translation id="150962533380566081">වලංගු නොවන PUK.</translation> <translation id="1510238584712386396">දියත්කරණය</translation> +<translation id="1621067168122174824">ආරෝපණ පරීක්ෂණය ධාවනය කරන්න</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (පොටවල් <ph name="THREAD_COUNT" />)</translation> <translation id="1641857168437328880">ලේඛන සංග්රාහකය (තනි-පැත්තක)</translation> <translation id="1644574205037202324">ඉතිහාසය</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS විසඳුම්කාරක පැවතීම</translation> <translation id="1743558184855585519">බැටරිය සීමාවට ළඟා වූ පසු එය පරිභෝජන කළ ලෙස සැලකේ</translation> +<translation id="1792647875738159689">ස්කෑන් කිරීම අවලංගු කරමින්</translation> <translation id="1905710495812624430">ඉඩ දෙන උපරිම උත්සාහයන් ගණන ඉක්මවා ඇත.</translation> <translation id="1930797645656624981">Chrome OS ආදාන ක්රම සේවය</translation> <translation id="1947737735496445907">මුද්රණය කරන ලදි</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">ස්කෑන් කරන්න</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> පරීක්ෂාව ධාවනය කරමින්...</translation> <translation id="2620436844016719705">පද්ධතිය</translation> +<translation id="2740531572673183784">හරි</translation> <translation id="2805756323405976993">යෙදුම්</translation> <translation id="2872961005593481000">වසන්න</translation> <translation id="3008341117444806826">නැවුම් කරන්න</translation> <translation id="3009958530611748826">සුරැකීමට ෆෝල්ඩරයක් තෝරන්න</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">පරීක්ෂණය අසාර්ථක විය</translation> <translation id="3083667275341675831">සබැඳුම් හැකියා දෝෂ නිර්ණ</translation> <translation id="3091839911843451378">අසාර්ථක විය - නතර විය</translation> <translation id="3102119246920354026">හැඹිලිය</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">දින 1කට වඩා පැරණි මුද්රණ කාර්ය ඉවත් කරනු ඇත</translation> <translation id="3268178239013324452">අසාර්ථක විය - දොර විවෘතයි</translation> <translation id="3310640316857623290">DNS පමාව ඉඩ දිය හැකි මායිමෙන් සැලකිය යුතු ලෙස ඉහළය</translation> +<translation id="3328783797891415197">පරීක්ෂණය ධාවනය වෙමින්</translation> <translation id="3369013195428705271">ඔබට මුද්රණ ඉතිහාස සියල්ල හිස් කිරීමට අවශ්ය බව ඔබට තහවුරුද? ඔබේ පවතින මුද්රණ වැඩ හිස් නොකෙරේ.</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> න් මුද්රණය කළ පිටුව <ph name="PRINTED_PAGES" /></translation> <translation id="3459509316159669723">මුද්රණය කරමින්</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">මුද්රකය</translation> <translation id="4131410914670010031">කළු සහ සුදු</translation> <translation id="4145784616224233563">HTTP ෆයර්වෝලය</translation> +<translation id="4170700058716978431">අසාර්ථක විය</translation> <translation id="4227825898293920515">මුරපදය <ph name="TIME" /> තුළ කල් ඉකුත් වෙයි</translation> <translation id="4238516577297848345">කෙරෙමින් පවතින මුද්රණ කාර්යයක් නැත</translation> <translation id="4297501883039923494">නැවතිණි - නොදන්නා දෝෂයකි</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">නවත්වන ලදි</translation> <translation id="4808449224298348341">මුද්රණ කාර්යය <ph name="DOCUMENT_TITLE" /> අවලංගු කරන ලදී</translation> <translation id="4832079907277790330">ගොනු යෙදුම තුළ ෆෝල්ඩරයක් තෝරන්න...</translation> +<translation id="4848429997038228357">ධාවන වෙමින්</translation> <translation id="4890353053343094602">වහාම අලුත් එකක් තෝරන්න</translation> <translation id="4917889632206600977">නැවතිණි - කඩදාසි අවසන් වී ඇත</translation> <translation id="4921665434385737356">තත්පර <ph name="NUM_SECONDS" />ක් තුළ <ph name="RATE" /> ආරෝපණය විය.</translation> <translation id="4932733599132424254">දිනය</translation> <translation id="4985509611418653372">ධාවනය කරන්න</translation> +<translation id="500920857929044050">පරීක්ෂණය නවත්වන්න</translation> <translation id="5154917547274118687">මතකය</translation> <translation id="5168185087976003268">බැටරි සුවතාව</translation> <translation id="520299634122159966">ලබා ගත හැකි ස්කෑනර නැත</translation> <translation id="5212543919916444558">මට ඔබට උදවු විය හැකි කිසිවක් ඔබේ තිරය මත සොයා ගැනීමට නොහැකිය. මගෙන් යම් දෙයක් ඇසීමට මයික්රෆෝනය තට්ටු කිරීම උත්සාහ කරන්න.</translation> <translation id="5222676887888702881">පිටවීම</translation> +<translation id="5264277876637023664">CPU පරීක්ෂණය ධාවනය කරන්න</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">දින චර්යා යළි ධාවනය කරන්න</translation> <translation id="5317780077021120954">සුරකින්න</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">කළමනාකරණය කෙරේ</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">උදවු මධ්යස්ථානය තුළදී තව දැන ගන්න</translation> +<translation id="5635169860413004179">වාර්තාව බලන්න</translation> <translation id="5719918614880940190">මෙය CPU භාවිතය මනින අතර එය සියලු හරයන්ගේ එකතුවකි</translation> +<translation id="5797428682393400134">සාර්ථකයි</translation> <translation id="5832805196449965646">පුද්ගලයා එක් කරන්න</translation> <translation id="5895138241574237353">යළි අරඹන්න</translation> +<translation id="5931523347251946569">ගොනුව හමු නොවිණි</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, අනුවාදය <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">වසන්න</translation> <translation id="6048107060512778456">අසාර්ථක විය - කඩදාසි හිරවීම</translation> <translation id="6050189528197190982">අළු පැහැති</translation> <translation id="6058625436358447366">අවසන් කිරීමට, ඔබේ පැරණි සහ නව මුරපද ඇතුළත් කරන්න</translation> <translation id="6061772781719867950">අසාර්ථක වූ HTTP ඉල්ලීම්</translation> +<translation id="6104112872696127344">ස්කෑන් කිරීම අවලංගු කර ඇත</translation> <translation id="6106186594183574873">අවසන් කිරීමට, ඔබේ පැරණි මුරපදය ඇතුළත් කරන්න</translation> <translation id="6108689792487843350">වාහල වෙත ළඟා විය නොහැකිය</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">අවසන් කිරීමට, ඔබේ නව මුරපදය ඇතුළත් කරන්න</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">තව දැන ගන්න</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">නැවතිණි - කඩදාසි හිරවීම</translation> <translation id="6517239166834772319">ගවේෂණය</translation> <translation id="6527081081771465939">නොදන්නා Wi-Fi ආරක්ෂක ප්රොටොකෝලය</translation> +<translation id="6532051501443766164">වාර්තාව සඟවන්න</translation> <translation id="65587193855025101">Flatbed</translation> <translation id="6564646048574748301">අසාර්ථක විය - මුද්රණ යන්ත්රය වෙත ළඟා විය නොහැකිය</translation> <translation id="6618744767048954150">ධාවන වේ</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">මකන්න</translation> <translation id="6704062477274546131">DNS විභේදනය</translation> <translation id="6747215703636344499">නැවතිණි - ප්රතිදානය පිරී ඇත</translation> +<translation id="6756731097889387912">ස්කෑන් කිරීම අවලංගු කිරීමට නොහැකි විය</translation> <translation id="6766275201586212568">අසාර්ථක වූ DNS විභේදන</translation> <translation id="6768237774506518020">ඉහළ DNS විභේදන අසාර්ථක වීම් අනුපාතය</translation> <translation id="6839141349259399400">ස්කෑනර වෙත සම්බන්ධ විය නොහැකිද?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">ඉහළ HTTPS පමාව</translation> <translation id="7658239707568436148">අවලංගු කරන්න</translation> <translation id="7690294790491645610">නව මුරපදය තහවුරු කරන්න</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> පරීක්ෂණය</translation> <translation id="7805768142964895445">තත්වය</translation> <translation id="7855434858642800953">ස්කෑන් කළ ගොනුව සුරකින ලදි!</translation> <translation id="7928373994957558460">ගොනු ස්ථානය පෙන්වන්න</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">පෙරනිමි</translation> <translation id="8845001906332463065">උදවු ලබා ගන්න</translation> +<translation id="8881098542468797602">පරීක්ෂණය සාර්ථක විය</translation> <translation id="8910721771319628100">පමාවේ මායිමට ඉහළ පෙරනිමි ජාලය</translation> <translation id="8919837981463578619">අසාර්ථක විය - තැටිය මගහැරී ඇත</translation> <translation id="8928727111548978589">අසාර්ථක විය - කඩදාසි නැත</translation> <translation id="89415009803968170">උත්සාහ <ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" />ක් ඉතුරුයි</translation> +<translation id="8970109610781093811">නැවත ධාවනය කරන්න</translation> <translation id="9088306295921699330">වත්මන් භාවිතය</translation> <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> සඳහා ප්රවේශපත්රය නැවුම් කරන්න</translation> <translation id="9106415115617144481"><ph name="PAGE_NUMBER" /> පිටුව ස්කෑන් කරමින්</translation> <translation id="9111102763498581341">අගුලු හරන්න</translation> +<translation id="9149391708638971077">මතක පරීක්ෂණය ධාවනය කරන්න</translation> +<translation id="982713511914535780">විසර්ජන පරීක්ෂණය ධාවනය කරන්න</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_sk.xtb b/chromeos/strings/chromeos_strings_sk.xtb index b420220..40577c9 100644 --- a/chromeos/strings/chromeos_strings_sk.xtb +++ b/chromeos/strings/chromeos_strings_sk.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> spravuje tohto používateľa a môže vzdialene spravovať nastavenia a sledovať aktivitu používateľa.</translation> <translation id="150962533380566081">Neplatný kód PUK.</translation> <translation id="1510238584712386396">Spúšťač</translation> +<translation id="1621067168122174824">Spustiť test nabitia</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (počet vlákien: <ph name="THREAD_COUNT" />)</translation> <translation id="1641857168437328880">Podávač dokumentov (jednostranný)</translation> <translation id="1644574205037202324">História</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">Prekladač DNS je prítomný</translation> <translation id="1743558184855585519">Keď batéria dosiahne tento limit, považuje sa to za koniec jej životnosti</translation> +<translation id="1792647875738159689">Ruší sa skenovanie</translation> <translation id="1905710495812624430">Maximálny počet povolených pokusov bol prekročený.</translation> <translation id="1930797645656624981">Služba metódy vstupu systému Chrome OS</translation> <translation id="1947737735496445907">Vytlačené</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Vyhľadať</translation> <translation id="2570743873672969996">Prebieha test <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Systém</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Aplikácie</translation> <translation id="2872961005593481000">Vypnúť</translation> <translation id="3008341117444806826">OBNOVIŤ</translation> <translation id="3009958530611748826">Vyberte priečinok na uloženie</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Nepodarilo sa otestovať</translation> <translation id="3083667275341675831">Diagnostika pripojenia</translation> <translation id="3091839911843451378">Nepodarilo sa – zastavené</translation> <translation id="3102119246920354026">Vyrovnávacia pamäť</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Tlačové úlohy staršie ako deň budú odstránené</translation> <translation id="3268178239013324452">Nepodarilo sa – dvierka sú otvorené</translation> <translation id="3310640316857623290">Latencia servera DNS výrazne prekračuje povolenú úroveň</translation> +<translation id="3328783797891415197">Test prebieha</translation> <translation id="3369013195428705271">Naozaj chcete vymazať celú históriu tlače? Prebiehajúce tlačové úlohy nebudú vymazané.</translation> <translation id="3456078764689556234">Bola vytlačená <ph name="PRINTED_PAGES" />. strana z <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Tlač</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Tlačiareň</translation> <translation id="4131410914670010031">Čiernobielo</translation> <translation id="4145784616224233563">Firewall HTTP</translation> +<translation id="4170700058716978431">NEPODARILO SA</translation> <translation id="4227825898293920515">Platnosť hesla vyprší o <ph name="TIME" /></translation> <translation id="4238516577297848345">Neprebiehajú žiadne tlačové úlohy</translation> <translation id="4297501883039923494">Zastavené – neznáma chyba</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Zastavené</translation> <translation id="4808449224298348341">Bola zrušená tlačová úloha <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Vybrať priečinok v aplikácii Súbory…</translation> +<translation id="4848429997038228357">PREBIEHA</translation> <translation id="4890353053343094602">Okamžite si zvoľte nové heslo</translation> <translation id="4917889632206600977">Zastavené – minul sa papier</translation> <translation id="4921665434385737356">Nabité na <ph name="RATE" /> za <ph name="NUM_SECONDS" /> s.</translation> <translation id="4932733599132424254">Dátum</translation> <translation id="4985509611418653372">Spustiť</translation> +<translation id="500920857929044050">Zastaviť test</translation> <translation id="5154917547274118687">Pamäť</translation> <translation id="5168185087976003268">Stav batérie</translation> <translation id="520299634122159966">K dispozícii nie sú žiadne skenery</translation> <translation id="5212543919916444558">Na obrazovke nie je nič, s čím by som mohol pomôcť. Skúste klepnúť na mikrofón a niečo prikázať.</translation> <translation id="5222676887888702881">Odhlásiť sa</translation> +<translation id="5264277876637023664">Spustiť test procesora</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Znova spustiť postupy</translation> <translation id="5317780077021120954">Uložiť</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Spravovaný</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Ďalšie informácie v centre pomoci</translation> +<translation id="5635169860413004179">Zobraziť prehľad</translation> <translation id="5719918614880940190">Meria využitie procesora a ide o agregáciu všetkých jadier</translation> +<translation id="5797428682393400134">PODARILO SA</translation> <translation id="5832805196449965646">Pridať osobu</translation> <translation id="5895138241574237353">Reštartovať</translation> +<translation id="5931523347251946569">Súbor nebol nájdený</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, verzia <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Zavrieť</translation> <translation id="6048107060512778456">Nepodarilo sa – zaseknutý papier</translation> <translation id="6050189528197190982">Odtiene sivej</translation> <translation id="6058625436358447366">Ak chcete zmenu dokončiť, zadajte staré a nové heslo</translation> <translation id="6061772781719867950">Neúspešné požiadavky HTTP</translation> +<translation id="6104112872696127344">Skenovanie bolo zrušené</translation> <translation id="6106186594183574873">Ak chcete zmenu dokončiť, zadajte staré heslo</translation> <translation id="6108689792487843350">Brána je nedostupná</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Ak chcete zmenu dokončiť, zadajte nové heslo</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Ďalšie informácie</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Zastavené – zaseknutý papier</translation> <translation id="6517239166834772319">Preskúmať</translation> <translation id="6527081081771465939">Neznámy protokol zabezpečenia siete Wi‑Fi</translation> +<translation id="6532051501443766164">Skryť prehľad</translation> <translation id="65587193855025101">Reflektívny skener</translation> <translation id="6564646048574748301">Nepodarilo sa – nedostupné</translation> <translation id="6618744767048954150">Beží</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Vymazať</translation> <translation id="6704062477274546131">Prevod adresy IP na názov domény systémom DNS</translation> <translation id="6747215703636344499">Zastavené – výstup je plný</translation> +<translation id="6756731097889387912">Skenovanie sa nepodarilo zrušiť</translation> <translation id="6766275201586212568">Neúspešné preklady DNS</translation> <translation id="6768237774506518020">Vysoká miera neúspešných prekladov DNS</translation> <translation id="6839141349259399400">Nemôžete sa pripojiť k skenerom?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Vysoká latencia protokolu HTTPS</translation> <translation id="7658239707568436148">Zrušiť</translation> <translation id="7690294790491645610">Potvrďte nové heslo</translation> +<translation id="7732651821766520760">Test <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Stav</translation> <translation id="7855434858642800953">Naskenovaný súbor bol uložený.</translation> <translation id="7928373994957558460">Zobraziť umiestnenie súboru</translation> @@ -197,6 +214,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Predvolené</translation> <translation id="8845001906332463065">Získať pomoc</translation> +<translation id="8881098542468797602">Test bol úspešný</translation> <translation id="8910721771319628100">Predvolená sieť prekračuje prah latencie</translation> <translation id="8919837981463578619">Nepodarilo sa – chýba zásobník</translation> <translation id="8928727111548978589">Nepodarilo sa – minul sa papier</translation> @@ -206,4 +224,6 @@ <translation id="910415269708673980">Obnoviť tiket pre <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Skenuje sa <ph name="PAGE_NUMBER" />. strana</translation> <translation id="9111102763498581341">Odomknúť</translation> +<translation id="9149391708638971077">Spustiť test pamäte</translation> +<translation id="982713511914535780">Spustiť test vybíjania</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index 52e508e..7a7addf 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Išči</translation> <translation id="2570743873672969996">Izvajanje preizkusa <ph name="TEST_NAME" /> …</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">V redu</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2872961005593481000">Zaustavitev</translation> <translation id="3008341117444806826">OSVEŽI</translation>
diff --git a/chromeos/strings/chromeos_strings_sq.xtb b/chromeos/strings/chromeos_strings_sq.xtb index 54555caf1..896d483 100644 --- a/chromeos/strings/chromeos_strings_sq.xtb +++ b/chromeos/strings/chromeos_strings_sq.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> menaxhon këtë përdorues dhe mund të menaxhojë në distancë cilësimet dhe të monitorojë aktivitetin e përdoruesit.</translation> <translation id="150962533380566081">Kodi PUK i pavlefshëm.</translation> <translation id="1510238584712386396">Nisësi</translation> +<translation id="1621067168122174824">Ekzekuto testin e karikimit</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> bashkëbisedime)</translation> <translation id="1641857168437328880">Furnizuesi i dokumentit (një anë)</translation> <translation id="1644574205037202324">Historiku</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">Zgjidhësi i DNS-së i pranishëm</translation> <translation id="1743558184855585519">Bateria konsiderohet e konsumuar pasi të arrijë kufirin</translation> +<translation id="1792647875738159689">Skanimi po anulohet</translation> <translation id="1905710495812624430">U kaluan përpjekjet maksimale të lejuara.</translation> <translation id="1930797645656624981">Shërbimi i metodës së hyrjes së Chrome OS</translation> <translation id="1947737735496445907">Printuar</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Skano</translation> <translation id="2570743873672969996">Po ekzekuton testin <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistemi</translation> +<translation id="2740531572673183784">Në rregull</translation> <translation id="2805756323405976993">Aplikacionet</translation> <translation id="2872961005593481000">Ndërprit punën</translation> <translation id="3008341117444806826">RIFRESKO</translation> <translation id="3009958530611748826">Zgjidh një dosje për ruajtje</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Testi dështoi</translation> <translation id="3083667275341675831">Diagnostikimi i lidhshmërisë</translation> <translation id="3091839911843451378">Dështoi - Ndaloi</translation> <translation id="3102119246920354026">Memoria specifike</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Printimet më të vjetra se 1 ditë do të hiqen</translation> <translation id="3268178239013324452">Dështoi - Kapaku i hapur</translation> <translation id="3310640316857623290">Vonesa e DNS-së është shumë më lart se pragu i lejueshëm</translation> +<translation id="3328783797891415197">Testi është në ekzekutim</translation> <translation id="3369013195428705271">Je i sigurt që do ta pastrosh të gjithë historikun e printimit? Printimet e tua në vazhdim nuk do të pastrohen.</translation> <translation id="3456078764689556234">U printua faqja <ph name="PRINTED_PAGES" /> nga <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Po printon</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Printeri</translation> <translation id="4131410914670010031">Bardhezi</translation> <translation id="4145784616224233563">Mur mbrojtës HTTP</translation> +<translation id="4170700058716978431">DËSHTOI</translation> <translation id="4227825898293920515">Fjalëkalimi skadon për <ph name="TIME" /></translation> <translation id="4238516577297848345">Nuk ka printime në vazhdim</translation> <translation id="4297501883039923494">Ndaloi - Gabim i panjohur</translation> @@ -104,16 +110,19 @@ <translation id="4773299976671772492">Ndaloi</translation> <translation id="4808449224298348341">U anulua printimi i "<ph name="DOCUMENT_TITLE" />"</translation> <translation id="4832079907277790330">Zgjidh dosjen në aplikacionin "Skedarët"...</translation> +<translation id="4848429997038228357">NË EKZEKUTIM</translation> <translation id="4890353053343094602">Zgjidh një të re menjëherë</translation> <translation id="4917889632206600977">Ndaloi - Nuk ka letër</translation> <translation id="4921665434385737356">U karikua <ph name="RATE" /> në <ph name="NUM_SECONDS" /> sekonda.</translation> <translation id="4932733599132424254">Data</translation> <translation id="4985509611418653372">Ekzekuto</translation> +<translation id="500920857929044050">Ndalo testin</translation> <translation id="5154917547274118687">Memoria</translation> <translation id="5168185087976003268">Integriteti i baterisë</translation> <translation id="520299634122159966">Nuk ka skanerë</translation> <translation id="5212543919916444558">Nuk mund të gjej diçka në ekranin tënd me të cilën mund të të ndihmoj. Provo të trokasësh te mikrofoni për të më kërkuar diçka.</translation> <translation id="5222676887888702881">Dil</translation> +<translation id="5264277876637023664">Ekzekuto testin e njësisë CPU</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Riekzekuto rutinat</translation> <translation id="5317780077021120954">Ruaj</translation> @@ -126,17 +135,22 @@ <translation id="54609108002486618">E menaxhuar</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Mëso më shumë në "Qendrën e ndihmës"</translation> +<translation id="5635169860413004179">Shiko raportin</translation> <translation id="5719918614880940190">Kjo mat përdorimin e CPU-së dhe është një përmbledhje e të gjitha të dhënave kryesore</translation> +<translation id="5797428682393400134">ME SUKSES</translation> <translation id="5832805196449965646">Shto person</translation> <translation id="5895138241574237353">Rinis</translation> +<translation id="5931523347251946569">Skedari nuk u gjet</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, versioni <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Mbyll</translation> <translation id="6048107060512778456">Dështoi - Bllokim letre</translation> <translation id="6050189528197190982">Shkalla gri</translation> <translation id="6058625436358447366">Për të përfunduar, fut fjalëkalimet e vjetra dhe të reja</translation> <translation id="6061772781719867950">Kërkesa të dështuara në HTTP</translation> +<translation id="6104112872696127344">Skanimi është anuluar</translation> <translation id="6106186594183574873">Për të përfunduar, fut fjalëkalimin tënd të vjetër</translation> <translation id="6108689792487843350">Porta e kalimit është e paarritshme</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz / <ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Për të përfunduar, fut fjalëkalimin e ri</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Mëso më shumë</translation> @@ -147,6 +161,7 @@ <translation id="649050271426829538">Ndaloi - Bllokim letre</translation> <translation id="6517239166834772319">Eksploro</translation> <translation id="6527081081771465939">Protokoll i panjohur sigurie i Wi-Fi</translation> +<translation id="6532051501443766164">Fshih raportin</translation> <translation id="65587193855025101">Shtrat i sheshtë</translation> <translation id="6564646048574748301">Dështoi - Printeri është i paarritshëm</translation> <translation id="6618744767048954150">Në ekzekutim</translation> @@ -154,6 +169,7 @@ <translation id="6643016212128521049">Pastro</translation> <translation id="6704062477274546131">Rezolucioni i DNS-së</translation> <translation id="6747215703636344499">Ndaloi - Dalja është plot</translation> +<translation id="6756731097889387912">Skanimi nuk mund të anulohej</translation> <translation id="6766275201586212568">Rezolucione të dështuara të DNS-së</translation> <translation id="6768237774506518020">Normë e lartë e rezolucioneve të dështuara të DNS-së</translation> <translation id="6839141349259399400">Nuk mund të lidhesh me skanerët?</translation> @@ -169,6 +185,7 @@ <translation id="7648838807254605802">Vonesë e lartë në HTTPS</translation> <translation id="7658239707568436148">Anulo</translation> <translation id="7690294790491645610">Konfirmo fjalëkalimin e ri</translation> +<translation id="7732651821766520760">Testi: <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Statusi</translation> <translation id="7855434858642800953">Skedari i skanuar u ruajt!</translation> <translation id="7928373994957558460">Shfaq vendndodhjen e skedarit</translation> @@ -196,12 +213,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">I parazgjedhur</translation> <translation id="8845001906332463065">Kërko ndihmë</translation> +<translation id="8881098542468797602">Testi u krye me sukses</translation> <translation id="8910721771319628100">Rrjeti i parazgjedhur është mbi pragun e vonesës</translation> <translation id="8919837981463578619">Dështoi - Tabakaja mungon</translation> <translation id="8928727111548978589">Dështoi - Nuk ka letër</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> përpjekje të mbetura</translation> +<translation id="8970109610781093811">Ekzekuto përsëri</translation> <translation id="9088306295921699330">Përdorimi aktual</translation> <translation id="910415269708673980">Rifresko biletën për <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Po skanon faqen <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Shkyç</translation> +<translation id="9149391708638971077">Ekzekuto testin e memories</translation> +<translation id="982713511914535780">Ekzekuto testin e shkarkimit</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index e3f24bc..e41e964 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Skeniraj</translation> <translation id="2570743873672969996">Pokreće se test <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Potvrdi</translation> <translation id="2805756323405976993">Aplikacije</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="3008341117444806826">OSVEŽI</translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index e250add..939f04f 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Скенирај</translation> <translation id="2570743873672969996">Покреће се тест <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Систем</translation> +<translation id="2740531572673183784">Потврди</translation> <translation id="2805756323405976993">Апликације</translation> <translation id="2872961005593481000">Искључи</translation> <translation id="3008341117444806826">ОСВЕЖИ</translation>
diff --git a/chromeos/strings/chromeos_strings_sv.xtb b/chromeos/strings/chromeos_strings_sv.xtb index 162d19f4..d18dbbd7 100644 --- a/chromeos/strings/chromeos_strings_sv.xtb +++ b/chromeos/strings/chromeos_strings_sv.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> hanterar denna användare och kan fjärrhantera inställningar och övervaka användaraktivitet.</translation> <translation id="150962533380566081">Ogiltig PUK-kod.</translation> <translation id="1510238584712386396">Startprogram</translation> +<translation id="1621067168122174824">Kör laddningstest</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> trådar)</translation> <translation id="1641857168437328880">Dokumentmatare (ensidig)</translation> <translation id="1644574205037202324">Historik</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS-resolver finns</translation> <translation id="1743558184855585519">Batteriet anses förbrukat när det når gränsen</translation> +<translation id="1792647875738159689">Skanningen avbryts</translation> <translation id="1905710495812624430">Du har försökt för många gånger.</translation> <translation id="1930797645656624981">Tjänst för inmatningsmetod för Chrome OS</translation> <translation id="1947737735496445907">Utskrivet</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Sök</translation> <translation id="2570743873672969996">Kör test av <ph name="TEST_NAME" /> …</translation> <translation id="2620436844016719705">System</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Appar</translation> <translation id="2872961005593481000">Stäng av</translation> <translation id="3008341117444806826">UPPDATERA</translation> <translation id="3009958530611748826">Välj vilken mapp du vill spara i</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" /> mA</translation> +<translation id="3069085583900247081">Testet misslyckades</translation> <translation id="3083667275341675831">Anslutningsdiagnostik</translation> <translation id="3091839911843451378">Misslyckades – skrivaren har stannat</translation> <translation id="3102119246920354026">Cacheminne</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Utskriftsjobb som är äldre än 1 dagar tas bort</translation> <translation id="3268178239013324452">Misslyckades – luckan är öppen</translation> <translation id="3310640316857623290">DNS-latensen är avsevärt högre än det godtagbara tröskelvärdet</translation> +<translation id="3328783797891415197">Testet körs</translation> <translation id="3369013195428705271">Vill du rensa all utskriftshistorik? De pågående utskriftsjobben rensas inte.</translation> <translation id="3456078764689556234">Sida <ph name="PRINTED_PAGES" /> av <ph name="TOTAL_PAGES" /> har skrivits ut.</translation> <translation id="3459509316159669723">Skriva ut</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Skrivare</translation> <translation id="4131410914670010031">Svartvitt</translation> <translation id="4145784616224233563">HTTP-brandvägg</translation> +<translation id="4170700058716978431">MISSLYCKADES</translation> <translation id="4227825898293920515">Lösenordet upphör att gälla om <ph name="TIME" /></translation> <translation id="4238516577297848345">Inga utskriftsjobb pågår</translation> <translation id="4297501883039923494">Har stoppats – okänt fel</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Har stoppats</translation> <translation id="4808449224298348341">Utskriftsjobbet <ph name="DOCUMENT_TITLE" /> har avbrutits</translation> <translation id="4832079907277790330">Välj en fil i appen Filer</translation> +<translation id="4848429997038228357">KÖRS</translation> <translation id="4890353053343094602">Välj ett nytt omedelbart</translation> <translation id="4917889632206600977">Har stoppats – slut på papper</translation> <translation id="4921665434385737356">Har laddat <ph name="RATE" /> på <ph name="NUM_SECONDS" /> sekunder.</translation> <translation id="4932733599132424254">Datum</translation> <translation id="4985509611418653372">Kör</translation> +<translation id="500920857929044050">Avsluta testet</translation> <translation id="5154917547274118687">Minne</translation> <translation id="5168185087976003268">Batterinivå</translation> <translation id="520299634122159966">Det finns inga tillgängliga skannrar</translation> <translation id="5212543919916444558">Det finns inget på skärmen som jag kan hjälpa till med. Tryck på mikrofonen och fråga om något.</translation> <translation id="5222676887888702881">Logga ut</translation> +<translation id="5264277876637023664">Kör CPU-test</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Kör rutinerna igen</translation> <translation id="5317780077021120954">Spara</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Hanterade</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Läs mer i hjälpcentret</translation> +<translation id="5635169860413004179">Visa rapporten</translation> <translation id="5719918614880940190">Detta mäter CPU-användningen och är en sammanställning av alla kärnor</translation> +<translation id="5797428682393400134">LYCKADES</translation> <translation id="5832805196449965646">Lägg till person</translation> <translation id="5895138241574237353">Starta om</translation> +<translation id="5931523347251946569">Filen hittades inte</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, version <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Stäng</translation> <translation id="6048107060512778456">Misslyckades – papperstrassel</translation> <translation id="6050189528197190982">Gråskala</translation> <translation id="6058625436358447366">Slutför genom att ange det gamla och det nya lösenordet</translation> <translation id="6061772781719867950">Misslyckade HTTP-förfrågningar</translation> +<translation id="6104112872696127344">Skanningen har avbrutits</translation> <translation id="6106186594183574873">Slutför genom att ange det gamla lösenordet</translation> <translation id="6108689792487843350">Gateway kan inte nås</translation> +<translation id="6114428539405324828"><ph name="CURRENT" /> GHz/<ph name="MAX" /> GHz</translation> <translation id="6146993107019042706">Slutför genom att ange det nya lösenordet</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Läs mer</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Har stoppats – papperstrassel</translation> <translation id="6517239166834772319">Utforska</translation> <translation id="6527081081771465939">Okänt säkerhetsprotokoll för Wi-Fi</translation> +<translation id="6532051501443766164">Dölj rapporten</translation> <translation id="65587193855025101">Flatbädd</translation> <translation id="6564646048574748301">Misslyckades – skrivaren kan inte nås</translation> <translation id="6618744767048954150">Körs</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Rensa</translation> <translation id="6704062477274546131">DNS-matchning</translation> <translation id="6747215703636344499">Har stoppats – utmatningsfacket är fullt</translation> +<translation id="6756731097889387912">Det gick inte att avbryta</translation> <translation id="6766275201586212568">Misslyckade DNS-matchningar</translation> <translation id="6768237774506518020">Hög felfrekvens för DNS-matchningar</translation> <translation id="6839141349259399400">Går det inte att ansluta till någon skanner?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Hög HTTPS-fördröjning</translation> <translation id="7658239707568436148">Avbryt</translation> <translation id="7690294790491645610">Bekräfta det nya lösenordet</translation> +<translation id="7732651821766520760">Test – <ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Status</translation> <translation id="7855434858642800953">Den skannade filen har sparats.</translation> <translation id="7928373994957558460">Visa filplats</translation> @@ -197,6 +214,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Standard</translation> <translation id="8845001906332463065">Få hjälp</translation> +<translation id="8881098542468797602">Testet lyckades</translation> <translation id="8910721771319628100">Tröskelvärdet för latens överskreds för standardnätverket</translation> <translation id="8919837981463578619">Misslyckades – fack saknas</translation> <translation id="8928727111548978589">Misslyckades – slut på papper</translation> @@ -206,4 +224,6 @@ <translation id="910415269708673980">Uppdatera biljetten för <ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Skannar sidan <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Lås upp</translation> +<translation id="9149391708638971077">Kör minnestest</translation> +<translation id="982713511914535780">Kör urladdningstest</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index 10738ffc..f8ca645 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -49,6 +49,7 @@ <translation id="2517472476991765520">Tafuta</translation> <translation id="2570743873672969996">Inatekeleza jaribio la <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Mfumo</translation> +<translation id="2740531572673183784">Sawa</translation> <translation id="2805756323405976993">Programu</translation> <translation id="2872961005593481000">Zima</translation> <translation id="3008341117444806826">ONYESHA UPYA</translation>
diff --git a/chromeos/strings/chromeos_strings_ta.xtb b/chromeos/strings/chromeos_strings_ta.xtb index c9f5055..122a7a2c 100644 --- a/chromeos/strings/chromeos_strings_ta.xtb +++ b/chromeos/strings/chromeos_strings_ta.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">ஸ்கேன் செய்</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> சோதனை இயங்குகிறது...</translation> <translation id="2620436844016719705">அமைப்பு</translation> +<translation id="2740531572673183784">சரி</translation> <translation id="2805756323405976993">ஆப்ஸ்</translation> <translation id="2872961005593481000">நிறுத்து</translation> <translation id="3008341117444806826">புதுப்பி</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index 2f12170..3456efd3 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" />, ఈ యూజర్ను మేనేజ్ చేస్తుంది, ఇంకా అది సెట్టింగ్లను రిమోట్గా మేనేజ్ చేయవచ్చు, యూజర్ యాక్టివిటీని మానిటర్ చేయవచ్చు.</translation> <translation id="150962533380566081">PUK చెల్లదు.</translation> <translation id="1510238584712386396">లాంచర్</translation> +<translation id="1621067168122174824">ఛార్జ్ పరీక్షను రన్ చేయండి</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> థ్రెడ్లు)</translation> <translation id="1641857168437328880">డాక్యుమెంట్ ఫీడర్ (ఒక వైపున)</translation> <translation id="1644574205037202324">హిస్టరీ</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">లెటర్</translation> <translation id="1706391837335750954">DNS రిసాల్వర్ అందుబాటులో ఉంది</translation> <translation id="1743558184855585519">బ్యాటరీ ఒకసారి దాని పరిధిని చేరుకోగానే అది వినియోగించబడినదిగా పరిగణించబడుతుంది</translation> +<translation id="1792647875738159689">స్కానింగ్ రద్దు అవుతోంది</translation> <translation id="1905710495812624430">అనుమతించిన గరిష్ట ప్రయత్నాలు మించిపోయారు.</translation> <translation id="1930797645656624981">Chrome OS ఇన్పుట్ విధానం సేవ</translation> <translation id="1947737735496445907">ప్రింట్ అయింది</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">స్కాన్ చేయి</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> పరీక్షను రన్ చేస్తోంది...</translation> <translation id="2620436844016719705">సిస్టమ్</translation> +<translation id="2740531572673183784">సరే</translation> <translation id="2805756323405976993">యాప్స్</translation> <translation id="2872961005593481000">షట్ డౌన్ చెయ్యండి</translation> <translation id="3008341117444806826">రిఫ్రెష్ చేయి</translation> <translation id="3009958530611748826">దీనిలో సేవ్ చేయడానికి ఫోల్డర్ను ఎంచుకోండి</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">పరీక్ష విఫలమైంది</translation> <translation id="3083667275341675831">కనెక్టివిటీ సమస్య విశ్లేషణ</translation> <translation id="3091839911843451378">విఫలమైంది - ఆగిపోయింది</translation> <translation id="3102119246920354026">కాష్</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">1 రోజుకు పైగా ఉన్న ప్రింట్ టాస్క్లు తీసివేయబడతాయి</translation> <translation id="3268178239013324452">విఫలమైంది - తలుపు తెరుచుకుని ఉంది</translation> <translation id="3310640316857623290">DNS ప్రతిస్పందన సమయం అనుమతించదగిన పరిమితికి మించి ఉంది</translation> +<translation id="3328783797891415197">పరీక్ష రన్ అవుతోంది</translation> <translation id="3369013195428705271">మీరు ఖచ్చితంగా ప్రింట్ చరిత్ర మొత్తాన్ని క్లియర్ చేయాలనుకుంటున్నారా? మీ కొనసాగుతున్న ప్రింట్ టాస్క్లు క్లియర్ చేయబడవు.</translation> <translation id="3456078764689556234"><ph name="TOTAL_PAGES" /> పేజీలలో <ph name="PRINTED_PAGES" />వ పేజీ ప్రింట్ చేయబడింది.</translation> <translation id="3459509316159669723">ప్రింటింగ్</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">ప్రింటర్</translation> <translation id="4131410914670010031">నలుపు మరియు తెలుపు</translation> <translation id="4145784616224233563">HTTP ఫైర్వాల్</translation> +<translation id="4170700058716978431">విఫలమైంది</translation> <translation id="4227825898293920515"><ph name="TIME" />లో పాస్వర్డ్ గడువు ముగుస్తుంది</translation> <translation id="4238516577297848345">ప్రింట్ టాస్క్లు ఏవీ ప్రోగ్రెస్లో లేవు</translation> <translation id="4297501883039923494">ఆగిపోయింది - తెలియని ఎర్రర్</translation> @@ -104,16 +110,19 @@ <translation id="4773299976671772492">ఆపివేయబడింది</translation> <translation id="4808449224298348341"><ph name="DOCUMENT_TITLE" /> ప్రింట్ టాస్క్ రద్దు చేయబడింది</translation> <translation id="4832079907277790330">Files యాప్లో ఫోల్డర్ను ఎంచుకోండి...</translation> +<translation id="4848429997038228357">రన్ అవుతోంది</translation> <translation id="4890353053343094602">వెంటనే ఒక కొత్త దానిని ఎంచుకోండి</translation> <translation id="4917889632206600977">ఆగిపోయింది - పేపర్లు లేవు</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> సెకన్లలో <ph name="RATE" /> ఛార్జ్ అయ్యింది.</translation> <translation id="4932733599132424254">తేదీ</translation> <translation id="4985509611418653372">రన్ చేయి</translation> +<translation id="500920857929044050">పరీక్షను ఆపండి</translation> <translation id="5154917547274118687">మెమరీ</translation> <translation id="5168185087976003268">బ్యాటరీ సామర్థ్యం</translation> <translation id="520299634122159966">స్కానర్లు అందుబాటులో లేవు</translation> <translation id="5212543919916444558">నేను సహాయం అందించగలిగేలా మీ స్క్రీన్పై నాకు ఏదీ కనిపించలేదు. మైక్ను నొక్కి, నన్ను ఏదైనా అడగడానికి ప్రయత్నించండి.</translation> <translation id="5222676887888702881">సైన్ ఔట్</translation> +<translation id="5264277876637023664">CPU పరీక్షను రన్ చేయండి</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">రొటీన్లను మళ్లీ అమలు చేయి</translation> <translation id="5317780077021120954">సేవ్ చేయి</translation> @@ -126,17 +135,22 @@ <translation id="54609108002486618">నిర్వహించబడింది</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">సహాయ కేంద్రంలో మరింత తెలుసుకోండి</translation> +<translation id="5635169860413004179">రిపోర్ట్ను చూడండి</translation> <translation id="5719918614880940190">ఇది CPU వినియోగాన్ని లెక్కిస్తుంది, అలాగే ఇది అన్ని కోర్ల సముదాయం</translation> +<translation id="5797428682393400134">విజయవంతమైంది</translation> <translation id="5832805196449965646">వ్యక్తిని జోడించు</translation> <translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5931523347251946569">ఫైల్ కనుగొనబడలేదు</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, వెర్షన్ <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">మూసివేయి</translation> <translation id="6048107060512778456">విఫలమైంది - కాగితం జామ్ అయింది</translation> <translation id="6050189528197190982">బూడిద రంగు ప్రమాణం</translation> <translation id="6058625436358447366">దీనిని ముగించడానికి, మీ పాత, కొత్త పాస్వర్డ్లను నమోదు చేయండి</translation> <translation id="6061772781719867950">విఫలమైన HTTP రిక్వెస్ట్లు</translation> +<translation id="6104112872696127344">స్కానింగ్ రద్దు చేయబడింది</translation> <translation id="6106186594183574873">దీనిని ముగించడానికి, మీ పాత పాస్వర్డ్ను నమోదు చేయండి</translation> <translation id="6108689792487843350">గేట్వే అందుబాటులో లేదు</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">దీనిని ముగించడానికి, మీ కొత్త పాస్వర్డ్ను నమోదు చేయండి</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">మరింత తెలుసుకోండి</translation> @@ -147,6 +161,7 @@ <translation id="649050271426829538">ఆగిపోయింది - కాగితం జామ్ అయింది</translation> <translation id="6517239166834772319">అన్వేషణ</translation> <translation id="6527081081771465939">తెలియని WiFi భద్రతా ప్రోటోకాల్</translation> +<translation id="6532051501443766164">రిపోర్ట్ను దాచు</translation> <translation id="65587193855025101">ఫ్లాట్బెడ్</translation> <translation id="6564646048574748301">విఫలమైంది - ప్రింటర్ను చేరుకోవడం సాధ్యపడలేదు</translation> <translation id="6618744767048954150">రన్ అవుతున్నాయి</translation> @@ -154,6 +169,7 @@ <translation id="6643016212128521049">క్లియర్ చేయి</translation> <translation id="6704062477274546131">DNS రిజల్యూషన్</translation> <translation id="6747215703636344499">ఆగిపోయింది - అవుట్పుట్ నిండిపోయింది</translation> +<translation id="6756731097889387912">స్కానింగ్ను రద్దు చేయడం సాధ్యపడలేదు</translation> <translation id="6766275201586212568">విఫలమైన DNS రిజల్యూషన్లు</translation> <translation id="6768237774506518020">అధిక DNS రిజల్యూషన్ వైఫల్య రేటు</translation> <translation id="6839141349259399400">స్కానర్లకు కనెక్ట్ చేయడం సాధ్యపడటంలేదా?</translation> @@ -169,6 +185,7 @@ <translation id="7648838807254605802">అధిక HTTPS ప్రతిస్పందన సమయం</translation> <translation id="7658239707568436148">రద్దు చేయి</translation> <translation id="7690294790491645610">కొత్త పాస్వర్డ్ను నిర్ధారించండి</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> పరీక్ష</translation> <translation id="7805768142964895445">స్థితి</translation> <translation id="7855434858642800953">స్కాన్ చేయబడిన ఫైల్ సేవ్ చేయబడింది!</translation> <translation id="7928373994957558460">ఫైల్ లొకేషన్ను చూపు</translation> @@ -196,6 +213,7 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">డిఫాల్ట్</translation> <translation id="8845001906332463065">సహాయం పొందండి</translation> +<translation id="8881098542468797602">పరీక్ష విజయవంతమైంది</translation> <translation id="8910721771319628100">పరిమితిని మించి ప్రతిస్పందన సమయం ఉన్న డిఫాల్ట్ నెట్వర్క్</translation> <translation id="8919837981463578619">విఫలమైంది - ట్రే అందుబాటులో లేదు</translation> <translation id="8928727111548978589">విఫలమైంది - పేపర్ లేదు</translation> @@ -205,4 +223,6 @@ <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> సంబంధిత టిక్కెట్ను రిఫ్రెష్ చేయండి</translation> <translation id="9106415115617144481">పేజీ <ph name="PAGE_NUMBER" />ని స్కాన్ చేస్తోంది</translation> <translation id="9111102763498581341">అన్లాక్ చేయి</translation> +<translation id="9149391708638971077">మెమరీ పరీక్షను రన్ చేయండి</translation> +<translation id="982713511914535780">డిస్ఛార్జ్ పరీక్షను రన్ చేయండి</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_th.xtb b/chromeos/strings/chromeos_strings_th.xtb index 1f78627..3dc9b74 100644 --- a/chromeos/strings/chromeos_strings_th.xtb +++ b/chromeos/strings/chromeos_strings_th.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">สแกน</translation> <translation id="2570743873672969996">กำลังทำการทดสอบ <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">ระบบ</translation> +<translation id="2740531572673183784">ตกลง</translation> <translation id="2805756323405976993">แอป</translation> <translation id="2872961005593481000">ปิด</translation> <translation id="3008341117444806826">รีเฟรช</translation>
diff --git a/chromeos/strings/chromeos_strings_tr.xtb b/chromeos/strings/chromeos_strings_tr.xtb index 02bcd2c..489f67b 100644 --- a/chromeos/strings/chromeos_strings_tr.xtb +++ b/chromeos/strings/chromeos_strings_tr.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Tara</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> adlı test çalıştırılıyor...</translation> <translation id="2620436844016719705">Sistem</translation> +<translation id="2740531572673183784">Tamam</translation> <translation id="2805756323405976993">Uygulamalar</translation> <translation id="2872961005593481000">Kapat</translation> <translation id="3008341117444806826">YENİLE</translation>
diff --git a/chromeos/strings/chromeos_strings_uk.xtb b/chromeos/strings/chromeos_strings_uk.xtb index b3606cc..6ff4e90 100644 --- a/chromeos/strings/chromeos_strings_uk.xtb +++ b/chromeos/strings/chromeos_strings_uk.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Сканувати</translation> <translation id="2570743873672969996">Тестування (<ph name="TEST_NAME" />)…</translation> <translation id="2620436844016719705">Система</translation> +<translation id="2740531572673183784">OK</translation> <translation id="2805756323405976993">Додатки</translation> <translation id="2872961005593481000">Завершити роботу</translation> <translation id="3008341117444806826">ОНОВИТИ</translation>
diff --git a/chromeos/strings/chromeos_strings_ur.xtb b/chromeos/strings/chromeos_strings_ur.xtb index c02d7c4..2666a56 100644 --- a/chromeos/strings/chromeos_strings_ur.xtb +++ b/chromeos/strings/chromeos_strings_ur.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">اسکین کریں</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> ٹیسٹ چل رہا ہے...</translation> <translation id="2620436844016719705">سسٹم</translation> +<translation id="2740531572673183784">ٹھیک ہے</translation> <translation id="2805756323405976993">اطلاقات</translation> <translation id="2872961005593481000">بند کریں</translation> <translation id="3008341117444806826">ریفریش کریں</translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index 34e3b32..4706fcd 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732"><ph name="MANAGER" /> bu foydalanuvchi faoliyatini masofadan kuzatishi va boshqarishi mumkin.</translation> <translation id="150962533380566081">PUK kod xato.</translation> <translation id="1510238584712386396">Ishga tushirish paneli</translation> +<translation id="1621067168122174824">Quvvatlanishini tekshirish</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> ta oqim)</translation> <translation id="1641857168437328880">Hujjat tasmasi (bir tomonlama)</translation> <translation id="1644574205037202324">Tarix</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Letter</translation> <translation id="1706391837335750954">DNS vositasi mavjud</translation> <translation id="1743558184855585519">Batareya ishlatish chekloviga yetganda eskirgan hisoblanadi</translation> +<translation id="1792647875738159689">Skanerlash bekor qilinmoqda</translation> <translation id="1905710495812624430">Urinishlar soni cheklovdan oshib ketdi.</translation> <translation id="1930797645656624981">Chrome OS matn kiritish xizmati</translation> <translation id="1947737735496445907">Chop etildi</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Qidiruv</translation> <translation id="2570743873672969996"><ph name="TEST_NAME" /> testi bajarilmoqda...</translation> <translation id="2620436844016719705">Tizim</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Ilovalar</translation> <translation id="2872961005593481000">Ishni tamomlash</translation> <translation id="3008341117444806826">YANGILASH</translation> <translation id="3009958530611748826">Saqlash uchun jild tanlang</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">Tekshiruv bajarilmadi</translation> <translation id="3083667275341675831">Aloqa diagnostikasi</translation> <translation id="3091839911843451378">Bajarilmadi - Toʻxtatildi</translation> <translation id="3102119246920354026">Kesh</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">1 kundan eski chop etish vazifalari avtomatik tozalanadi</translation> <translation id="3268178239013324452">Bajarilmadi - Eshikchasi ochiq</translation> <translation id="3310640316857623290">DNS kutish vaqti ruxsat etilgan chegaradan juda baland</translation> +<translation id="3328783797891415197">Tekshirilmoqda</translation> <translation id="3369013195428705271">Chop etish tarixi tozalansinmi? Joriy chop etish vazifalari oʻchirib tashlanmaydi.</translation> <translation id="3456078764689556234">Sahifa chop etildi: <ph name="PRINTED_PAGES" /> / <ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Chop etish</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Printer</translation> <translation id="4131410914670010031">Oq-qora</translation> <translation id="4145784616224233563">HTTP Fayrvol</translation> +<translation id="4170700058716978431">BAJARILMADI</translation> <translation id="4227825898293920515">Parol muddati tugashiga <ph name="TIME" /> qoldi</translation> <translation id="4238516577297848345">Hozir hech nima chop etilmayapti</translation> <translation id="4297501883039923494">Toʻxtatildi – Notanish xato</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">To‘xtatildi</translation> <translation id="4808449224298348341">Chop etilishi bekor qilindi: <ph name="DOCUMENT_TITLE" /></translation> <translation id="4832079907277790330">Fayllar ilovasida jild tanlang...</translation> +<translation id="4848429997038228357">BAJARILMOQDA</translation> <translation id="4890353053343094602">Tezda yangi parol tanlang</translation> <translation id="4917889632206600977">Toʻxtatildi – Qogʻoz tugadi</translation> <translation id="4921665434385737356"><ph name="NUM_SECONDS" /> soniyada <ph name="RATE" /> quvvat oldi.</translation> <translation id="4932733599132424254">Sana</translation> <translation id="4985509611418653372">Ishga tushirish</translation> +<translation id="500920857929044050">Tekshiruvni toʻxtatish</translation> <translation id="5154917547274118687">Operativ xotira</translation> <translation id="5168185087976003268">Quvvat darajasi</translation> <translation id="520299634122159966">Skanerlar topilmadi</translation> <translation id="5212543919916444558">Ekranda men yordam bera oladigan hech narsa topilmadi. Mikrofon ustiga bosing va savolni ayting.</translation> <translation id="5222676887888702881">Tizimdan chiqish</translation> +<translation id="5264277876637023664">Protsessor tezligini tekshirish</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Dasturlarni qayta bajarish</translation> <translation id="5317780077021120954">Saqlash</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Boshqariladigan</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Batafsil axborotni Yordam markazidan oling</translation> +<translation id="5635169860413004179">Hisobotni ochish</translation> <translation id="5719918614880940190">Bunda butun CPU tezligi va barcha yadrolar faoliyati tekshiriladi</translation> +<translation id="5797428682393400134">BAJARILDI</translation> <translation id="5832805196449965646">Foydalanuvchi qo‘shish</translation> <translation id="5895138241574237353">Qayta ishga tushirish</translation> +<translation id="5931523347251946569">Fayl topilmadi</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, versiya: <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Yopish</translation> <translation id="6048107060512778456">Bajarilmadi - Qogʻoz tiqilib qoldi</translation> <translation id="6050189528197190982">Kulrang tuslari</translation> <translation id="6058625436358447366">Yakunlash uchun eski va yangi parollarni kiriting</translation> <translation id="6061772781719867950">HTTP soʻrovlari yuborilmadi</translation> +<translation id="6104112872696127344">Skanlash amali bekor qilindi</translation> <translation id="6106186594183574873">Yakunlash uchun eski parolni kiriting</translation> <translation id="6108689792487843350">Shlyuz bilan aloqa yoʻq</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GGs / <ph name="MAX" />GGs</translation> <translation id="6146993107019042706">Yakunlash uchun yangi parolni kiriting</translation> <translation id="6147514244879357420">PNG</translation> <translation id="6165508094623778733">Batafsil</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Toʻxtatildi – Qogʻoz tiqilib qoldi</translation> <translation id="6517239166834772319">Tanishuv</translation> <translation id="6527081081771465939">Notanish WiFi xavfsizlik protokoli</translation> +<translation id="6532051501443766164">Hisobotni yopish</translation> <translation id="65587193855025101">Planshetli</translation> <translation id="6564646048574748301">Bajarilmadi - Printer ulanmagan</translation> <translation id="6618744767048954150">Bajarilmoqda</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Tozalash</translation> <translation id="6704062477274546131">DNS parametrlari</translation> <translation id="6747215703636344499">Toʻxtatildi – Boʻsh joy qolmadi</translation> +<translation id="6756731097889387912">Skanerlash bekor qilinmadi</translation> <translation id="6766275201586212568">DNS manzil ajratilmadi</translation> <translation id="6768237774506518020">DNS manzil ajratilmasligi juda yuqori</translation> <translation id="6839141349259399400">Skanerlarga ulanmadimi?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">HTTPS kechikishi yuqori</translation> <translation id="7658239707568436148">Bekor qilish</translation> <translation id="7690294790491645610">Yangi parolni tasdiqlang.</translation> +<translation id="7732651821766520760"><ph name="TEST_NAME" /> sinovi</translation> <translation id="7805768142964895445">Holat</translation> <translation id="7855434858642800953">Skanerlangan fayl saqlandi!</translation> <translation id="7928373994957558460">Fayl joylashuvini chiqarish</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Standart</translation> <translation id="8845001906332463065">Yordam</translation> +<translation id="8881098542468797602">Tekshiruv yakunlandi</translation> <translation id="8910721771319628100">Birlamchi tarmoq kutish vaqti baland</translation> <translation id="8919837981463578619">Bajarilmadi - Tarnov joyida emas</translation> <translation id="8928727111548978589">Bajarilmadi - Qogʻoz tugadi</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> ta urinish qoldi</translation> +<translation id="8970109610781093811">Qayta tekshirish</translation> <translation id="9088306295921699330">Joriy faollik</translation> <translation id="910415269708673980"><ph name="PRINCIPAL_NAME" /> uchun chiptani yangilash</translation> <translation id="9106415115617144481"><ph name="PAGE_NUMBER" /> ta sahifa skanerlandi</translation> <translation id="9111102763498581341">Qulfdan yechish</translation> +<translation id="9149391708638971077">Xotirani tekshirish</translation> +<translation id="982713511914535780">Quvvatsizlanishini tekshirish</translation> </translationbundle> \ No newline at end of file
diff --git a/chromeos/strings/chromeos_strings_vi.xtb b/chromeos/strings/chromeos_strings_vi.xtb index 16fdadf5..8007086 100644 --- a/chromeos/strings/chromeos_strings_vi.xtb +++ b/chromeos/strings/chromeos_strings_vi.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">Quét</translation> <translation id="2570743873672969996">Đang chạy kiểm tra <ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Hệ thống</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Ứng dụng</translation> <translation id="2872961005593481000">Tắt</translation> <translation id="3008341117444806826">LÀM MỚI</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-CN.xtb b/chromeos/strings/chromeos_strings_zh-CN.xtb index d757700..0491b63 100644 --- a/chromeos/strings/chromeos_strings_zh-CN.xtb +++ b/chromeos/strings/chromeos_strings_zh-CN.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">扫描</translation> <translation id="2570743873672969996">正在运行<ph name="TEST_NAME" />测试…</translation> <translation id="2620436844016719705">系统</translation> +<translation id="2740531572673183784">确定</translation> <translation id="2805756323405976993">应用</translation> <translation id="2872961005593481000">关机</translation> <translation id="3008341117444806826">刷新</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index cbdfce6a..1c6e932 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -47,6 +47,7 @@ <translation id="2517472476991765520">掃瞄</translation> <translation id="2570743873672969996">正在執行<ph name="TEST_NAME" />測試…</translation> <translation id="2620436844016719705">系統</translation> +<translation id="2740531572673183784">確定</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2872961005593481000">關閉</translation> <translation id="3008341117444806826">更新</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index 4cef5633..f8af2efb 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -42,11 +42,12 @@ <translation id="2364498172489649528">已通過</translation> <translation id="2375079107209812402">剩餘嘗試次數:<ph name="ATTEMPTS_LEFT" /> 次</translation> <translation id="2391082728065870591">傳送意見回饋報告</translation> -<translation id="2461822463642141190">目前耗電量</translation> +<translation id="2461822463642141190">電流</translation> <translation id="249323605434939166"><ph name="QUERY_TEXT" /> · <ph name="SOURCE_LANGUAGE_NAME" /></translation> <translation id="2517472476991765520">掃描</translation> <translation id="2570743873672969996">正在執行<ph name="TEST_NAME" />測試...</translation> <translation id="2620436844016719705">系統</translation> +<translation id="2740531572673183784">確定</translation> <translation id="2805756323405976993">應用程式</translation> <translation id="2872961005593481000">關閉</translation> <translation id="3008341117444806826">更新</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index 793a67f..157b62e 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -22,6 +22,7 @@ <translation id="1499900233129743732">I-<ph name="MANAGER" /> iphatha lo msebenzisi futhi ingaphatha amasethingi isekudeni futhi iqaphe umsebenzi womsebenzisi.</translation> <translation id="150962533380566081">I-PUK engavumelekile.</translation> <translation id="1510238584712386396">Isiqalisi</translation> +<translation id="1621067168122174824">Qalisa ukuhlola kokushaja</translation> <translation id="1633910004424187862"><ph name="CPU_NAME" /> (<ph name="THREAD_COUNT" /> uchungechunge)</translation> <translation id="1641857168437328880">Isiphakeli Sedokhumenti (Uhlangothi olulodwa)</translation> <translation id="1644574205037202324">Umlando</translation> @@ -29,6 +30,7 @@ <translation id="1703835215927279855">Incwadi</translation> <translation id="1706391837335750954">Isixazululi se-DNS Sikhona</translation> <translation id="1743558184855585519">Ibhethri licatshangelwa njengelidlekile lapho lifinyelela umkhawulo</translation> +<translation id="1792647875738159689">Ikhansela ukuskena</translation> <translation id="1905710495812624430">Imizamo emikhulu evunyelwe idluliwe.</translation> <translation id="1930797645656624981">Isevisi yendlela yokufaka kwe-Chrome OS</translation> <translation id="1947737735496445907">Kuphrintiwe</translation> @@ -47,11 +49,13 @@ <translation id="2517472476991765520">Skena</translation> <translation id="2570743873672969996">Iqalisa ukuhlola kwe-<ph name="TEST_NAME" />...</translation> <translation id="2620436844016719705">Isistimu</translation> +<translation id="2740531572673183784">Ok</translation> <translation id="2805756323405976993">Izinhlelo zokusebenza</translation> <translation id="2872961005593481000">Cisha</translation> <translation id="3008341117444806826">VUSELELA</translation> <translation id="3009958530611748826">Khetha ifolda ozolondoloza kuyo</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> +<translation id="3069085583900247081">Ukuhlola akuphumelelanga</translation> <translation id="3083667275341675831">Ukuxilongwa Kokuxhumana</translation> <translation id="3091839911843451378">Yehlulekile - Imile</translation> <translation id="3102119246920354026">Inqolobane</translation> @@ -61,6 +65,7 @@ <translation id="3246869037381808805">Imisebenzi yokuphrinta emidala kunosuku olu-1 izosuswa</translation> <translation id="3268178239013324452">Yehlulekile - Umnyango uvuliwe</translation> <translation id="3310640316857623290">Ukubambezeleka kwe-DNS kungaphezulu kakhulu komkhawulo ovumelekile</translation> +<translation id="3328783797891415197">Ukuhlolwa kuyaqhubeka</translation> <translation id="3369013195428705271">Uqinisekile ukuthi ufuna ukusula wonke umlando wokuphrinta? Imisebenzi yakho yokuphrinta eqhubekayo ngeke isulwe.</translation> <translation id="3456078764689556234">Iphrinte ikhasi elingu-<ph name="PRINTED_PAGES" /> kwangu-<ph name="TOTAL_PAGES" />.</translation> <translation id="3459509316159669723">Iyaphrinta</translation> @@ -80,6 +85,7 @@ <translation id="4034824040120875894">Iphrinta</translation> <translation id="4131410914670010031">Okumnyama nokumhlophe</translation> <translation id="4145784616224233563">Uhlelo lokuvikela le-HTTP</translation> +<translation id="4170700058716978431">YEHLULEKILE</translation> <translation id="4227825898293920515">Iphasiwedi iphelelwa isikhathi ngo-<ph name="TIME" /></translation> <translation id="4238516577297848345">Ayikho imisebenzi yokuphrinta eqhubekayo</translation> <translation id="4297501883039923494">Imile - Iphutha elingaziwa</translation> @@ -104,17 +110,20 @@ <translation id="4773299976671772492">Imisiwe</translation> <translation id="4808449224298348341">Umsebenzi wokuphrinta i-<ph name="DOCUMENT_TITLE" /> ukhanseliwe</translation> <translation id="4832079907277790330">Khetha ifolda kuhlelo lokusebenza Lamafayela...</translation> +<translation id="4848429997038228357">IYAQHUBEKA</translation> <translation id="4890353053343094602">Khetha elisha elilodwa ngokushesha</translation> <translation id="4917889632206600977">Imile - Iphepha liphelile</translation> <translation id="4921665434385737356">Ikhokhiswe <ph name="RATE" /> ngamasekhondi angu-<ph name="NUM_SECONDS" />.</translation> <translation id="4932733599132424254">Idethi</translation> <translation id="4985509611418653372">Ukugijima</translation> +<translation id="500920857929044050">Misa ukuhlola</translation> <translation id="5154917547274118687">Imemori</translation> <translation id="5168185087976003268">Impilo yebhethri</translation> <translation id="520299634122159966">Awekho amaskena atholakalayo</translation> <translation id="5212543919916444558">Angikwazi ukuthola lutho kusikrini sakho engingasiza ngakho. Zama ukuthepha imakrofoni ukuze ungibuze noma yini.</translation> <translation id="5222676887888702881">Phuma ngemvume</translation> +<translation id="5264277876637023664">Qalisa ukuhlolwa kwe-CPU</translation> <translation id="5267975978099728568"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="ERROR_STATUS" /></translation> <translation id="5275828089655680674">Sebenzisa kabusha Imijikelezo</translation> <translation id="5317780077021120954">Londoloza</translation> @@ -127,17 +136,22 @@ <translation id="54609108002486618">Kuphethwe</translation> <translation id="5493614766091057239"><ph name="VERDICT" />: <ph name="PROBLEMS" /></translation> <translation id="5551702563755460533">Funda kabanzi Esikhungweni Sosizo</translation> +<translation id="5635169860413004179">Bona Umbiko</translation> <translation id="5719918614880940190">Lokhu kulinganisela ukusetshenziswa kwe-CPU, futhi kwukuhlanganiswa kwakho konke okuyinhloko</translation> +<translation id="5797428682393400134">IMPUMELELO</translation> <translation id="5832805196449965646">Engeza umuntu</translation> <translation id="5895138241574237353">Qalisa kabusha</translation> +<translation id="5931523347251946569">Ifayela alitholakalanga</translation> <translation id="5982592372228113572">(<ph name="BOARD_NAME" />, uhlobo <ph name="MILESTONE_VERSION" />)</translation> <translation id="6040143037577758943">Vala</translation> <translation id="6048107060512778456">Yehlulekile - Ukujema kwephepha</translation> <translation id="6050189528197190982">I-Grayscale</translation> <translation id="6058625436358447366">Ukuze uqede, faka amaphasiwedi akho endala nentsha</translation> <translation id="6061772781719867950">Izicelo ezihlulekile ze-HTTP</translation> +<translation id="6104112872696127344">Ukuskena kukhanseliwe</translation> <translation id="6106186594183574873">Ukuze uqede, faka iphasiwedi endala</translation> <translation id="6108689792487843350">Umasango akafinyeleleki</translation> +<translation id="6114428539405324828"><ph name="CURRENT" />GHz / <ph name="MAX" />GHz</translation> <translation id="6146993107019042706">Ukuze uqede, faka iphasiwedi yakho entsha</translation> <translation id="6147514244879357420">I-PNG</translation> <translation id="6165508094623778733">Funda kabanzi</translation> @@ -148,6 +162,7 @@ <translation id="649050271426829538">Imile - Ukujema kwephepha</translation> <translation id="6517239166834772319">Hlola</translation> <translation id="6527081081771465939">Iphrothokholi yokuvikeleka kwe-WiFi engaziwa</translation> +<translation id="6532051501443766164">Fihla Umbiko</translation> <translation id="65587193855025101">I-Flatbed</translation> <translation id="6564646048574748301">Yehlulekile - Iphrinta ayifinyeleleki</translation> <translation id="6618744767048954150">Uyagijima</translation> @@ -155,6 +170,7 @@ <translation id="6643016212128521049">Sula</translation> <translation id="6704062477274546131">Ukulungiswa kwe-DNS</translation> <translation id="6747215703636344499">Imile - Okukhiphayo kugcwele</translation> +<translation id="6756731097889387912">Ayikwazanga ukukhansela ukuskena</translation> <translation id="6766275201586212568">Ukulungiswa kwe-DNS okuhlulekile</translation> <translation id="6768237774506518020">Inani eliphezulu lokuhlulekisa ukulungiswa kwe-DNS</translation> <translation id="6839141349259399400">Awukwazi ukuxhuma kuzikena?</translation> @@ -170,6 +186,7 @@ <translation id="7648838807254605802">Ukubambezeleka okuphezulu kwe-HTTPS</translation> <translation id="7658239707568436148">Khansela</translation> <translation id="7690294790491645610">Qinisekisa iphasiwedi entsha</translation> +<translation id="7732651821766520760">Ukuhlolwa kwe-<ph name="TEST_NAME" /></translation> <translation id="7805768142964895445">Isimo</translation> <translation id="7855434858642800953">Ifayela eliskeniwe lilondoloziwe!</translation> <translation id="7928373994957558460">Bonisa indawo yefayela</translation> @@ -197,12 +214,16 @@ <translation id="877985182522063539">A4</translation> <translation id="8798099450830957504">Okuzenzakalelayo</translation> <translation id="8845001906332463065">Thola usizo</translation> +<translation id="8881098542468797602">Ukuhlola kuphumelele</translation> <translation id="8910721771319628100">Inethiwekhi ezenzakalelayo ingaphezu komkhawulo wokubambezeleka</translation> <translation id="8919837981463578619">Yehlulekile - Itreyi alikho</translation> <translation id="8928727111548978589">Yehlulekile - Iphepha liphelile</translation> <translation id="89415009803968170"><ph name="ERROR_MESSAGE" /> <ph name="ATTEMPTS_LEFT" /> imizamo esele</translation> +<translation id="8970109610781093811">Sebenzisa futhi</translation> <translation id="9088306295921699330">Ukusetshenziswa kwamanje</translation> <translation id="910415269708673980">Vuselela ithikithi le-<ph name="PRINCIPAL_NAME" /></translation> <translation id="9106415115617144481">Iskena ikhasi <ph name="PAGE_NUMBER" /></translation> <translation id="9111102763498581341">Vula</translation> +<translation id="9149391708638971077">Qalia ukuhlolwa Kwenkumbulo</translation> +<translation id="982713511914535780">Qalisa ukuhlolwa kokukhipha ukushaja</translation> </translationbundle> \ No newline at end of file
diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_data/core/pref_names.cc index 2c999c9a..8a55373 100644 --- a/components/browsing_data/core/pref_names.cc +++ b/components/browsing_data/core/pref_names.cc
@@ -11,8 +11,21 @@ namespace prefs { -// JSON config to periodically delete some user browsing data. -const char kBrowsingDataLifetime[] = "browsing_data_lifetime"; +// JSON config to periodically delete some browsing data as specified by +// the BrowsingDataLifetime policy. +const char kBrowsingDataLifetime[] = + "browser.clear_data.browsing_data_lifetime"; + +// Boolean set to true while browsing data needs to be deleted per +// ClearBrowsingDataOnExit policy. +// TODO (crbug/1026442): Consider setting this pref to true during fast +// shutdown if the ClearBrowsingDataOnExit policy is set. +const char kClearBrowsingDataOnExitDeletionPending[] = + "browser.clear_data.clear_on_exit_pending"; + +// List of browsing data, specified by the ClearBrowsingDataOnExit policy, to +// delete just before browser shutdown. +const char kClearBrowsingDataOnExitList[] = "browser.clear_data.clear_on_exit"; // Clear browsing data deletion time period. const char kDeleteTimePeriod[] = "browser.clear_data.time_period"; @@ -44,6 +57,9 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterListPref(kBrowsingDataLifetime, base::Value(base::Value::Type::LIST)); + registry->RegisterBooleanPref(kClearBrowsingDataOnExitDeletionPending, false); + registry->RegisterListPref(kClearBrowsingDataOnExitList, + base::Value(base::Value::Type::LIST)); registry->RegisterIntegerPref( kDeleteTimePeriod, 0, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/components/browsing_data/core/pref_names.h b/components/browsing_data/core/pref_names.h index 4124e13..7ed3e97 100644 --- a/components/browsing_data/core/pref_names.h +++ b/components/browsing_data/core/pref_names.h
@@ -14,6 +14,8 @@ namespace prefs { extern const char kBrowsingDataLifetime[]; +extern const char kClearBrowsingDataOnExitDeletionPending[]; +extern const char kClearBrowsingDataOnExitList[]; extern const char kDeleteTimePeriod[]; extern const char kDeleteTimePeriodBasic[];
diff --git a/components/cast/DIR_METADATA b/components/cast/DIR_METADATA new file mode 100644 index 0000000..b339e61 --- /dev/null +++ b/components/cast/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Chromecast" +}
diff --git a/components/cast/OWNERS b/components/cast/OWNERS index 985f81bf..86f1a77 100644 --- a/components/cast/OWNERS +++ b/components/cast/OWNERS
@@ -1,4 +1,2 @@ file://build/fuchsia/OWNERS file://chromecast/OWNERS - -# COMPONENT: Chromecast
diff --git a/components/cast_certificate/DIR_METADATA b/components/cast_certificate/DIR_METADATA new file mode 100644 index 0000000..b339e61 --- /dev/null +++ b/components/cast_certificate/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Chromecast" +}
diff --git a/components/cast_certificate/OWNERS b/components/cast_certificate/OWNERS index 79022c3e..2a6f7a58 100644 --- a/components/cast_certificate/OWNERS +++ b/components/cast_certificate/OWNERS
@@ -1,4 +1,2 @@ file://chromecast/OWNERS dougsteed@chromium.org - -# COMPONENT: Chromecast
diff --git a/components/cast_channel/DIR_METADATA b/components/cast_channel/DIR_METADATA new file mode 100644 index 0000000..6ea7faa6 --- /dev/null +++ b/components/cast_channel/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Cast>Providers" +}
diff --git a/components/cast_channel/OWNERS b/components/cast_channel/OWNERS index e4a5810..ac5ffb1 100644 --- a/components/cast_channel/OWNERS +++ b/components/cast_channel/OWNERS
@@ -1,3 +1 @@ mfoltz@chromium.org - -# COMPONENT: Internals>Cast>Providers
diff --git a/components/certificate_matching/DIR_METADATA b/components/certificate_matching/DIR_METADATA new file mode 100644 index 0000000..7217a36 --- /dev/null +++ b/components/certificate_matching/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Network>Certificate" +}
diff --git a/components/certificate_matching/OWNERS b/components/certificate_matching/OWNERS index b5e9cbb..be4c2b35 100644 --- a/components/certificate_matching/OWNERS +++ b/components/certificate_matching/OWNERS
@@ -1,4 +1,2 @@ file://chromeos/policy/OWNERS file://chromeos/network/OWNERS - -# COMPONENT: Internals>Network>Certificate
diff --git a/components/certificate_transparency/DIR_METADATA b/components/certificate_transparency/DIR_METADATA new file mode 100644 index 0000000..cba8c09 --- /dev/null +++ b/components/certificate_transparency/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Internals>Network>CertTrans" +} + +team_email: "net-dev@chromium.org"
diff --git a/components/certificate_transparency/OWNERS b/components/certificate_transparency/OWNERS index 619d4bd..d254893 100644 --- a/components/certificate_transparency/OWNERS +++ b/components/certificate_transparency/OWNERS
@@ -3,6 +3,3 @@ # Secondary file://net/OWNERS - -# TEAM: net-dev@chromium.org -# COMPONENT: Internals>Network>CertTrans
diff --git a/components/chrome_cleaner/DIR_METADATA b/components/chrome_cleaner/DIR_METADATA new file mode 100644 index 0000000..efa11fb --- /dev/null +++ b/components/chrome_cleaner/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "UI>Browser>Preferences>Protector" +} + +team_email: "security-dev@chromium.org"
diff --git a/components/chrome_cleaner/OWNERS b/components/chrome_cleaner/OWNERS index 6c83cc79..51bb047d 100644 --- a/components/chrome_cleaner/OWNERS +++ b/components/chrome_cleaner/OWNERS
@@ -1,4 +1 @@ file://chrome/chrome_cleaner/OWNERS - -# TEAM: security-dev@chromium.org -# COMPONENT: UI>Browser>Preferences>Protector
diff --git a/components/chrome_cleaner/public/proto/DIR_METADATA b/components/chrome_cleaner/public/proto/DIR_METADATA new file mode 100644 index 0000000..efa11fb --- /dev/null +++ b/components/chrome_cleaner/public/proto/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "UI>Browser>Preferences>Protector" +} + +team_email: "security-dev@chromium.org"
diff --git a/components/chrome_cleaner/public/proto/OWNERS b/components/chrome_cleaner/public/proto/OWNERS index a0c8c42..b134b44 100644 --- a/components/chrome_cleaner/public/proto/OWNERS +++ b/components/chrome_cleaner/public/proto/OWNERS
@@ -2,6 +2,3 @@ # interface. per-file *.proto=set noparent per-file *.proto=file://ipc/SECURITY_OWNERS - -# TEAM: security-dev@chromium.org -# COMPONENT: UI>Browser>Preferences>Protector
diff --git a/components/client_hints/DIR_METADATA b/components/client_hints/DIR_METADATA new file mode 100644 index 0000000..8529bd6b --- /dev/null +++ b/components/client_hints/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Loader" +}
diff --git a/components/client_hints/OWNERS b/components/client_hints/OWNERS index 8869c6b..18d242a 100644 --- a/components/client_hints/OWNERS +++ b/components/client_hints/OWNERS
@@ -2,5 +2,3 @@ tbansal@chromium.org ryansturm@chromium.org aarontag@chromium.org - -# COMPONENT: Blink>Loader
diff --git a/components/client_update_protocol/DIR_METADATA b/components/client_update_protocol/DIR_METADATA new file mode 100644 index 0000000..2e8df71d --- /dev/null +++ b/components/client_update_protocol/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Internals>Installer" +} + +team_email: "chrome-updates-dev@chromium.org"
diff --git a/components/client_update_protocol/OWNERS b/components/client_update_protocol/OWNERS index c184691..ec81839 100644 --- a/components/client_update_protocol/OWNERS +++ b/components/client_update_protocol/OWNERS
@@ -1,4 +1,2 @@ sorin@chromium.org waffles@chromium.org -# COMPONENT: Internals>Installer -# TEAM: chrome-updates-dev@chromium.org
diff --git a/components/cronet/android/test/proguard.cfg b/components/cronet/android/test/proguard.cfg index 23a7900..313097f0 100644 --- a/components/cronet/android/test/proguard.cfg +++ b/components/cronet/android/test/proguard.cfg
@@ -11,6 +11,9 @@ # https://android.googlesource.com/platform/sdk/+/marshmallow-mr1-release/files/proguard-android.txt#54 -dontwarn android.support.** +# Temporary fix for https://bugs.chromium.org/p/chromium/issues/detail?id=1155547 +-dontwarn com.google.protobuf.** + # Do not obfuscate this class for testing since some of the tests check the class # name in order to check that an instantiated engine is the Java one. -keepnames class org.chromium.net.impl.JavaCronetEngine
diff --git a/components/keep_alive_registry/keep_alive_types.cc b/components/keep_alive_registry/keep_alive_types.cc index fbbf528a..07f8a06 100644 --- a/components/keep_alive_registry/keep_alive_types.cc +++ b/components/keep_alive_registry/keep_alive_types.cc
@@ -24,6 +24,8 @@ return out << "BACKGROUND_MODE_MANAGER_FORCE_INSTALLED_EXTENSIONS"; case KeepAliveOrigin::BACKGROUND_SYNC: return out << "BACKGROUND_SYNC"; + case KeepAliveOrigin::BROWSING_DATA_LIFETIME_MANAGER: + return out << "BROWSING_DATA_LIFETIME_MANAGER"; case KeepAliveOrigin::LOGIN_DISPLAY_HOST_WEBUI: return out << "LOGIN_DISPLAY_HOST_WEBUI"; case KeepAliveOrigin::PIN_MIGRATION:
diff --git a/components/keep_alive_registry/keep_alive_types.h b/components/keep_alive_registry/keep_alive_types.h index 3697ba16..74324bd0 100644 --- a/components/keep_alive_registry/keep_alive_types.h +++ b/components/keep_alive_registry/keep_alive_types.h
@@ -28,6 +28,9 @@ // c/b/background_sync BACKGROUND_SYNC, + // c/b/browsing_data + BROWSING_DATA_LIFETIME_MANAGER, + // c/b/chromeos LOGIN_DISPLAY_HOST_WEBUI, PIN_MIGRATION,
diff --git a/components/metal_util/device.mm b/components/metal_util/device.mm index 110a2e9d..c7cdb90 100644 --- a/components/metal_util/device.mm +++ b/components/metal_util/device.mm
@@ -12,28 +12,23 @@ namespace metal { MTLDevicePtr CreateDefaultDevice() { - if (@available(macOS 10.11, *)) { - // First attempt to find a low power device to use. - base::scoped_nsprotocol<id<MTLDevice>> device_to_use; - base::scoped_nsobject<NSArray<id<MTLDevice>>> devices(MTLCopyAllDevices()); - for (id<MTLDevice> device in devices.get()) { - if ([device isLowPower]) { - device_to_use.reset(device, base::scoped_policy::RETAIN); - break; - } + // First attempt to find a low power device to use. + base::scoped_nsprotocol<id<MTLDevice>> device_to_use; + base::scoped_nsobject<NSArray<id<MTLDevice>>> devices(MTLCopyAllDevices()); + for (id<MTLDevice> device in devices.get()) { + if ([device isLowPower]) { + device_to_use.reset(device, base::scoped_policy::RETAIN); + break; } - // Failing that, use the system default device. - if (!device_to_use) - device_to_use.reset(MTLCreateSystemDefaultDevice()); - if (!device_to_use) { - DLOG(ERROR) << "Failed to find MTLDevice."; - return nullptr; - } - return device_to_use.release(); } - // If no device was found, or if the macOS version is too old for Metal, - // return no context provider. - return nullptr; + // Failing that, use the system default device. + if (!device_to_use) + device_to_use.reset(MTLCreateSystemDefaultDevice()); + if (!device_to_use) { + DLOG(ERROR) << "Failed to find MTLDevice."; + return nullptr; + } + return device_to_use.release(); } } // namespace metal
diff --git a/components/metal_util/test_shader.mm b/components/metal_util/test_shader.mm index 9966985..a9c2657 100644 --- a/components/metal_util/test_shader.mm +++ b/components/metal_util/test_shader.mm
@@ -697,8 +697,7 @@ } // State shared between the compiler callback and the caller. -class API_AVAILABLE(macos(10.11)) TestShaderState - : public base::RefCountedThreadSafe<TestShaderState> { +class TestShaderState : public base::RefCountedThreadSafe<TestShaderState> { public: TestShaderState(TestShaderCallback callback, TestShaderComponent component,
diff --git a/components/metrics/demographics/BUILD.gn b/components/metrics/demographics/BUILD.gn index 270e31f5..48a583e 100644 --- a/components/metrics/demographics/BUILD.gn +++ b/components/metrics/demographics/BUILD.gn
@@ -16,6 +16,7 @@ deps = [ "//base", + "//build:chromeos_buildflags", "//components/metrics", "//components/pref_registry", "//components/prefs", @@ -34,6 +35,7 @@ ":demographics", "//base", "//base/test:test_support", + "//build:chromeos_buildflags", "//components/metrics", "//components/sync/base", "//components/sync/driver",
diff --git a/components/metrics/demographics/demographic_metrics_provider.cc b/components/metrics/demographics/demographic_metrics_provider.cc index 763a7870..f3ac4ff7 100644 --- a/components/metrics/demographics/demographic_metrics_provider.cc +++ b/components/metrics/demographics/demographic_metrics_provider.cc
@@ -7,6 +7,7 @@ #include "base/feature_list.h" #include "base/metrics/histogram_functions.h" #include "base/optional.h" +#include "build/chromeos_buildflags.h" #include "components/sync/driver/sync_service_utils.h" #include "third_party/metrics_proto/ukm/report.pb.h" @@ -56,14 +57,23 @@ if (!base::FeatureList::IsEnabled(kDemographicMetricsReporting)) return base::nullopt; +#if !BUILDFLAG(IS_CHROMEOS_ASH) // Skip if not exactly one Profile on disk. Having more than one Profile that // is using the browser can make demographics less relevant. This approach // cannot determine if there is more than 1 distinct user using the Profile. + + // ChromeOS almost always has more than one profile on disk, so this check + // doesn't work. We have a profile selection strategy for ChromeOS, so skip + // this check for ChromeOS. + // TODO(crbug/1145655): LaCros will behave similarly to desktop Chrome and + // reduce the number of profiles on disk to one, so remove these #if guards + // after LaCros release. if (profile_client_->GetNumberOfProfilesOnDisk() != 1) { LogUserDemographicsStatusInHistogram( UserDemographicsStatus::kMoreThanOneProfile); return base::nullopt; } +#endif // !BUILDFLAG(IS_CHROMEOS_ASH) syncer::SyncService* sync_service = profile_client_->GetSyncService(); // Skip if no sync service.
diff --git a/components/metrics/demographics/demographic_metrics_provider.h b/components/metrics/demographics/demographic_metrics_provider.h index b52b05b..074c3849 100644 --- a/components/metrics/demographics/demographic_metrics_provider.h +++ b/components/metrics/demographics/demographic_metrics_provider.h
@@ -53,6 +53,8 @@ virtual PrefService* GetPrefService() = 0; // Gets the network time that represents now. + // TODO(crbug/1145655): Remove this function and replace with + // base::Time::Now(). virtual base::Time GetNetworkTime() const = 0; };
diff --git a/components/metrics/demographics/demographic_metrics_provider_unittest.cc b/components/metrics/demographics/demographic_metrics_provider_unittest.cc index 87b38a6..d02d523 100644 --- a/components/metrics/demographics/demographic_metrics_provider_unittest.cc +++ b/components/metrics/demographics/demographic_metrics_provider_unittest.cc
@@ -10,6 +10,7 @@ #include "base/test/scoped_feature_list.h" #include "base/test/simple_test_clock.h" #include "base/time/time.h" +#include "build/chromeos_buildflags.h" #include "components/metrics/demographics/user_demographics.h" #include "components/metrics/metrics_log_uploader.h" #include "components/sync/base/sync_prefs.h" @@ -283,6 +284,7 @@ ChromeUserMetricsExtension uma_proto; provider.ProvideSyncedUserNoisedBirthYearAndGender(&uma_proto); +#if !BUILDFLAG(IS_CHROMEOS_ASH) // Expect that the UMA proto is untouched. EXPECT_FALSE(uma_proto.user_demographics().has_birth_year()); EXPECT_FALSE(uma_proto.user_demographics().has_gender()); @@ -290,6 +292,16 @@ // Verify histograms. histogram.ExpectUniqueSample("UMA.UserDemographics.Status", UserDemographicsStatus::kMoreThanOneProfile, 1); +#else + // On ChromeOS, we have a profile selection strategy, so expect UMA reporting + // to work. + EXPECT_TRUE(uma_proto.user_demographics().has_birth_year()); + EXPECT_TRUE(uma_proto.user_demographics().has_gender()); + + // Verify histograms. + histogram.ExpectUniqueSample("UMA.UserDemographics.Status", + UserDemographicsStatus::kSuccess, 1); +#endif // !BUILDFLAG(IS_CHROMEOS_ASH) } TEST(DemographicMetricsProviderTest,
diff --git a/components/metrics/demographics/user_demographics.h b/components/metrics/demographics/user_demographics.h index de2249ba..b8a9f05 100644 --- a/components/metrics/demographics/user_demographics.h +++ b/components/metrics/demographics/user_demographics.h
@@ -23,7 +23,7 @@ constexpr UserDemographicsProto_Gender kUserDemographicGenderDefaultEnumValue = UserDemographicsProto_Gender_Gender_MIN; -// Default value for user gender when no value has been set. +// Default value for user birth year when no value has been set. constexpr int kUserDemographicsBirthYearDefaultValue = -1; // Default value for birth year offset when no value has been set. Set to a
diff --git a/components/ntp_tiles/most_visited_sites.cc b/components/ntp_tiles/most_visited_sites.cc index f2125d1..a0f3bd99 100644 --- a/components/ntp_tiles/most_visited_sites.cc +++ b/components/ntp_tiles/most_visited_sites.cc
@@ -401,9 +401,10 @@ } if (repeatable_queries_) { - // Restoring repeatable queries is not supported as deletion is permanent. if (add_url) repeatable_queries_->DeleteQueryWithDestinationURL(url); + else + NOTREACHED() << "Deleted repeatable queries cannot be restored."; } if (top_sites_) {
diff --git a/components/payments/content/installable_payment_app_crawler.cc b/components/payments/content/installable_payment_app_crawler.cc index 643bcf07..297d92f 100644 --- a/components/payments/content/installable_payment_app_crawler.cc +++ b/components/payments/content/installable_payment_app_crawler.cc
@@ -427,7 +427,10 @@ // TODO(crbug.com/1058840): Move this sanity check to ManifestIconDownloader // after DownloadImage refactor is done. auto* rfh = content::RenderFrameHost::FromID(initiator_frame_routing_id_); - if (!rfh || !rfh->IsCurrent()) { + auto* web_contents = rfh && rfh->IsCurrent() + ? content::WebContents::FromRenderFrameHost(rfh) + : nullptr; + if (!web_contents) { log_.Warn( "Cannot download icons after the webpage has been closed (web app " "manifest \"" + @@ -442,7 +445,6 @@ return false; } - auto* web_contents = content::WebContents::FromRenderFrameHost(rfh); gfx::NativeView native_view = web_contents->GetNativeView(); GURL best_icon_url = blink::ManifestIconSelector::FindBestMatchingIcon( manifest_icons, IconSizeCalculator::IdealIconHeight(native_view),
diff --git a/components/performance_manager/decorators/frame_visibility_decorator_unittest.cc b/components/performance_manager/decorators/frame_visibility_decorator_unittest.cc index ced899f..645b563 100644 --- a/components/performance_manager/decorators/frame_visibility_decorator_unittest.cc +++ b/components/performance_manager/decorators/frame_visibility_decorator_unittest.cc
@@ -20,10 +20,13 @@ class FrameVisibilityDecoratorTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + FrameVisibilityDecoratorTest() = default; ~FrameVisibilityDecoratorTest() override = default; void SetUp() override { + Super::SetUp(); graph()->PassToGraph(std::make_unique<FrameVisibilityDecorator>()); process_node_ = CreateNode<ProcessNodeImpl>();
diff --git a/components/performance_manager/decorators/freezing_vote_decorator_unittest.cc b/components/performance_manager/decorators/freezing_vote_decorator_unittest.cc index d416567..763d861 100644 --- a/components/performance_manager/decorators/freezing_vote_decorator_unittest.cc +++ b/components/performance_manager/decorators/freezing_vote_decorator_unittest.cc
@@ -23,10 +23,13 @@ class FreezingVoteDecoratorTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + FreezingVoteDecoratorTest() = default; ~FreezingVoteDecoratorTest() override = default; void SetUp() override { + Super::SetUp(); graph()->PassToGraph(std::make_unique<FreezingVoteDecorator>()); } };
diff --git a/components/performance_manager/decorators/page_load_tracker_decorator_unittest.cc b/components/performance_manager/decorators/page_load_tracker_decorator_unittest.cc index 77742e0..f9898a3 100644 --- a/components/performance_manager/decorators/page_load_tracker_decorator_unittest.cc +++ b/components/performance_manager/decorators/page_load_tracker_decorator_unittest.cc
@@ -27,10 +27,13 @@ class PageLoadTrackerDecoratorTest : public GraphTestHarness { protected: + using Super = GraphTestHarness; + PageLoadTrackerDecoratorTest() = default; ~PageLoadTrackerDecoratorTest() override = default; void SetUp() override { + Super::SetUp(); pltd_ = new PageLoadTrackerDecorator(); graph()->PassToGraph(base::WrapUnique(pltd_)); }
diff --git a/components/performance_manager/execution_context/execution_context_attached_data_unittest.cc b/components/performance_manager/execution_context/execution_context_attached_data_unittest.cc index e7749d0..6c6bfe06 100644 --- a/components/performance_manager/execution_context/execution_context_attached_data_unittest.cc +++ b/components/performance_manager/execution_context/execution_context_attached_data_unittest.cc
@@ -34,10 +34,8 @@ void SetUp() override { Super::SetUp(); - graph()->PassToGraph(std::make_unique<ExecutionContextRegistryImpl>()); - registry_ = GraphRegisteredImpl<ExecutionContextRegistryImpl>::GetFromGraph( - graph()); - ASSERT_TRUE(registry_); + registry_ = + graph()->PassToGraph(std::make_unique<ExecutionContextRegistryImpl>()); } protected:
diff --git a/components/performance_manager/execution_context_priority/frame_audible_voter_unittest.cc b/components/performance_manager/execution_context_priority/frame_audible_voter_unittest.cc index 11efa25..865f4fe 100644 --- a/components/performance_manager/execution_context_priority/frame_audible_voter_unittest.cc +++ b/components/performance_manager/execution_context_priority/frame_audible_voter_unittest.cc
@@ -4,7 +4,6 @@ #include "components/performance_manager/execution_context_priority/frame_audible_voter.h" -#include "components/performance_manager/execution_context/execution_context_registry_impl.h" #include "components/performance_manager/public/execution_context/execution_context.h" #include "components/performance_manager/public/graph/graph.h" #include "components/performance_manager/test_support/graph_test_harness.h" @@ -20,9 +19,7 @@ const execution_context::ExecutionContext* GetExecutionContext( const FrameNode* frame_node) { - return execution_context::ExecutionContextRegistry::GetFromGraph( - frame_node->GetGraph()) - ->GetExecutionContextForFrameNode(frame_node); + return execution_context::ExecutionContext::From(frame_node); } // Both the voting channel and the FrameAudibleVoter are expected live on the @@ -64,6 +61,8 @@ class FrameAudibleVoterTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + FrameAudibleVoterTest() = default; ~FrameAudibleVoterTest() override = default; @@ -71,12 +70,9 @@ FrameAudibleVoterTest& operator=(const FrameAudibleVoterTest&) = delete; void SetUp() override { - graph()->PassToGraph( - std::make_unique<execution_context::ExecutionContextRegistryImpl>()); - - auto wrapper = std::make_unique<GraphOwnedWrapper>(); - wrapper_ = wrapper.get(); - graph()->PassToGraph(std::move(wrapper)); + Super::GetGraphFeaturesHelper().EnableExecutionContextRegistry(); + Super::SetUp(); + wrapper_ = graph()->PassToGraph(std::make_unique<GraphOwnedWrapper>()); } // Exposes the DummyVoteObserver to validate expectations.
diff --git a/components/performance_manager/graph/graph_impl_operations_unittest.cc b/components/performance_manager/graph/graph_impl_operations_unittest.cc index c518de2..3acf894 100644 --- a/components/performance_manager/graph/graph_impl_operations_unittest.cc +++ b/components/performance_manager/graph/graph_impl_operations_unittest.cc
@@ -18,8 +18,11 @@ class GraphImplOperationsTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + // Sets up two parallel frame trees that span multiple processes each. void SetUp() override { + Super::SetUp(); process1_ = CreateNode<ProcessNodeImpl>(); process2_ = CreateNode<ProcessNodeImpl>(); page1_ = CreateNode<PageNodeImpl>();
diff --git a/components/performance_manager/graph/graph_operations_unittest.cc b/components/performance_manager/graph/graph_operations_unittest.cc index 463bd32..6e66b47 100644 --- a/components/performance_manager/graph/graph_operations_unittest.cc +++ b/components/performance_manager/graph/graph_operations_unittest.cc
@@ -17,8 +17,11 @@ class GraphOperationsTest : public GraphTestHarness { public: + using Super = GraphTestHarness; + // Sets up two parallel frame trees that span multiple processes each. void SetUp() override { + Super::SetUp(); process1_ = CreateNode<ProcessNodeImpl>(); process2_ = CreateNode<ProcessNodeImpl>(); page1_ = CreateNode<PageNodeImpl>();
diff --git a/components/performance_manager/test_support/graph_test_harness.cc b/components/performance_manager/test_support/graph_test_harness.cc index e5289ca..116e2f1c 100644 --- a/components/performance_manager/test_support/graph_test_harness.cc +++ b/components/performance_manager/test_support/graph_test_harness.cc
@@ -28,18 +28,32 @@ graph_(new TestGraphImpl()) {} GraphTestHarness::~GraphTestHarness() { + // These will fire if this class is derived from, and SetUp or TearDown are + // overridden but not called from the derived class. + static constexpr char kNotCalled[] = + " was not called. This probably means that the " + "developer has overridden the method and not called " + "the superclass version."; + CHECK(setup_called_ || IsSkipped()) << "SetUp" << kNotCalled; + CHECK(teardown_called_ || IsSkipped()) << "TearDown" << kNotCalled; + // Ideally this would be done in TearDown(), but that would require subclasses - // do destroy all their nodes before invoking TearDown below. + // to destroy all their nodes before invoking TearDown below. if (graph_) graph_->TearDown(); } void GraphTestHarness::SetUp() { + setup_called_ = true; + graph_features_helper_.ConfigureGraph(graph_.get()); + + // This can't be done in the constructor because it is a virtual function. OnGraphCreated(graph_.get()); } void GraphTestHarness::TearDown() { + teardown_called_ = true; base::RunLoop().RunUntilIdle(); }
diff --git a/components/performance_manager/test_support/graph_test_harness.h b/components/performance_manager/test_support/graph_test_harness.h index 549a0de..a2d86072 100644 --- a/components/performance_manager/test_support/graph_test_harness.h +++ b/components/performance_manager/test_support/graph_test_harness.h
@@ -271,6 +271,10 @@ GraphFeaturesHelper graph_features_helper_; content::BrowserTaskEnvironment task_env_; std::unique_ptr<TestGraphImpl> graph_; + + // Detects when the test fixture is being misused. + bool setup_called_ = false; + bool teardown_called_ = false; }; } // namespace performance_manager
diff --git a/components/performance_manager/v8_memory/v8_context_tracker_unittest.cc b/components/performance_manager/v8_memory/v8_context_tracker_unittest.cc index 4fc7886..a0e5ca6 100644 --- a/components/performance_manager/v8_memory/v8_context_tracker_unittest.cc +++ b/components/performance_manager/v8_memory/v8_context_tracker_unittest.cc
@@ -55,20 +55,11 @@ class V8ContextTrackerTest : public GraphTestHarness { public: - // Small PassToGraph helper that returns a raw pointer to the object that - // became graph owned. Helps write tidy constructors. - template <typename DerivedType> - DerivedType* PassToGraph(std::unique_ptr<DerivedType> graph_owned) { - DerivedType* object = graph_owned.get(); - graph()->PassToGraph(std::move(graph_owned)); - return object; - } - V8ContextTrackerTest() - : registry( - PassToGraph(std::make_unique< - execution_context::ExecutionContextRegistryImpl>())), - tracker(PassToGraph(std::make_unique<V8ContextTracker>())), + : registry(graph()->PassToGraph( + std::make_unique< + execution_context::ExecutionContextRegistryImpl>())), + tracker(graph()->PassToGraph(std::make_unique<V8ContextTracker>())), mock_graph(graph()) {} ~V8ContextTrackerTest() override = default;
diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc index 3d05e5b59..4f13441 100644 --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc
@@ -72,8 +72,8 @@ #endif const char kPermissionBlockedFeaturePolicyMessage[] = - "%s permission has been blocked because of a Feature Policy applied to the " - "current document. See https://goo.gl/EuHzyv for more details."; + "%s permission has been blocked because of a permissions policy applied to" + " the current document. See https://goo.gl/EuHzyv for more details."; const char kPermissionBlockedPortalsMessage[] = "%s permission has been blocked because it was requested inside a portal. "
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 70bea3d..91aba63a 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -2349,7 +2349,7 @@ }, { 'name': 'PrintingAllowedColorModes', - 'owners': ['vkuzkokov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2390,7 +2390,7 @@ }, { 'name': 'PrintingAllowedDuplexModes', - 'owners': ['vkuzkokov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2431,7 +2431,7 @@ }, { 'name': 'PrintingAllowedPinModes', - 'owners': ['nikitapodguzov@chromium.org', 'skau@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2472,7 +2472,7 @@ }, { 'name': 'PrintingAllowedBackgroundGraphicsModes', - 'owners': ['nikitapodguzov@chromium.org', 'skau@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2513,7 +2513,7 @@ }, { 'name': 'PrintingColorDefault', - 'owners': ['vkuzkokov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2548,7 +2548,7 @@ }, { 'name': 'PrintingDuplexDefault', - 'owners': ['vkuzkokov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2589,7 +2589,7 @@ }, { 'name': 'PrintingPinDefault', - 'owners': ['nikitapodguzov@chromium.org', 'skau@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2624,7 +2624,7 @@ }, { 'name': 'PrintingBackgroundGraphicsDefault', - 'owners': ['nikitapodguzov@chromium.org', 'skau@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'string-enum', 'schema': { 'type': 'string', @@ -2659,7 +2659,7 @@ }, { 'name': 'PrintingPaperSizeDefault', - 'owners': ['nikitapodguzov@chromium.org', 'bmalcolm@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'dict', 'schema': { 'type': 'object', @@ -2845,7 +2845,7 @@ }, { 'name': 'PrintingSendUsernameAndFilenameEnabled', - 'owners': ['vkuzkokov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'main', 'schema': { 'type': 'boolean' }, 'supported_on': ['chrome_os:72-'], @@ -2864,7 +2864,7 @@ }, { 'name': 'PrintingMaxSheetsAllowed', - 'owners': ['nikitapodguzov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'int', 'schema': { 'type': 'integer', 'minimum': 1 }, 'supported_on': ['chrome_os:84-'], @@ -2900,7 +2900,7 @@ }, { 'name': 'PrintJobHistoryExpirationPeriod', - 'owners': ['nikitapodguzov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'int', 'schema': { 'type': 'integer', 'minimum': -1 }, 'supported_on': ['chrome_os:79-'], @@ -2922,7 +2922,7 @@ }, { 'name': 'PrintingAPIExtensionsWhitelist', - 'owners': ['nikitapodguzov@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'list', 'schema': { 'type': 'array', @@ -2946,7 +2946,7 @@ }, { 'name': 'PrintingAPIExtensionsAllowlist', - 'owners': ['nikitapodguzov@chromium.org', 'bmalcolm@chromium.org'], + 'owners': ['bmalcolm@chromium.org', 'skau@chromium.org'], 'type': 'list', 'schema': { 'type': 'array', @@ -13941,7 +13941,9 @@ 'id': 279, 'caption': '''Minimum SSL version enabled''', 'tags': [], - 'desc': '''Setting the policy to a valid value means <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> won't use SSL/TLS versions less than the specified version. Unrecognized values are ignored. + 'desc': '''Warning: Support for suppressing the TLS 1.0/1.1 warning will be removed from <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> starting in version 91 (around May 2021) and this policy will stop working then. + + Setting the policy to a valid value means <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> won't use SSL/TLS versions less than the specified version. Unrecognized values are ignored. If this policy is not set, then <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> will show an error for TLS 1.0 and TLS 1.1, but the user will be able to bypass it.''', }, @@ -15817,7 +15819,7 @@ }, { 'name': 'DeviceNativePrinters', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'id': 386, 'device_only': True, 'type': 'external', @@ -15862,7 +15864,7 @@ }, { 'name': 'DeviceNativePrintersAccessMode', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'id': 387, 'device_only': True, 'supported_on': ['chrome_os:73-'], @@ -15907,7 +15909,7 @@ }, { 'name': 'DeviceNativePrintersBlacklist', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'supported_on': ['chrome_os:73-'], 'device_only': True, 'id': 388, @@ -15934,7 +15936,7 @@ }, { 'name': 'DeviceNativePrintersWhitelist', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'supported_on': ['chrome_os:73-'], 'device_only': True, 'id': 389, @@ -15962,7 +15964,7 @@ }, { 'name': 'DevicePrinters', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org', 'bmalcolm@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'id': 743, 'device_only': True, 'type': 'external', @@ -16004,7 +16006,7 @@ }, { 'name': 'DevicePrintersAccessMode', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'id': 733, 'device_only': True, 'supported_on': ['chrome_os:87-'], @@ -16046,7 +16048,7 @@ }, { 'name': 'DevicePrintersBlocklist', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org', 'bmalcolm@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'supported_on': ['chrome_os:87-'], 'device_only': True, 'id': 734, @@ -16070,7 +16072,7 @@ }, { 'name': 'DevicePrintersAllowlist', - 'owners': ['skau@chromium.org', 'nikitapodguzov@chromium.org', 'bmalcolm@chromium.org'], + 'owners': ['skau@chromium.org', 'bmalcolm@chromium.org'], 'supported_on': ['chrome_os:87-'], 'device_only': True, 'id': 735, @@ -23936,7 +23938,7 @@ }, }, 'future_on': ['android'], - 'supported_on': ['chrome.*:87-', 'chrome_os:87-'], + 'supported_on': ['chrome.*:89-', 'chrome_os:89-'], 'features': { 'dynamic_refresh': True, 'per_profile': True, @@ -23955,9 +23957,12 @@ 'caption': 'Browsing Data Lifetime Settings', 'tags': [], 'desc': '''Configures browsing data lifetime settings for <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. - This policy controls the time to live of selected browsing data. This policy has no effect if Sync is enabled. - The available data types are the <ph name="DATA_TYPE_BROWSING_HISTORY">'browsing_history'</ph>, <ph name="DATA_TYPE_DOWNLOAD_HISTORY">'download_history'</ph>, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA">'cookies_and_other_site_data'</ph>, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES">'cached_images_and_files'</ph>, <ph name="DATA_TYPE_PASSWORD">'password_signin'</ph>, <ph name="DATA_TYPE_AUTOFILL">'autofill'</ph>, <ph name="DATA_TYPE_SITE_SETTINGS">'site_settings'</ph> and <ph name="DATA_TYPE_HOSTED_APP_DATA">'hosted_app_data'</ph>. + This policy controls the time to live of selected browsing data. + The available data types are <ph name="DATA_TYPE_BROWSING_HISTORY">'browsing_history'</ph>, <ph name="DATA_TYPE_DOWNLOAD_HISTORY">'download_history'</ph>, <ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA">'cookies_and_other_site_data'</ph>, <ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES">'cached_images_and_files'</ph>, <ph name="DATA_TYPE_PASSWORD">'password_signin'</ph>, <ph name="DATA_TYPE_AUTOFILL">'autofill'</ph>, <ph name="DATA_TYPE_SITE_SETTINGS">'site_settings'</ph> and <ph name="DATA_TYPE_HOSTED_APP_DATA">'hosted_app_data'</ph>. Chrome will regularly remove data of selected types that is older than <ph name="TIME_TO_LIVE_IN_HOURS">'time_to_live_in_hours'</ph>. As this deletion only happens in certain intervals, some data might live for slightly longer but never more than twice its expected <ph name="TIME_TO_LIVE_IN_HOURS">'time_to_live_in_hours'</ph>. + This policy requires the <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> policy to be set to true, otherwise it will be ignored. + If this policy is set at platform level, Sync should be disabled at platform level. + If this policy is set at user level, Sync should be disabled for that user in order for this policy to take effect. ''' }, { @@ -24023,6 +24028,95 @@ If this policy is set to True, the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> login credentials will be used for network authentication to a managed proxy. In case the authentication with the <ph name="PRODUCT_OS_NAME">$2<ex>Google Chrome OS</ex></ph> login credentials fails, the user will be prompted for credentials.''', }, + { + 'name': 'ClearBrowsingDataOnExitList', + 'owners': ['ydago@chromium.org', 'pastarmovj@chromium.org'], + 'type': 'string-enum-list', + 'schema': { + 'type': 'array', + 'items': { + 'type': 'string', + 'enum': [ + 'browsing_history', + 'download_history', + 'cookies_and_other_site_data', + 'cached_images_and_files', + 'password_signin', + 'autofill', + 'site_settings', + 'hosted_app_data', + ], + }, + }, + 'items': [ + { + 'name': 'browsing_history', + 'value': 'browsing_history', + 'caption': '''Browsing history''', + }, + { + 'name': 'download_history', + 'value': 'download_history', + 'caption': '''Download history''', + }, + { + 'name': 'cookies_and_other_site_data', + 'value': 'cookies_and_other_site_data', + 'caption': '''Cookies and other site data''', + }, + { + 'name': 'cached_images_and_files', + 'value': 'cached_images_and_files', + 'caption': '''Cached images and files''', + }, + { + 'name': 'password_signin', + 'value': 'password_signin', + 'caption': '''Password signin''', + }, + { + 'name': 'autofill', + 'value': 'autofill', + 'caption': '''Autofill''', + }, + { + 'name': 'site_settings', + 'value': 'site_settings', + 'caption': '''Site settings''', + }, + { + 'name': 'hosted_app_data', + 'value': 'hosted_app_data', + 'caption': '''Hosted apps data''', + }, + ], + 'future_on': ['android'], + 'supported_on': ['chrome.*:89-', 'chrome_os:89-'], + 'features': { + 'dynamic_refresh': True, + 'per_profile': True, + }, + 'example_value': [ + 'browsing_history', + 'download_history', + 'cookies_and_other_site_data', + 'cached_images_and_files', + 'password_signin', + 'autofill', + 'site_settings', + 'hosted_app_data', + ], + 'id': 809, + 'caption': 'Clear Browsing Data on Exit', + 'tags': [], + 'desc': '''Configures a list of browsing data types that should be deleted when the browser is closed. + The available data types are browsing history (<ph name="DATA_TYPE_BROWSING_HISTORY">browsing_history</ph>), download history (<ph name="DATA_TYPE_DOWNLOAD_HISTORY">download_history</ph>), cookies (<ph name="DATA_TYPE_COOKIES_AND_OTHER_SITE_DATA">cookies_and_other_site_data</ph>), cache<ph name="DATA_TYPE_CACHED_IMAGES_AND_FILES"> (cached_images_and_files)</ph>, autofill (<ph name="DATA_TYPE_AUTOFILL">autofill</ph>), passwords (<ph name="DATA_TYPE_PASSWORD">password_signin</ph>), site settings (<ph name="DATA_TYPE_SITE_SETTINGS">site_settings</ph>) and hosted apps data (<ph name="DATA_TYPE_HOSTED_APP_DATA">hosted_app_data</ph>). + This policy does not take precedence over <ph name="ALLOW_DELETING_BROWSER_HISTORY_POLICY_NAME">AllowDeletingBrowserHistory</ph>. + This policy requires the <ph name="SYNC_DISABLED_POLICY_NAME">SyncDisabled</ph> policy to be set to true, otherwise it will be ignored. + If this policy is set at platform level, Sync should be disabled at platform level. + If this policy is set at user level, Sync should be disabled for that user in order for this policy to take effect. + ''' + } ], 'messages': { @@ -24945,6 +25039,6 @@ 'placeholders': [], 'deleted_policy_ids': [114, 115, 204, 205, 206, 412, 476, 544, 546, 562, 569, 578, 583, 585, 586, 587, 588, 589, 590, 591, 600, 668, 669], 'deleted_atomic_policy_group_ids': [19], - 'highest_id_currently_used': 808, + 'highest_id_currently_used': 809, 'highest_atomic_group_id_currently_used': 40 }
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index ea004e76..724d9ccd 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -2492,7 +2492,7 @@ Si estableces esta política como False o no la estableces, no se usarán las credenciales de acceso de <ph name="PRODUCT_OS_NAME" /> para la autenticación de red. - Si estableces esta política como True, se usarán las credenciales de acceso de <ph name="PRODUCT_OS_NAME" /> para la autenticación de red de un proxy administrado. Si falla la autenticación de red con las credenciales de acceso de <ph name="PRODUCT_OS_NAME" />, se le pedirá al usuario que ingrese las credenciales.</translation> + Si estableces esta política como True, se usarán las credenciales de acceso de <ph name="PRODUCT_OS_NAME" /> para la autenticación de red en un proxy administrado. Si falla la autenticación de red con las credenciales de acceso de <ph name="PRODUCT_OS_NAME" />, se le pedirá al usuario que ingrese las credenciales.</translation> <translation id="4723829699367336876">Habilitar el cruce seguro de firewall desde clientes de acceso remoto</translation> <translation id="4725528134735324213">Habilitar Android Backup Service</translation> <translation id="4725801978265372736">Solicitar que el nombre del usuario local y el propietario del host de acceso remoto coincidan</translation>
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index 410c1f51..8e7c3cdf 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -83,6 +83,11 @@ <translation id="1099282607296956954">Attiva isolamento sito per ogni sito</translation> <translation id="1117535567637097036">I gestori di protocollo impostati tramite questa norma non sono utilizzati durante la gestione degli intent di Android.</translation> <translation id="1118093128235245168">Consenti ai siti di chiedere all'utente di concedere l'accesso a un dispositivo USB collegato</translation> +<translation id="1133814529606590009">Se il criterio viene impostato su Attivato, la raccolta di dati anonimizzati con chiave URL, che invia gli URL delle pagine visitate dagli utenti a Google per migliorare le esperienze di ricerca e navigazione, è sempre attiva. + + Se viene impostato su Disattivato, non viene attivata alcuna raccolta di dati anonimizzati con chiave URL. + + Se il criterio viene configurato, gli utenti non possono modificarlo. In caso contrario, la raccolta di dati anonimizzati con chiave URL viene attivata, ma gli utenti possono disattivarla.</translation> <translation id="1138294736309071213">Questa norma è attiva soltanto in modalità retail. Consente di stabilire il periodo di tempo che deve trascorrere prima della visualizzazione del salvaschermo nella schermata di accesso dei dispositivi in modalità retail. @@ -182,6 +187,13 @@ Se il criterio non viene impostato, l'utente può scegliere se utilizzare Google Sync o meno. Per disattivare completamente Google Sync, si consiglia di disabilitare il servizio Google Sync nella Console di amministrazione di Google.</translation> +<translation id="128059397544257017">Quando il criterio viene impostato su Attivato, se <ph name="CHROME_CLEANUP_NAME" /> rileva un software indesiderato, potrebbe segnalare la scansione a Google, in linea con il criterio impostato da <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> chiede agli utenti se vogliono ripulire il software indesiderato. I risultati vengono inviati a Google. + + Quando il criterio viene impostato su Disattivato, se <ph name="CHROME_CLEANUP_NAME" /> rileva un software indesiderato, la scansione non viene segnalata a Google, a prescindere dal valore di <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> chiede agli utenti se vogliono ripulire il software indesiderato. I risultati non vengono inviati a Google. + + Se il criterio non viene configurato, <ph name="CHROME_CLEANUP_NAME" /> potrebbe segnalare a Google le scansioni in cui è stato rilevato un software indesiderato, in linea con il profilo impostato da <ph name="SAFE_BROWSING_EXTENDED_REPORTING_ENABLED_POLICY_NAME" />. <ph name="CHROME_CLEANUP_NAME" /> chiede agli utenti se voglio ripulire il software indesiderato e di condividere i risultati con Google per semplificarne l'identificazione in futuro. Questi risultati includono metadati di file, estensioni installate automaticamente e chiavi del Registro di sistema, come spiegato nel white paper sulla privacy di Chrome. + + Su <ph name="MS_WIN_NAME" />, questa funzionalità è disponibile soltanto per le istanze che fanno parte di un dominio <ph name="MS_AD_NAME" />, sono in esecuzione su Windows 10 Pro o sono registrate in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />.</translation> <translation id="1290634681382861275">Consente di gestire varie impostazioni, tra cui USB, Bluetooth, aggiornamento delle norme, modalità sviluppatore e altre ancora.</translation> <translation id="1291880496936992484">Avviso. RC4 sarà rimosso completamente da <ph name="PRODUCT_NAME" /> dopo la versione 52 (nel periodo di settembre 2016), dopodiché questa norma non sarà più attiva. @@ -709,6 +721,9 @@ Se il criterio non viene configurato o se viene impostato su un elenco vuoto, non saranno disponibili modalità di sblocco rapido per i dispositivi gestiti. Questo criterio è deprecato. Usa il criterio <ph name="QUICK_UNLOCK_MODE_ALLOW_LIST_POLICY_NAME" />.</translation> +<translation id="2033784678146670379">Se il criterio viene impostato su Attivato, gli utenti possono utilizzare l'hardware sui dispositivi <ph name="PRODUCT_OS_NAME" /> per attestare da remoto la propria identità all'autorità di certificazione della privacy tramite l'<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> usando la funzione <ph name="CHALLENGE_USER_KEY_FUNCTION" />. + + Se viene impostato su Disattivato o se non viene configurato, le chiamate all'API non vengono eseguite correttamente e viene visualizzato un codice di errore.</translation> <translation id="2036522553891755455">Se il criterio viene impostato su Attivato, il rilevamento delle condivisioni (la funzionalità Condivisione file di rete di <ph name="PRODUCT_NAME" />) utilizza il protocollo <ph name="NETBIOS_PROTOCOL" /> per rilevare le condivisioni sulla rete. Se viene impostato su Disattivato, il rilevamento delle condivisioni non utilizza il protocollo per rilevare le condivisioni. Se non viene configurato, il comportamento predefinito è off per gli utenti gestiti e on per gli altri utenti.</translation> @@ -738,6 +753,9 @@ <translation id="2082205219176343977">Configura la versione minima di Chrome consentita per il dispositivo.</translation> <translation id="208566302163036794">Blocca le funzionalità disattivate</translation> <translation id="208623333578980446">Consenti wakelock schermo per la gestione dell'alimentazione</translation> +<translation id="2090939118981888335">Se il criterio viene impostato su Attivato, il proxy di compressione dei dati è consentito. Se viene impostato su Disattivato, il proxy non è consentito. + + Se viene configurato, gli utenti non possono modificarlo. In caso contrario, gli utenti possono scegliere di utilizzare la funzionalità.</translation> <translation id="209586405398070749">Canale stabile</translation> <translation id="2098658257603918882">Attiva rapporti sull'utilizzo e sui dati relativi agli arresti anomali</translation> <translation id="2104418465060359056">Segnala i dati delle estensioni e dei plug-in</translation> @@ -1148,6 +1166,9 @@ Se il criterio viene impostato su Disattivato o se non viene configurato, questi consigli non vengono visualizzati. Se viene configurato, gli utenti non possono modificarlo.</translation> +<translation id="2724313944474873275">Se il criterio viene impostato su Attivato o se non viene configurato, i dispositivi <ph name="PRODUCT_OS_NAME" /> possono utilizzare l'attestazione da remoto (Accesso verificato) per ricevere un certificato emesso dall'autorità di certificazione di <ph name="PRODUCT_OS_NAME" /> in cui si afferma che il dispositivo è idoneo alla riproduzione di contenuti protetti. Questo processo comporta l'invio all'autorità di certificazione di <ph name="PRODUCT_OS_NAME" /> di informazioni di approvazione dell'hardware che identificano in modo univoco il dispositivo. + + Se il criterio viene impostato su Disattivato, il dispositivo non utilizza l'attestazione da remoto per la protezione dei contenuti e non può riprodurre contenuti protetti.</translation> <translation id="2725855586003209701">Se il criterio viene impostato su Attivato o se non viene configurato, i dispositivi registrati segnalano l'elenco di utenti dei dispositivi che hanno eseguito l'accesso di recente. Se il criterio viene impostato su Disattivato, i dispositivi registrati non segnalano l'elenco di utenti.</translation> @@ -2121,6 +2142,13 @@ <translation id="4089849819635523136">Se il criterio <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> è attivo, l'impostazione del criterio <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> consente di specificare la parola chiave o la scorciatoia utilizzata nella barra degli indirizzi per attivare la ricerca per questo provider. Se il criterio <ph name="DEFAULT_SEARCH_PROVIDER_KEYWORD_POLICY_NAME" /> non viene configurato, il provider di ricerca non viene attivato da alcuna parola chiave.</translation> +<translation id="409035987613226003">Se il criterio viene impostato su Attivato, viene abilitato l'invio a Google di rapporti anonimi relativi ai dati di utilizzo e degli arresti anomali su Chrome e gli utenti non possono modificare questa impostazione. Se viene impostato su Disattivato, queste informazioni non vengono inviate a Google. + + Se viene configurato, gli utenti non possono modificarlo. In caso contrario, gli utenti sono liberi di scegliere il comportamento all'installazione o alla prima esecuzione. + + Questo criterio è disponibile esclusivamente per le istanze di Windows che fanno parte di un dominio <ph name="MS_AD_NAME" />, così come per quelle di Windows 10 Pro o Enterprise registrate per la gestione dei dispositivi. Inoltre è disponibile per le istanze di macOS gestite tramite MDM o aggiunte a un dominio tramite MCX. + + Per Chrome OS, consulta il criterio DeviceMetricsReportingEnabled.</translation> <translation id="4097556069183835428">Se il criterio è impostato su None, la Lente d'ingrandimento è disattivata. Se configuri il criterio, gli utenti non possono modificarlo. Se il criterio non è configurato, la Lente d'ingrandimento risulta disattivata all'inizio, ma gli utenti possono attivarla in qualsiasi momento.</translation> @@ -2484,6 +2512,9 @@ <translation id="4725528134735324213">Attiva Android Backup Service</translation> <translation id="4725801978265372736">Richiedi la corrispondenza tra il nome dell'utente locale e il proprietario dell'host di accesso remoto</translation> <translation id="4733471537137819387">Norme relative all'autenticazione HTTP integrata.</translation> +<translation id="4735099388031364207">Se il criterio viene impostato su Attivato, l'attestazione da remoto per il dispositivo è consentita. Un certificato viene generato e caricato automaticamente sul Server di gestione del dispositivo. + + Se il criterio viene impostato su Disattivato o se non viene configurato, non viene generato alcun certificato e le chiamate all'<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> non vengono eseguite correttamente.</translation> <translation id="4742973303930120836">Limita la modalità di stampa delle immagini di sfondo</translation> <translation id="4752880493649142945">Certificato client per la connessione a RemoteAccessHostTokenValidationUrl</translation> <translation id="4757053978738874325">Consente di attivare la funzione di accessibilità di audio in formato mono. @@ -2572,6 +2603,11 @@ <translation id="489803897780524242">Parametro di controllo sostituzione termini di ricerca per fornitore ricerca predefinito</translation> <translation id="4899708173828500852">Consenti Navigazione sicura</translation> <translation id="4906194810004762807">Frequenza di aggiornamento per norma dispositivo</translation> +<translation id="49093841899738146">Se il criterio viene impostato su Attivato, <ph name="PRODUCT_NAME" /> può raccogliere log eventi WebRTC dai servizi Google, come Hangouts Meet, e caricarli su Google. Questi log hanno informazioni diagnostiche utili per il debug dei problemi relativi a riunioni audio e video in <ph name="PRODUCT_NAME" />, ad esempio data/ora e dimensioni dei pacchetti RTP, feedback sulla congestione della rete, nonché metadati su durata e qualità dei frame audio e video. Questi log non contengono l'audio o i video delle riunioni. Google potrebbe associare questi log tramite un ID sessione ad altri log raccolti dal servizio Google stesso al fine di semplificare il debug. + + Se il criterio viene impostato su Disattivato, tali log non vengono raccolti né caricati. + + Se il criterio non viene impostato su versioni fino alla M76 inclusa, per impostazione predefinita <ph name="PRODUCT_NAME" /> non può raccogliere e caricare questi log. A partire dalla versione M77, per impostazione predefinita <ph name="PRODUCT_NAME" /> può raccogliere e caricare questi log dalla maggior parte dei profili interessati dai criteri aziendali a livello di utente basati su cloud. Dalla versione M77 fino alla M80 inclusa, <ph name="PRODUCT_NAME" /> può anche raccogliere e caricare questi log per impostazione predefinita dai profili soggetti alla gestione on-premise di <ph name="PRODUCT_NAME" />.</translation> <translation id="4910101362791876581">Consente di specificare le stampanti che un utente può utilizzare. Questo criterio viene utilizzato soltanto se è selezionata l'opzione <ph name="PRINTERS_WHITELIST" /> per <ph name="DEVICE_PRINTERS_ACCESS_MODE_POLICY_NAME" /> @@ -2583,6 +2619,9 @@ <translation id="4917385247580444890">Forte</translation> <translation id="4919122295221518724">Attiva trattamento più restrittivo per i contenuti misti</translation> <translation id="4923806312383904642">Consenti a WebDriver di eseguire l'override delle norme non compatibili</translation> +<translation id="4927214690104703256">La configurazione del criterio consente di specificare le estensioni consentite per utilizzare le funzioni dell'<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> per l'attestazione da remoto. Per utilizzare l'API, le estensioni devono essere presenti in questo elenco. + + Se un'estensione non è presente nell'elenco o se l'elenco non viene configurato, la chiamata all'API non va a buon fine e viene generato un codice di errore.</translation> <translation id="4927797103413916381">Se il criterio <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> non viene disattivato, l'impostazione di <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> su Attivato o la mancata configurazione impedisce ai siti con esperienze intrusive di aprirsi in nuove schede o finestre. Se il criterio <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> o <ph name="ABUSIVE_EXPERIENCE_INTERVENTION_ENFORCE_POLICY_NAME" /> viene impostato su Disattivato, i siti con esperienze intrusive possono aprirsi in nuove schede o finestre.</translation> @@ -2692,6 +2731,13 @@ <translation id="5090209345759901501">Applica l'impostazione dei contenuti Flash a tutti i contenuti</translation> <translation id="5090791951240382356">Consenti l'unione dei criteri del dizionario provenienti da origini diverse</translation> <translation id="5091315650312105069">Consenti l'autenticazione <ph name="BASIC_AUTH" /> per HTTP</translation> +<translation id="5103112931744164177">Questo criterio consente di controllare quale stack software viene utilizzato per comunicare con il server DNS: il client DNS del sistema operativo o quello integrato di <ph name="PRODUCT_NAME" />. Questo criterio non influisce su quale server DNS viene utilizzato: se, ad esempio, il sistema operativo viene configurato in modo da usare un server DNS aziendale, lo stesso server viene usato dal client DNS integrato. Non consente nemmeno di controllare se viene utilizzato il protocollo DNS-over-HTTPS; <ph name="PRODUCT_NAME" /> userà sempre il resolver integrato per le richieste DNS-over-HTTPS. Per informazioni relative al controllo del protocollo DNS-over-HTTPS, consulta il criterio <ph name="DNS_OVER_HTTPS_MODE_POLICY_NAME" />. + + Se il criterio viene impostato su Attivato, viene utilizzato il client DNS integrato, se disponibile. + + Se viene impostato su Disattivato, il client DNS integrato viene utilizzato soltanto quando viene usato il protocollo DNS-over-HTTPS. + + Se il criterio non viene configurato, il client DNS integrato viene attivato per impostazione predefinita su <ph name="MAC_OS_NAME" />, <ph name="ANDROID_NAME" /> (nel caso in cui non siano attivi né il DNS privato né la VPN) e <ph name="PRODUCT_OS_NAME" />.</translation> <translation id="5105313908130842249">Ritardo blocco schermo in caso di utilizzo della batteria</translation> <translation id="5108031557082757679">Stampanti aziendali associate ai dispositivi disattivate</translation> <translation id="5109383437323376357">Determina la disponibilità delle varianti</translation> @@ -3570,6 +3616,11 @@ Se questo criterio non viene impostato o se l'elenco è vuoto, sarà possibile accedere a tutti gli schemi in <ph name="PRODUCT_NAME" />.</translation> <translation id="6338982178236723271">Segnala informazioni sul sistema</translation> +<translation id="6347363725343851058">Se il criterio viene impostato su Attivato, la modalità in background viene abilitata. Nella modalità in background, all'accesso al sistema operativo viene avviato un processo <ph name="PRODUCT_NAME" /> che rimane in esecuzione quando l'ultima finestra del browser viene chiusa, consentendo alle app in background e alla sessione di navigazione di rimanere attive, compresi eventuali cookie di sessione. Nella barra delle applicazioni viene visualizzata un'icona per il processo in background che consente di chiuderlo in qualsiasi momento. + + Se il criterio viene impostato su Disattivato, la modalità in background viene disabilitata. + + Se viene configurato, gli utenti non possono modificarlo nelle impostazioni del browser. In caso contrario, la modalità in background è disabilitata, ma gli utenti possono abilitarla.</translation> <translation id="6353890097388312479">Se il criterio viene impostato su All (0) o se non viene configurato, gli utenti possono modificare le impostazioni di attendibilità per tutti i certificati CA, rimuovere i certificati importati dagli utenti e importare certificati tramite Gestione certificati. Se viene impostato su UserOnly (1), gli utenti possono gestire solo i certificati importati dagli utenti, ma non possono modificare le impostazioni di attendibilità dei certificati integrati. Se viene impostato su None (2), gli utenti possono visualizzare i certificati CA, ma non possono gestirli.</translation> <translation id="6362856770865555544">Se il criterio viene impostato su Attivato o se non viene configurato, l'ottimizzazione WPAD (Web Proxy Auto-Discovery) viene attivata in <ph name="PRODUCT_NAME" />. @@ -3895,6 +3946,9 @@ <translation id="6815483833848348029">Se il criterio viene impostato su Attivato o non viene configurato e se un account locale del dispositivo è configurato per l'accesso automatico senza ritardo, quando un dispositivo è offline <ph name="PRODUCT_OS_NAME" /> mostra una richiesta di configurazione della rete. Se il criterio viene impostato su Disattivato, viene visualizzato invece un messaggio di errore.</translation> +<translation id="6819838337315703072">Se le app <ph name="LINUX_OS_NAME" /> sono supportate, l'impostazione del criterio su Attivato consente di inviare al server le informazioni relative all'utilizzo delle app <ph name="LINUX_OS_NAME" />. + + Se il criterio viene impostato su Disattivato o se non viene configurato, non viene inviata alcuna informazione relativa all'utilizzo.</translation> <translation id="6821268164692776674">Destinazioni <ph name="CLOUD_PRINT_NAME" /> e "Salva su Google Drive"</translation> <translation id="6823711520976094072">La mancata configurazione o l'impostazione del criterio su valori inferiori a 1 MB implica l'utilizzo da parte di <ph name="PRODUCT_OS_NAME" /> della dimensione predefinita, corrispondente a 256 MiB, per le estensioni e le app di memorizzazione nella cache per l'installazione da parte di più utenti di un singolo dispositivo. In questo modo, non è necessario scaricare nuovamente tutte le app o estensioni per ogni utente.</translation> <translation id="682408981080798691">Se il criterio viene impostato su Attivato o se non viene configurato, l'integrità del codice del renderer viene attivata. @@ -3934,6 +3988,9 @@ Questo criterio è deprecato, al suo posto utilizza <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation> <translation id="684856667300805181">Questa norma è stata rimossa in <ph name="PRODUCT_NAME" /> 68 e sostituita da <ph name="ARC_GLS_POLICY_NAME" />.</translation> +<translation id="6848721032946289937">Se il criterio viene impostato su Attivato o se non viene configurato, viene abilitata l'accelerazione hardware, se disponibile. + + Se viene impostato su Disattivato, viene disabilitata l'accelerazione hardware.</translation> <translation id="6851199885688265233">Attiva la funzione di accessibilità di evidenziazione del cursore</translation> <translation id="6851315055469993882">Attiva cache di autenticazione HTTP con ambito globale</translation> <translation id="6854767649023671426">Se il criterio viene attivato o se non viene configurato, agli utenti viene richiesto l'accesso al dispositivo di acquisizione video, fatta eccezione per gli URL configurati nell'elenco VideoCaptureAllowedUrls. @@ -4081,6 +4138,9 @@ <translation id="7027785306666625591">Configura la gestione dell'alimentazione in <ph name="PRODUCT_OS_NAME" />. Queste norme consentono di configurare il comportamento di <ph name="PRODUCT_OS_NAME" /> quando l'utente rimane inattivo per un determinato periodo di tempo.</translation> +<translation id="7027923238554618852">La configurazione del criterio indica a <ph name="PRODUCT_OS_NAME" /> di utilizzare la configurazione del programma di pianificazione delle attività identificato dal nome specificato. Questo criterio può essere impostato su <ph name="CONSERVATIVE_VALUE" /> o su <ph name="PERFORMANCE_VALUE" />, opzioni che correggono il programma di pianificazione delle attività, rispettivamente, per la stabilità o il massimo rendimento. + + Se non viene configurato, gli utenti sono liberi di fare la propria scelta.</translation> <translation id="7030205756530739128">Se il criterio <ph name="DEVICE_BATTERY_CHARGE_MODE_NAME" /> viene impostato su <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_MODE_NAME" />, la configurazione di <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_START_CHARGING_POLICY_NAME" /> consente di personalizzare quando viene avviata la ricarica della batteria, in base alla percentuale di carica. Il valore deve essere di almeno 5 punti percentuali inferiore a <ph name="DEVICE_BATTERY_CHARGE_CUSTOM_STOP_CHARGING_POLICY_NAME" />. Se il criterio non viene configurato, viene applicata la modalità di ricarica standard della batteria.</translation> @@ -4209,6 +4269,11 @@ <translation id="718126088895133062">Questo criterio consente di specificare l'ID utente della licenza <ph name="PLUGIN_VM_NAME" /> di questo dispositivo.</translation> <translation id="7185078796915954712">TLS 1.3</translation> <translation id="7185630966939835143">Usa un servizio web di Google per correggere gli errori ortografici</translation> +<translation id="718850220532931090">Questo criterio è deprecato. Utilizza il criterio <ph name="ATTESTATION_EXTENSION_ALLOWLIST_POLICY_NAME" />. + + La configurazione del criterio consente di specificare le estensioni consentite per utilizzare la funzione <ph name="CHALLENGE_USER_KEY_FUNCTION" /> dell'<ph name="ENTERPRISE_PLATFORM_KEYS_API" /> per l'attestazione da remoto. Per utilizzare l'API, le estensioni devono essere presenti in questo elenco. + + Se un'estensione non è presente nell'elenco o se l'elenco non viene configurato, la chiamata all'API non va a buon fine e viene generato un codice di errore.</translation> <translation id="718956142899066210">Tipi di connessioni consentiti per gli aggiornamenti</translation> <translation id="7190286937411178540">Attiva la funzione di accessibilità di evidenziazione dell'elemento attivo tramite tastiera</translation> <translation id="7193489339723768342">Se il criterio viene configurato, verrà specificato l'elenco di URL i cui pattern vengono confrontati con l'origine di sicurezza dell'URL richiedente. Una corrispondenza assicura l'accesso ai dispositivi di acquisizione audio senza richieste @@ -5006,6 +5071,9 @@ <translation id="8357681633047935212">Limita la durata di una sessione utente</translation> <translation id="8357989008292691856">Elenco di utenti autorizzati ad accedere</translation> <translation id="8359734107661430198">Attiva l'API ExampleDeprecatedFeature valida fino al 02/09/2008</translation> +<translation id="8367069206652407172">Se il criterio viene impostato su Disattivato, gli utenti non possono terminare i processi nella funzionalità Task Manager. + + Se viene impostato su Attivato o se non viene configurato, gli utenti possono terminare i processi nella funzionalità Task Manager.</translation> <translation id="8367209241899435947">Attiva Chrome Software Cleaner su Windows</translation> <translation id="8367473200119029349">Reporting su cloud</translation> <translation id="8369602308428138533">Ritardo disattivazione schermo in caso di utilizzo di CA</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index e912ba9..c07ef34c 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -804,7 +804,7 @@ <translation id="421066178035138955">Usar datos y dispositivos de realidad virtual</translation> <translation id="4214357935346142455">perfil de la pantalla de acceso</translation> <translation id="4215751373031079683">7x9 (Envelope)</translation> -<translation id="4220128509585149162">Fallos</translation> +<translation id="4220128509585149162">Fallas</translation> <translation id="422022731706691852">Es posible que los atacantes en <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> intenten engañarte para que instales programas que dañen tu experiencia de navegación (p. ej., al cambiar la página principal o mostrar anuncios adicionales en los sitios que visitas). <ph name="BEGIN_LEARN_MORE_LINK" />Más información<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="4221630205957821124"><h4>Paso 1: Accede al portal</h4> <p>Para acceder a las redes Wi‑Fi de sitios como cafeterías o aeropuertos, tienes que ingresar. Para ver la página de acceso, visita una página con <code>http://</code>.</p> @@ -1464,7 +1464,7 @@ <translation id="6888584790432772780">Chrome simplificó esta página para facilitar la lectura. Chrome recuperó la página original a través de una conexión no segura.</translation> <translation id="6891596781022320156">No se admite el nivel de políticas.</translation> <translation id="6895330447102777224">Tu tarjeta se confirmó</translation> -<translation id="6897140037006041989">User agent</translation> +<translation id="6897140037006041989">Usuario-agente</translation> <translation id="6898699227549475383">Organización (O)</translation> <translation id="6907293445143367439">Permitir a <ph name="SITE_NAME" />:</translation> <translation id="6910240653697687763"><ph name="URL" /> desea obtener el control total de tus dispositivos MIDI</translation> @@ -1852,7 +1852,7 @@ <translation id="8371889962595521444">Certificados raíz personalizados</translation> <translation id="8380941800586852976">Peligrosa</translation> <translation id="8381674639488873545">Estos cargos pueden ser únicos o recurrentes, y es posible que no sean evidentes. <ph name="BEGIN_LINK" />Mostrar de todos modos<ph name="END_LINK" /></translation> -<translation id="8412145213513410671">Bloqueos (<ph name="CRASH_COUNT" />)</translation> +<translation id="8412145213513410671">Fallas (<ph name="CRASH_COUNT" />)</translation> <translation id="8412392972487953978">Debes ingresar la misma frase de contraseña dos veces.</translation> <translation id="8416694386774425977">La configuración de red no es válida y no se pudo importar. Detalles adicionales:
diff --git a/content/browser/device_sensors/device_sensor_browsertest.cc b/content/browser/device_sensors/device_sensor_browsertest.cc index b29759c..9c281ea 100644 --- a/content/browser/device_sensors/device_sensor_browsertest.cc +++ b/content/browser/device_sensors/device_sensor_browsertest.cc
@@ -347,9 +347,9 @@ const char kWarningMessage[] = "The deviceorientationabsolute events are blocked by " - "feature policy. See " - "https://github.com/WICG/feature-policy/blob/" - "master/features.md#sensor-features"; + "permissions policy. See " + "https://github.com/w3c/webappsec-permissions-policy/blob/master/" + "features.md#sensor-features"; WebContentsConsoleObserver console_observer(shell()->web_contents()); console_observer.SetPattern(kWarningMessage);
diff --git a/content/browser/file_system_access/native_file_system_directory_handle_impl.cc b/content/browser/file_system_access/native_file_system_directory_handle_impl.cc index cfaa202..de58fb9b 100644 --- a/content/browser/file_system_access/native_file_system_directory_handle_impl.cc +++ b/content/browser/file_system_access/native_file_system_directory_handle_impl.cc
@@ -4,7 +4,6 @@ #include "content/browser/file_system_access/native_file_system_directory_handle_impl.h" -#include "base/i18n/file_util_icu.h" #include "base/strings/strcat.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -13,7 +12,6 @@ #include "content/browser/file_system_access/native_file_system_transfer_token_impl.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "net/base/escape.h" -#include "net/base/filename_util.h" #include "storage/browser/file_system/file_system_context.h" #include "storage/browser/file_system/file_system_operation_runner.h" #include "storage/common/file_system/file_system_util.h" @@ -32,6 +30,27 @@ using HandleType = NativeFileSystemPermissionContext::HandleType; +namespace { + +// Returns true when |name| contains a path separator like "/". +bool ContainsPathSeparator(const std::string& name) { + const base::FilePath filepath_name = storage::StringToFilePath(name); + + const size_t separator_position = + filepath_name.value().find_first_of(base::FilePath::kSeparators); + + return separator_position != base::FilePath::StringType::npos; +} + +// Returns true when |name| is "." or "..". +bool IsCurrentOrParentDirectory(const std::string& name) { + const base::FilePath filepath_name = storage::StringToFilePath(name); + return filepath_name.value() == base::FilePath::kCurrentDirectory || + filepath_name.value() == base::FilePath::kParentDirectory; +} + +} // namespace + NativeFileSystemDirectoryHandleImpl::NativeFileSystemDirectoryHandleImpl( NativeFileSystemManagerImpl* manager, const BindingContext& context, @@ -393,97 +412,25 @@ url, recurse); } -namespace { - -// Returns whether the specified extension receives special handling by the -// Windows shell. -bool IsShellIntegratedExtension(const base::FilePath::StringType& extension) { - base::FilePath::StringType extension_lower = base::ToLowerASCII(extension); - - // .lnk files may be used to execute arbitrary code (see - // https://nvd.nist.gov/vuln/detail/CVE-2010-2568). - if (extension_lower == FILE_PATH_LITERAL("lnk")) - return true; - - // Setting a file's extension to a CLSID may conceal its actual file type on - // some Windows versions (see https://nvd.nist.gov/vuln/detail/CVE-2004-0420). - if (!extension_lower.empty() && - (extension_lower.front() == FILE_PATH_LITERAL('{')) && - (extension_lower.back() == FILE_PATH_LITERAL('}'))) - return true; - return false; -} - -} // namespace - -// static -bool NativeFileSystemDirectoryHandleImpl::IsSafePathComponent( - const std::string& name) { - // This method is similar to net::IsSafePortablePathComponent, with a few - // notable differences where the net version does not consider names safe - // while here we do want to allow them. These cases are: - // - Names starting with a '.'. These would be hidden files in most file - // managers, but are something we explicitly want to support for the - // File System Access API, for names like .git. - // - Names that end in '.local'. For downloads writing to such files is - // dangerous since it might modify what code is executed when an executable - // is ran from the same directory. For the File System Access API this - // isn't really a problem though, since if a website can write to a .local - // file via a FileSystemDirectoryHandle they can also just modify the - // executables in the directory directly. - // - // TODO(https://crbug.com/1154757): Unify this with - // net::IsSafePortablePathComponent, with the result probably ending up in - // base/i18n/file_util_icu.h. - - const base::FilePath component = storage::StringToFilePath(name); - // Empty names, or names that contain path separators are invalid. - if (component.empty() || component != component.BaseName() || - component != component.StripTrailingSeparators()) { - return false; - } - - base::string16 component16; -#if defined(OS_WIN) - component16.assign(component.value().begin(), component.value().end()); -#else - std::string component8 = component.AsUTF8Unsafe(); - if (!base::UTF8ToUTF16(component8.c_str(), component8.size(), &component16)) - return false; -#endif - // base::i18n::IsFilenameLegal blocks names that start with '.', so strip out - // a leading '.' before passing it to that method. - // TODO(mek): Consider making IsFilenameLegal more flexible to support this - // use case. - if (component16[0] == '.') - component16 = component16.substr(1); - if (!base::i18n::IsFilenameLegal(component16)) - return false; - - base::FilePath::StringType extension = component.Extension(); - if (!extension.empty()) - extension.erase(extension.begin()); // Erase preceding '.'. - if (IsShellIntegratedExtension(extension)) - return false; - - if (base::TrimString(component.value(), FILE_PATH_LITERAL("."), - base::TRIM_TRAILING) != component.value()) { - return false; - } - - if (net::IsReservedNameOnWindows(component.value())) - return false; - - return true; -} - blink::mojom::NativeFileSystemErrorPtr NativeFileSystemDirectoryHandleImpl::GetChildURL( const std::string& basename, storage::FileSystemURL* result) { - if (!IsSafePathComponent(basename)) { + // TODO(mek): Rather than doing URL serialization and parsing we should just + // have a way to get a child FileSystemURL directly from its parent. + + if (basename.empty()) { return native_file_system_error::FromStatus( - NativeFileSystemStatus::kInvalidArgument, "Name is not allowed."); + NativeFileSystemStatus::kInvalidArgument, + "Name can't be an empty string."); + } + + if (ContainsPathSeparator(basename) || IsCurrentOrParentDirectory(basename)) { + // |basename| must refer to a entry that exists in this directory as a + // direct child. + return native_file_system_error::FromStatus( + NativeFileSystemStatus::kInvalidArgument, + "Name contains invalid characters."); } const storage::FileSystemURL parent = url();
diff --git a/content/browser/file_system_access/native_file_system_directory_handle_impl.h b/content/browser/file_system_access/native_file_system_directory_handle_impl.h index 537b2a6..360fdbc5 100644 --- a/content/browser/file_system_access/native_file_system_directory_handle_impl.h +++ b/content/browser/file_system_access/native_file_system_directory_handle_impl.h
@@ -57,14 +57,6 @@ mojo::PendingReceiver<blink::mojom::NativeFileSystemTransferToken> token) override; - // The File System Access API should not give access to files that might - // trigger special handling from the operating system. This method is used to - // validate that all paths passed to GetFileHandle/GetDirectoryHandle are safe - // to be exposed to the web. - // TODO(https://crbug.com/1154757): Merge this with - // net::IsSafePortablePathComponent. - static bool IsSafePathComponent(const std::string& name); - private: // This method creates the file if it does not currently exists. I.e. it is // the implementation for passing create=true to GetFile.
diff --git a/content/browser/file_system_access/native_file_system_directory_handle_impl_unittest.cc b/content/browser/file_system_access/native_file_system_directory_handle_impl_unittest.cc deleted file mode 100644 index 08ee352..0000000 --- a/content/browser/file_system_access/native_file_system_directory_handle_impl_unittest.cc +++ /dev/null
@@ -1,60 +0,0 @@ -// Copyright 2020 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 "content/browser/file_system_access/native_file_system_directory_handle_impl.h" - -#include <string> - -#include "testing/gtest/include/gtest/gtest.h" - -namespace content { - -constexpr const char* kSafePathComponents[] = { - "a", "a.txt", "a b.txt", "My Computer", ".a", "lnk.zip", "lnk", "a.local", -}; - -constexpr const char* kUnsafePathComponents[] = { - "", - ".", - "..", - "...", - "con", - "con.zip", - "NUL", - "NUL.zip", - "a.", - "a\"a", - "a<a", - "a>a", - "a?a", - "a/", - "a\\", - "a ", - "a . .", - " Computer", - "My Computer.{a}", - "My Computer.{20D04FE0-3AEA-1069-A2D8-08002B30309D}", - "a\\a", - "a.lnk", - "a/a", - "a\\a", - "C:\\", - "C:/", - "C:", -}; - -TEST(NativeFileSystemDirectoryHandleImplTest, IsSafePathComponent) { - for (const char* component : kSafePathComponents) { - EXPECT_TRUE( - NativeFileSystemDirectoryHandleImpl::IsSafePathComponent(component)) - << component; - } - for (const char* component : kUnsafePathComponents) { - EXPECT_FALSE( - NativeFileSystemDirectoryHandleImpl::IsSafePathComponent(component)) - << component; - } -} - -} // namespace content
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index bfa322fe..cb012af 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -125,7 +125,7 @@ base::TaskPriority::USER_VISIBLE, // BLOCK_SHUTDOWN to support clearing session-only storage. base::TaskShutdownBehavior::BLOCK_SHUTDOWN}))), - indexed_db_factory_(this), + dispatcher_host_(this), force_keep_session_state_(false), quota_manager_proxy_(quota_manager_proxy), io_task_runner_(io_task_runner), @@ -177,7 +177,7 @@ void IndexedDBContextImpl::BindIndexedDB( const url::Origin& origin, mojo::PendingReceiver<blink::mojom::IDBFactory> receiver) { - indexed_db_factory_.AddReceiver(origin, std::move(receiver)); + dispatcher_host_.AddReceiver(origin, std::move(receiver)); } void IndexedDBContextImpl::GetUsage(GetUsageCallback usage_callback) {
diff --git a/content/browser/indexed_db/indexed_db_context_impl.h b/content/browser/indexed_db/indexed_db_context_impl.h index a064584..38a3793f 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.h +++ b/content/browser/indexed_db/indexed_db_context_impl.h
@@ -234,7 +234,7 @@ // backing stores); the cache will be primed as needed by checking disk. std::set<url::Origin>* GetOriginSet(); - IndexedDBDispatcherHost indexed_db_factory_; + IndexedDBDispatcherHost dispatcher_host_; // Bound and accessed on the |idb_task_runner_|. mojo::Remote<storage::mojom::BlobStorageContext> blob_storage_context_;
diff --git a/content/browser/native_io/native_io_quota_client.cc b/content/browser/native_io/native_io_quota_client.cc index d6555de7..e3c71b6c 100644 --- a/content/browser/native_io/native_io_quota_client.cc +++ b/content/browser/native_io/native_io_quota_client.cc
@@ -3,21 +3,28 @@ // found in the LICENSE file. #include "content/browser/native_io/native_io_quota_client.h" + +#include "base/sequence_checker.h" #include "content/public/browser/browser_thread.h" #include "url/origin.h" namespace content { -NativeIOQuotaClient::NativeIOQuotaClient() = default; +NativeIOQuotaClient::NativeIOQuotaClient() { + // Constructed on the UI thread and used on the IO thread. + DETACH_FROM_SEQUENCE(sequence_checker_); +} -NativeIOQuotaClient::~NativeIOQuotaClient() = default; +NativeIOQuotaClient::~NativeIOQuotaClient() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} void NativeIOQuotaClient::OnQuotaManagerDestroyed() {} void NativeIOQuotaClient::GetOriginUsage(const url::Origin& origin, blink::mojom::StorageType type, GetOriginUsageCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_EQ(type, blink::mojom::StorageType::kTemporary); // TODO(crbug.com/1137788): Implement quota accounting. @@ -28,7 +35,7 @@ void NativeIOQuotaClient::GetOriginsForType( blink::mojom::StorageType type, GetOriginsForTypeCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_EQ(type, blink::mojom::StorageType::kTemporary); std::vector<url::Origin> origins; @@ -40,7 +47,7 @@ blink::mojom::StorageType type, const std::string& host, GetOriginsForHostCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_EQ(type, blink::mojom::StorageType::kTemporary); std::vector<url::Origin> origins; @@ -51,7 +58,7 @@ void NativeIOQuotaClient::DeleteOriginData(const url::Origin& origin, blink::mojom::StorageType type, DeleteOriginDataCallback callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_EQ(type, blink::mojom::StorageType::kTemporary); // TODO(crbug.com/1137788): Implement quota accounting. @@ -61,6 +68,8 @@ void NativeIOQuotaClient::PerformStorageCleanup( blink::mojom::StorageType type, PerformStorageCleanupCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // TODO(crbug.com/1137788): Implement quota accounting. std::move(callback).Run(); }
diff --git a/content/browser/native_io/native_io_quota_client.h b/content/browser/native_io/native_io_quota_client.h index a791e80a..0be858d9 100644 --- a/content/browser/native_io/native_io_quota_client.h +++ b/content/browser/native_io/native_io_quota_client.h
@@ -5,9 +5,7 @@ #ifndef CONTENT_BROWSER_NATIVE_IO_NATIVE_IO_QUOTA_CLIENT_H_ #define CONTENT_BROWSER_NATIVE_IO_NATIVE_IO_QUOTA_CLIENT_H_ -#include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "content/browser/native_io/native_io_quota_client.h" +#include "base/sequence_checker.h" #include "content/common/content_export.h" #include "storage/browser/quota/quota_client.h" #include "storage/browser/quota/quota_client_type.h" @@ -26,6 +24,9 @@ public: NativeIOQuotaClient(); + NativeIOQuotaClient(const NativeIOQuotaClient&) = delete; + NativeIOQuotaClient& operator=(const NativeIOQuotaClient&) = delete; + // QuotaClient. void OnQuotaManagerDestroyed() override; void GetOriginUsage(const url::Origin& origin, @@ -36,19 +37,16 @@ void GetOriginsForHost(blink::mojom::StorageType type, const std::string& host, GetOriginsForHostCallback callback) override; - void DeleteOriginData( - const url::Origin& origin, - blink::mojom::StorageType type, - storage::QuotaClient::DeleteOriginDataCallback callback) override; + void DeleteOriginData(const url::Origin& origin, + blink::mojom::StorageType type, + DeleteOriginDataCallback callback) override; void PerformStorageCleanup(blink::mojom::StorageType type, PerformStorageCleanupCallback callback) override; - static storage::QuotaClientType GetClientTypeFromOwner(NativeIOOwner owner); - private: ~NativeIOQuotaClient() override; - DISALLOW_COPY_AND_ASSIGN(NativeIOQuotaClient); + SEQUENCE_CHECKER(sequence_checker_); }; } // namespace content
diff --git a/content/browser/renderer_host/navigation_controller_impl.cc b/content/browser/renderer_host/navigation_controller_impl.cc index 30eb7b40..44a9cde 100644 --- a/content/browser/renderer_host/navigation_controller_impl.cc +++ b/content/browser/renderer_host/navigation_controller_impl.cc
@@ -3748,16 +3748,11 @@ NavigationControllerImpl* source, int max_index) { DCHECK_LE(max_index, source->GetEntryCount()); - size_t insert_index = 0; for (int i = 0; i < max_index; i++) { - // When cloning a tab, copy all entries except interstitial pages. - if (source->entries_[i]->GetPageType() != PAGE_TYPE_INTERSTITIAL) { - // TODO(creis): Once we start sharing FrameNavigationEntries between - // NavigationEntries, it will not be safe to share them with another tab. - // Must have a version of Clone that recreates them. - entries_.insert(entries_.begin() + insert_index++, - source->entries_[i]->Clone()); - } + // TODO(creis): Once we start sharing FrameNavigationEntries between + // NavigationEntries, it will not be safe to share them with another tab. + // Must have a version of Clone that recreates them. + entries_.insert(entries_.begin() + i, source->entries_[i]->Clone()); } DCHECK(pending_entry_index_ == -1 || pending_entry_ == GetEntryAtIndex(pending_entry_index_));
diff --git a/content/browser/renderer_host/navigation_controller_impl_unittest.cc b/content/browser/renderer_host/navigation_controller_impl_unittest.cc index fc237ed..8501f5b 100644 --- a/content/browser/renderer_host/navigation_controller_impl_unittest.cc +++ b/content/browser/renderer_host/navigation_controller_impl_unittest.cc
@@ -2478,30 +2478,6 @@ our_controller.GetEntryAtIndex(0)->restore_type()); } -// Make sure that the page type and stuff is correct after an interstitial. -TEST_F(NavigationControllerTest, Interstitial) { - NavigationControllerImpl& controller = controller_impl(); - // First navigate somewhere normal. - const GURL url1("http://foo"); - NavigationSimulator::NavigateAndCommitFromBrowser(contents(), url1); - - // Now navigate somewhere with an interstitial. - const GURL url2("http://bar"); - std::unique_ptr<NavigationSimulator> simulator = - NavigationSimulator::CreateBrowserInitiated(url2, contents()); - simulator->Start(); - controller.GetPendingEntry()->set_page_type(PAGE_TYPE_INTERSTITIAL); - - // At this point the interstitial will be displayed and the load will still - // be pending. If the user continues, the load will commit. - simulator->Commit(); - - // The page should be a normal page again. - EXPECT_EQ(url2, controller.GetLastCommittedEntry()->GetURL()); - EXPECT_EQ(PAGE_TYPE_NORMAL, - controller.GetLastCommittedEntry()->GetPageType()); -} - TEST_F(NavigationControllerTest, RemoveEntry) { NavigationControllerImpl& controller = controller_impl(); const GURL url1("http://foo/1");
diff --git a/content/browser/renderer_host/navigation_entry_impl_unittest.cc b/content/browser/renderer_host/navigation_entry_impl_unittest.cc index 4c49d72..9ac1a98 100644 --- a/content/browser/renderer_host/navigation_entry_impl_unittest.cc +++ b/content/browser/renderer_host/navigation_entry_impl_unittest.cc
@@ -230,8 +230,8 @@ // Page type EXPECT_EQ(PAGE_TYPE_NORMAL, entry1_->GetPageType()); EXPECT_EQ(PAGE_TYPE_NORMAL, entry2_->GetPageType()); - entry2_->set_page_type(PAGE_TYPE_INTERSTITIAL); - EXPECT_EQ(PAGE_TYPE_INTERSTITIAL, entry2_->GetPageType()); + entry2_->set_page_type(PAGE_TYPE_ERROR); + EXPECT_EQ(PAGE_TYPE_ERROR, entry2_->GetPageType()); // Referrer EXPECT_EQ(GURL(), entry1_->GetReferrer().url);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 7f8faec1..d2e23689 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1846,15 +1846,10 @@ return; } - // Only lose focus if the associated tab doesn't want input. This ensures - // focus losses from clicking on a page while it has a modal dialog won't - // break it's text cursor after the dialog goes away. - if (!host()->IsIgnoringInputEvents()) { - host()->SetActive(false); - host()->LostFocus(); + host()->SetActive(false); + host()->LostFocus(); - DetachFromInputMethod(false); - } + DetachFromInputMethod(false); // TODO(wjmaclean): Do we need to let TouchSelectionControllerClientAura // handle this, just in case it stomps on a new highlight in another view
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index 465d9ff..250cdc7 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -6470,41 +6470,6 @@ input_method->RemoveObserver(this); } -class RenderWidgetHostViewAuraInputMethodFocusTest - : public RenderWidgetHostViewAuraInputMethodTest, - public testing::WithParamInterface<bool> { - public: - RenderWidgetHostViewAuraInputMethodFocusTest() = default; - ~RenderWidgetHostViewAuraInputMethodFocusTest() override = default; - - bool ignore_input_events() { return GetParam(); } -}; - -INSTANTIATE_TEST_SUITE_P(RenderWidgetHostViewAuraInputMethodFocusTest, - RenderWidgetHostViewAuraInputMethodFocusTest, - testing::Bool()); - -TEST_P(RenderWidgetHostViewAuraInputMethodFocusTest, OnFocusLost) { - render_widget_host_delegate()->set_should_ignore_input_events( - ignore_input_events()); - - ui::InputMethod* input_method = view_->GetInputMethod(); - if (input_method != input_method_) { - // Some platforms doesn't support mocking input method. In that case, ignore this test. - return; - } - EXPECT_EQ(input_method, input_method_); - ActivateViewForTextInputManager(view_, ui::TEXT_INPUT_TYPE_TEXT); - input_method->SetFocusedTextInputClient(view_); - - EXPECT_EQ(input_method->GetTextInputClient(), view_); - view_->OnWindowFocused(nullptr, view_->GetNativeView()); - if (ignore_input_events()) - EXPECT_EQ(input_method->GetTextInputClient(), view_); - else - EXPECT_EQ(input_method->GetTextInputClient(), nullptr); -} - #if defined(OS_WIN) class MockInputMethodKeyboardController final : public ui::InputMethodKeyboardController {
diff --git a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc index 3535ace..5b9e58a 100644 --- a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc +++ b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
@@ -59,7 +59,8 @@ : file_path_(trace_file_path), completion_callback_(std::move(callback)), may_block_task_runner_(base::ThreadPool::CreateSequencedTaskRunner( - {base::MayBlock(), write_priority})) {} + {base::MayBlock(), write_priority, + base::TaskShutdownBehavior::BLOCK_SHUTDOWN})) {} void ReceiveTraceChunk(std::unique_ptr<std::string> chunk) override { may_block_task_runner_->PostTask(
diff --git a/content/public/common/page_type.h b/content/public/common/page_type.h index 0976f49..e9fedf3 100644 --- a/content/public/common/page_type.h +++ b/content/public/common/page_type.h
@@ -12,7 +12,6 @@ enum PageType { PAGE_TYPE_NORMAL = 0, PAGE_TYPE_ERROR, - PAGE_TYPE_INTERSTITIAL }; } // namespace content
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 1a2db75..d49b76f 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1799,7 +1799,6 @@ "../browser/file_system/browser_file_system_helper_unittest.cc", "../browser/file_system/file_system_operation_runner_unittest.cc", "../browser/file_system_access/file_system_chooser_unittest.cc", - "../browser/file_system_access/native_file_system_directory_handle_impl_unittest.cc", "../browser/file_system_access/native_file_system_file_handle_impl_unittest.cc", "../browser/file_system_access/native_file_system_file_writer_impl_unittest.cc", "../browser/file_system_access/native_file_system_handle_base_unittest.cc",
diff --git a/device/fido/fido_request_handler_base.h b/device/fido/fido_request_handler_base.h index d20950be..62b84a5e 100644 --- a/device/fido/fido_request_handler_base.h +++ b/device/fido/fido_request_handler_base.h
@@ -41,11 +41,6 @@ : public FidoDiscoveryBase::Observer { public: using RequestCallback = base::RepeatingCallback<void(const std::string&)>; - using BlePairingCallback = - base::RepeatingCallback<void(std::string authenticator_id, - base::Optional<std::string> pin_code, - base::OnceClosure success_callback, - base::OnceClosure error_callback)>; enum class RequestType { kMakeCredential, kGetAssertion };
diff --git a/device/vr/openxr/openxr_api_wrapper.cc b/device/vr/openxr/openxr_api_wrapper.cc index bd90eae..ed6fa7f 100644 --- a/device/vr/openxr/openxr_api_wrapper.cc +++ b/device/vr/openxr/openxr_api_wrapper.cc
@@ -684,6 +684,7 @@ session_running_ = false; xr_result = xrEndSession(session_); Uninitialize(); + on_session_ended_callback_.Run(); return xr_result; case XR_SESSION_STATE_SYNCHRONIZED: visibility_changed_callback_.Run( @@ -858,6 +859,11 @@ visibility_changed_callback_ = std::move(visibility_changed_callback); } +void OpenXrApiWrapper::RegisterOnSessionEndedCallback( + const base::RepeatingCallback<void()>& on_session_ended_callback) { + on_session_ended_callback_ = std::move(on_session_ended_callback); +} + VRTestHook* OpenXrApiWrapper::test_hook_ = nullptr; ServiceTestHook* OpenXrApiWrapper::service_test_hook_ = nullptr; void OpenXrApiWrapper::SetTestHook(VRTestHook* hook) {
diff --git a/device/vr/openxr/openxr_api_wrapper.h b/device/vr/openxr/openxr_api_wrapper.h index 9fe2706..60a94f91 100644 --- a/device/vr/openxr/openxr_api_wrapper.h +++ b/device/vr/openxr/openxr_api_wrapper.h
@@ -71,6 +71,8 @@ void RegisterVisibilityChangeCallback( const base::RepeatingCallback<void(mojom::XRVisibilityState)>& visibility_changed_callback); + void RegisterOnSessionEndedCallback( + const base::RepeatingCallback<void()>& on_session_ended_callback); device::mojom::XREnvironmentBlendMode PickEnvironmentBlendModeForSession( device::mojom::XRSessionMode session_mode); @@ -125,6 +127,7 @@ interaction_profile_changed_callback_; base::RepeatingCallback<void(mojom::XRVisibilityState)> visibility_changed_callback_; + base::RepeatingCallback<void()> on_session_ended_callback_; // Testing objects static VRTestHook* test_hook_;
diff --git a/device/vr/openxr/openxr_render_loop.cc b/device/vr/openxr/openxr_render_loop.cc index 9e5a5e0..4f2a39a 100644 --- a/device/vr/openxr/openxr_render_loop.cc +++ b/device/vr/openxr/openxr_render_loop.cc
@@ -112,6 +112,8 @@ input_helper_->GetWeakPtr())); openxr_->RegisterVisibilityChangeCallback(base::BindRepeating( &OpenXrRenderLoop::SetVisibilityState, weak_ptr_factory_.GetWeakPtr())); + openxr_->RegisterOnSessionEndedCallback(base::BindRepeating( + &OpenXrRenderLoop::ExitPresent, weak_ptr_factory_.GetWeakPtr())); InitializeDisplayInfo(); return true;
diff --git a/docs/speed/perf_lab_platforms.md b/docs/speed/perf_lab_platforms.md index e251c696..6891656 100644 --- a/docs/speed/perf_lab_platforms.md +++ b/docs/speed/perf_lab_platforms.md
@@ -24,6 +24,7 @@ * [mac-10_12_laptop_low_end-perf](https://ci.chromium.org/p/chrome/builders/ci/mac-10_12_laptop_low_end-perf): MacBook Air, Core i5 1.8 GHz, 8GB RAM, 128GB SSD, HD Graphics. * [mac-10_13_laptop_high_end-perf](https://ci.chromium.org/p/chrome/builders/ci/mac-10_13_laptop_high_end-perf): MacBook Pro, Core i7 2.8 GHz, 16GB RAM, 256GB SSD, Radeon 55. * [mac-arm_dtk_arm-perf](https://ci.chromium.org/p/chrome/builders/ci/mac-arm_dtk_arm-perf): Mac ARM DTK (ARM Chrome). + * [mac-m1_mini_2020-perf](https://ci.chromium.org/p/chrome/builders/ci/mac-m1_mini_2020-perf): Mac M1 Mini 2020. ## Win
diff --git a/docs/ui/index.md b/docs/ui/index.md index 749ab49..e49d6a6 100644 --- a/docs/ui/index.md +++ b/docs/ui/index.md
@@ -20,6 +20,7 @@ * [Platform Styling](/docs/ui/views/platform_style.md) * [Product Excellence](/docs/ui/product_excellence/index.md) * [UI Devtools](/docs/ui/ui_devtools/index.md) +* [Input Event Routing](/docs/ui/input_event/index.md) Archival Documentation on Chrome UI. * [Aura](/docs/ui/aura/index.md)
diff --git a/docs/ui/input_event/images/aura-event-flow.png b/docs/ui/input_event/images/aura-event-flow.png new file mode 100644 index 0000000..c2fb17d --- /dev/null +++ b/docs/ui/input_event/images/aura-event-flow.png Binary files differ
diff --git a/docs/ui/input_event/images/event-processor.png b/docs/ui/input_event/images/event-processor.png new file mode 100644 index 0000000..f824365d1 --- /dev/null +++ b/docs/ui/input_event/images/event-processor.png Binary files differ
diff --git a/docs/ui/input_event/images/high-level-input-pipeline.png b/docs/ui/input_event/images/high-level-input-pipeline.png new file mode 100644 index 0000000..2b53508 --- /dev/null +++ b/docs/ui/input_event/images/high-level-input-pipeline.png Binary files differ
diff --git a/docs/ui/input_event/images/mac-event-flow.png b/docs/ui/input_event/images/mac-event-flow.png new file mode 100644 index 0000000..30ef1cd --- /dev/null +++ b/docs/ui/input_event/images/mac-event-flow.png Binary files differ
diff --git a/docs/ui/input_event/images/views-event-flow.png b/docs/ui/input_event/images/views-event-flow.png new file mode 100644 index 0000000..324928c --- /dev/null +++ b/docs/ui/input_event/images/views-event-flow.png Binary files differ
diff --git a/docs/ui/input_event/images/views-tree.png b/docs/ui/input_event/images/views-tree.png new file mode 100644 index 0000000..498f7d54 --- /dev/null +++ b/docs/ui/input_event/images/views-tree.png Binary files differ
diff --git a/docs/ui/input_event/index.md b/docs/ui/input_event/index.md new file mode 100644 index 0000000..6d340ef --- /dev/null +++ b/docs/ui/input_event/index.md
@@ -0,0 +1,427 @@ +# The Life of an Input Event in Desktop Chrome UI + +[TOC] + +## Background + +The goal of this document is to improve the understanding of the input event +system in the desktop Chrome UI. + +## Overview + + + +The Chrome UI system handles input events (typically key downs or mouse clicks) +in three stages: + +- At the very beginning, the OS generates a native input event and sends it to a + Chrome browser window. +- Then, the Chrome Windowing system receives the event and converts it into a + platform-independent ui::Event. It then sends the event to the Views system. \ + The interaction with IME ([Input Method](https://en.wikipedia.org/wiki/Input_method), + for non-English text input) is also handled at this stage. +- Lastly, the Views system sends the event to the control that expects to + receive it. For example, a character key event will insert one letter to a + focused textfield. + +## Window Abstraction + +### Aura + +Aura is the window abstraction layer used on Windows, Linux, and ChromeOS. An +event goes through several phases in Aura and is eventually passed into views. + + + +**Phase 0** - DesktopWindowTreeHost + +After the user presses a key or clicks the mouse, the OS generates a low-level +input event and pumps it into a message loop. After some low-level os-specific +plumbing, the event is then delivered to a DesktopWindowTreeHost that hosts a +native window and handles events in DesktopWindowTreeHost::DispatchEvent(). + +**Phase 1** - EventProcessor pre-dispatch + + + +Next, the event is passed to a WindowEventDispatcher which is an EventProcessor +owned by the DesktopWindowTreeHost. On ChromeOS, some ui::EventRewriters may +rewrite the event before passing. + +An EventProcessor delivers the event to the right target. It provides a root +EventTarget and a default EventTargeter. EventTargeter is responsible for +finding the event target. An EventTarget can also provide an EventTargeter and +the EventProcessor prefers its root EventTarget’s targeter over the default +targeter. + +The EventProcessor delivers the event to the first target found by the targeter. +If the event is not marked as handled, it will ask the targeter to find the next +target and repeat the procedure until the event is handled. + +The EventProcessor can also have pre- and post-dispatch phases that happen +before and after the event is dispatched to the target. + +In the case of WindowEventDispatcher, it has a pre-dispatch phase for different +types of events. + +- For mouse move events, it may synthesize and dispatch a ET_MOUSE_EXITED event + to notify that mouse exits from previous UI control. +- For key events, it + [forwards](https://source.chromium.org/chromium/chromium/src/+/master:ui/aura/window_event_dispatcher.cc;drc=d9fa208c0b5d3d454df1ff1cbc724b5fd708cf7a;l=1053) + the key to ui::InputMethod::DispatchKeyEvent() and the event will be handled + there. Depending on IME involvement, later phases of WindowEventDispatcher may + be **SKIPPED**. Details are explained later. + +If the event is not marked handled in the EventProcessor pre-dispatch phase, it +will be passed to the target. For key events, the target is the aura::Window +that owns the focus. For mouse events, the target is the aura::Window under the +cursor. + +**Phase 2** - EventTarget pre-target + +Like EventProcessor, an EventTarget consumes the event in three phases. it owns +one target handler and optionally multiple pre-targets and post-target handlers. +An event will first be passed to pre-target handlers, and if not consumed by +them, then to the default target handler, and lastly to post-target handlers. + +aura::Window uses pre-handler to forward key events to FocusManager in views. If +the key is an accelerator, the event will be intercepted and later phases will +be SKIPPED. + +Mouse events at present are not processed in pre-handlers. + +**Phase 3** - EventTarget regular + +At this phase, aura::Window asks (Desktop)NativeWidgetAura::OnEvent() to handle +the event. DesktopNativeWidgetAura is the native implementation of a top-level +Widget. Non top-level widgets, e.g. dialog bubble, use NativeWidgetAura instead. +The native widget then passes the event to Widget::OnMouseEvent(), +Widget::OnClickEvent(), or other Widget methods depending on the event type. The +event is then handled in views and is explained in a later section. + +**Phase 4** - EventTarget post-target + +This phase is not effective in window abstraction. + +**Phase 5** - EventProcessor post-dispatch + +For touch events, WindowEventDispatcher may +[recognize](https://source.chromium.org/chromium/chromium/src/+/master:ui/aura/window_event_dispatcher.cc;drc=d9fa208c0b5d3d454df1ff1cbc724b5fd708cf7a;l=574) +the event as a gesture event and dispatch it. + +**Key event handling and IME interoperability** + +We mentioned in phase 1 pre-dispatch that a key event may be consumed in _this_ +phase and no later phases. This is because we need to interact with IME through +[InputMethod::DispatchKeyEvent()](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/ime/input_method.h;drc=d9fa208c0b5d3d454df1ff1cbc724b5fd708cf7a;l=101) +in pre-dispatch. + +If the IME accepts this key event, Chrome will stop any further event handling +because IMEs have their own interpretation to the event. Instead, Chrome +[exits](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/ime/linux/input_method_auralinux.cc;drc=d9fa208c0b5d3d454df1ff1cbc724b5fd708cf7a;l=109) +phase 1 with a fake VKEY_PROCESSKEY event indicating the event has been +processed by IME, and waits for new events emitted by IME and handles them +accordingly. For example, Chrome on Linux +[listens](https://source.chromium.org/chromium/chromium/src/+/master:ui/gtk/input_method_context_impl_gtk.cc;drc=340909edba6daccd34d5875de93599551b218902;l=74) +for the GTK `preedit-changed` event that indicates a change in the composition +text. + +If the IME does not accept this key event, WindowEventDispatcher will re-enter +phase 1 but with +[IME explicitly skipped](https://source.chromium.org/chromium/chromium/src/+/master:ui/aura/window_tree_host.cc;drc=d9fa208c0b5d3d454df1ff1cbc724b5fd708cf7a;l=277), +so that the event can be passed to phase 2 where accelerators are handled. + +### MacViews + +_MacViews_ is an umbrella term that covers the broader effort to adopt views in +Chrome Mac. Before this, Chrome Mac was using native Cocoa controls. In this +document, we use MacViews to refer to the windows abstraction part of Chrome +Mac. + +Mac does not use Aura and is significantly different from Aura in that it hosts +native NSWindow in +[RemoteCocoa](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/) +that talks to views through a mojo interface. This design allows RemoteCocoa to +either live within the browser process or in a separate process for PWA mode. +This design is largely due to the requirement of PWAs on Mac. +[[ref](https://docs.google.com/document/d/1Cym6LpmrYZU6Jl1BYKhuWqzRJV_OL8LYYepGGAJw7oE/edit)] + +Mac’s event handling borrows heavily from +[Cocoa’s Event architecture](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html) +but applies its own handling where appropriate. + +During startup ChromeBrowserMainParts will kick off NSApp’s main run loop that +will continue to service Chrome application event messages for the life of the +program. These messages are picked up by BrowserCrApplication (NSApplication +subclass) and for the most part forwarded to the appropriate +NativeWidgetMacNSWindow (NSWindow subclass). + +A key departure from how typical Cocoa applications are architected is that +Chrome uses a single root NSView (the BridgedContentView) as the contentView for +it’s NSWindow. This view is largely responsible for adapting native NSEvents and +funneling them through to the Views framework. + +The below two examples demonstrate two key event flows through the Cocoa layers +of Chrome through to the Views framework. + + + +#### Right mouse down event (clicking a button in the browser window) + +The below diagram demonstrates points of interest during dispatch of a right +mouse down event on a Chrome browser window button. + +Summary: + +- The Window Server is responsible for determining which NSWindow a mouse event + belongs to. +- Once the NSWindow has been identified the Window Server will place the mouse + down event in Chrome’s + [BrowserCrApplication ](https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/chrome_browser_application_mac.h)(NSApplication) + event queue. +- BrowserCrApplication’s main run loop reads from the event queue. +- BrowserCrApplication delivers the event to the + [NativeWidgetMacNSWindow ](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/native_widget_mac_nswindow.h)(NSWindow) + which delivers the mouseDown event to its root NSView + [contentView](https://developer.apple.com/documentation/appkit/nswindow/1419160-contentview). +- [BridgedContentView](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/bridged_content_view.h) + aggregates all mouse related + [NSResponder messages](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/cocoa/base_view.mm;l=114;drc=3930cf3f0e2404a517b4580b21e598a3fc648ff0) + (rightMouseDown, mouseMoved, leftMouseUp etc) into the mouseEvent: method. +- The + [mouseEvent method](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/bridged_content_view.mm;l=580;drc=dd5a8d8907f60050eeaaac0299be624fe36cad8a) + performs NSEvent conversion into ui::Event and sends the event to the + [NativeWidgetMacNSWindowHost](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/cocoa/native_widget_mac_ns_window_host.h)’s + [OnMouseEvent()](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/cocoa/native_widget_mac_ns_window_host.mm;l=790;drc=d18ea8bb2c8089e74838b8f781ba5f08420b8516) + method. +- BridgedContentView communicates to the NativeWidgetMacNSWindowHost via a + bridge. + - NativeWidgetMacNSWindowHost implements a Mojo remote + [remote_cocoa::mojom::NativeWidgetNSWindowHost](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/common/native_widget_ns_window_host.mojom;l=41;drc=e6d7cbba3a95a52176a5d5ca37572296f9b9aaa8) + such that the BridgedContentView and the NativeWidgetMacNSWindowHost can + communicate via message passing (needed in the case these exist across + process boundaries). +- [NativeWidgetMac](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/native_widget_mac.mm;l=118;drc=1748fd17d0e2b542b0051955a9cccb2153ff6ea7) + owns a NativeWidgetMacNSWindowHost instance. + +#### Key Down event (entering text into the browser’s omnibox) + +The following demonstrates key points of interest in the event flow that occurs +when a user presses a character key with the intention to enter text into the +browser’s omnibox. + +Summary: + +- The Window Server will deliver key events to the + [CrBrowserApplication’s ](https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/chrome_browser_application_mac.h)(NSApplication) + event queue. +- Provided the keyDown event is not a key equivalent or keyboard interface + control, the BrowserCrApplication sends the event to + [NativeWidgetMacNSWindow ](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/native_widget_mac_nswindow.h)(NSWindow) + that is associated with the first responder. +- The window dispatches the event as a keyDown event to it’s first responder (in + this case the + [BridgedContentView ](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/bridged_content_view.h)which + serves as the NSWindow’s + [contentView](https://developer.apple.com/documentation/appkit/nswindow/1419160-contentview)). +- BridgedContentView inherits from NSTextInputClient which is required for + Chrome to interact properly with Cocoa’s text input management system. +- BridgedContentView forwards the keyEvent to + [interpretKeyEvents](https://developer.apple.com/documentation/appkit/nsresponder/1531599-interpretkeyevents): + method. + - This invokes Cocoa’s input management system. + - This checks the pressed key against all key-binding dictionaries. + - If there is a match in the keybinding dictionary it sends a + doCommandBySelector: message back to the view. (commands include insertTab, + insertNewline, insertLineBreak, moveLeft etc). + - If no command matches it sends an insertText: message back to the + BridgedContentView. +- BridgedContentView + [converts the NSString to UFT16 and sends it through to it’s TextInputHost](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/bridged_content_view.mm;l=504;drc=dd5a8d8907f60050eeaaac0299be624fe36cad8a). + - [TextInputHost ](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/cocoa/text_input_host.h)implements + the remote Mojo interface + [remote_cocoa::mojom::TextInputHost](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/common/text_input_host.mojom;l=13;drc=4692fed3d7ff9afec997e3cd5fc5cc7050022cc7) + and BridgedContextView communicates with the TextInputHost via Mojo message + passing. +- The TextInputHost calls + [InsertText()](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/cocoa/text_input_host.mm;l=254;drc=7d9087d7348118b8ea5b12df100f4267dc56cadf) + on it’s + [ui::TextInputClient](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/ime/text_input_client.h). + - This should be the TextInputClient of the currently focused view. + +## Views + +The Window Abstraction layer will pass the input event to Views. Views is +Chrome’s (mostly) platform-independent UI framework that orchestrates UI +elements in a tree structure. Every node in the views tree is a +[View](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/view.h;bpv=1;bpt=1), +which is a UI element similar to an HTML DOM element. + + + +A +[Widget](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/widget.h;l=93;bpv=1;bpt=1?q=Widget&sq=&ss=chromium%2Fchromium%2Fsrc) +hosts the views tree and is a window-like surface that draws its content onto a +canvas provided by the underlying window abstraction. Every widget can have at +most one focused view which is tracked by a FocusManager owned by the widget. + +The root of Views tree is a +[RootView](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/root_view.h;drc=62bf27aca5418212ceadd8daf9188d2aa437bfcc;l=52), +which is a special subclass of View that helps bridging between children views +and the wrapping Widget. + + + +### Character Key Event + +Suppose the omnibox is focused and the user presses down a key, say character +‘a’. How is this key routed through the system and delivered to the omnibox? We +will only study the stack after the Window Abstraction layer passes the event to +Views. + +Surprisingly, the stack that the event needs to go through is not deep. On Aura, +it can be summarized as a path of Widget -> RootView -> focused View. RootView +will ask FocusManger for the focused view and the event will be directly +delivered to it. There is no tree traversal. The details can be broken down +into: + +1. [Widget::OnKeyEvent()](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/widget.cc;drc=5b8933e94139a0ab5be46141666fdfcce0f624f6;l=1250): + The key event will be passed from platform-dependent NativeWidget to Widget. + \ + The event is then processed by [EventRewriter](https://source.chromium.org/chromium/chromium/src/+/master:ui/events/event_source.cc;drc=17cd6070f4da0bb1c0396778afba06910f98fd7b;l=139)(s) + attached to the Widget. Rewriters are used **only** on ChromeOS. +2. [EventProcessor::OnEventFromSource()](https://source.chromium.org/chromium/chromium/src/+/master:ui/events/event_processor.cc;drc=0cd9a52effdb8f2a02b99e8044d680001ba8090f;l=16): + The key event is then passed to the root view of the widget. Note that a + RootView _is an_ EventProcessor. \ + An EventProcessor is a _multicaster_. It tries to deliver the event to multiple + targets [until the event is marked as handled](https://source.chromium.org/chromium/chromium/src/+/master:ui/events/event_processor.cc;drc=5b8933e94139a0ab5be46141666fdfcce0f624f6;l=48): + It delegates the target enumeration task to an EventTargeter. \ + In the case of RootView, the EventTargeter is a **ViewTargeter**. A + ViewTargeter will return the currently focused view as the target for the key + event. +3. [EventHandler::OnEvent()](https://source.chromium.org/chromium/chromium/src/+/master:ui/events/event_handler.cc;drc=5b8933e94139a0ab5be46141666fdfcce0f624f6;l=29): + OmniboxViewViews receives the event. Every view is an EventHandler and + OmniboxViewViews is no exception. +4. [OmniboxViewViews::HandleKeyEvent()](https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/ui/views/omnibox/omnibox_view_views.cc;drc=5b8933e94139a0ab5be46141666fdfcce0f624f6;l=2171): + Eventually where the event is consumed and the text in the omnibox gets + updated. + +On Mac, the event will be funneled directly from the Window Abstraction layer to +the focused view, i.e. Widget and RootView are not involved in event routing. +This is achieved by having NativeWidgetMacNSWindowHost save a pointer to the +focused view in a +[TextInputHost](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/cocoa/text_input_host.mm;drc=7d9087d7348118b8ea5b12df100f4267dc56cadf;l=268). +NativeWidgetMac +[registers](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/native_widget_mac.mm;drc=1748fd17d0e2b542b0051955a9cccb2153ff6ea7;l=895) +itself as an observer of focus change in FocusManager and updates +NativeWidgetMacNSWindowHost’s TextInputHost on focus change. + +### Accelerator Key Event + +In the case when the keystroke is an accelerator, for example, a Ctrl+T to open +a new tab, the focused view is not the expected view to handle it. + +On Aura, accelerators are handled by a +**[pre-handler](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/focus_manager_event_handler.cc;drc=df872ce8fcce25af51aa6b0f9fe8b1135b687524;l=17)** +that happens before the handler for character keys. This pre-handlers is hooked +on aura::Window in the Window Abstraction layer. If a key event is consumed as +accelerators, the character key handler path will be skipped. + +In the accelerator path, the **FocusManager** +[relays](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/focus_manager_event_handler.cc;drc=df872ce8fcce25af51aa6b0f9fe8b1135b687524;l=26) +the event from Window Abstraction to views::AcceleratorManager, and finally to +chrome::BrowserCommandController. + +Not all accelerators are handled by views::AcceleratorManager. A notable +exception is the Tab key which is used to switch the focused view and will be +[handled](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/focus/focus_manager.cc;drc=df872ce8fcce25af51aa6b0f9fe8b1135b687524;l=70) +directly by the FocusManager. + +Mac interprets accelerators early in the event pipeline. +[Key Equivalents](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/HandlingKeyEvents/HandlingKeyEvents.html#//apple_ref/doc/uid/10000060i-CH7-SW11) +like Cmd+T will be +[handled](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm;drc=6bf8746951f47dda5ce87be9a6218a1abfa064d0;l=291) +early in the Window Abstraction layer and the event never goes into Views. + +### Mouse Click Event + +Views like textfield will grab focus on a click event. + +After the Widget has received the event from the window abstraction, the +RootView +[traverses](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/root_view.cc;drc=5b8933e94139a0ab5be46141666fdfcce0f624f6;l=387) +the views tree from leaf to root and looks for the first view that accepts the +click event. Here, the leaf view is the lowest descendant view that contains the +cursor location of the event. The task of searching for this view is delegated +to +[ViewTargeter](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/view_targeter_delegate.cc;drc=df872ce8fcce25af51aa6b0f9fe8b1135b687524;l=33). + +When the click event is dispatched to a Textfield, it will +[notify](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/controls/textfield/textfield.cc;drc=281086aeca412de952c180411560c7ca68a5b97b;l=2172) +the FocusManager to update the focused view. + +## Focus Management + +A focused control receives keyboard events. Focus change can be triggered by +mouse click or pressing Tab key to switch to the next focusable view. Chrome +usually draws a +[FocusRing](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/controls/focus_ring.h;bpv=1;bpt=1;l=30?q=FocusRing&ss=chromium&gsn=FocusRing&gs=kythe%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%3Flang%3Dc%252B%252B%3Fpath%3Dsrc%2Fui%2Fviews%2Fcontrols%2Ffocus_ring.h%23FocusRing%253Aviews%2523c%2523oPBiT3XRtlN&gs=kythe%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%3Flang%3Dc%252B%252B%3Fpath%3Dsrc%2Fui%2Fviews%2Fcontrols%2Ffocus_ring.h%23FocusRing%253Aviews%2523c%2523ljYID0QylaH) +around the focused view. Focus rings are drawn separate from its view drawing. + +### Focusable Controls + +On all desktop platforms other than Mac, all the controls should be focusable by +default. However, on Mac, by default, only TextField and List are focusable. +Other controls such as Button, Combobox are not focusable. Full keyboard access +in system settings needs to be enabled to have navigation of all controls on the +screen. + +To comply with Mac’s behavior, Chrome sets +[DefaultFocusBehavior() ](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/style/platform_style_mac.mm;l=86)in +the platform style to ACCESSIBLE_ONLY on Mac as opposed to ALWAYS on other +platforms. Controls that are +[marked](https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/ui/views/toolbar/toolbar_button.cc;drc=93819857a690b79b1524052513747846c068ca90;l=104) +as ACCESSIBLE_ONLY will be skipped in search of the next view to focus if the +Full keyboard access is off. + +### Focus Handling in Window Abstraction + +Windows and Linux have more resemblance to handling focus on the window level. +They both have a ‘top-level’ window concept. A top-level window is a window that +has no parent. Chrome uses only top-level windows and the focus changing event +is only triggered between top-level windows. + +**Windows** + +Chrome observes WM_ACTIVATE messages to monitor the active window change +[[ref](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/win/hwnd_message_handler.cc?q=WM_ACTIVATE)]. + +The event is then routed up through the NativeWidget (DesktopNativeWidgetAura) +and eventually to Widget. Chrome then uses its own focus management to further +route those focus events to the view which is supposed to have the actual +keyboard focus. + +**Linux** + +Chrome on Linux observes the platform native focus change events FocusIn and +FocusOut +[[ref](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/x/x11_window.cc?q=x11::Input::CrossingEvent::FocusIn)] +to respond to focus change events. Nevertheless, eventually just like on +Windows, the events will be interpreted as active window change. + +**Mac** + +On Mac, the ‘key window’ is the window that receives keyboard events. Chrome +observes the key status change by implementing +[windowDidBecomeKey](https://source.chromium.org/chromium/chromium/src/+/master:components/remote_cocoa/app_shim/views_nswindow_delegate.mm;drc=e6d7cbba3a95a52176a5d5ca37572296f9b9aaa8;l=115) +on an NSWindow and handles according +[[ref](https://source.chromium.org/chromium/chromium/src/+/master:ui/views/widget/native_widget_mac.mm?q=NativeWidgetMac::OnWindowKeyStatusChanged)], +which is similar to Windows’ active window change. + +### Focus Handling in Views + +We have almost identical focus handling in views across different platforms. In +views, a widget owns a FocusManager who manages the focus for all the widgets in +this tree. FocusManager handles proper routing of keyboard events, including the +handling of keyboard accelerators. The FocusManager also handles focus traversal +among child widgets in addition to between Views.
diff --git a/docs/ui/learn/index.md b/docs/ui/learn/index.md index bd23aef..61069b64 100644 --- a/docs/ui/learn/index.md +++ b/docs/ui/learn/index.md
@@ -11,6 +11,7 @@ * [Views](/docs/ui/views/overview.md) * [Product Excellence](/docs/ui/product_excellence/index.md) * [UI Devtools](/docs/ui/ui_devtools/index.md) +* [Input Event Routing](/docs/ui/input_event/index.md) # Archival Documentation on Chrome UI.
diff --git a/extensions/browser/api/declarative_net_request/rules_monitor_service.cc b/extensions/browser/api/declarative_net_request/rules_monitor_service.cc index 4b51d92..fdeb452 100644 --- a/extensions/browser/api/declarative_net_request/rules_monitor_service.cc +++ b/extensions/browser/api/declarative_net_request/rules_monitor_service.cc
@@ -44,6 +44,7 @@ #include "extensions/common/api/declarative_net_request/constants.h" #include "extensions/common/api/declarative_net_request/dnr_manifest_data.h" #include "extensions/common/api/declarative_net_request/utils.h" +#include "extensions/common/error_utils.h" #include "extensions/common/extension_id.h" #include "tools/json_schema_compiler/util.h" @@ -105,14 +106,22 @@ RulesetSource source(kSessionRulesetID, kSessionRulesetLimit, extension_id, true /* enabled */); - // TODO(crbug.com/1043200): Rules which exceed the regex memory limit - // |info.regex_limit_exceeded_rules()| should be treated as errors. ParseInfo info = source.IndexRules(std::move(rules)); if (info.has_error()) { *error = info.error(); return nullptr; } + // Treat rules which exceed the regex memory limit as errors; just surface an + // error for the first such rule. + if (!info.regex_limit_exceeded_rules().empty()) { + *error = ErrorUtils::FormatErrorMessage( + kErrorRegexTooLarge, + base::NumberToString(info.regex_limit_exceeded_rules()[0]), + kRegexFilterKey); + return nullptr; + } + base::span<const uint8_t> buffer = info.GetBuffer(); std::unique_ptr<RulesetMatcher> matcher; LoadRulesetResult result = source.CreateVerifiedMatcher(
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index 758f98e..5541ca5 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1345,7 +1345,7 @@ AUTOTESTPRIVATE_RUNCROSTINIUNINSTALLER = 1282, AUTOTESTPRIVATE_TAKESCREENSHOT = 1283, ACCESSIBILITY_PRIVATE_TOGGLEDICTATION = 1284, - ACCESSIBILITY_PRIVATE_ENABLECHROMEVOXMOUSEEVENTS = 1285, + ACCESSIBILITY_PRIVATE_ENABLEMOUSEEVENTS = 1285, ACCESSIBILITY_PRIVATE_SENDSYNTHETICMOUSEEVENT = 1286, FILEMANAGERPRIVATE_DETECTCHARACTERENCODING = 1287, FILEMANAGERPRIVATEINTERNAL_GETLINUXPACKAGEINFO = 1288,
diff --git a/fuchsia/cast_streaming/cast_message_port_impl.cc b/fuchsia/cast_streaming/cast_message_port_impl.cc index 73c71ba..a6737c7 100644 --- a/fuchsia/cast_streaming/cast_message_port_impl.cc +++ b/fuchsia/cast_streaming/cast_message_port_impl.cc
@@ -14,8 +14,9 @@ namespace cast_streaming { CastMessagePortImpl::CastMessagePortImpl( - std::unique_ptr<cast_api_bindings::MessagePort> message_port) - : message_port_(std::move(message_port)) { + std::unique_ptr<cast_api_bindings::MessagePort> message_port, + base::OnceClosure on_close) + : message_port_(std::move(message_port)), on_close_(std::move(on_close)) { DVLOG(1) << __func__; message_port_->SetReceiver(this); @@ -26,12 +27,18 @@ CastMessagePortImpl::~CastMessagePortImpl() = default; void CastMessagePortImpl::MaybeClose() { - if (message_port_) + if (message_port_) { message_port_.reset(); + } if (client_) { client_->OnError( openscreen::Error(openscreen::Error::Code::kCastV2CastSocketError)); } + if (on_close_) { + // |this| might be deleted as part of |on_close_| being run. Do not add any + // code after running the closure. + std::move(on_close_).Run(); + } } void CastMessagePortImpl::SetClient(
diff --git a/fuchsia/cast_streaming/cast_message_port_impl.h b/fuchsia/cast_streaming/cast_message_port_impl.h index 6697347..2bd90d24 100644 --- a/fuchsia/cast_streaming/cast_message_port_impl.h +++ b/fuchsia/cast_streaming/cast_message_port_impl.h
@@ -5,6 +5,7 @@ #ifndef FUCHSIA_CAST_STREAMING_CAST_MESSAGE_PORT_IMPL_H_ #define FUCHSIA_CAST_STREAMING_CAST_MESSAGE_PORT_IMPL_H_ +#include "base/callback.h" #include "components/cast/message_port/message_port.h" #include "third_party/openscreen/src/cast/common/public/message_port.h" @@ -15,8 +16,9 @@ class CastMessagePortImpl : public openscreen::cast::MessagePort, public cast_api_bindings::MessagePort::Receiver { public: - explicit CastMessagePortImpl( - std::unique_ptr<cast_api_bindings::MessagePort> message_port); + CastMessagePortImpl( + std::unique_ptr<cast_api_bindings::MessagePort> message_port, + base::OnceClosure on_close); ~CastMessagePortImpl() final; CastMessagePortImpl(const CastMessagePortImpl&) = delete; @@ -47,6 +49,7 @@ Client* client_ = nullptr; std::unique_ptr<cast_api_bindings::MessagePort> message_port_; + base::OnceClosure on_close_; }; } // namespace cast_streaming
diff --git a/fuchsia/cast_streaming/cast_message_port_impl_unittest.cc b/fuchsia/cast_streaming/cast_message_port_impl_unittest.cc index 47b1053..8a7a573 100644 --- a/fuchsia/cast_streaming/cast_message_port_impl_unittest.cc +++ b/fuchsia/cast_streaming/cast_message_port_impl_unittest.cc
@@ -33,8 +33,10 @@ &receiver); sender_message_port_->SetReceiver(&sender_message_port_receiver_); - receiver_message_port_ = - std::make_unique<CastMessagePortImpl>(std::move(receiver)); + receiver_message_port_ = std::make_unique<CastMessagePortImpl>( + std::move(receiver), + base::BindOnce(&CastMessagePortImplTest::OnCastChannelClosed, + base::Unretained(this))); receiver_message_port_->SetClient(this, kSenderId); } @@ -59,6 +61,20 @@ run_loop.Run(); } + void RunUntilCastChannelClosed() { + base::RunLoop run_loop; + cast_channel_closed_closure_ = run_loop.QuitClosure(); + run_loop.Run(); + } + + void OnCastChannelClosed() { + if (cast_channel_closed_closure_) { + std::move(cast_channel_closed_closure_).Run(); + } else { + ADD_FAILURE() << "Cast Streaming Session MessagePort disconnected"; + } + } + // openscreen::cast::MessagePort::Client implementation. void OnMessage(const std::string& source_sender_id, const std::string& message_namespace, @@ -83,6 +99,7 @@ std::vector<CastMessage> receiver_messages_; base::OnceClosure receiver_message_closure_; base::OnceClosure error_closure_; + base::OnceClosure cast_channel_closed_closure_; std::unique_ptr<CastMessagePortImpl> receiver_message_port_; std::unique_ptr<cast_api_bindings::MessagePort> sender_message_port_; @@ -185,4 +202,10 @@ openscreen::Error(openscreen::Error::Code::kCastV2InvalidMessage)); } +// Tests closing the sender-end of the Cast Channel properly runs the closure. +TEST_F(CastMessagePortImplTest, CastChannelClosed) { + sender_message_port_.reset(); + RunUntilCastChannelClosed(); +} + } // namespace cast_streaming
diff --git a/fuchsia/cast_streaming/cast_streaming_session.cc b/fuchsia/cast_streaming/cast_streaming_session.cc index b674acc..de1cdcc 100644 --- a/fuchsia/cast_streaming/cast_streaming_session.cc +++ b/fuchsia/cast_streaming/cast_streaming_session.cc
@@ -112,7 +112,10 @@ scoped_refptr<base::SequencedTaskRunner> task_runner) : task_runner_(task_runner), environment_(&openscreen::Clock::now, &task_runner_), - cast_message_port_impl_(std::move(message_port)), + cast_message_port_impl_( + std::move(message_port), + base::BindOnce(&CastStreamingSession::Internal::OnCastChannelClosed, + base::Unretained(this))), client_(client) { DCHECK(task_runner); DCHECK(client_); @@ -315,6 +318,11 @@ receiver_session_.reset(); } + void OnCastChannelClosed() { + DVLOG(1) << __func__; + receiver_session_.reset(); + } + openscreen_platform::TaskRunner task_runner_; openscreen::cast::Environment environment_; CastMessagePortImpl cast_message_port_impl_; @@ -335,6 +343,7 @@ Client* client, std::unique_ptr<cast_api_bindings::MessagePort> message_port, scoped_refptr<base::SequencedTaskRunner> task_runner) { + DVLOG(1) << __func__; DCHECK(client); DCHECK(!internal_); internal_ = @@ -342,6 +351,7 @@ } void CastStreamingSession::Stop() { + DVLOG(1) << __func__; DCHECK(internal_); internal_.reset(); }
diff --git a/fuchsia/engine/browser/navigation_controller_impl.cc b/fuchsia/engine/browser/navigation_controller_impl.cc index 7987906..56663b5 100644 --- a/fuchsia/engine/browser/navigation_controller_impl.cc +++ b/fuchsia/engine/browser/navigation_controller_impl.cc
@@ -82,7 +82,6 @@ } else { switch (entry->GetPageType()) { case content::PageType::PAGE_TYPE_NORMAL: - case content::PageType::PAGE_TYPE_INTERSTITIAL: state.set_page_type(fuchsia::web::PageType::NORMAL); break; case content::PageType::PAGE_TYPE_ERROR:
diff --git a/fuchsia/engine/context_provider_impl.cc b/fuchsia/engine/context_provider_impl.cc index f6a91a02..bc9d584 100644 --- a/fuchsia/engine/context_provider_impl.cc +++ b/fuchsia/engine/context_provider_impl.cc
@@ -265,6 +265,8 @@ launch_options.handles_to_transfer.push_back( {kContextRequestHandleId, context_request.channel().get()}); + base::CommandLine launch_command(*base::CommandLine::ForCurrentProcess()); + // Bind |data_directory| to /data directory, if provided. zx::channel data_directory_channel; if (params.has_data_directory()) { @@ -285,10 +287,13 @@ } launch_options.paths_to_transfer.push_back( base::PathToTransfer{data_path, data_directory_channel.release()}); - } - base::CommandLine launch_command = *base::CommandLine::ForCurrentProcess(); - std::vector<zx::channel> devtools_listener_channels; + if (params.has_data_quota_bytes()) { + launch_command.AppendSwitchNative( + switches::kDataQuotaBytes, + base::NumberToString(params.data_quota_bytes())); + } + } // Process command-line settings specified in our package config-data. base::Value web_engine_config; @@ -310,6 +315,7 @@ base::NumberToString(params.remote_debugging_port())); } + std::vector<zx::channel> devtools_listener_channels; if (devtools_listeners_.size() != 0) { // Connect DevTools listeners to the new Context process. std::vector<std::string> handles_ids;
diff --git a/fuchsia/engine/context_provider_impl_unittest.cc b/fuchsia/engine/context_provider_impl_unittest.cc index 8cd607e0..13591f6 100644 --- a/fuchsia/engine/context_provider_impl_unittest.cc +++ b/fuchsia/engine/context_provider_impl_unittest.cc
@@ -33,6 +33,7 @@ #include "base/test/multiprocess_test.h" #include "base/test/task_environment.h" #include "base/test/test_timeouts.h" +#include "build/build_config.h" #include "fuchsia/engine/context_provider_impl.h" #include "fuchsia/engine/fake_context.h" #include "fuchsia/engine/switches.h" @@ -45,9 +46,13 @@ constexpr char kTestDataFileIn[] = "DataFileIn"; constexpr char kTestDataFileOut[] = "DataFileOut"; + constexpr char kUrl[] = "chrome://:emorhc"; constexpr char kTitle[] = "Palindrome"; +constexpr uint64_t kTestQuotaBytes = 1024; +constexpr char kTestQuotaBytesSwitchValue[] = "1024"; + MULTIPROCESS_TEST_MAIN(SpawnContextServer) { base::test::SingleThreadTaskEnvironment task_environment( base::test::SingleThreadTaskEnvironment::MainThreadType::IO); @@ -344,7 +349,7 @@ fuchsia::web::CreateContextParams create_params = BuildCreateContextParams(); // Setup data dir. - EXPECT_TRUE(profile_temp_dir.CreateUniqueTempDir()); + ASSERT_TRUE(profile_temp_dir.CreateUniqueTempDir()); ASSERT_EQ( base::WriteFile(profile_temp_dir.GetPath().AppendASCII(kTestDataFileIn), nullptr, 0), @@ -559,3 +564,75 @@ loop.Run(); } + +TEST(ContextProviderImplConfigTest, WithDataQuotaBytes) { + const base::test::SingleThreadTaskEnvironment task_environment_{ + base::test::SingleThreadTaskEnvironment::MainThreadType::IO}; + + base::RunLoop loop; + ContextProviderImpl context_provider; + context_provider.SetLaunchCallbackForTest( + base::BindLambdaForTesting([&loop](const base::CommandLine& command, + const base::LaunchOptions& options) { + EXPECT_EQ(command.GetSwitchValueASCII("data-quota-bytes"), + kTestQuotaBytesSwitchValue); + loop.Quit(); + return base::Process(); + })); + + fuchsia::web::ContextPtr context; + context.set_error_handler([&loop](zx_status_t status) { + ZX_LOG(ERROR, status); + ADD_FAILURE(); + loop.Quit(); + }); + + fuchsia::web::CreateContextParams create_params = BuildCreateContextParams(); + base::ScopedTempDir profile_temp_dir; + ASSERT_TRUE(profile_temp_dir.CreateUniqueTempDir()); + create_params.set_data_directory( + base::OpenDirectoryHandle(profile_temp_dir.GetPath())); + create_params.set_data_quota_bytes(kTestQuotaBytes); + context_provider.Create(std::move(create_params), context.NewRequest()); + + loop.Run(); +} + +// TODO(crbug.com/1013412): This test doesn't actually exercise DRM, so could +// be executed everywhere if DRM support were configurable. +#if defined(ARCH_CPU_ARM64) +TEST(ContextProviderImplConfigTest, WithCdmDataQuotaBytes) { + const base::test::SingleThreadTaskEnvironment task_environment_{ + base::test::SingleThreadTaskEnvironment::MainThreadType::IO}; + + base::RunLoop loop; + ContextProviderImpl context_provider; + context_provider.SetLaunchCallbackForTest( + base::BindLambdaForTesting([&loop](const base::CommandLine& command, + const base::LaunchOptions& options) { + EXPECT_EQ(command.GetSwitchValueASCII("cdm-data-quota-bytes"), + kTestQuotaBytesSwitchValue); + loop.Quit(); + return base::Process(); + })); + + fuchsia::web::ContextPtr context; + context.set_error_handler([&loop](zx_status_t status) { + ZX_LOG(ERROR, status); + ADD_FAILURE(); + loop.Quit(); + }); + + fuchsia::web::CreateContextParams create_params = BuildCreateContextParams(); + base::ScopedTempDir profile_temp_dir; + ASSERT_TRUE(profile_temp_dir.CreateUniqueTempDir()); + create_params.set_cdm_data_directory( + base::OpenDirectoryHandle(profile_temp_dir.GetPath())); + create_params.set_features(fuchsia::web::ContextFeatureFlags::HEADLESS | + fuchsia::web::ContextFeatureFlags::WIDEVINE_CDM); + create_params.set_cdm_data_quota_bytes(kTestQuotaBytes); + context_provider.Create(std::move(create_params), context.NewRequest()); + + loop.Run(); +} +#endif // defined(ARCH_CPU_ARM64)
diff --git a/ios/chrome/app/strings/resources/ios_strings_af.xtb b/ios/chrome/app/strings/resources/ios_strings_af.xtb index 626de99..ab02d37 100644 --- a/ios/chrome/app/strings/resources/ios_strings_af.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_af.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Opstelling is besig …</translation> <translation id="6119050551270742952">Huidige webbladsy is op incognito</translation> <translation id="6122191549521593678">Aanlyn</translation> -<translation id="6125339936101702016">Bestuur deur <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Kom meer te wete<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item is verwyder</translation> <translation id="6136914049981179737">Sekondes gelede</translation> <translation id="6144589619057374135">Maak ${url} in Incognitomodus oop</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index d2c939f..622c3dd8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ማዋቀር በሂደት ላይ…</translation> <translation id="6119050551270742952">የአሁኑ ድረ-ገጽ ማንነት በማያሳውቅ ላይ ነው</translation> <translation id="6122191549521593678">መስመር ላይ</translation> -<translation id="6125339936101702016">በ<ph name="COMPANY" /> የሚተዳደር ነው። <ph name="BEGIN_LINK" />የበለጠ ለመረዳት<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ንጥል ተወግዷል</translation> <translation id="6136914049981179737">ከሰከንዶች በፊት</translation> <translation id="6144589619057374135">ማንነት በማያሳውቅ ሁነታ ላይ ${url}ን ይክፈቱ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index 4c1e944..891705b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">الإعداد قيد التقدّم…</translation> <translation id="6119050551270742952">صفحة الويب الحالية في وضع التصفح المتخفي</translation> <translation id="6122191549521593678">متصل</translation> -<translation id="6125339936101702016">تتم إدارة المتصفِّح من خلال <ph name="COMPANY" />. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation> <translation id="6127379762771434464">أُزيلَ عنصر</translation> <translation id="6136914049981179737">قبل ثانية</translation> <translation id="6144589619057374135">فتح {url}$ في وضع التصفُّح المتخفي</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index 88d877a..baad2bf 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ছেট আপ প্ৰক্ৰিয়া চলি আছে…</translation> <translation id="6119050551270742952">বৰ্তমানৰ ৱেবপৃষ্ঠাটো ইনক’গনিট’ত আছে</translation> <translation id="6122191549521593678">অনলাইন</translation> -<translation id="6125339936101702016"><ph name="COMPANY" />ৰ দ্বাৰা পৰিচালিত। <ph name="BEGIN_LINK" />অধিক জানক<ph name="END_LINK" /></translation> <translation id="6127379762771434464">বস্তুটো আঁতৰোৱা হ’ল</translation> <translation id="6136914049981179737">ছেকেণ্ড পূর্বে</translation> <translation id="6144589619057374135">${url} ইনক’গনিট’ত খোলক</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index 5926994bc..f1a3b84c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Quraşdırma icra olunur...</translation> <translation id="6119050551270742952">Hazırkı veb səhifə anonim rejimdədir</translation> <translation id="6122191549521593678">Onlayn</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> tərəfindən idarə edilir. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Element silindi</translation> <translation id="6136914049981179737">Saniyələr əvvəl</translation> <translation id="6144589619057374135">${url} keçidini Anonim rejimdə açın</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb index 3bace94..e31f829 100644 --- a/ios/chrome/app/strings/resources/ios_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Ідзе наладка…</translation> <translation id="6119050551270742952">Вэб-старонка адкрыта ў рэжыме інкогніта</translation> <translation id="6122191549521593678">У інтэрнэце</translation> -<translation id="6125339936101702016">Пад кіраваннем кампаніі "<ph name="COMPANY" />". <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Элемент выдалены</translation> <translation id="6136914049981179737">с таму</translation> <translation id="6144589619057374135">Адкрыць ${url} у рэжыме інкогніта</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 32df4f2..68d30db 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Извършва се настройване…</translation> <translation id="6119050551270742952">Страницата е в режим „инкогнито“</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016">Управлява се от <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Елементът бе премахнат</translation> <translation id="6136914049981179737">Току-що</translation> <translation id="6144589619057374135">Отваряне на ${url} в режим „инкогнито“</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb index 93e37ea..09708b56 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -468,7 +468,6 @@ <translation id="6108923351542677676">সেটআপ চলছে...</translation> <translation id="6119050551270742952">বর্তমান ওয়েবপেজটি ছদ্মবেশী মোডে আছে</translation> <translation id="6122191549521593678">অনলাইন</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> এটি ম্যানেজ করে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation> <translation id="6127379762771434464">আইটেম সরানো হয়েছে</translation> <translation id="6136914049981179737">সেকেন্ড আগে</translation> <translation id="6144589619057374135">'ছদ্মবেশী মোডে' ${url} খুলুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index 15511ff..6cd0ce3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">U toku je postavljanje…</translation> <translation id="6119050551270742952">Trenutna web stranica je u Anonimnom načinu</translation> <translation id="6122191549521593678">Na mreži</translation> -<translation id="6125339936101702016">Preglednikom upravlja <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Stavka je uklonjena</translation> <translation id="6136914049981179737">Prije nekoliko sekundi</translation> <translation id="6144589619057374135">Otvorite ${url} u anonimnom načinu rada</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb index 3420845c..f7b97e4d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuració en curs...</translation> <translation id="6119050551270742952">La pàgina web actual està en mode d'incògnit</translation> <translation id="6122191549521593678">En línia</translation> -<translation id="6125339936101702016">Gestionat per <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation> <translation id="6127379762771434464">S'ha suprimit l'element</translation> <translation id="6136914049981179737">Fa segons</translation> <translation id="6144589619057374135">Obre ${url} en mode d'incògnit</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cs.xtb b/ios/chrome/app/strings/resources/ios_strings_cs.xtb index 33bd29ac..bcd22e0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cs.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Probíhá nastavování…</translation> <translation id="6119050551270742952">Webová stránka je v anonymním režimu</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Spravováno společností <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Položka byla odstraněna</translation> <translation id="6136914049981179737">před chvílí</translation> <translation id="6144589619057374135">Otevřít ${url} v anonymním režimu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index 9913ee6..c40fb3d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Konfigurationen er i gang...</translation> <translation id="6119050551270742952">Den aktuelle webside er i inkognitotilstand</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Administreres af <ph name="COMPANY" /> <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elementet blev fjernet</translation> <translation id="6136914049981179737">Sek. siden</translation> <translation id="6144589619057374135">Åbn ${url} i inkognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index 1d6b373..b597910 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Einrichtung läuft...</translation> <translation id="6119050551270742952">Die aktuelle Webseite ist im Inkognitomodus</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Verwaltet von <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Eintrag entfernt</translation> <translation id="6136914049981179737">Gerade eben</translation> <translation id="6144589619057374135">${url} im Inkognitomodus öffnen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index 8df5644..8fd3b85 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Ρύθμιση σε εξέλιξη…</translation> <translation id="6119050551270742952">Ιστοσελίδα σε ανώνυμη περιήγηση</translation> <translation id="6122191549521593678">Συνδεδεμένο</translation> -<translation id="6125339936101702016">Η διαχείριση του προγράμματος περιήγησης γίνεται από την εταιρεία <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Το στοιχείο καταργήθηκε</translation> <translation id="6136914049981179737">Δευτ.πριν</translation> <translation id="6144589619057374135">Άνοιγμα ${url} σε ανώνυμη περιήγηση</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index b9c537e..92d0c76 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Setup in progress…</translation> <translation id="6119050551270742952">Current web page is on Incognito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Managed by <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Learn more<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item removed</translation> <translation id="6136914049981179737">Seconds ago</translation> <translation id="6144589619057374135">Open ${url} in Incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index fdd7df3..432c973 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuración en curso…</translation> <translation id="6119050551270742952">Pág. incógnito</translation> <translation id="6122191549521593678">En línea</translation> -<translation id="6125339936101702016">Administrado por <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Se eliminó el elemento</translation> <translation id="6136914049981179737">Hace seg.</translation> <translation id="6144589619057374135">Abrir ${url} en modo Incógnito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index 3a812f8..df22f4c5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuración en curso…</translation> <translation id="6119050551270742952">Sitio actual en modo incógnito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Gestionado por <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elemento quitado</translation> <translation id="6136914049981179737">Hace segundos</translation> <translation id="6144589619057374135">Abrir ${url} en incógnito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_et.xtb b/ios/chrome/app/strings/resources/ios_strings_et.xtb index 45c8a82..568079b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_et.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_et.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Seadistamine on pooleli ...</translation> <translation id="6119050551270742952">Praegune veebileht on inkognito režiimis</translation> <translation id="6122191549521593678">Onlain</translation> -<translation id="6125339936101702016">Seadet haldab <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Üksus eemaldati</translation> <translation id="6136914049981179737">Sek. eest</translation> <translation id="6144589619057374135">Ava ${url} inkognito aknas</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_eu.xtb b/ios/chrome/app/strings/resources/ios_strings_eu.xtb index fc626a5..a3fce64 100644 --- a/ios/chrome/app/strings/resources/ios_strings_eu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_eu.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Konfigurazioa abian da…</translation> <translation id="6119050551270742952">Web-orri hau ezkutuko moduan dago</translation> <translation id="6122191549521593678">Konektatu</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> da gailuaren kudeatzailea. <ph name="BEGIN_LINK" />Lortu informazio gehiago<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Kendu egin da elementua</translation> <translation id="6136914049981179737">Duela segundo gutxi</translation> <translation id="6144589619057374135">Ireki ${url} ezkutuko moduan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index 3560aa82..6e24369 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">تنظیم در حال انجام است...</translation> <translation id="6119050551270742952">صفحه وب کنونی در حالت ناشناس است</translation> <translation id="6122191549521593678">آنلاین</translation> -<translation id="6125339936101702016">توسط <ph name="COMPANY" /> مدیریت میشود. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation> <translation id="6127379762771434464">مورد برداشته شد</translation> <translation id="6136914049981179737">ثانیههایی قبل</translation> <translation id="6144589619057374135">باز کردن ${url} در حالت ناشناس</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb index 94f69a4..97fdd368 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Synkronointia valmistellaan…</translation> <translation id="6119050551270742952">Nykyinen verkkosivu on incognito-tilassa</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Ylläpitäjä on <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Kohde poistettu</translation> <translation id="6136914049981179737">Hetki sitten</translation> <translation id="6144589619057374135">Avaa ${url} incognito-tilassa</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index 6df8b16..e34bc4e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Kasalukuyang sine-setup…</translation> <translation id="6119050551270742952">Nasa Incognito ang Kasalukuyang Webpage</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Pinapamahalaan ng <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Inalis ang item</translation> <translation id="6136914049981179737">Segundo</translation> <translation id="6144589619057374135">Buksan ang ${url} sa Incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb index d6fbd6e..9a0c8ce 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuration en cours...</translation> <translation id="6119050551270742952">La page Web actuelle est ouverte en mode de navigation privée</translation> <translation id="6122191549521593678">En ligne</translation> -<translation id="6125339936101702016">Géré par <ph name="COMPANY" />. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Élément supprimé</translation> <translation id="6136914049981179737">Qq sec.</translation> <translation id="6144589619057374135">Ouvrir ${url} en mode de navigation privée</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index 435da6a..40b3497 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuration en cours…</translation> <translation id="6119050551270742952">La page Web actuelle est en mode navigation privée</translation> <translation id="6122191549521593678">En ligne</translation> -<translation id="6125339936101702016">Géré par <ph name="COMPANY" />. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Élément supprimé</translation> <translation id="6136914049981179737">À l'instant.</translation> <translation id="6144589619057374135">Ouvrir ${url} en mode navigation privée</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb index fde2c3b..82fab03a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuración en curso…</translation> <translation id="6119050551270742952">O sitio web actual está no modo de incógnito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Xestionado por <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Eliminouse o elemento</translation> <translation id="6136914049981179737">Seg. antes</translation> <translation id="6144589619057374135">Abrir ${url} no modo de incógnito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index 411ebeb8..b6ba684 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">સેટઅપની પ્રક્રિયા ચાલુ છે...</translation> <translation id="6119050551270742952">વર્તમાન વેબપેજ છૂપા મોડમાં છે</translation> <translation id="6122191549521593678">ઓનલાઇન</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> દ્વારા મેનેજ કરવામાં આવે છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation> <translation id="6127379762771434464">આઇટમ દૂર કરી</translation> <translation id="6136914049981179737">સેકંડ પહેલાં</translation> <translation id="6144589619057374135">છૂપા મોડમાં ${url} ખોલો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index 265b6edd..f4786978 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">सेटअप प्रगति में है…</translation> <translation id="6119050551270742952">मौजूदा वेबपेज गुप्त मोड में खोला गया है</translation> <translation id="6122191549521593678">ऑनलाइन</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> प्रबंधित करता है. <ph name="BEGIN_LINK" />ज़्यादा जानें<ph name="END_LINK" /></translation> <translation id="6127379762771434464">आइटम निकाला गया</translation> <translation id="6136914049981179737">कुछ सेकंड पहले</translation> <translation id="6144589619057374135">${url} गुप्त मोड में खोलें</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index dcf9a02..c2671d2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Postavljanje je u tijeku…</translation> <translation id="6119050551270742952">Stranica u anonimnom načinu</translation> <translation id="6122191549521593678">Na mreži</translation> -<translation id="6125339936101702016">Uređajem upravlja <ph name="COMPANY" /> <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Stavka je uklonjena</translation> <translation id="6136914049981179737">Prije nekoliko sek.</translation> <translation id="6144589619057374135">Otvorite ${url} u anonimnom načinu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index b56894d4..cabf2a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">A telepítés folyamatban...</translation> <translation id="6119050551270742952">Ez a weboldal inkognitó módban van megnyitva</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Kezelő: <ph name="COMPANY" />. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation> <translation id="6127379762771434464">Elem eltávolítva</translation> <translation id="6136914049981179737">Néhány másodperce</translation> <translation id="6144589619057374135">${url} megnyitása inkognitó módban</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hy.xtb b/ios/chrome/app/strings/resources/ios_strings_hy.xtb index 038ac61f..f2e810f4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hy.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Կարգավորումն ընթացքի մեջ է…</translation> <translation id="6119050551270742952">Ընթացիկ կայքէջը ինկոգնիտո ռեժիմում է բացված</translation> <translation id="6122191549521593678">Առցանց</translation> -<translation id="6125339936101702016">Կառավարվում է <ph name="COMPANY" />-ի կողմից։ <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Տարրը հեռացվեց</translation> <translation id="6136914049981179737">Վայրկյաններ առաջ</translation> <translation id="6144589619057374135">Բացել ինկոգնիտո ռեժիմում` ${url}</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index ad8a8282..704bc1ce 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Penyiapan sedang berlangsung...</translation> <translation id="6119050551270742952">Halaman Web saat ini sedang dalam Mode Samaran</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Dikelola oleh <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item dihapus</translation> <translation id="6136914049981179737">Detik lalu</translation> <translation id="6144589619057374135">Buka ${url} dalam mode Samaran</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index 96078002b..9e3e1832 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Uppsetning fer fram…</translation> <translation id="6119050551270742952">Opin vefsíða er í huliðsstillingu</translation> <translation id="6122191549521593678">Á netinu</translation> -<translation id="6125339936101702016">Stjórnað af <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Atriði fjarlægt</translation> <translation id="6136914049981179737">sekúndur síðan</translation> <translation id="6144589619057374135">Opna ${url} í huliðsstillingu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index b25f9ef..a1c3115 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configurazione in corso…</translation> <translation id="6119050551270742952">Pagina web corrente in incognito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Gestito da <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Ulteriori informazioni<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elemento rimosso</translation> <translation id="6136914049981179737">Secondi fa</translation> <translation id="6144589619057374135">Apri ${url} in incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index 82d31f5..a115e8d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ההגדרה מתבצעת…</translation> <translation id="6119050551270742952">דף האינטרנט הנוכחי מוצג במצב אנונימי</translation> <translation id="6122191549521593678">אונליין</translation> -<translation id="6125339936101702016">מנוהל על ידי <ph name="COMPANY" />. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation> <translation id="6127379762771434464">הפריט הוסר</translation> <translation id="6136914049981179737">שניות</translation> <translation id="6144589619057374135">פתיחת ${urls} במצב אנונימי</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ja.xtb b/ios/chrome/app/strings/resources/ios_strings_ja.xtb index d09acb42..7943ac5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ja.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ja.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">設定しています...</translation> <translation id="6119050551270742952">現在シークレット モードです</translation> <translation id="6122191549521593678">オンライン</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> によって管理されています。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation> <translation id="6127379762771434464">アイテムを削除しました</translation> <translation id="6136914049981179737">数秒前</translation> <translation id="6144589619057374135">${url} をシークレット モードで開く</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index fda49c65..420e74c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">მიმდინარეობს დაყენება…</translation> <translation id="6119050551270742952">ამჟამად გახსნილი ვებგვერდი ინკოგნიტო რეჟიმშია</translation> <translation id="6122191549521593678">ონლაინ</translation> -<translation id="6125339936101702016">მართავს <ph name="COMPANY" />. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ერთეული ამოიშალა</translation> <translation id="6136914049981179737">წამის წინ</translation> <translation id="6144589619057374135">${url}-ის გახსნა ინკოგნიტო რეჟიმში</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kk.xtb b/ios/chrome/app/strings/resources/ios_strings_kk.xtb index 08d67a92..c827dd8a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kk.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Орнатылуда…</translation> <translation id="6119050551270742952">Ағымдағы веб-бет инкогнито режимінде</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> басқарады. <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Элемент жойылған</translation> <translation id="6136914049981179737">Секунд бұрын</translation> <translation id="6144589619057374135">${url} сілтемесін инкогнито режимінде ашу</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb index f7f2a9d7..710fa583 100644 --- a/ios/chrome/app/strings/resources/ios_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ការដំឡើងកំពុងដំណើរការ…</translation> <translation id="6119050551270742952">ទំព័របណ្ដាញបច្ចុប្បន្នស្ថិតនៅក្នុងមុខងារឯកជន</translation> <translation id="6122191549521593678">លើអ៊ីនធឺណិត</translation> -<translation id="6125339936101702016">គ្រប់គ្រងដោយ <ph name="COMPANY" />។ <ph name="BEGIN_LINK" />ស្វែងយល់បន្ថែម<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ធាតុត្រូវបានយកចេញ</translation> <translation id="6136914049981179737">វិនាទីមុន</translation> <translation id="6144589619057374135">បើក ${url} នៅក្នុងមុខងារឯកជន</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index 7ac3e1fd..0e3813a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ಸೆಟಪ್ ಪ್ರಗತಿಯಲ್ಲಿದೆ...</translation> <translation id="6119050551270742952">ಪ್ರಸ್ತುತ ವೆಬ್ ಪುಟವು ಅಜ್ಞಾತ ಮೋಡ್ನಲ್ಲಿದೆ</translation> <translation id="6122191549521593678">ಆನ್ಲೈನ್</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ಐಟಂ ತೆಗೆದುಹಾಕಲಾಗಿದೆ</translation> <translation id="6136914049981179737">ಸೆಕೆಂಡ್ ಹಿಂದೆ</translation> <translation id="6144589619057374135">${url} ಅನ್ನು ಅದೃಶ್ಯ ಮೋಡ್ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb index fe41349d..107ee8b6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">설정 진행 중...</translation> <translation id="6119050551270742952">현재 시크릿 모드에서 웹페이지 사용 중</translation> <translation id="6122191549521593678">온라인</translation> -<translation id="6125339936101702016"><ph name="COMPANY" />에서 관리합니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation> <translation id="6127379762771434464">항목 삭제됨</translation> <translation id="6136914049981179737">초 전</translation> <translation id="6144589619057374135">시크릿 모드에서 ${url} 열기</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb index 229c27f..71be88e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Орнотулуп жатат…</translation> <translation id="6119050551270742952">Учурдагы веб-баракча Жашыруун режимде</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> тарабынан башкарылат. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Нерсе өчүрүлдү</translation> <translation id="6136914049981179737">Секнд мурн</translation> <translation id="6144589619057374135">${url} сайтын Жашыруун режимде ачуу</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index 3f6a468..c9702f1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">ກຳລັງດຳເນີນການຕັ້ງຄ່າ...</translation> <translation id="6119050551270742952">ໜ້າເວັບປັດຈຸບັນຢູ່ໃນໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation> <translation id="6122191549521593678">ອອນລາຍ</translation> -<translation id="6125339936101702016">ຈັດການໂດຍ <ph name="COMPANY" /> <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ລຶບລາຍການອອກແລ້ວ</translation> <translation id="6136914049981179737">ວິນາທີກ່ອນນີ້</translation> <translation id="6144589619057374135">ເປີດ ${url} ໃນໂໝດທີ່ບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lt.xtb b/ios/chrome/app/strings/resources/ios_strings_lt.xtb index b773b17..f44b76c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lt.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lt.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Nustatoma…</translation> <translation id="6119050551270742952">Dabartinė svetainė atidaryta inkognito režimu</translation> <translation id="6122191549521593678">Prisijungęs</translation> -<translation id="6125339936101702016">Valdo „<ph name="COMPANY" />“. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elementas pašalintas</translation> <translation id="6136914049981179737">Prieš sek.</translation> <translation id="6144589619057374135">Atidaryti ${url} inkognito režimu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lv.xtb b/ios/chrome/app/strings/resources/ios_strings_lv.xtb index 2443390..9737c4a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lv.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Notiek iestatīšana...</translation> <translation id="6119050551270742952">Šajā lapā esat inkognito</translation> <translation id="6122191549521593678">Tiešsaistē</translation> -<translation id="6125339936101702016">Pārvalda organizācija <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Vienums ir noņemts</translation> <translation id="6136914049981179737">Pirms sek.</translation> <translation id="6144589619057374135">Atvērt vietni ${url} inkognito režīmā</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb index 5e46f157..519af3c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Поставувањето е во тек…</translation> <translation id="6119050551270742952">Веб-страницата е во режим инкогнито</translation> <translation id="6122191549521593678">Онлајн</translation> -<translation id="6125339936101702016">Управувано од <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Ставката е отстранета</translation> <translation id="6136914049981179737">Пред секунди</translation> <translation id="6144589619057374135">Отвори ${url} во „Инкогнито“</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 9db9a5a7..c2cddfc0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">സജ്ജീകരണം പുരോഗതിയിലാണ്...</translation> <translation id="6119050551270742952">നിലവിലെ വെബ്പേജ് അദൃശ്യ മോഡിലാണ്</translation> <translation id="6122191549521593678">ഓൺലൈൻ</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> മാനേജ് ചെയ്യുന്നത്. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ഇനം നീക്കംചെയ്തു</translation> <translation id="6136914049981179737">സെക്കൻഡ് മുമ്പ്</translation> <translation id="6144589619057374135">${url} അദൃശ്യ മോഡിൽ തുറക്കുക</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb index 425afb97..a78753fe 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -466,7 +466,6 @@ <translation id="6108923351542677676">Тохиргоо хийгдэж байна...</translation> <translation id="6119050551270742952">Одоогийн веб хуудас нууцлалтай байна</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016"><ph name="COMPANY" />-с удирддаг. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Хамгийн их зочилсон вэбсайтуудыг устгасан</translation> <translation id="6136914049981179737">Секунтын өмнө</translation> <translation id="6144589619057374135">${url}-г Нууцлалтай горимд нээх</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index aec8653..78cfab7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -468,7 +468,6 @@ <translation id="6108923351542677676">सेटअप प्रगती पथावर आहे...</translation> <translation id="6119050551270742952">सध्याचे वेबपेज गुप्त मोडमध्ये सुरू आहे</translation> <translation id="6122191549521593678">ऑनलाइन</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ने व्यवस्थापित केलेले. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation> <translation id="6127379762771434464">आयटम काढला</translation> <translation id="6136914049981179737">सेकंदांपूर्वी</translation> <translation id="6144589619057374135">${url} गुप्त मोडमध्ये उघडा</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb index 5450c2014..17ca3b49 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Persediaan sedang berjalan...</translation> <translation id="6119050551270742952">Halaman web semasa dalam mod Inkognito</translation> <translation id="6122191549521593678">Dalam talian</translation> -<translation id="6125339936101702016">Diurus oleh <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item dialih keluar</translation> <translation id="6136914049981179737">Bbrp saat lalu</translation> <translation id="6144589619057374135">Buka ${url} dalam Inkognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb index 1800e67..186a4f9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_my.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -466,7 +466,6 @@ <translation id="6108923351542677676">စဖွင့် သတ်မှတ်မှု လုပ်ကိုင်…</translation> <translation id="6119050551270742952">လက်ရှိဝဘ်စာမျက်နှာကို ရုပ်ဖျက်မုဒ်တွင် ဖွင့်ထားသည်</translation> <translation id="6122191549521593678">အွန်လိုင်း</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> က စီမံခန့်ခွဲထားသည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation> <translation id="6127379762771434464">အကြောင်းအရာကို ဖယ်ရှားလိုက်ပါပြီ</translation> <translation id="6136914049981179737">ပြီးခဲ့သော စက္ကန့်</translation> <translation id="6144589619057374135">ရုပ်ဖျက်မုဒ်တွင် ${url} ဖွင့်ရန်</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb index d0e4bd3..779ac94 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">सेटअप प्रगतिमा छ...</translation> <translation id="6119050551270742952">हालको वेबपृष्ठ इन्कोग्निटो मोडमा छ</translation> <translation id="6122191549521593678">अनलाइन</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ले व्यवस्थापन गरेको। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation> <translation id="6127379762771434464">वस्तुलाई हटाइयो</translation> <translation id="6136914049981179737">सेकेन्ड अघि</translation> <translation id="6144589619057374135">${url} इन्कोग्निटो मोडमा खोल्नुहोस्</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb index 4d7028af..c8f3077 100644 --- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Instellen wordt uitgevoerd...</translation> <translation id="6119050551270742952">De huidige webpagina is in de incognitomodus</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Beheerd door <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item verwijderd</translation> <translation id="6136914049981179737">Sec. geleden</translation> <translation id="6144589619057374135">${url} openen in de incognitomodus</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index 0af2fe8..fb15b8da 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Konfigurasjon pågår …</translation> <translation id="6119050551270742952">Den gjeldende nettsiden er på inkognito</translation> <translation id="6122191549521593678">Pålogget</translation> -<translation id="6125339936101702016">Administreres av <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elementet er fjernet</translation> <translation id="6136914049981179737">For noen sekunder siden</translation> <translation id="6144589619057374135">Åpne ${url} i inkognitomodus</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index 4cbfe4c..3302f157 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -465,7 +465,6 @@ <translation id="6108923351542677676">ସେଟ୍ ଅପ୍ ପ୍ରକ୍ରିୟା ଚାଲିଛି…</translation> <translation id="6119050551270742952">ବର୍ତ୍ତମାନର ୱେବ୍ପୃଷ୍ଠା ଇନ୍କଗ୍ନିଟୋରେ ଅଛି</translation> <translation id="6122191549521593678">ଅନ୍ଲାଇନ୍</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ଦ୍ୱାରା ପରିଚାଳିତ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ଆଇଟମ୍ କଢ଼ାଗଲା</translation> <translation id="6136914049981179737">ସେକେଣ୍ଡ ପୂର୍ବେ</translation> <translation id="6144589619057374135">ଇନକଗ୍ନିଟୋରେ ${url} ଖୋଲନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index 348ae55..c92cd30 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -465,7 +465,6 @@ <translation id="6108923351542677676">ਸੈਟਅਪ ਚਾਲੂ ਹੈ...</translation> <translation id="6119050551270742952">ਵਰਤਮਾਨ ਵੈੱਬਪੰਨਾ ਇਨਕੋਗਨਿਟੋ 'ਤੇ</translation> <translation id="6122191549521593678">ਆਨਲਾਈਨ</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। <ph name="BEGIN_LINK" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK" /></translation> <translation id="6127379762771434464">ਆਈਟਮ ਹਟਾਈ ਗਈ</translation> <translation id="6136914049981179737">ਸਕਿੰਟ ਪਹਿਲਾਂ</translation> <translation id="6144589619057374135">${url} ਨੂੰ ਇਨਕੋਗਨਿਟੋ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pl.xtb b/ios/chrome/app/strings/resources/ios_strings_pl.xtb index 49f0b31b..439235d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pl.xtb
@@ -465,7 +465,6 @@ <translation id="6108923351542677676">Trwa konfigurowanie…</translation> <translation id="6119050551270742952">Bieżąca strona jest w trybie incognito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Zarządzana przez: <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Element został usunięty</translation> <translation id="6136914049981179737">Przed chwilą</translation> <translation id="6144589619057374135">Otwórz ${url} w trybie incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb index 4c72e56..7de56c1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuração em andamento...</translation> <translation id="6119050551270742952">Esta pág. está no modo anônimo</translation> <translation id="6122191549521593678">On-line</translation> -<translation id="6125339936101702016">Gerenciado por <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item removido</translation> <translation id="6136914049981179737">Segundos atrás</translation> <translation id="6144589619057374135">Abrir ${url} na navegação anônima</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index a1d7e76..ee01dd4f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configuração em curso…</translation> <translation id="6119050551270742952">Página Web atual – Nav. anónima</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Gerido por <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Item removido</translation> <translation id="6136914049981179737">Há segundos</translation> <translation id="6144589619057374135">Abrir ${url} na Navegação anónima</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ro.xtb b/ios/chrome/app/strings/resources/ios_strings_ro.xtb index eb97fcb..7ff3cc0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ro.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ro.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Configurare în curs...</translation> <translation id="6119050551270742952">Pagina web actuală este în modul Incognito</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Gestionat de <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Elementul a fost eliminat</translation> <translation id="6136914049981179737">Secunde</translation> <translation id="6144589619057374135">Deschide ${url} în modul incognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index 497292a..935c009 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Настройка…</translation> <translation id="6119050551270742952">Открыто в режиме инкогнито</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016">Устройством управляет компания "<ph name="COMPANY" />". <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Быстрая ссылка удалена</translation> <translation id="6136914049981179737">только что</translation> <translation id="6144589619057374135">Открыть ${url} в режиме инкогнито</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index e9f5dd27..e66eb41 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">පිහිටුවීම දැනට සිදුවෙමින් පවතී...</translation> <translation id="6119050551270742952">වත්මන් වෙබ් පිටු අප්රසිද්ධ මත තිබේ</translation> <translation id="6122191549521593678">සබැඳි</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> විසින් කළමනාකරණය කෙරේ. <ph name="BEGIN_LINK" />තව දැන ගන්න<ph name="END_LINK" /></translation> <translation id="6127379762771434464">අයිතමය ඉවත් කරන ලදී</translation> <translation id="6136914049981179737">තත්පර ගණනකට පෙර</translation> <translation id="6144589619057374135">අප්රසිද්ධ තුළ ${url} විවෘත කරන්න</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb index 03b7a0ab..ea75834 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Inštaluje sa...</translation> <translation id="6119050551270742952">Aktuálna webová stránka je v anonymnom režime</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Spravuje <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Ďalšie informácie<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Položka bola odstránená</translation> <translation id="6136914049981179737">Pred chvíľou</translation> <translation id="6144589619057374135">Otvoriť adresu ${url} v režime inkognito</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index d3cbec4..63ffacc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Poteka nastavitev …</translation> <translation id="6119050551270742952">Trenutna spletna stran je v načinu brez beleženja dejavnosti</translation> <translation id="6122191549521593678">Dosegljiv</translation> -<translation id="6125339936101702016">Brskalnik upravlja podjetje <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Element odstranjen</translation> <translation id="6136914049981179737">Pred sek.</translation> <translation id="6144589619057374135">Odprite ${url} v načinu brez beleženja dejavnosti</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sq.xtb b/ios/chrome/app/strings/resources/ios_strings_sq.xtb index 18811cc..0dab7cfa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sq.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sq.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Konfigurimi në vazhdim...</translation> <translation id="6119050551270742952">Faqja aktuale e uebit është në modalitetin "e fshehtë"</translation> <translation id="6122191549521593678">Në linjë</translation> -<translation id="6125339936101702016">Menaxhohet nga <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Artikulli u hoq</translation> <translation id="6136914049981179737">Sekonda më parë</translation> <translation id="6144589619057374135">Hap ${url} në modalitetin "I fshehtë"</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index a2225a6c..1833788e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Podešavanje je u toku...</translation> <translation id="6119050551270742952">Aktuelna veb-stranica je u režimu bez arhiviranja</translation> <translation id="6122191549521593678">Onlajn</translation> -<translation id="6125339936101702016">Ovim upravlja <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Uklonili ste stavku</translation> <translation id="6136914049981179737">Malopre</translation> <translation id="6144589619057374135">Otvori ${url} u režimu bez arhiviranja</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 6aa0ad8..90142097 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Подешавање је у току...</translation> <translation id="6119050551270742952">Актуелна веб-страница је у режиму без архивирања</translation> <translation id="6122191549521593678">Онлајн</translation> -<translation id="6125339936101702016">Овим управља <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Уклонили сте ставку</translation> <translation id="6136914049981179737">Малопре</translation> <translation id="6144589619057374135">Отвори ${url} у режиму без архивирања</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb index 901b88f..847df9a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Konfigurationen pågår ...</translation> <translation id="6119050551270742952">Webbsidan är i inkognitoläge</translation> <translation id="6122191549521593678">Online</translation> -<translation id="6125339936101702016">Hanteras av <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Objektet har tagits bort</translation> <translation id="6136914049981179737">Nyss</translation> <translation id="6144589619057374135">Öppna ${url} i inkognitoläget</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index de3abf1..ac54bb5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Usanidi unaendelea...</translation> <translation id="6119050551270742952">Ukurasa wa sasa wa Wavuti uko katika Hali Fiche</translation> <translation id="6122191549521593678">Mtandaoni</translation> -<translation id="6125339936101702016">Inadhibitiwa na <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Pata maelezo zaidi<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Kipengee kimeondolewa</translation> <translation id="6136914049981179737">Sekunde chache</translation> <translation id="6144589619057374135">Fungua ${url} katika Hali Fiche</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ta.xtb b/ios/chrome/app/strings/resources/ios_strings_ta.xtb index b7b848b..2c60ccfe 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ta.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ta.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">அமைவு செயலிலுள்ளது...</translation> <translation id="6119050551270742952">இந்த இணையப் பக்கம் மறைநிலையில் உள்ளது</translation> <translation id="6122191549521593678">ஆன்லைன்</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> நிர்வகிக்கிறது. <ph name="BEGIN_LINK" />மேலும் அறிக<ph name="END_LINK" /></translation> <translation id="6127379762771434464">உருப்படி அகற்றப்பட்டது</translation> <translation id="6136914049981179737">வினாடிகள் முன்பு</translation> <translation id="6144589619057374135">${url} இணைப்பை மறைநிலையில் திற</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index e4bad736..5c03d0e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">సెటప్ ప్రోగ్రెస్లో ఉంది...</translation> <translation id="6119050551270742952">ప్రస్తుత వెబ్పేజీ అజ్ఞాత మోడ్లో ఉంది</translation> <translation id="6122191549521593678">ఆన్లైన్</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> ద్వారా మేనేజ్ చేయబడుతోంది. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="6127379762771434464">అంశాన్ని తీసివేసారు</translation> <translation id="6136914049981179737">సెకన్ల క్రితం</translation> <translation id="6144589619057374135">${url}ను అజ్ఞాత మోడ్లో తెరవండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb index 86e92d1d..18866fc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">กำลังดำเนินการตั้งค่า…</translation> <translation id="6119050551270742952">หน้าเว็บนี้อยู่ในโหมดไม่ระบุตัวตน</translation> <translation id="6122191549521593678">ออนไลน์</translation> -<translation id="6125339936101702016">จัดการโดย <ph name="COMPANY" /> <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation> <translation id="6127379762771434464">นำรายการออกแล้ว</translation> <translation id="6136914049981179737">วินาทีแล้ว</translation> <translation id="6144589619057374135">เปิด ${url} ในโหมดไม่ระบุตัวตน</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index ccc565e6..052e351 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Kurulum devam ediyor…</translation> <translation id="6119050551270742952">Geçerli Web sayfası Gizli modda</translation> <translation id="6122191549521593678">Çevrimiçi</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> tarafından yönetiliyor. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Öğe kaldırıldı</translation> <translation id="6136914049981179737">Sn. önce</translation> <translation id="6144589619057374135">Şunu Gizli modda aç: ${url}</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uk.xtb b/ios/chrome/app/strings/resources/ios_strings_uk.xtb index 1f9e7a6..a5b38a1 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uk.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Виконується налаштування…</translation> <translation id="6119050551270742952">Поточна сторінка в анонімному режимі</translation> <translation id="6122191549521593678">Онлайн</translation> -<translation id="6125339936101702016">Веб-переглядачем керує компанія <ph name="COMPANY" />. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Веб-сайт видалено</translation> <translation id="6136914049981179737">Мить тому</translation> <translation id="6144589619057374135">Відкрити URL-адресу ${url} в анонімному режимі</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb index 898848bd..8ade35e8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">سیٹ اپ جاری ہے…</translation> <translation id="6119050551270742952">موجودہ ویب صفحہ پوشیدگی پر ہے</translation> <translation id="6122191549521593678">آن لائن</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> کے زیر انتظام ہے۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation> <translation id="6127379762771434464">آئٹم ہٹا دیا گیا</translation> <translation id="6136914049981179737">کچھ سیکنڈ پہلے</translation> <translation id="6144589619057374135">پوشیدگی میں {url}$ کھولیں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index 01db7ed..2a3507c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Sozlanmoqda...</translation> <translation id="6119050551270742952">Bu sahifa inkognito rejimida</translation> <translation id="6122191549521593678">Onlayn</translation> -<translation id="6125339936101702016"><ph name="COMPANY" /> tomonidan boshqariladi. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Havola o‘chirildi</translation> <translation id="6136914049981179737">Yaqinda</translation> <translation id="6144589619057374135">${url} sahifasini Inkognito rejimida ochish</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_vi.xtb b/ios/chrome/app/strings/resources/ios_strings_vi.xtb index 60d81f6f..40f0510 100644 --- a/ios/chrome/app/strings/resources/ios_strings_vi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_vi.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Đang thiết lập…</translation> <translation id="6119050551270742952">Trang web hiện tại đang ở chế độ ẩn danh</translation> <translation id="6122191549521593678">Trực tuyến</translation> -<translation id="6125339936101702016">Do <ph name="COMPANY" /> quản lý. <ph name="BEGIN_LINK" />Tìm hiểu thêm<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Đã xóa mục</translation> <translation id="6136914049981179737">Giây trước</translation> <translation id="6144589619057374135">Mở ${url} ở Chế độ ẩn danh</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index 2ad91cc..02a6ec08 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">正在设置…</translation> <translation id="6119050551270742952">当前网页处于无痕模式</translation> <translation id="6122191549521593678">在线</translation> -<translation id="6125339936101702016">由<ph name="COMPANY" />管理。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation> <translation id="6127379762771434464">该项已移除</translation> <translation id="6136914049981179737">几秒前</translation> <translation id="6144589619057374135">在无痕模式下打开 ${url}</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index 9c86394..5000d9b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">設定中…</translation> <translation id="6119050551270742952">目前的網頁已處於無痕模式</translation> <translation id="6122191549521593678">線上</translation> -<translation id="6125339936101702016">由 <ph name="COMPANY" /> 管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="6127379762771434464">項目已移除</translation> <translation id="6136914049981179737">幾秒前</translation> <translation id="6144589619057374135">在無痕模式中開啟 ${url}</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index 78f32a5..a3a850f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">設定中…</translation> <translation id="6119050551270742952">目前的網頁處於無痕模式</translation> <translation id="6122191549521593678">線上</translation> -<translation id="6125339936101702016">由「<ph name="COMPANY" />」管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation> <translation id="6127379762771434464">已移除項目</translation> <translation id="6136914049981179737">幾秒前</translation> <translation id="6144589619057374135">在無痕模式中開啟 ${url}</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index 03d6c9a..7bdb6e9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -467,7 +467,6 @@ <translation id="6108923351542677676">Ukusetha kuyaqhubeka…</translation> <translation id="6119050551270742952">Ikhasi lewebhu lamanje liku-Incognito</translation> <translation id="6122191549521593678">Ku-inthanethi</translation> -<translation id="6125339936101702016">Iphethwe i-<ph name="COMPANY" />. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation> <translation id="6127379762771434464">Into isusiwe</translation> <translation id="6136914049981179737">Amasekhondi adlule</translation> <translation id="6144589619057374135">Vula i-${url} ku-Incognito</translation>
diff --git a/ios/chrome/browser/application_context_impl.mm b/ios/chrome/browser/application_context_impl.mm index 2f8e59f..eb58be1 100644 --- a/ios/chrome/browser/application_context_impl.mm +++ b/ios/chrome/browser/application_context_impl.mm
@@ -83,25 +83,6 @@ namespace { -// If enabled local state file will have NSURLFileProtectionNone protection -// level set for NSURLFileProtectionKey key. The purpose of this feature is to -// understand if file protection interferes with "clean exit beacon" pref. -const base::Feature kRemoveProtectionFromPrefFile{ - "RemoveProtectionFromPrefFile", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Sets |level| value for NSURLFileProtectionKey key for the URL with given -// |local_state_path|. -void SetProtectionLevel(const base::FilePath& file_path, id level) { - NSString* file_path_string = base::SysUTF8ToNSString(file_path.value()); - NSURL* file_path_url = [NSURL fileURLWithPath:file_path_string - isDirectory:NO]; - NSError* error = nil; - BOOL protection_set = [file_path_url setResourceValue:level - forKey:NSURLFileProtectionKey - error:&error]; - DCHECK(protection_set) << base::SysNSStringToUTF8(error.localizedDescription); -} - // Requests a network::mojom::ProxyResolvingSocketFactory on the UI thread. // Note that this cannot be called on a thread that is not the UI thread. void RequestProxyResolvingSocketFactoryOnUIThread( @@ -502,23 +483,6 @@ base::FilePath local_state_path; CHECK(base::PathService::Get(ios::FILE_LOCAL_STATE, &local_state_path)); - NSString* const kRemoveProtectionFromPrefFileKey = - @"RemoveProtectionFromPrefKey"; - if (base::FeatureList::IsEnabled(kRemoveProtectionFromPrefFile)) { - SetProtectionLevel(local_state_path, NSURLFileProtectionNone); - [NSUserDefaults.standardUserDefaults - setBool:YES - forKey:kRemoveProtectionFromPrefFileKey]; - } else if ([NSUserDefaults.standardUserDefaults - boolForKey:kRemoveProtectionFromPrefFileKey]) { - // Restore default protection level when user is no longer in the - // experimental group. - SetProtectionLevel(local_state_path, - NSFileProtectionCompleteUntilFirstUserAuthentication); - [NSUserDefaults.standardUserDefaults - removeObjectForKey:kRemoveProtectionFromPrefFileKey]; - } - scoped_refptr<PrefRegistrySimple> pref_registry(new PrefRegistrySimple); // Register local state preferences.
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.h b/ios/chrome/browser/crash_report/breakpad_helper.h index 3a209f92..7a26dde 100644 --- a/ios/chrome/browser/crash_report/breakpad_helper.h +++ b/ios/chrome/browser/crash_report/breakpad_helper.h
@@ -62,13 +62,6 @@ // Resets the Breakpad configuration from the main bundle. void RestoreDefaultConfiguration(); -// Sets a key indicating that UI thread is frozen (if value is 'true'), -// otherwise remove the key. -// Setting the value is synchronous as it is expected to be set just before the -// report generation. -// Unsetting the value is asynchronous. -void SetHangReport(bool value); - } // namespace breakpad_helper #endif // IOS_CHROME_BROWSER_CRASH_REPORT_BREAKPAD_HELPER_H_
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.mm b/ios/chrome/browser/crash_report/breakpad_helper.mm index 095c667..d3d2bb71 100644 --- a/ios/chrome/browser/crash_report/breakpad_helper.mm +++ b/ios/chrome/browser/crash_report/breakpad_helper.mm
@@ -46,8 +46,6 @@ NSString* const kUptimeAtRestoreInMs = @"uptime_at_restore_in_ms"; NSString* const kUploadedInRecoveryMode = @"uploaded_in_recovery_mode"; -NSString* const kHangReport = @"hang-report"; - void DeleteAllReportsInDirectory(base::FilePath directory) { base::FileEnumerator enumerator(directory, false, base::FileEnumerator::FILES); @@ -284,11 +282,4 @@ [[BreakpadController sharedInstance] setUploadingEnabled:NO]; } -void SetHangReport(bool value) { - if (value) - AddReportParameter(kHangReport, @"yes", false); - else - RemoveReportParameter(kHangReport); -} - } // namespace breakpad_helper
diff --git a/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm b/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm index a2d5c39b..15cd1e2 100644 --- a/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm +++ b/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm
@@ -63,7 +63,6 @@ // single breakpad record. This test should include all keys for // CrashReportUserApplicationState, since the whole dictionary is considered a // single breakpad record. - breakpad_helper::SetHangReport(true); crash_keys::SetCurrentlyInBackground(true); crash_keys::SetCurrentlySignedIn(true); crash_keys::SetMemoryWarningCount(2);
diff --git a/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm b/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm index c36c402..8416302 100644 --- a/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm +++ b/ios/chrome/browser/crash_report/main_thread_freeze_detector.mm
@@ -26,7 +26,23 @@ UMA_HISTOGRAM_TIMES("IOS.MainThreadFreezeDetection.RecoveredAfter", time); } -} +// Key indicating that UI thread is frozen. +NSString* const kHangReportKey = @"hang-report"; + +// Key of the UMA Startup.MobileSessionStartAction histogram. +const char kUMAMainThreadFreezeDetectionNotRunningAfterReport[] = + "IOS.MainThreadFreezeDetection.NotRunningAfterReport"; + +// Enum actions for the IOS.MainThreadFreezeDetection.NotRunningAfterReport UMA +// metric. These values are persisted to logs. Entries should not be renumbered +// and numeric values should never be reused. +enum class IOSMainThreadFreezeDetectionNotRunningAfterReportBlock { + kAfterBreakpadRef = 0, + kAfterFileManagerUTEMove = 1, + kMaxValue = kAfterFileManagerUTEMove, +}; + +} // namespace @interface MainThreadFreezeDetector () // The callback that is called regularly on main thread. @@ -127,24 +143,23 @@ } - (void)runInMainLoop { + NSDate* oldLastSeenMainThread = self.lastSeenMainThread; + self.lastSeenMainThread = [NSDate date]; if (self.reportGenerated) { self.reportGenerated = NO; // Remove information about the last session info. [[NSUserDefaults standardUserDefaults] removeObjectForKey:@(kNsUserDefaultKeyLastSessionInfo)]; LogRecoveryTime(base::TimeDelta::FromSecondsD( - [[NSDate date] timeIntervalSinceDate:self.lastSeenMainThread])); + [[NSDate date] timeIntervalSinceDate:oldLastSeenMainThread])); // Restart the freeze detection. - dispatch_after( - dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), - _freezeDetectionQueue, ^{ - [self cleanAndRunInFreezeDetectionQueue]; - }); + dispatch_async(_freezeDetectionQueue, ^{ + [self cleanAndRunInFreezeDetectionQueue]; + }); } if (!self.running) { return; } - self.lastSeenMainThread = [NSDate date]; dispatch_after( dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ @@ -168,14 +183,22 @@ } if ([[NSDate date] timeIntervalSinceDate:self.lastSeenMainThread] > self.delay) { - breakpad_helper::SetHangReport(true); [[BreakpadController sharedInstance] withBreakpadRef:^(BreakpadRef breakpadRef) { + if (!self.running) { + UMA_HISTOGRAM_ENUMERATION( + kUMAMainThreadFreezeDetectionNotRunningAfterReport, + IOSMainThreadFreezeDetectionNotRunningAfterReportBlock:: + kAfterBreakpadRef); + return; + } if (!breakpadRef) { return; } + BreakpadAddUploadParameter(breakpadRef, kHangReportKey, @"yes"); NSDictionary* breakpadReportInfo = BreakpadGenerateReport(breakpadRef, nil); + BreakpadRemoveUploadParameter(breakpadRef, kHangReportKey); if (!breakpadReportInfo) { return; } @@ -201,6 +224,13 @@ toPath:UTEConfigFile error:nil]; [fileManager moveItemAtPath:dumpFile toPath:UTEDumpFile error:nil]; + if (!self.running) { + UMA_HISTOGRAM_ENUMERATION( + kUMAMainThreadFreezeDetectionNotRunningAfterReport, + IOSMainThreadFreezeDetectionNotRunningAfterReportBlock:: + kAfterFileManagerUTEMove); + return; + } [[NSUserDefaults standardUserDefaults] setObject:@{ @"dump" : [dumpFile lastPathComponent], @@ -209,14 +239,14 @@ } forKey:@(kNsUserDefaultKeyLastSessionInfo)]; self.reportGenerated = YES; - breakpad_helper::SetHangReport(false); }]; return; } - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), - _freezeDetectionQueue, ^{ - [self runInFreezeDetectionQueue]; - }); + dispatch_after( + dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), + _freezeDetectionQueue, ^{ + [self runInFreezeDetectionQueue]; + }); } - (void)prepareCrashReportsForUpload:(ProceduralBlock)completion {
diff --git a/ios/chrome/browser/ios_chrome_main_parts.mm b/ios/chrome/browser/ios_chrome_main_parts.mm index 82f5393d..5ee714e 100644 --- a/ios/chrome/browser/ios_chrome_main_parts.mm +++ b/ios/chrome/browser/ios_chrome_main_parts.mm
@@ -13,6 +13,7 @@ #include "base/metrics/user_metrics.h" #include "base/path_service.h" #include "base/sequenced_task_runner.h" +#include "base/strings/sys_string_conversions.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/time/default_tick_clock.h" @@ -78,6 +79,25 @@ namespace { +// If enabled local state file will have NSURLFileProtectionNone protection +// level set for NSURLFileProtectionKey key. The purpose of this feature is to +// understand if file protection interferes with "clean exit beacon" pref. +const base::Feature kRemoveProtectionFromPrefFile{ + "RemoveProtectionFromPrefFile", base::FEATURE_DISABLED_BY_DEFAULT}; + +// Sets |level| value for NSURLFileProtectionKey key for the URL with given +// |local_state_path|. +void SetProtectionLevel(const base::FilePath& file_path, id level) { + NSString* file_path_string = base::SysUTF8ToNSString(file_path.value()); + NSURL* file_path_url = [NSURL fileURLWithPath:file_path_string + isDirectory:NO]; + NSError* error = nil; + BOOL protection_set = [file_path_url setResourceValue:level + forKey:NSURLFileProtectionKey + error:&error]; + DCHECK(protection_set) << base::SysNSStringToUTF8(error.localizedDescription); +} + #if BUILDFLAG(USE_ALLOCATOR_SHIM) // Do not install allocator shim on iOS 13.4 due to high crash volume on this // particular version of OS. TODO(crbug.com/1108219): Remove this workaround @@ -193,6 +213,23 @@ metrics::EnableExpiryChecker(::kExpiredHistogramsHashes, ::kNumExpiredHistograms); + NSString* const kRemoveProtectionFromPrefFileKey = + @"RemoveProtectionFromPrefKey"; + if (base::FeatureList::IsEnabled(kRemoveProtectionFromPrefFile)) { + SetProtectionLevel(local_state_path, NSURLFileProtectionNone); + [NSUserDefaults.standardUserDefaults + setBool:YES + forKey:kRemoveProtectionFromPrefFileKey]; + } else if ([NSUserDefaults.standardUserDefaults + boolForKey:kRemoveProtectionFromPrefFileKey]) { + // Restore default protection level when user is no longer in the + // experimental group. + SetProtectionLevel(local_state_path, + NSFileProtectionCompleteUntilFirstUserAuthentication); + [NSUserDefaults.standardUserDefaults + removeObjectForKey:kRemoveProtectionFromPrefFileKey]; + } + application_context_->PreCreateThreads(); }
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 857a338..1028530 100644 --- a/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm +++ b/ios/chrome/browser/ui/omnibox/popup/autocomplete_match_formatter.mm
@@ -246,6 +246,19 @@ return _match.has_tab_match; } +#pragma mark tail suggest + +- (BOOL)isTailSuggestion { + return _match.type == AutocompleteMatchType::SEARCH_SUGGEST_TAIL; +} + +- (NSString*)commonPrefix { + if (![self isTailSuggestion]) { + return @""; + } + return base::SysUTF16ToNSString(_match.tail_suggest_common_prefix); +} + #pragma mark helpers // Create a string to display for an entire answer line.
diff --git a/ios/chrome/browser/ui/omnibox/popup/autocomplete_suggestion.h b/ios/chrome/browser/ui/omnibox/popup/autocomplete_suggestion.h index c9dabb23..da98d576 100644 --- a/ios/chrome/browser/ui/omnibox/popup/autocomplete_suggestion.h +++ b/ios/chrome/browser/ui/omnibox/popup/autocomplete_suggestion.h
@@ -45,6 +45,15 @@ - (id<OmniboxIcon>)icon; +#pragma mark tail suggest + +// Yes if this is a tail suggestion. Used by the popup to display according to +// tail suggest standards. +- (BOOL)isTailSuggestion; + +// Common prefix for tail suggestions. Empty otherwise. +- (NSString*)commonPrefix; + @end #endif // IOS_CHROME_BROWSER_UI_OMNIBOX_POPUP_AUTOCOMPLETE_SUGGESTION_H_
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell_unittest.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell_unittest.mm index 4f8670b9..8ef05ca 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell_unittest.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell_unittest.mm
@@ -29,7 +29,8 @@ @property(nonatomic, assign) GURL imageURL; @property(nonatomic, assign) GURL faviconPageURL; @property(nonatomic, strong) id<OmniboxIcon> icon; - +@property(nonatomic, assign) BOOL isTailSuggestion; +@property(nonatomic, assign) NSString* commonPrefix; @end @implementation FakeAutocompleteMatch
diff --git a/ios/showcase/omnibox_popup/fake_autocomplete_suggestion.h b/ios/showcase/omnibox_popup/fake_autocomplete_suggestion.h index 99996f99..b3d9c1b 100644 --- a/ios/showcase/omnibox_popup/fake_autocomplete_suggestion.h +++ b/ios/showcase/omnibox_popup/fake_autocomplete_suggestion.h
@@ -23,8 +23,9 @@ @property(nonatomic) NSAttributedString* detailText; @property(nonatomic) NSInteger numberOfLines; @property(nonatomic) UIImage* suggestionTypeIcon; - @property(nonatomic) id<OmniboxIcon> icon; +@property(nonatomic, assign) BOOL isTailSuggestion; +@property(nonatomic, copy) NSString* commonPrefix; // Simple suggestion with text. + (instancetype)simpleSuggestion;
diff --git a/media/capture/video/linux/video_capture_device_factory_linux.cc b/media/capture/video/linux/video_capture_device_factory_linux.cc index 97b8a098..8a83ec6 100644 --- a/media/capture/video/linux/video_capture_device_factory_linux.cc +++ b/media/capture/video/linux/video_capture_device_factory_linux.cc
@@ -37,6 +37,11 @@ namespace { +bool CompareCaptureDevices(const VideoCaptureDeviceInfo& a, + const VideoCaptureDeviceInfo& b) { + return a.descriptor < b.descriptor; +} + // USB VID and PID are both 4 bytes long. const size_t kVidPidSize = 4; const size_t kMaxInterfaceNameSize = 256; @@ -242,6 +247,10 @@ } } + // This is required for some applications that rely on the stable ordering of + // devices. + std::sort(devices_info.begin(), devices_info.end(), CompareCaptureDevices); + std::move(callback).Run(std::move(devices_info)); }
diff --git a/media/gpu/vaapi/vaapi_video_decoder.cc b/media/gpu/vaapi/vaapi_video_decoder.cc index affb486..a38145a 100644 --- a/media/gpu/vaapi/vaapi_video_decoder.cc +++ b/media/gpu/vaapi/vaapi_video_decoder.cc
@@ -171,10 +171,10 @@ std::move(init_cb).Run(StatusCode::kEncryptedContentUnsupported); return; } - cdm_context_ = cdm_context; - cdm_event_cb_registration_ = cdm_context_->RegisterEventCB( + cdm_event_cb_registration_ = cdm_context->RegisterEventCB( base::BindRepeating(&VaapiVideoDecoder::OnCdmContextEvent, weak_this_factory_.GetWeakPtr())); + cdm_context_ref_ = cdm_context->GetChromeOsCdmContext()->GetCdmContextRef(); #endif #if BUILDFLAG(ENABLE_PLATFORM_HEVC) } else if (config.codec() == kCodecHEVC && @@ -214,7 +214,8 @@ const VideoCodecProfile profile = config.profile(); vaapi_wrapper_ = VaapiWrapper::CreateForVideoCodec( #if BUILDFLAG(IS_CHROMEOS_ASH) - !cdm_context_ ? VaapiWrapper::kDecode : VaapiWrapper::kDecodeProtected, + !cdm_context_ref_ ? VaapiWrapper::kDecode + : VaapiWrapper::kDecodeProtected, #else VaapiWrapper::kDecode, #endif @@ -523,7 +524,7 @@ CHECK(format_fourcc); if (!frame_pool_->Initialize( *format_fourcc, pic_size, visible_rect, natural_size, - decoder_->GetRequiredNumOfPictures(), !!cdm_context_)) { + decoder_->GetRequiredNumOfPictures(), !!cdm_context_ref_)) { DLOG(WARNING) << "Failed Initialize()ing the frame pool."; SetState(State::kError); return; @@ -544,7 +545,8 @@ profile_ = decoder_->GetProfile(); auto new_vaapi_wrapper = VaapiWrapper::CreateForVideoCodec( #if BUILDFLAG(IS_CHROMEOS_ASH) - !cdm_context_ ? VaapiWrapper::kDecode : VaapiWrapper::kDecodeProtected, + !cdm_context_ref_ ? VaapiWrapper::kDecode + : VaapiWrapper::kDecodeProtected, #else VaapiWrapper::kDecode, #endif @@ -701,7 +703,8 @@ &VaapiVideoDecoder::ProtectedSessionUpdate, weak_this_)); if (profile_ >= H264PROFILE_MIN && profile_ <= H264PROFILE_MAX) { auto accelerator = std::make_unique<H264VaapiVideoDecoderDelegate>( - this, vaapi_wrapper_, std::move(protected_update_cb), cdm_context_); + this, vaapi_wrapper_, std::move(protected_update_cb), + cdm_context_ref_->GetCdmContext()); decoder_delegate_ = accelerator.get(); decoder_.reset( @@ -714,7 +717,8 @@ decoder_.reset(new VP8Decoder(std::move(accelerator))); } else if (profile_ >= VP9PROFILE_MIN && profile_ <= VP9PROFILE_MAX) { auto accelerator = std::make_unique<VP9VaapiVideoDecoderDelegate>( - this, vaapi_wrapper_, std::move(protected_update_cb), cdm_context_); + this, vaapi_wrapper_, std::move(protected_update_cb), + cdm_context_ref_->GetCdmContext()); decoder_delegate_ = accelerator.get(); decoder_.reset( @@ -723,7 +727,8 @@ #if BUILDFLAG(ENABLE_PLATFORM_HEVC) else if (profile_ >= HEVCPROFILE_MIN && profile_ <= HEVCPROFILE_MAX) { auto accelerator = std::make_unique<H265VaapiVideoDecoderDelegate>( - this, vaapi_wrapper_, std::move(protected_update_cb), cdm_context_); + this, vaapi_wrapper_, std::move(protected_update_cb), + cdm_context_ref_->GetCdmContext()); decoder_delegate_ = accelerator.get(); decoder_.reset( @@ -774,7 +779,7 @@ state_ == State::kResetting); break; case State::kWaitingForProtected: - DCHECK(!!cdm_context_); + DCHECK(!!cdm_context_ref_); FALLTHROUGH; case State::kWaitingForOutput: DCHECK(current_decode_task_);
diff --git a/media/gpu/vaapi/vaapi_video_decoder.h b/media/gpu/vaapi/vaapi_video_decoder.h index 403588eb..2666f4a0 100644 --- a/media/gpu/vaapi/vaapi_video_decoder.h +++ b/media/gpu/vaapi/vaapi_video_decoder.h
@@ -184,13 +184,23 @@ // TODO(crbug.com/1040291): remove this keep-alive when using SharedImages. base::small_map<std::map<gfx::GpuMemoryBufferId, scoped_refptr<VASurface>>> allocated_va_surfaces_; + + // We need to use a CdmContextRef so that we destruct + // |cdm_event_cb_registration_| before the CDM is destructed. The CDM has + // mechanisms to ensure destruction on the proper thread. + // + // For clarity, the MojoVideoDecoderService does hold a reference to both the + // decoder and the CDM to ensure the CDM doesn't get destructed before the + // decoder; however, in the VideoDecoderPipeline, which owns the + // VaapiVideoDecoder, it uses an asynchronous destructor to destroy the + // pipeline (and thus the VaapiVideoDecoder) on the decoder thread. + std::unique_ptr<CdmContextRef> cdm_context_ref_; + #if BUILDFLAG(IS_CHROMEOS_ASH) // To keep the CdmContext event callback registered. std::unique_ptr<CallbackRegistration> cdm_event_cb_registration_; #endif - CdmContext* cdm_context_ = nullptr; // Not owned. - // Platform and codec specific video decoder. std::unique_ptr<AcceleratedVideoDecoder> decoder_; scoped_refptr<VaapiWrapper> vaapi_wrapper_;
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.cc b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc index fc890fa..9efe928 100644 --- a/media/gpu/vaapi/vaapi_video_decoder_delegate.cc +++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
@@ -142,8 +142,9 @@ DVLOG(1) << "Looking up the key data for: " << decrypt_config_->key_id(); chromeos_cdm_context_->GetHwKeyData( decrypt_config_.get(), hw_identifier_, - base::BindOnce(&VaapiVideoDecoderDelegate::OnGetHwKeyData, - weak_factory_.GetWeakPtr(), decrypt_config_->key_id())); + BindToCurrentLoop(base::BindOnce( + &VaapiVideoDecoderDelegate::OnGetHwKeyData, + weak_factory_.GetWeakPtr(), decrypt_config_->key_id()))); // Don't change our state here because we are created, but we just return // kInProcess for now to trigger a wait/retry state. return ProtectedSessionState::kInProcess; @@ -226,6 +227,7 @@ const std::string& key_id, Decryptor::Status status, const std::vector<uint8_t>& key_data) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (status != Decryptor::Status::kSuccess) { // If it's a failure, then indicate so, otherwise if it's waiting for a key, // then we don't do anything since we will get called again when there's a
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc index e0bf0fcb..9a4736e 100644 --- a/pdf/out_of_process_instance.cc +++ b/pdf/out_of_process_instance.cc
@@ -469,14 +469,6 @@ return size > 0 && size <= kMaximumSavedFileSize; } -PDFiumFormFiller::ScriptOption DefaultScriptOption() { -#if defined(PDF_ENABLE_XFA) - return PDFiumFormFiller::ScriptOption::kJavaScriptAndXFA; -#else // defined(PDF_ENABLE_XFA) - return PDFiumFormFiller::ScriptOption::kJavaScript; -#endif // defined(PDF_ENABLE_XFA) -} - PP_PrivateAccessibilityPageInfo PrivateAccessibilityPageInfoFromAccessibilityPageInfo( const AccessibilityPageInfo& page_info) { @@ -586,7 +578,8 @@ text_input_ = std::make_unique<pp::TextInput_Dev>(this); - PDFiumFormFiller::ScriptOption script_option = DefaultScriptOption(); + PDFiumFormFiller::ScriptOption script_option = + PDFiumFormFiller::DefaultScriptOption(); bool has_edits = false; const char* stream_url = nullptr; const char* original_url = nullptr;
diff --git a/pdf/pdfium/pdfium_form_filler.cc b/pdf/pdfium/pdfium_form_filler.cc index b6de6851..4ce41fabb 100644 --- a/pdf/pdfium/pdfium_form_filler.cc +++ b/pdf/pdfium/pdfium_form_filler.cc
@@ -28,6 +28,15 @@ } // namespace +// static +PDFiumFormFiller::ScriptOption PDFiumFormFiller::DefaultScriptOption() { +#if defined(PDF_ENABLE_XFA) + return ScriptOption::kJavaScriptAndXFA; +#else // defined(PDF_ENABLE_XFA) + return ScriptOption::kJavaScript; +#endif // defined(PDF_ENABLE_XFA) +} + PDFiumFormFiller::PDFiumFormFiller(PDFiumEngine* engine, ScriptOption script_option) : engine_(engine), script_option_(script_option) {
diff --git a/pdf/pdfium/pdfium_form_filler.h b/pdf/pdfium/pdfium_form_filler.h index c787b49..3408a811 100644 --- a/pdf/pdfium/pdfium_form_filler.h +++ b/pdf/pdfium/pdfium_form_filler.h
@@ -20,6 +20,7 @@ class PDFiumFormFiller : public FPDF_FORMFILLINFO, public IPDF_JSPLATFORM { public: enum class ScriptOption { kNoJavaScript, kJavaScript, kJavaScriptAndXFA }; + static PDFiumFormFiller::ScriptOption DefaultScriptOption(); // NOTE: |script_option| is ignored when PDF_ENABLE_V8 is not defined. PDFiumFormFiller(PDFiumEngine* engine, ScriptOption script_option);
diff --git a/remoting/resources/remoting_strings_be.xtb b/remoting/resources/remoting_strings_be.xtb index 1069f3f..73d0da5f 100644 --- a/remoting/resources/remoting_strings_be.xtb +++ b/remoting/resources/remoting_strings_be.xtb
@@ -139,12 +139,12 @@ <translation id="7649070708921625228">Даведка</translation> <translation id="7658239707568436148">Скасаваць</translation> <translation id="7665369617277396874">Дадаць уліковы запіс</translation> -<translation id="7678209621226490279">Прыстыкаваць злева</translation> +<translation id="7678209621226490279">Замацаваць злева</translation> <translation id="7693372326588366043">Абнавіць спіс хостаў</translation> <translation id="7714222945760997814">Паведаміць аб гэтым</translation> <translation id="7868137160098754906">Увядзіце PIN-код для аддаленага камп'ютара.</translation> <translation id="7895403300744144251">Палітыкі бяспекі на аддаленым камп'ютары не дазваляюць падключэнні з вашага ўліковага запісу.</translation> -<translation id="7936528439960309876">Прыстыкаваць справа</translation> +<translation id="7936528439960309876">Замацаваць справа</translation> <translation id="7970576581263377361">Памылка аўтэнтыфікацыі. Увайдзіце ва ўліковы запіс Chromium зноў.</translation> <translation id="7981525049612125370">Час аддаленага сеанса скончыўся.</translation> <translation id="8038111231936746805">(стандартна)</translation>
diff --git a/remoting/resources/remoting_strings_es.xtb b/remoting/resources/remoting_strings_es.xtb index fef5d59..88ba846b 100644 --- a/remoting/resources/remoting_strings_es.xtb +++ b/remoting/resources/remoting_strings_es.xtb
@@ -163,7 +163,7 @@ <translation id="8383794970363966105">Para utilizar Chromoting, debes añadir una cuenta de Google al dispositivo.</translation> <translation id="8386846956409881180">El host está configurado con credenciales de OAuth que no son válidas.</translation> <translation id="8397385476380433240">Conceder permiso a <ph name="PRODUCT_NAME" /></translation> -<translation id="8406498562923498210">Selecciona la sesión que quieres iniciar en el entorno del Escritorio Remoto de Chrome. Ten en cuenta que es posible que algunos tipos de sesión no se puedan ejecutar en el Escritorio Remoto de Chrome y en la consola local al mismo tiempo.</translation> +<translation id="8406498562923498210">Selecciona la sesión que quieres iniciar en el entorno dEscritorio Remoto de Chrome. Ten en cuenta que es posible que algunos tipos de sesión no se puedan ejecutar en Escritorio Remoto de Chrome y en la consola local al mismo tiempo.</translation> <translation id="8428213095426709021">Configuración</translation> <translation id="8445362773033888690">Ver en Google Play Store</translation> <translation id="8509907436388546015">Proceso de integración del escritorio</translation>
diff --git a/remoting/resources/remoting_strings_mn.xtb b/remoting/resources/remoting_strings_mn.xtb index 49e7e0c..8e752a1a 100644 --- a/remoting/resources/remoting_strings_mn.xtb +++ b/remoting/resources/remoting_strings_mn.xtb
@@ -35,7 +35,7 @@ <translation id="2647232381348739934">Алсын зайнаас удирдах үйлчилгээ</translation> <translation id="2676780859508944670">Ажиллаж байна...</translation> <translation id="2699970397166997657">Chromoting</translation> -<translation id="2758123043070977469">Нотолгоонд асуудал гарлаа, дахин нэвтэрнэ үү.</translation> +<translation id="2758123043070977469">Баталгаажуулалтын асуудал гарлаа, дахин нэвтэрнэ үү.</translation> <translation id="2803375539583399270">ПИН оруулна уу</translation> <translation id="2919669478609886916">Та одоогоор өөр хэрэглэгчтэй энэ машиныг хуваалцаж байна. Үргэлжлүүлэн хуваалцахыг хүсэж байна уу?</translation> <translation id="2939145106548231838">Толгой компьютерийг таниул</translation>
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc index 0fcc0a9..62a9602f 100644 --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc
@@ -155,7 +155,11 @@ // See also https://crbug.com/920634 const base::Feature kRequestInitiatorSiteLockEnfocement = { "RequestInitiatorSiteLockEnfocement", +#if defined(OS_ANDROID) + base::FEATURE_DISABLED_BY_DEFAULT}; +#else base::FEATURE_ENABLED_BY_DEFAULT}; +#endif // When the CertVerifierService is enabled, certificate verification will not be // performed in the network service, but will instead be brokered to a separate
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index 08fde8a..2f300a18d 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -1169,6 +1169,7 @@ "dimension_sets": [ { "cpu": "arm", + "mac_model": "ADP3,2", "os": "Mac", "pool": "chrome.tests.perf" } @@ -1197,6 +1198,52 @@ "chromium_builder_perf" ] }, + "mac-m1_mini_2020-perf": { + "isolated_scripts": [ + { + "args": [ + "-v", + "--browser=release", + "--upload-results", + "--test-shard-map-filename=mac-m1_mini_2020-perf_map.json", + "--assert-gpu-compositing" + ], + "isolate_name": "performance_test_suite", + "merge": { + "script": "//tools/perf/process_perf_results.py" + }, + "name": "performance_test_suite", + "override_compile_targets": [ + "performance_test_suite" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "cpu": "arm", + "mac_model": "Macmini9,1", + "os": "Mac", + "pool": "chrome.tests.perf" + } + ], + "expiration": 7200, + "hard_timeout": 21600, + "ignore_task_failure": false, + "io_timeout": 21600, + "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 2 + }, + "trigger_script": { + "args": [ + "--multiple-dimension-script-verbose", + "True" + ], + "requires_simultaneous_shard_dispatch": true, + "script": "//testing/trigger_scripts/perf_device_trigger.py" + } + } + ] + }, "win-10-perf": { "isolated_scripts": [ {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 8b2879e..47a2a136 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -1732,6 +1732,25 @@ ] } ], + "CodeCacheDeduplicationStudy": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CodeCacheDeduplicationStudy" + ] + } + ] + } + ], "CodeCacheDeletionWithoutFilter": [ { "platforms": [ @@ -4632,30 +4651,6 @@ ] } ], - "NtpRepeatableQueriesDesktop": [ - { - "platforms": [ - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "NtpRepeatableQueriesAgeThresholdDays": "180", - "NtpRepeatableQueriesFrequencyExponent": "2", - "NtpRepeatableQueriesInsertPosition": "start", - "NtpRepeatableQueriesRecencyHalfLifeSeconds": "604800" - }, - "enable_features": [ - "NtpRepeatableQueries" - ] - } - ] - } - ], "NtpWebUIDesktop": [ { "platforms": [ @@ -5077,26 +5072,6 @@ ] } ], - "OptimizationHintsNoPersistentStore": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "batch_update_hints_for_top_hosts": "false", - "persist_hints_to_disk": "false" - }, - "enable_features": [ - "OptimizationHints", - "OptimizationHintsFetching" - ] - } - ] - } - ], "OptimizedRealtimeThreadingMac": [ { "platforms": [
diff --git a/third_party/blink/public/DIR_METADATA b/third_party/blink/public/DIR_METADATA new file mode 100644 index 0000000..90b2e9c --- /dev/null +++ b/third_party/blink/public/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Internals>Modularization" +} + +team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/public/OWNERS b/third_party/blink/public/OWNERS index 989814d..2ea2f13 100644 --- a/third_party/blink/public/OWNERS +++ b/third_party/blink/public/OWNERS
@@ -19,6 +19,3 @@ # This is for the common case of adding or renaming files. If you're doing # structural changes, please get a review from a reviewer in this file. per-file BUILD.gn=* - -# TEAM: platform-architecture-dev@chromium.org -# COMPONENT: Blink>Internals>Modularization
diff --git a/third_party/blink/public/common/DIR_METADATA b/third_party/blink/public/common/DIR_METADATA new file mode 100644 index 0000000..90b2e9c --- /dev/null +++ b/third_party/blink/public/common/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Internals>Modularization" +} + +team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/public/common/OWNERS b/third_party/blink/public/common/OWNERS index 5bd7f04..ba9a65a 100644 --- a/third_party/blink/public/common/OWNERS +++ b/third_party/blink/public/common/OWNERS
@@ -1,5 +1,2 @@ # Any core owner can approve blink finch flags. per-file features.h=file://third_party/blink/renderer/core/OWNERS - -# TEAM: platform-architecture-dev@chromium.org -# COMPONENT: Blink>Internals>Modularization
diff --git a/third_party/blink/public/common/blob/DIR_METADATA b/third_party/blink/public/common/blob/DIR_METADATA new file mode 100644 index 0000000..955fe831 --- /dev/null +++ b/third_party/blink/public/common/blob/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>FileAPI" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/common/blob/OWNERS b/third_party/blink/public/common/blob/OWNERS index 6a67518..5fe885e 100644 --- a/third_party/blink/public/common/blob/OWNERS +++ b/third_party/blink/public/common/blob/OWNERS
@@ -1,5 +1,2 @@ file://storage/browser/blob/OWNERS -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>FileAPI -
diff --git a/third_party/blink/public/common/bluetooth/DIR_METADATA b/third_party/blink/public/common/bluetooth/DIR_METADATA new file mode 100644 index 0000000..002457dc --- /dev/null +++ b/third_party/blink/public/common/bluetooth/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Bluetooth" +} + +team_email: "web-bluetooth@chromium.org"
diff --git a/third_party/blink/public/common/bluetooth/OWNERS b/third_party/blink/public/common/bluetooth/OWNERS index b69b593b..9484eb4 100644 --- a/third_party/blink/public/common/bluetooth/OWNERS +++ b/third_party/blink/public/common/bluetooth/OWNERS
@@ -7,6 +7,3 @@ per-file *.typemap=set noparent per-file *.typemap=file://ipc/SECURITY_OWNERS - -# TEAM: web-bluetooth@chromium.org -# COMPONENT: Blink>Bluetooth
diff --git a/third_party/blink/public/common/cache_storage/DIR_METADATA b/third_party/blink/public/common/cache_storage/DIR_METADATA new file mode 100644 index 0000000..787f6c41 --- /dev/null +++ b/third_party/blink/public/common/cache_storage/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>CacheStorage" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/common/cache_storage/OWNERS b/third_party/blink/public/common/cache_storage/OWNERS index a227a76..3ce0392 100644 --- a/third_party/blink/public/common/cache_storage/OWNERS +++ b/third_party/blink/public/common/cache_storage/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>CacheStorage
diff --git a/third_party/blink/public/common/css/DIR_METADATA b/third_party/blink/public/common/css/DIR_METADATA new file mode 100644 index 0000000..1876fb3 --- /dev/null +++ b/third_party/blink/public/common/css/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>CSS" +} + +team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/public/common/css/OWNERS b/third_party/blink/public/common/css/OWNERS index 261f7b8..315e3a9 100644 --- a/third_party/blink/public/common/css/OWNERS +++ b/third_party/blink/public/common/css/OWNERS
@@ -1,4 +1 @@ file://third_party/blink/renderer/core/css/OWNERS - -# TEAM: layout-dev@chromium.org -# COMPONENT: Blink>CSS
diff --git a/third_party/blink/public/common/feature_policy/DIR_METADATA b/third_party/blink/public/common/feature_policy/DIR_METADATA new file mode 100644 index 0000000..3eb37bc --- /dev/null +++ b/third_party/blink/public/common/feature_policy/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>FeaturePolicy" +}
diff --git a/third_party/blink/public/common/feature_policy/OWNERS b/third_party/blink/public/common/feature_policy/OWNERS index de3e10f..3fd76673 100644 --- a/third_party/blink/public/common/feature_policy/OWNERS +++ b/third_party/blink/public/common/feature_policy/OWNERS
@@ -2,7 +2,6 @@ raymes@chromium.org loonybear@chromium.org -# COMPONENT: Blink>FeaturePolicy per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/common/fetch/DIR_METADATA b/third_party/blink/public/common/fetch/DIR_METADATA new file mode 100644 index 0000000..dbf3715 --- /dev/null +++ b/third_party/blink/public/common/fetch/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Network>FetchAPI" +} + +team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/public/common/fetch/OWNERS b/third_party/blink/public/common/fetch/OWNERS index b2e47ad..fd7b644 100644 --- a/third_party/blink/public/common/fetch/OWNERS +++ b/third_party/blink/public/common/fetch/OWNERS
@@ -2,6 +2,3 @@ per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: blink-network-dev@chromium.org -# COMPONENT: Blink>Network>FetchAPI
diff --git a/third_party/blink/public/common/font_access/DIR_METADATA b/third_party/blink/public/common/font_access/DIR_METADATA new file mode 100644 index 0000000..58e4513 --- /dev/null +++ b/third_party/blink/public/common/font_access/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Storage>FontAccess" +}
diff --git a/third_party/blink/public/common/font_access/OWNERS b/third_party/blink/public/common/font_access/OWNERS index 070d02e..3378471 100644 --- a/third_party/blink/public/common/font_access/OWNERS +++ b/third_party/blink/public/common/font_access/OWNERS
@@ -1,7 +1,6 @@ oyiptong@chromium.org jsbell@Chromium.org -# COMPONENT: Blink>Storage>FontAccess per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/common/font_unique_name_lookup/DIR_METADATA b/third_party/blink/public/common/font_unique_name_lookup/DIR_METADATA new file mode 100644 index 0000000..594a7d65 --- /dev/null +++ b/third_party/blink/public/common/font_unique_name_lookup/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Fonts" +}
diff --git a/third_party/blink/public/common/font_unique_name_lookup/OWNERS b/third_party/blink/public/common/font_unique_name_lookup/OWNERS index 9251fa1..68b10d6 100644 --- a/third_party/blink/public/common/font_unique_name_lookup/OWNERS +++ b/third_party/blink/public/common/font_unique_name_lookup/OWNERS
@@ -1,6 +1,5 @@ drott@chromium.org -# COMPONENT: Blink>Fonts per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/common/indexeddb/DIR_METADATA b/third_party/blink/public/common/indexeddb/DIR_METADATA new file mode 100644 index 0000000..af99a94 --- /dev/null +++ b/third_party/blink/public/common/indexeddb/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>IndexedDB" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/common/indexeddb/OWNERS b/third_party/blink/public/common/indexeddb/OWNERS index 1c17e02..01bf15f 100644 --- a/third_party/blink/public/common/indexeddb/OWNERS +++ b/third_party/blink/public/common/indexeddb/OWNERS
@@ -2,6 +2,3 @@ per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>IndexedDB
diff --git a/third_party/blink/public/common/loader/DIR_METADATA b/third_party/blink/public/common/loader/DIR_METADATA new file mode 100644 index 0000000..af30f87 --- /dev/null +++ b/third_party/blink/public/common/loader/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Loader" +} + +team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/public/common/loader/OWNERS b/third_party/blink/public/common/loader/OWNERS index e4c226c..d5fefd8 100644 --- a/third_party/blink/public/common/loader/OWNERS +++ b/third_party/blink/public/common/loader/OWNERS
@@ -1,5 +1,2 @@ per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: loading-dev@chromium.org -# COMPONENT: Blink>Loader
diff --git a/third_party/blink/public/common/media/DIR_METADATA b/third_party/blink/public/common/media/DIR_METADATA new file mode 100644 index 0000000..6667e7f --- /dev/null +++ b/third_party/blink/public/common/media/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Media" +}
diff --git a/third_party/blink/public/common/media/OWNERS b/third_party/blink/public/common/media/OWNERS index 4c71fe7..168af18 100644 --- a/third_party/blink/public/common/media/OWNERS +++ b/third_party/blink/public/common/media/OWNERS
@@ -1,3 +1 @@ file://media/OWNERS - -# COMPONENT: Internals>Media
diff --git a/third_party/blink/public/common/mediastream/DIR_METADATA b/third_party/blink/public/common/mediastream/DIR_METADATA new file mode 100644 index 0000000..066f18a --- /dev/null +++ b/third_party/blink/public/common/mediastream/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>GetUserMedia" +} + +team_email: "webrtc-dev@chromium.org"
diff --git a/third_party/blink/public/common/mediastream/OWNERS b/third_party/blink/public/common/mediastream/OWNERS index 7f3f570..7653ee49 100644 --- a/third_party/blink/public/common/mediastream/OWNERS +++ b/third_party/blink/public/common/mediastream/OWNERS
@@ -3,6 +3,3 @@ per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: webrtc-dev@chromium.org -# COMPONENT: Blink>GetUserMedia
diff --git a/third_party/blink/public/common/messaging/DIR_METADATA b/third_party/blink/public/common/messaging/DIR_METADATA new file mode 100644 index 0000000..169c29b --- /dev/null +++ b/third_party/blink/public/common/messaging/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Messaging" +} + +team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/public/common/messaging/OWNERS b/third_party/blink/public/common/messaging/OWNERS index cbec086e7..4ab3b006 100644 --- a/third_party/blink/public/common/messaging/OWNERS +++ b/third_party/blink/public/common/messaging/OWNERS
@@ -5,6 +5,3 @@ per-file *.mojom=file://ipc/SECURITY_OWNERS per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: platform-architecture-dev@chromium.org -# COMPONENT: Blink>Messaging
diff --git a/third_party/blink/public/common/mime_util/DIR_METADATA b/third_party/blink/public/common/mime_util/DIR_METADATA new file mode 100644 index 0000000..2d14a86 --- /dev/null +++ b/third_party/blink/public/common/mime_util/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Network" +}
diff --git a/third_party/blink/public/common/mime_util/OWNERS b/third_party/blink/public/common/mime_util/OWNERS index f03aa50..9825bef9 100644 --- a/third_party/blink/public/common/mime_util/OWNERS +++ b/third_party/blink/public/common/mime_util/OWNERS
@@ -1,5 +1,3 @@ asanka@chromium.org mmenke@chromium.org rsleevi@chromium.org - -# COMPONENT: Internals>Network
diff --git a/third_party/blink/public/common/notifications/DIR_METADATA b/third_party/blink/public/common/notifications/DIR_METADATA new file mode 100644 index 0000000..e05071ce --- /dev/null +++ b/third_party/blink/public/common/notifications/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "UI>Notifications" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/common/notifications/OWNERS b/third_party/blink/public/common/notifications/OWNERS index 0f8fb440..34d5d68 100644 --- a/third_party/blink/public/common/notifications/OWNERS +++ b/third_party/blink/public/common/notifications/OWNERS
@@ -2,6 +2,3 @@ per-file *_mojom_traits*.*=set noparent per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: UI>Notifications
diff --git a/third_party/blink/public/common/permissions/DIR_METADATA b/third_party/blink/public/common/permissions/DIR_METADATA new file mode 100644 index 0000000..e558745 --- /dev/null +++ b/third_party/blink/public/common/permissions/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>PermissionsAPI" +}
diff --git a/third_party/blink/public/common/permissions/OWNERS b/third_party/blink/public/common/permissions/OWNERS index d83a9c5..5fc2b35 100644 --- a/third_party/blink/public/common/permissions/OWNERS +++ b/third_party/blink/public/common/permissions/OWNERS
@@ -1,3 +1 @@ file://third_party/blink/renderer/modules/permissions/OWNERS - -# COMPONENT: Blink>PermissionsAPI
diff --git a/third_party/blink/public/common/privacy_budget/DIR_METADATA b/third_party/blink/public/common/privacy_budget/DIR_METADATA new file mode 100644 index 0000000..8799ee18 --- /dev/null +++ b/third_party/blink/public/common/privacy_budget/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Privacy>Fingerprinting" +} + +team_email: "privacy-sandbox-dev@chromium.org"
diff --git a/third_party/blink/public/common/privacy_budget/OWNERS b/third_party/blink/public/common/privacy_budget/OWNERS index a522d31..83037bc 100644 --- a/third_party/blink/public/common/privacy_budget/OWNERS +++ b/third_party/blink/public/common/privacy_budget/OWNERS
@@ -1,6 +1,3 @@ asanka@chromium.org pauljensen@chromium.org caraitto@chromium.org - -# TEAM: privacy-sandbox-dev@chromium.org -# COMPONENT: Privacy>Fingerprinting
diff --git a/third_party/blink/public/common/service_worker/DIR_METADATA b/third_party/blink/public/common/service_worker/DIR_METADATA new file mode 100644 index 0000000..2a951d09 --- /dev/null +++ b/third_party/blink/public/common/service_worker/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>ServiceWorker" +} + +team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/public/common/service_worker/OWNERS b/third_party/blink/public/common/service_worker/OWNERS index e370236aa..c07cce4c 100644 --- a/third_party/blink/public/common/service_worker/OWNERS +++ b/third_party/blink/public/common/service_worker/OWNERS
@@ -2,6 +2,3 @@ per-file *_type_converter*.*=set noparent per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS - -# TEAM: worker-dev@chromium.org -# COMPONENT: Blink>ServiceWorker
diff --git a/third_party/blink/public/common/sms/DIR_METADATA b/third_party/blink/public/common/sms/DIR_METADATA new file mode 100644 index 0000000..9ade438 --- /dev/null +++ b/third_party/blink/public/common/sms/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>SMS" +} + +team_email: "fugu-dev@chromium.org"
diff --git a/third_party/blink/public/common/sms/OWNERS b/third_party/blink/public/common/sms/OWNERS index 39f063f..ad9d6f7 100644 --- a/third_party/blink/public/common/sms/OWNERS +++ b/third_party/blink/public/common/sms/OWNERS
@@ -1,4 +1 @@ file://content/browser/sms/OWNERS - -# COMPONENT: Blink>SMS -# TEAM: fugu-dev@chromium.org
diff --git a/third_party/blink/public/devtools_protocol/DIR_METADATA b/third_party/blink/public/devtools_protocol/DIR_METADATA new file mode 100644 index 0000000..4161fb8 --- /dev/null +++ b/third_party/blink/public/devtools_protocol/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>DevTools>Platform" +}
diff --git a/third_party/blink/public/devtools_protocol/OWNERS b/third_party/blink/public/devtools_protocol/OWNERS index 0fc2f5f..a7c4119 100644 --- a/third_party/blink/public/devtools_protocol/OWNERS +++ b/third_party/blink/public/devtools_protocol/OWNERS
@@ -2,5 +2,3 @@ caseq@chromium.org dgozman@chromium.org pfeldman@chromium.org - -# COMPONENT: Platform>DevTools>Platform
diff --git a/third_party/blink/public/mojom/appcache/DIR_METADATA b/third_party/blink/public/mojom/appcache/DIR_METADATA new file mode 100644 index 0000000..df95601 --- /dev/null +++ b/third_party/blink/public/mojom/appcache/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>AppCache" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/appcache/OWNERS b/third_party/blink/public/mojom/appcache/OWNERS index f1cba72..f4b1cd4 100644 --- a/third_party/blink/public/mojom/appcache/OWNERS +++ b/third_party/blink/public/mojom/appcache/OWNERS
@@ -3,6 +3,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>AppCache -
diff --git a/third_party/blink/public/mojom/array_buffer/DIR_METADATA b/third_party/blink/public/mojom/array_buffer/DIR_METADATA new file mode 100644 index 0000000..169c29b --- /dev/null +++ b/third_party/blink/public/mojom/array_buffer/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Messaging" +} + +team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/array_buffer/OWNERS b/third_party/blink/public/mojom/array_buffer/OWNERS index ec3a481..c91c9693 100644 --- a/third_party/blink/public/mojom/array_buffer/OWNERS +++ b/third_party/blink/public/mojom/array_buffer/OWNERS
@@ -7,6 +7,3 @@ per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS per-file *.typemap=set noparent per-file *.typemap=file://ipc/SECURITY_OWNERS - -# TEAM: platform-architecture-dev@chromium.org -# COMPONENT: Blink>Messaging
diff --git a/third_party/blink/public/mojom/background_fetch/DIR_METADATA b/third_party/blink/public/mojom/background_fetch/DIR_METADATA new file mode 100644 index 0000000..8011d708 --- /dev/null +++ b/third_party/blink/public/mojom/background_fetch/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>BackgroundFetch" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/mojom/background_fetch/OWNERS b/third_party/blink/public/mojom/background_fetch/OWNERS index f239b900..5dbf234 100644 --- a/third_party/blink/public/mojom/background_fetch/OWNERS +++ b/third_party/blink/public/mojom/background_fetch/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: Blink>BackgroundFetch
diff --git a/third_party/blink/public/mojom/background_sync/DIR_METADATA b/third_party/blink/public/mojom/background_sync/DIR_METADATA new file mode 100644 index 0000000..36641917 --- /dev/null +++ b/third_party/blink/public/mojom/background_sync/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>BackgroundSync" +}
diff --git a/third_party/blink/public/mojom/background_sync/OWNERS b/third_party/blink/public/mojom/background_sync/OWNERS index 4340bc4..502de83 100644 --- a/third_party/blink/public/mojom/background_sync/OWNERS +++ b/third_party/blink/public/mojom/background_sync/OWNERS
@@ -4,5 +4,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Blink>BackgroundSync
diff --git a/third_party/blink/public/mojom/badging/DIR_METADATA b/third_party/blink/public/mojom/badging/DIR_METADATA new file mode 100644 index 0000000..eca597c --- /dev/null +++ b/third_party/blink/public/mojom/badging/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "UI>Browser>WebAppInstalls" +} + +team_email: "web-apps-platform-team@chromium.org"
diff --git a/third_party/blink/public/mojom/badging/OWNERS b/third_party/blink/public/mojom/badging/OWNERS index 875d36b4..7fec021 100644 --- a/third_party/blink/public/mojom/badging/OWNERS +++ b/third_party/blink/public/mojom/badging/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: UI>Browser>WebAppInstalls -# TEAM: web-apps-platform-team@chromium.org
diff --git a/third_party/blink/public/mojom/blob/DIR_METADATA b/third_party/blink/public/mojom/blob/DIR_METADATA new file mode 100644 index 0000000..955fe831 --- /dev/null +++ b/third_party/blink/public/mojom/blob/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>FileAPI" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/blob/OWNERS b/third_party/blink/public/mojom/blob/OWNERS index b541262..02dddafe 100644 --- a/third_party/blink/public/mojom/blob/OWNERS +++ b/third_party/blink/public/mojom/blob/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>FileAPI
diff --git a/third_party/blink/public/mojom/bluetooth/DIR_METADATA b/third_party/blink/public/mojom/bluetooth/DIR_METADATA new file mode 100644 index 0000000..002457dc --- /dev/null +++ b/third_party/blink/public/mojom/bluetooth/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Bluetooth" +} + +team_email: "web-bluetooth@chromium.org"
diff --git a/third_party/blink/public/mojom/bluetooth/OWNERS b/third_party/blink/public/mojom/bluetooth/OWNERS index 0eb4b3b..b61e71e 100644 --- a/third_party/blink/public/mojom/bluetooth/OWNERS +++ b/third_party/blink/public/mojom/bluetooth/OWNERS
@@ -5,6 +5,3 @@ per-file *.typemap=set noparent per-file *.typemap=file://ipc/SECURITY_OWNERS - -# TEAM: web-bluetooth@chromium.org -# COMPONENT: Blink>Bluetooth
diff --git a/third_party/blink/public/mojom/cache_storage/DIR_METADATA b/third_party/blink/public/mojom/cache_storage/DIR_METADATA new file mode 100644 index 0000000..787f6c41 --- /dev/null +++ b/third_party/blink/public/mojom/cache_storage/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>CacheStorage" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/cache_storage/OWNERS b/third_party/blink/public/mojom/cache_storage/OWNERS index a227a76..3ce0392 100644 --- a/third_party/blink/public/mojom/cache_storage/OWNERS +++ b/third_party/blink/public/mojom/cache_storage/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>CacheStorage
diff --git a/third_party/blink/public/mojom/contacts/DIR_METADATA b/third_party/blink/public/mojom/contacts/DIR_METADATA new file mode 100644 index 0000000..022cc62a --- /dev/null +++ b/third_party/blink/public/mojom/contacts/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Contacts" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/mojom/contacts/OWNERS b/third_party/blink/public/mojom/contacts/OWNERS index 5ef10c7..c30abce 100644 --- a/third_party/blink/public/mojom/contacts/OWNERS +++ b/third_party/blink/public/mojom/contacts/OWNERS
@@ -3,6 +3,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: Blink>Contacts
diff --git a/third_party/blink/public/mojom/content_index/DIR_METADATA b/third_party/blink/public/mojom/content_index/DIR_METADATA new file mode 100644 index 0000000..48ec1354 --- /dev/null +++ b/third_party/blink/public/mojom/content_index/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>ContentIndexing" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/mojom/content_index/OWNERS b/third_party/blink/public/mojom/content_index/OWNERS index 951142f..c267b8b 100644 --- a/third_party/blink/public/mojom/content_index/OWNERS +++ b/third_party/blink/public/mojom/content_index/OWNERS
@@ -4,6 +4,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: Blink>ContentIndexing
diff --git a/third_party/blink/public/mojom/cookie_store/DIR_METADATA b/third_party/blink/public/mojom/cookie_store/DIR_METADATA new file mode 100644 index 0000000..5d203702 --- /dev/null +++ b/third_party/blink/public/mojom/cookie_store/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>CookiesAPI" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/cookie_store/OWNERS b/third_party/blink/public/mojom/cookie_store/OWNERS index ef6dfad9e..40a8b07 100644 --- a/third_party/blink/public/mojom/cookie_store/OWNERS +++ b/third_party/blink/public/mojom/cookie_store/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>CookiesAPI
diff --git a/third_party/blink/public/mojom/credentialmanager/DIR_METADATA b/third_party/blink/public/mojom/credentialmanager/DIR_METADATA new file mode 100644 index 0000000..f23c524f --- /dev/null +++ b/third_party/blink/public/mojom/credentialmanager/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>SecurityFeature>CredentialManagement" +} + +team_email: "identity-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/credentialmanager/OWNERS b/third_party/blink/public/mojom/credentialmanager/OWNERS index 9e26b66..08850f4 100644 --- a/third_party/blink/public/mojom/credentialmanager/OWNERS +++ b/third_party/blink/public/mojom/credentialmanager/OWNERS
@@ -1,5 +1,2 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Blink>SecurityFeature>CredentialManagement -# TEAM: identity-dev@chromium.org
diff --git a/third_party/blink/public/mojom/devtools/DIR_METADATA b/third_party/blink/public/mojom/devtools/DIR_METADATA new file mode 100644 index 0000000..c03900b --- /dev/null +++ b/third_party/blink/public/mojom/devtools/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Platform>DevTools" +} + +team_email: "devtools-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/devtools/OWNERS b/third_party/blink/public/mojom/devtools/OWNERS index 43016bc0..aac9456 100644 --- a/third_party/blink/public/mojom/devtools/OWNERS +++ b/third_party/blink/public/mojom/devtools/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: devtools-dev@chromium.org -# COMPONENT: Platform>DevTools
diff --git a/third_party/blink/public/mojom/digital_goods/DIR_METADATA b/third_party/blink/public/mojom/digital_goods/DIR_METADATA new file mode 100644 index 0000000..b18c04b --- /dev/null +++ b/third_party/blink/public/mojom/digital_goods/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>WebAppInstalls>ChromeOS" +}
diff --git a/third_party/blink/public/mojom/digital_goods/OWNERS b/third_party/blink/public/mojom/digital_goods/OWNERS index bf8fcba..36ecffd4 100644 --- a/third_party/blink/public/mojom/digital_goods/OWNERS +++ b/third_party/blink/public/mojom/digital_goods/OWNERS
@@ -2,5 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: UI>Browser>WebAppInstalls>ChromeOS
diff --git a/third_party/blink/public/mojom/dom_storage/DIR_METADATA b/third_party/blink/public/mojom/dom_storage/DIR_METADATA new file mode 100644 index 0000000..f5d8083 --- /dev/null +++ b/third_party/blink/public/mojom/dom_storage/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>DOMStorage" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/dom_storage/OWNERS b/third_party/blink/public/mojom/dom_storage/OWNERS index c9d038d..662a2bc8 100644 --- a/third_party/blink/public/mojom/dom_storage/OWNERS +++ b/third_party/blink/public/mojom/dom_storage/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>DOMStorage
diff --git a/third_party/blink/public/mojom/dwrite_font_proxy/DIR_METADATA b/third_party/blink/public/mojom/dwrite_font_proxy/DIR_METADATA new file mode 100644 index 0000000..594a7d65 --- /dev/null +++ b/third_party/blink/public/mojom/dwrite_font_proxy/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Fonts" +}
diff --git a/third_party/blink/public/mojom/dwrite_font_proxy/OWNERS b/third_party/blink/public/mojom/dwrite_font_proxy/OWNERS index 0573276d..68b10d6 100644 --- a/third_party/blink/public/mojom/dwrite_font_proxy/OWNERS +++ b/third_party/blink/public/mojom/dwrite_font_proxy/OWNERS
@@ -1,6 +1,5 @@ drott@chromium.org -# COMPONENT: Blink>Fonts per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS \ No newline at end of file +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/feature_policy/DIR_METADATA b/third_party/blink/public/mojom/feature_policy/DIR_METADATA new file mode 100644 index 0000000..3eb37bc --- /dev/null +++ b/third_party/blink/public/mojom/feature_policy/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>FeaturePolicy" +}
diff --git a/third_party/blink/public/mojom/feature_policy/OWNERS b/third_party/blink/public/mojom/feature_policy/OWNERS index 2997aa22..888cca0e 100644 --- a/third_party/blink/public/mojom/feature_policy/OWNERS +++ b/third_party/blink/public/mojom/feature_policy/OWNERS
@@ -2,7 +2,6 @@ raymes@chromium.org loonybear@chromium.org -# COMPONENT: Blink>FeaturePolicy per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/fetch/DIR_METADATA b/third_party/blink/public/mojom/fetch/DIR_METADATA new file mode 100644 index 0000000..dbf3715 --- /dev/null +++ b/third_party/blink/public/mojom/fetch/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Network>FetchAPI" +} + +team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/fetch/OWNERS b/third_party/blink/public/mojom/fetch/OWNERS index 2eaf30a..f6aa2bd 100644 --- a/third_party/blink/public/mojom/fetch/OWNERS +++ b/third_party/blink/public/mojom/fetch/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: blink-network-dev@chromium.org -# COMPONENT: Blink>Network>FetchAPI
diff --git a/third_party/blink/public/mojom/file_system_access/DIR_METADATA b/third_party/blink/public/mojom/file_system_access/DIR_METADATA new file mode 100644 index 0000000..7ed791f7 --- /dev/null +++ b/third_party/blink/public/mojom/file_system_access/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>FileSystem" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/file_system_access/OWNERS b/third_party/blink/public/mojom/file_system_access/OWNERS index 8bdf2e6..bed357a2 100644 --- a/third_party/blink/public/mojom/file_system_access/OWNERS +++ b/third_party/blink/public/mojom/file_system_access/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>FileSystem
diff --git a/third_party/blink/public/mojom/filesystem/DIR_METADATA b/third_party/blink/public/mojom/filesystem/DIR_METADATA new file mode 100644 index 0000000..7ed791f7 --- /dev/null +++ b/third_party/blink/public/mojom/filesystem/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>FileSystem" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/filesystem/OWNERS b/third_party/blink/public/mojom/filesystem/OWNERS index 4de3ede8..5fbb3f8a 100644 --- a/third_party/blink/public/mojom/filesystem/OWNERS +++ b/third_party/blink/public/mojom/filesystem/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>FileSystem
diff --git a/third_party/blink/public/mojom/font_access/DIR_METADATA b/third_party/blink/public/mojom/font_access/DIR_METADATA new file mode 100644 index 0000000..a1f8c39 --- /dev/null +++ b/third_party/blink/public/mojom/font_access/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>FontAccess" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/font_access/OWNERS b/third_party/blink/public/mojom/font_access/OWNERS index 0467eaf..cff820b 100644 --- a/third_party/blink/public/mojom/font_access/OWNERS +++ b/third_party/blink/public/mojom/font_access/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>FontAccess \ No newline at end of file
diff --git a/third_party/blink/public/mojom/hid/DIR_METADATA b/third_party/blink/public/mojom/hid/DIR_METADATA new file mode 100644 index 0000000..8a71cf1 --- /dev/null +++ b/third_party/blink/public/mojom/hid/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>HID" +} + +team_email: "device-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/hid/OWNERS b/third_party/blink/public/mojom/hid/OWNERS index ca37286..55dcfa1 100644 --- a/third_party/blink/public/mojom/hid/OWNERS +++ b/third_party/blink/public/mojom/hid/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: device-dev@chromium.org -# COMPONENT: Blink>HID
diff --git a/third_party/blink/public/mojom/hyphenation/DIR_METADATA b/third_party/blink/public/mojom/hyphenation/DIR_METADATA new file mode 100644 index 0000000..3611c38f --- /dev/null +++ b/third_party/blink/public/mojom/hyphenation/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Layout" +} + +team_email: "layout-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/hyphenation/OWNERS b/third_party/blink/public/mojom/hyphenation/OWNERS index aa20b656..185a39d 100644 --- a/third_party/blink/public/mojom/hyphenation/OWNERS +++ b/third_party/blink/public/mojom/hyphenation/OWNERS
@@ -5,6 +5,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: layout-dev@chromium.org -# COMPONENT: Blink>Layout
diff --git a/third_party/blink/public/mojom/idle/DIR_METADATA b/third_party/blink/public/mojom/idle/DIR_METADATA new file mode 100644 index 0000000..4245efd --- /dev/null +++ b/third_party/blink/public/mojom/idle/DIR_METADATA
@@ -0,0 +1 @@ +team_email: "fugu-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/idle/OWNERS b/third_party/blink/public/mojom/idle/OWNERS index 14238e1..b0db262 100644 --- a/third_party/blink/public/mojom/idle/OWNERS +++ b/third_party/blink/public/mojom/idle/OWNERS
@@ -2,5 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: fugu-dev@chromium.org
diff --git a/third_party/blink/public/mojom/indexeddb/DIR_METADATA b/third_party/blink/public/mojom/indexeddb/DIR_METADATA new file mode 100644 index 0000000..af99a94 --- /dev/null +++ b/third_party/blink/public/mojom/indexeddb/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>IndexedDB" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/indexeddb/OWNERS b/third_party/blink/public/mojom/indexeddb/OWNERS index d43b54a..02dddafe 100644 --- a/third_party/blink/public/mojom/indexeddb/OWNERS +++ b/third_party/blink/public/mojom/indexeddb/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>IndexedDB
diff --git a/third_party/blink/public/mojom/installedapp/DIR_METADATA b/third_party/blink/public/mojom/installedapp/DIR_METADATA new file mode 100644 index 0000000..e4c8934 --- /dev/null +++ b/third_party/blink/public/mojom/installedapp/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Platform>Apps>AppLauncher>Install" +}
diff --git a/third_party/blink/public/mojom/installedapp/OWNERS b/third_party/blink/public/mojom/installedapp/OWNERS index 124a0b41..1e3120b 100644 --- a/third_party/blink/public/mojom/installedapp/OWNERS +++ b/third_party/blink/public/mojom/installedapp/OWNERS
@@ -3,5 +3,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Platform>Apps>AppLauncher>Install
diff --git a/third_party/blink/public/mojom/keyboard_lock/DIR_METADATA b/third_party/blink/public/mojom/keyboard_lock/DIR_METADATA new file mode 100644 index 0000000..ffa284c4 --- /dev/null +++ b/third_party/blink/public/mojom/keyboard_lock/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Services>Chromoting" +}
diff --git a/third_party/blink/public/mojom/keyboard_lock/OWNERS b/third_party/blink/public/mojom/keyboard_lock/OWNERS index fc86537..277a7a34 100644 --- a/third_party/blink/public/mojom/keyboard_lock/OWNERS +++ b/third_party/blink/public/mojom/keyboard_lock/OWNERS
@@ -1,4 +1,3 @@ -# COMPONENT: Services>Chromoting per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/leak_detector/DIR_METADATA b/third_party/blink/public/mojom/leak_detector/DIR_METADATA new file mode 100644 index 0000000..0e978ab --- /dev/null +++ b/third_party/blink/public/mojom/leak_detector/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>MemoryAllocator" +}
diff --git a/third_party/blink/public/mojom/leak_detector/OWNERS b/third_party/blink/public/mojom/leak_detector/OWNERS index ffbee18..277a7a34 100644 --- a/third_party/blink/public/mojom/leak_detector/OWNERS +++ b/third_party/blink/public/mojom/leak_detector/OWNERS
@@ -1,4 +1,3 @@ -# COMPONENT: Blink>MemoryAllocator per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/link_to_text/DIR_METADATA b/third_party/blink/public/mojom/link_to_text/DIR_METADATA new file mode 100644 index 0000000..167ca6e --- /dev/null +++ b/third_party/blink/public/mojom/link_to_text/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>Sharing" +}
diff --git a/third_party/blink/public/mojom/link_to_text/OWNERS b/third_party/blink/public/mojom/link_to_text/OWNERS index bf01ee9e..277a7a34 100644 --- a/third_party/blink/public/mojom/link_to_text/OWNERS +++ b/third_party/blink/public/mojom/link_to_text/OWNERS
@@ -1,4 +1,3 @@ -# COMPONENT: UI>Browser>Sharing per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS \ No newline at end of file +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/loader/DIR_METADATA b/third_party/blink/public/mojom/loader/DIR_METADATA new file mode 100644 index 0000000..af30f87 --- /dev/null +++ b/third_party/blink/public/mojom/loader/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Loader" +} + +team_email: "loading-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/loader/OWNERS b/third_party/blink/public/mojom/loader/OWNERS index 0590c3a5..08850f4 100644 --- a/third_party/blink/public/mojom/loader/OWNERS +++ b/third_party/blink/public/mojom/loader/OWNERS
@@ -1,5 +1,2 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: loading-dev@chromium.org -# COMPONENT: Blink>Loader
diff --git a/third_party/blink/public/mojom/locks/DIR_METADATA b/third_party/blink/public/mojom/locks/DIR_METADATA new file mode 100644 index 0000000..e7483ec7 --- /dev/null +++ b/third_party/blink/public/mojom/locks/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/locks/OWNERS b/third_party/blink/public/mojom/locks/OWNERS index 8b207f1..e26183dc 100644 --- a/third_party/blink/public/mojom/locks/OWNERS +++ b/third_party/blink/public/mojom/locks/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage
diff --git a/third_party/blink/public/mojom/mediastream/DIR_METADATA b/third_party/blink/public/mojom/mediastream/DIR_METADATA new file mode 100644 index 0000000..066f18a --- /dev/null +++ b/third_party/blink/public/mojom/mediastream/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>GetUserMedia" +} + +team_email: "webrtc-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/mediastream/OWNERS b/third_party/blink/public/mojom/mediastream/OWNERS index 1ec01e1..96abc6a 100644 --- a/third_party/blink/public/mojom/mediastream/OWNERS +++ b/third_party/blink/public/mojom/mediastream/OWNERS
@@ -3,6 +3,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: webrtc-dev@chromium.org -# COMPONENT: Blink>GetUserMedia
diff --git a/third_party/blink/public/mojom/messaging/DIR_METADATA b/third_party/blink/public/mojom/messaging/DIR_METADATA new file mode 100644 index 0000000..169c29b --- /dev/null +++ b/third_party/blink/public/mojom/messaging/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Messaging" +} + +team_email: "platform-architecture-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/messaging/OWNERS b/third_party/blink/public/mojom/messaging/OWNERS index ec3a481..c91c9693 100644 --- a/third_party/blink/public/mojom/messaging/OWNERS +++ b/third_party/blink/public/mojom/messaging/OWNERS
@@ -7,6 +7,3 @@ per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS per-file *.typemap=set noparent per-file *.typemap=file://ipc/SECURITY_OWNERS - -# TEAM: platform-architecture-dev@chromium.org -# COMPONENT: Blink>Messaging
diff --git a/third_party/blink/public/mojom/native_io/DIR_METADATA b/third_party/blink/public/mojom/native_io/DIR_METADATA new file mode 100644 index 0000000..a2e0dfd --- /dev/null +++ b/third_party/blink/public/mojom/native_io/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>NativeIO" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/native_io/OWNERS b/third_party/blink/public/mojom/native_io/OWNERS index 2272067e..f1415de6 100644 --- a/third_party/blink/public/mojom/native_io/OWNERS +++ b/third_party/blink/public/mojom/native_io/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>NativeIO
diff --git a/third_party/blink/public/mojom/notifications/DIR_METADATA b/third_party/blink/public/mojom/notifications/DIR_METADATA new file mode 100644 index 0000000..e05071ce --- /dev/null +++ b/third_party/blink/public/mojom/notifications/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "UI>Notifications" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/mojom/notifications/OWNERS b/third_party/blink/public/mojom/notifications/OWNERS index 0a5fdca..5dbf234 100644 --- a/third_party/blink/public/mojom/notifications/OWNERS +++ b/third_party/blink/public/mojom/notifications/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: UI>Notifications
diff --git a/third_party/blink/public/mojom/optimization_guide/DIR_METADATA b/third_party/blink/public/mojom/optimization_guide/DIR_METADATA new file mode 100644 index 0000000..f21921424 --- /dev/null +++ b/third_party/blink/public/mojom/optimization_guide/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>OptimizationGuide" +}
diff --git a/third_party/blink/public/mojom/optimization_guide/OWNERS b/third_party/blink/public/mojom/optimization_guide/OWNERS index e3265d78..472244d4 100644 --- a/third_party/blink/public/mojom/optimization_guide/OWNERS +++ b/third_party/blink/public/mojom/optimization_guide/OWNERS
@@ -5,5 +5,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Internals>OptimizationGuide
diff --git a/third_party/blink/public/mojom/payments/DIR_METADATA b/third_party/blink/public/mojom/payments/DIR_METADATA new file mode 100644 index 0000000..cd26685 --- /dev/null +++ b/third_party/blink/public/mojom/payments/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Payments" +} + +team_email: "payments-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/payments/OWNERS b/third_party/blink/public/mojom/payments/OWNERS index 2ceca43..65c11cbe 100644 --- a/third_party/blink/public/mojom/payments/OWNERS +++ b/third_party/blink/public/mojom/payments/OWNERS
@@ -1,5 +1,3 @@ -# TEAM: payments-dev@chromium.org -# COMPONENT: Blink>Payments file://components/payments/OWNERS
diff --git a/third_party/blink/public/mojom/permissions/DIR_METADATA b/third_party/blink/public/mojom/permissions/DIR_METADATA new file mode 100644 index 0000000..e558745 --- /dev/null +++ b/third_party/blink/public/mojom/permissions/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>PermissionsAPI" +}
diff --git a/third_party/blink/public/mojom/permissions/OWNERS b/third_party/blink/public/mojom/permissions/OWNERS index ff69b875..393b01f 100644 --- a/third_party/blink/public/mojom/permissions/OWNERS +++ b/third_party/blink/public/mojom/permissions/OWNERS
@@ -2,5 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Blink>PermissionsAPI
diff --git a/third_party/blink/public/mojom/prerender/DIR_METADATA b/third_party/blink/public/mojom/prerender/DIR_METADATA new file mode 100644 index 0000000..64dbad5 --- /dev/null +++ b/third_party/blink/public/mojom/prerender/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Preload>Prerender" +}
diff --git a/third_party/blink/public/mojom/prerender/OWNERS b/third_party/blink/public/mojom/prerender/OWNERS index 1e241c2e..066d342 100644 --- a/third_party/blink/public/mojom/prerender/OWNERS +++ b/third_party/blink/public/mojom/prerender/OWNERS
@@ -3,5 +3,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Internals>Preload>Prerender
diff --git a/third_party/blink/public/mojom/push_messaging/DIR_METADATA b/third_party/blink/public/mojom/push_messaging/DIR_METADATA new file mode 100644 index 0000000..2fcdc00d --- /dev/null +++ b/third_party/blink/public/mojom/push_messaging/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>PushAPI" +} + +team_email: "platform-capabilities@chromium.org"
diff --git a/third_party/blink/public/mojom/push_messaging/OWNERS b/third_party/blink/public/mojom/push_messaging/OWNERS index aa9df0ac..82f03ad 100644 --- a/third_party/blink/public/mojom/push_messaging/OWNERS +++ b/third_party/blink/public/mojom/push_messaging/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: platform-capabilities@chromium.org -# COMPONENT: Blink>PushAPI
diff --git a/third_party/blink/public/mojom/quota/DIR_METADATA b/third_party/blink/public/mojom/quota/DIR_METADATA new file mode 100644 index 0000000..da39edd --- /dev/null +++ b/third_party/blink/public/mojom/quota/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage>Quota" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/quota/OWNERS b/third_party/blink/public/mojom/quota/OWNERS index fa3ce33..bf6f2fd 100644 --- a/third_party/blink/public/mojom/quota/OWNERS +++ b/third_party/blink/public/mojom/quota/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>Quota
diff --git a/third_party/blink/public/mojom/screen_enumeration/DIR_METADATA b/third_party/blink/public/mojom/screen_enumeration/DIR_METADATA new file mode 100644 index 0000000..e7483ec7 --- /dev/null +++ b/third_party/blink/public/mojom/screen_enumeration/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Storage" +} + +team_email: "storage-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/screen_enumeration/OWNERS b/third_party/blink/public/mojom/screen_enumeration/OWNERS index 222819b..505334c1 100644 --- a/third_party/blink/public/mojom/screen_enumeration/OWNERS +++ b/third_party/blink/public/mojom/screen_enumeration/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage \ No newline at end of file
diff --git a/third_party/blink/public/mojom/script/DIR_METADATA b/third_party/blink/public/mojom/script/DIR_METADATA new file mode 100644 index 0000000..b7353a1 --- /dev/null +++ b/third_party/blink/public/mojom/script/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>HTML>Script" +} + +team_email: "module-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/script/OWNERS b/third_party/blink/public/mojom/script/OWNERS index e34e6a1..88f8985 100644 --- a/third_party/blink/public/mojom/script/OWNERS +++ b/third_party/blink/public/mojom/script/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: module-dev@chromium.org -# COMPONENT: Blink>HTML>Script
diff --git a/third_party/blink/public/mojom/serial/DIR_METADATA b/third_party/blink/public/mojom/serial/DIR_METADATA new file mode 100644 index 0000000..9d970329 --- /dev/null +++ b/third_party/blink/public/mojom/serial/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Serial" +}
diff --git a/third_party/blink/public/mojom/serial/OWNERS b/third_party/blink/public/mojom/serial/OWNERS index c0b9eb3..22664e2 100644 --- a/third_party/blink/public/mojom/serial/OWNERS +++ b/third_party/blink/public/mojom/serial/OWNERS
@@ -2,5 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Blink>Serial
diff --git a/third_party/blink/public/mojom/service_worker/DIR_METADATA b/third_party/blink/public/mojom/service_worker/DIR_METADATA new file mode 100644 index 0000000..2a951d09 --- /dev/null +++ b/third_party/blink/public/mojom/service_worker/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>ServiceWorker" +} + +team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/service_worker/OWNERS b/third_party/blink/public/mojom/service_worker/OWNERS index 4a73d48..ee69071 100644 --- a/third_party/blink/public/mojom/service_worker/OWNERS +++ b/third_party/blink/public/mojom/service_worker/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: worker-dev@chromium.org -# COMPONENT: Blink>ServiceWorker
diff --git a/third_party/blink/public/mojom/speech/DIR_METADATA b/third_party/blink/public/mojom/speech/DIR_METADATA new file mode 100644 index 0000000..49120a8 --- /dev/null +++ b/third_party/blink/public/mojom/speech/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Speech" +}
diff --git a/third_party/blink/public/mojom/speech/OWNERS b/third_party/blink/public/mojom/speech/OWNERS index f77acd5..81e6580 100644 --- a/third_party/blink/public/mojom/speech/OWNERS +++ b/third_party/blink/public/mojom/speech/OWNERS
@@ -1,6 +1,5 @@ file://third_party/blink/renderer/modules/speech/OWNERS -# COMPONENT: Blink>Speech per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/timing/DIR_METADATA b/third_party/blink/public/mojom/timing/DIR_METADATA new file mode 100644 index 0000000..8f13e49 --- /dev/null +++ b/third_party/blink/public/mojom/timing/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>PerformanceAPIs" +} + +team_email: "speed-metrics-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/timing/OWNERS b/third_party/blink/public/mojom/timing/OWNERS index 515417f..d1cdb51 100644 --- a/third_party/blink/public/mojom/timing/OWNERS +++ b/third_party/blink/public/mojom/timing/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: speed-metrics-dev@chromium.org -# COMPONENT: Blink>PerformanceAPIs
diff --git a/third_party/blink/public/mojom/use_counter/DIR_METADATA b/third_party/blink/public/mojom/use_counter/DIR_METADATA new file mode 100644 index 0000000..4e651aa --- /dev/null +++ b/third_party/blink/public/mojom/use_counter/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>UseCounter" +}
diff --git a/third_party/blink/public/mojom/use_counter/OWNERS b/third_party/blink/public/mojom/use_counter/OWNERS index 7f417e2..5c903121 100644 --- a/third_party/blink/public/mojom/use_counter/OWNERS +++ b/third_party/blink/public/mojom/use_counter/OWNERS
@@ -1,6 +1,5 @@ dcheng@chromium.org -# COMPONENT: Blink>UseCounter per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/webaudio/DIR_METADATA b/third_party/blink/public/mojom/webaudio/DIR_METADATA new file mode 100644 index 0000000..1ee4b38 --- /dev/null +++ b/third_party/blink/public/mojom/webaudio/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>WebAudio" +}
diff --git a/third_party/blink/public/mojom/webaudio/OWNERS b/third_party/blink/public/mojom/webaudio/OWNERS index c7c1217..3b422b9 100644 --- a/third_party/blink/public/mojom/webaudio/OWNERS +++ b/third_party/blink/public/mojom/webaudio/OWNERS
@@ -1,6 +1,5 @@ file://third_party/blink/renderer/modules/webaudio/OWNERS -# COMPONENT: Blink>WebAudio per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/webid/DIR_METADATA b/third_party/blink/public/mojom/webid/DIR_METADATA new file mode 100644 index 0000000..b36c62f --- /dev/null +++ b/third_party/blink/public/mojom/webid/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>Identity>WebID" +}
diff --git a/third_party/blink/public/mojom/webid/OWNERS b/third_party/blink/public/mojom/webid/OWNERS index 4002434..6072afc2 100644 --- a/third_party/blink/public/mojom/webid/OWNERS +++ b/third_party/blink/public/mojom/webid/OWNERS
@@ -2,5 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# COMPONENT: Blink>Identity>WebID
diff --git a/third_party/blink/public/mojom/websockets/DIR_METADATA b/third_party/blink/public/mojom/websockets/DIR_METADATA new file mode 100644 index 0000000..8b8ad92 --- /dev/null +++ b/third_party/blink/public/mojom/websockets/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Network>WebSockets" +} + +team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/websockets/OWNERS b/third_party/blink/public/mojom/websockets/OWNERS index 6c91416..71ec867 100644 --- a/third_party/blink/public/mojom/websockets/OWNERS +++ b/third_party/blink/public/mojom/websockets/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: blink-network-dev@chromium.org -# COMPONENT: Blink>Network>WebSockets
diff --git a/third_party/blink/public/mojom/webtransport/DIR_METADATA b/third_party/blink/public/mojom/webtransport/DIR_METADATA new file mode 100644 index 0000000..6957d2b --- /dev/null +++ b/third_party/blink/public/mojom/webtransport/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Network>WebTransport" +} + +team_email: "blink-network-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/webtransport/OWNERS b/third_party/blink/public/mojom/webtransport/OWNERS index 66a4bcf..d33f8c2 100644 --- a/third_party/blink/public/mojom/webtransport/OWNERS +++ b/third_party/blink/public/mojom/webtransport/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: blink-network-dev@chromium.org -# COMPONENT: Blink>Network>WebTransport
diff --git a/third_party/blink/public/mojom/worker/DIR_METADATA b/third_party/blink/public/mojom/worker/DIR_METADATA new file mode 100644 index 0000000..bb57713 --- /dev/null +++ b/third_party/blink/public/mojom/worker/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Worker" +} + +team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/public/mojom/worker/OWNERS b/third_party/blink/public/mojom/worker/OWNERS index e1abbf3..71ec867 100644 --- a/third_party/blink/public/mojom/worker/OWNERS +++ b/third_party/blink/public/mojom/worker/OWNERS
@@ -2,6 +2,3 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS - -# TEAM: worker-dev@chromium.org -# COMPONENT: Blink>Worker
diff --git a/third_party/blink/public/platform/audio/DIR_METADATA b/third_party/blink/public/platform/audio/DIR_METADATA new file mode 100644 index 0000000..6667e7f --- /dev/null +++ b/third_party/blink/public/platform/audio/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Media" +}
diff --git a/third_party/blink/public/platform/audio/OWNERS b/third_party/blink/public/platform/audio/OWNERS index ca9ce93..82178fe4 100644 --- a/third_party/blink/public/platform/audio/OWNERS +++ b/third_party/blink/public/platform/audio/OWNERS
@@ -1,3 +1 @@ file://content/renderer/media/OWNERS - -# COMPONENT: Internals>Media
diff --git a/third_party/blink/public/platform/modules/mediastream/DIR_METADATA b/third_party/blink/public/platform/modules/mediastream/DIR_METADATA new file mode 100644 index 0000000..066f18a --- /dev/null +++ b/third_party/blink/public/platform/modules/mediastream/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>GetUserMedia" +} + +team_email: "webrtc-dev@chromium.org"
diff --git a/third_party/blink/public/platform/modules/mediastream/OWNERS b/third_party/blink/public/platform/modules/mediastream/OWNERS index 32889cc..b99ae05 100644 --- a/third_party/blink/public/platform/modules/mediastream/OWNERS +++ b/third_party/blink/public/platform/modules/mediastream/OWNERS
@@ -1,6 +1,3 @@ file://third_party/blink/common/mediastream/OWNERS per-file media_stream_audio_processor*=aluebs@chromium.org - -# TEAM: webrtc-dev@chromium.org -# COMPONENT: Blink>GetUserMedia
diff --git a/third_party/blink/public/platform/modules/service_worker/DIR_METADATA b/third_party/blink/public/platform/modules/service_worker/DIR_METADATA new file mode 100644 index 0000000..2a951d09 --- /dev/null +++ b/third_party/blink/public/platform/modules/service_worker/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>ServiceWorker" +} + +team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/public/platform/modules/service_worker/OWNERS b/third_party/blink/public/platform/modules/service_worker/OWNERS index 299b6b92..245436a 100644 --- a/third_party/blink/public/platform/modules/service_worker/OWNERS +++ b/third_party/blink/public/platform/modules/service_worker/OWNERS
@@ -1,4 +1 @@ file://content/browser/service_worker/OWNERS - -# TEAM: worker-dev@chromium.org -# COMPONENT: Blink>ServiceWorker
diff --git a/third_party/blink/public/platform/modules/webrtc/DIR_METADATA b/third_party/blink/public/platform/modules/webrtc/DIR_METADATA new file mode 100644 index 0000000..66cc019 --- /dev/null +++ b/third_party/blink/public/platform/modules/webrtc/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Blink>WebRTC" +}
diff --git a/third_party/blink/public/platform/modules/webrtc/OWNERS b/third_party/blink/public/platform/modules/webrtc/OWNERS index d0ee8c1..b0729454 100644 --- a/third_party/blink/public/platform/modules/webrtc/OWNERS +++ b/third_party/blink/public/platform/modules/webrtc/OWNERS
@@ -7,5 +7,3 @@ sergeyu@chromium.org per-file rtc_video_*=file://media/gpu/OWNERS - -# COMPONENT: Blink>WebRTC
diff --git a/third_party/blink/public/platform/scheduler/DIR_METADATA b/third_party/blink/public/platform/scheduler/DIR_METADATA new file mode 100644 index 0000000..66a9685 --- /dev/null +++ b/third_party/blink/public/platform/scheduler/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>Scheduling" +} + +team_email: "scheduler-dev@chromium.org"
diff --git a/third_party/blink/public/platform/scheduler/OWNERS b/third_party/blink/public/platform/scheduler/OWNERS index db4cdc19..6f83df0f 100644 --- a/third_party/blink/public/platform/scheduler/OWNERS +++ b/third_party/blink/public/platform/scheduler/OWNERS
@@ -1,4 +1 @@ file://third_party/blink/renderer/platform/scheduler/OWNERS - -# TEAM: scheduler-dev@chromium.org -# COMPONENT: Blink>Scheduling
diff --git a/third_party/blink/public/strings/translations/blink_strings_bn.xtb b/third_party/blink/public/strings/translations/blink_strings_bn.xtb index 3cfdee94..6d3e705 100644 --- a/third_party/blink/public/strings/translations/blink_strings_bn.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_bn.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">'<ph name="ATSIGN" />' অনুসরণ করে একটি অংশ লিখুন৷ '<ph name="INVALIDADDRESS" />' অসম্পূর্ণ৷</translation> <translation id="5334352251556557839">মিডিয়া চালানো যাচ্ছে না।</translation> <translation id="537648784377940524">আগের তারিখ (<ph name="MIN_DATE_OR_TIME" />) অবশ্যই পরের তারিখের (<ph name="MAX_DATE_OR_TIME" />) আগে লিখতে হবে।</translation> +<translation id="5378437566635403538">বড় করা হয়েছে, ডায়ালগ খোলা হয়েছে।</translation> <translation id="5406322316791861025">আকার</translation> <translation id="5425179576310518467">বর্তমান তারিখ</translation> <translation id="5453733299334684579">ট্রি আইটেম</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">আরও বিকল্প</translation> <translation id="576709008726043716">পরিচয়</translation> <translation id="57838592816432529">মিউট করুন</translation> +<translation id="5787939484346677755">বড় করা হয়েছে, অটোমেটিক সম্পূর্ণ করার বিকল্প উপলভ্য আছে।</translation> <translation id="5860033963881614850">বন্ধ করুন</translation> <translation id="588258955323874662">সম্পূর্নস্ক্রীণ</translation> <translation id="5888666972993069672"><ph name="DEVICE_FRIENDLY_NAME" /> এ কাস্ট করা হচ্ছে</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">তালিকা বাক্স</translation> <translation id="6150588977291308318">বিবলিওগ্রাফি</translation> <translation id="6164829606128959761">মিটার</translation> +<translation id="6165053282446038410">বড় করা হয়েছে, <ph name="COUNT" />টি অটোমেটিক সম্পূর্ণ করার বিকল্প উপলভ্য আছে।</translation> <translation id="6166809985690652833">পরিশিষ্ট</translation> <translation id="6209276755895393898">মনে হচ্ছে: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">বর্তমান পৃষ্ঠা</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">হেডার</translation> <translation id="6941933287844615239">মিডিয়া ডাউনলোড করুন</translation> <translation id="6981594929165378967">যোগ করা হচ্ছে</translation> +<translation id="698788488269350478">বড় করা হয়েছে।</translation> <translation id="6989848892321993519">দয়া করে এই পাঠ্যকে ন্যূনতম <ph name="MIN_CHARACTERS" /> অক্ষরের বা তার বেশি দৈর্ঘ্যের করুন (আপনি বর্তমানে ১টি অক্ষর ব্যবহার করেছেন)।</translation> <translation id="7034405885550056553">সাজেশন</translation> <translation id="709897737746224366">দয়া করে অনুরোধ হওয়া বিন্যাসটি মেলান৷</translation> <translation id="7102274145889307184">বর্তমান লোকেশন</translation> <translation id="7118469954320184356">কোনও বিবরণ নেই।</translation> <translation id="7139483182332611405">মুখবন্ধ</translation> +<translation id="7198226213493847604">পপ-আপ মেনু খোলার বোতাম</translation> <translation id="7214187073215825913">কন্টেন্টের তথ্য</translation> <translation id="7238347055216017155">জোর দেওয়া</translation> <translation id="7263440858009898357">তালিকা থেকে একটি আইটেম নির্বাচন করুন৷ </translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">অধ্যায়</translation> <translation id="8845239796550121995">এখন আপনার TV তে কাস্ট করা হচ্ছে</translation> <translation id="8851136666856101339">প্রধান</translation> +<translation id="8861621546968757188">পপ-আপ ডায়ালগ খোলার বোতাম</translation> <translation id="8875657656876809964">ভিডিও প্লেব্যাকে সমস্যা</translation> <translation id="8889402386540077796">রঙ বিন্যাস</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> কেবি</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_bs.xtb b/third_party/blink/public/strings/translations/blink_strings_bs.xtb index 8f71ba54..caebed5 100644 --- a/third_party/blink/public/strings/translations/blink_strings_bs.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_bs.xtb
@@ -151,7 +151,7 @@ <translation id="5307600278924710095">Unesite dio adrese ispred znaka "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" nije potpuna e-adresa.</translation> <translation id="5334352251556557839">Nije moguće reproducirati medijski sadržaj.</translation> <translation id="537648784377940524">Najraniji datum (<ph name="MIN_DATE_OR_TIME" />) mora doći prije najkasnijeg datuma (<ph name="MAX_DATE_OR_TIME" />).</translation> -<translation id="5378437566635403538">prošireno, dijalog je otvoren.</translation> +<translation id="5378437566635403538">prošireno, dijaloški okvir je otvoren.</translation> <translation id="5406322316791861025">cifra</translation> <translation id="5425179576310518467">trenutni datum</translation> <translation id="5453733299334684579">stavka stabla</translation> @@ -168,7 +168,7 @@ <translation id="5677946354068040947">više opcija</translation> <translation id="576709008726043716">uvod</translation> <translation id="57838592816432529">Isključi zvuk</translation> -<translation id="5787939484346677755">prošireno, dostupne su opcije samodovršavanja.</translation> +<translation id="5787939484346677755">prošireno, dostupne su opcije automatskog popunjavanja.</translation> <translation id="5860033963881614850">Isklj.</translation> <translation id="588258955323874662">Cijeli ekran</translation> <translation id="5888666972993069672">Sada se emitira na uređaj <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -182,7 +182,7 @@ <translation id="6023896073578205740">okvir s listom</translation> <translation id="6150588977291308318">bibliografija</translation> <translation id="6164829606128959761">metar</translation> -<translation id="6165053282446038410">prošireno, dostupan je sljedeći broj opcija samodovršavanja: <ph name="COUNT" />.</translation> +<translation id="6165053282446038410">prošireno, broj dostupnih opcija automatskog popunjavanja: <ph name="COUNT" />.</translation> <translation id="6166809985690652833">pogovor</translation> <translation id="6209276755895393898">Čini se da je ovo: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">trenutna stranica</translation> @@ -217,14 +217,14 @@ <translation id="693476918119313863">zaglavlje</translation> <translation id="6941933287844615239">preuzmi medije</translation> <translation id="6981594929165378967">umetanje</translation> -<translation id="698788488269350478">proširen.</translation> +<translation id="698788488269350478">prošireno.</translation> <translation id="6989848892321993519">Produžite ovaj tekst tako da broj znakova bude najmanje <ph name="MIN_CHARACTERS" /> (trenutno koristite 1 znak).</translation> <translation id="7034405885550056553">prijedlog</translation> <translation id="709897737746224366">Udovoljite zadanom formatu.</translation> <translation id="7102274145889307184">trenutna lokacija</translation> <translation id="7118469954320184356">Nema opisa.</translation> <translation id="7139483182332611405">predgovor</translation> -<translation id="7198226213493847604">skočni gumb izbornika</translation> +<translation id="7198226213493847604">skočno dugme menija</translation> <translation id="7214187073215825913">informacije o sadržaju</translation> <translation id="7238347055216017155">isticanje</translation> <translation id="7263440858009898357">Odaberite stavku s liste.</translation> @@ -292,7 +292,7 @@ <translation id="8808573423886751634">poglavlje</translation> <translation id="8845239796550121995">Sada se emitira na vaš TV</translation> <translation id="8851136666856101339">glavni</translation> -<translation id="8861621546968757188">skočni gumb dijaloga</translation> +<translation id="8861621546968757188">dugme za skočni dijaloški okvir</translation> <translation id="8875657656876809964">Greška u reprodukciji videozapisa</translation> <translation id="8889402386540077796">Nijansa</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_eu.xtb b/third_party/blink/public/strings/translations/blink_strings_eu.xtb index 70851c9..f1a5f23 100644 --- a/third_party/blink/public/strings/translations/blink_strings_eu.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_eu.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Idatzi zati bat eta, ondoren, "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" ez dago osorik.</translation> <translation id="5334352251556557839">Ezin da erreproduzitu multimedia-edukia.</translation> <translation id="537648784377940524">Gutxieneko datak (<ph name="MIN_DATE_OR_TIME" />) gehienekoaren aurrekoa izan behar du (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">zabalduta, leihoa ireki egin da.</translation> <translation id="5406322316791861025">zenbakia</translation> <translation id="5425179576310518467">une honetako data</translation> <translation id="5453733299334684579">zuhaitzeko elementua</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">aukera gehiago</translation> <translation id="576709008726043716">sarrera</translation> <translation id="57838592816432529">Desaktibatu audioa</translation> +<translation id="5787939484346677755">zabalduta, automatikoki osatzeko aukerak daude.</translation> <translation id="5860033963881614850">Desaktibatuta</translation> <translation id="588258955323874662">Pantaila osoa</translation> <translation id="5888666972993069672"><ph name="DEVICE_FRIENDLY_NAME" /> gailura igortzen</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">zerrenda-koadroa</translation> <translation id="6150588977291308318">bibliografia</translation> <translation id="6164829606128959761">neurgailua</translation> +<translation id="6165053282446038410">zabalduta, automatikoki osatzeko <ph name="COUNT" /> aukera daude.</translation> <translation id="6166809985690652833">hitzatzea</translation> <translation id="6209276755895393898">Badirudi hau dela: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">une honetako orria</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">goiburua</translation> <translation id="6941933287844615239">deskargatu multimedia-edukia</translation> <translation id="6981594929165378967">txertatzea</translation> +<translation id="698788488269350478">zabalduta.</translation> <translation id="6989848892321993519">Luzatu testua <ph name="MIN_CHARACTERS" /> karaktere izan ditzan gutxienez (1 karaktere erabiltzen ari zara).</translation> <translation id="7034405885550056553">iradokizuna</translation> <translation id="709897737746224366">Erabili eskatutako formatua.</translation> <translation id="7102274145889307184">uneko kokapena</translation> <translation id="7118469954320184356">Ez dago azalpenik erabilgarri.</translation> <translation id="7139483182332611405">atarikoa</translation> +<translation id="7198226213493847604">menuaren leiho gainerakorraren botoia</translation> <translation id="7214187073215825913">edukiari buruzko informazioa</translation> <translation id="7238347055216017155">nabarmentzea</translation> <translation id="7263440858009898357">Hautatu zerrendako elementu bat.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">atala</translation> <translation id="8845239796550121995">Telebistara ari da igortzen edukia</translation> <translation id="8851136666856101339">nagusia</translation> +<translation id="8861621546968757188">Leiho gainerakorraren botoia</translation> <translation id="8875657656876809964">Bideoaren erreprodukzio-errorea</translation> <translation id="8889402386540077796">Ñabardura</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fa.xtb b/third_party/blink/public/strings/translations/blink_strings_fa.xtb index f11dbef6..0f5e106 100644 --- a/third_party/blink/public/strings/translations/blink_strings_fa.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_fa.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">لطفاً قسمت قبل از «<ph name="ATSIGN" />» را وارد کنید. «<ph name="INVALIDADDRESS" />» ناقص است.</translation> <translation id="5334352251556557839">رسانه پخش نشد.</translation> <translation id="537648784377940524">حداقل تاریخ (<ph name="MIN_DATE_OR_TIME" />) باید قبل از حداکثر تاریخ باشد (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">گسترده شد، کادر گفتگو باز شد.</translation> <translation id="5406322316791861025">شکل</translation> <translation id="5425179576310518467">تاریخ کنونی</translation> <translation id="5453733299334684579">مورد درختی</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">گزینههای بیشتر</translation> <translation id="576709008726043716">مقدمه</translation> <translation id="57838592816432529">بیصدا کردن</translation> +<translation id="5787939484346677755">گسترده شد، گزینههای تکمیل خودکار دردسترس است.</translation> <translation id="5860033963881614850">خاموش</translation> <translation id="588258955323874662">تمام صفحه</translation> <translation id="5888666972993069672">درحال ارسال محتوا به <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">کادر فهرست</translation> <translation id="6150588977291308318">فهرست منابع</translation> <translation id="6164829606128959761">متر</translation> +<translation id="6165053282446038410">گسترده شد، <ph name="COUNT" /> گزینه تکمیل خودکار دردسترس است.</translation> <translation id="6166809985690652833">سخن پایانی</translation> <translation id="6209276755895393898">بهنظر میرسد <ph name="DESCRIPTION" /> باشد</translation> <translation id="6212595056017402527">صفحه کنونی</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">سرصفحه</translation> <translation id="6941933287844615239">بارگیری رسانه</translation> <translation id="6981594929165378967">درج</translation> +<translation id="698788488269350478">گسترده شد.</translation> <translation id="6989848892321993519">لطفاً این نوشتار را به <ph name="MIN_CHARACTERS" /> نویسه یا بیشتر افزایش دهید (درحالحاضر از ۱ نویسه استفاده میکنید).</translation> <translation id="7034405885550056553">پیشنهاد</translation> <translation id="709897737746224366">لطفاً با قالب درخواستی مطابقت دهید.</translation> <translation id="7102274145889307184">مکان کنونی</translation> <translation id="7118469954320184356">توضیحی دردسترس نیست.</translation> <translation id="7139483182332611405">پیشگفتار</translation> +<translation id="7198226213493847604">دکمه بالاپر منو</translation> <translation id="7214187073215825913">اطلاعات محتوا</translation> <translation id="7238347055216017155">تأکید</translation> <translation id="7263440858009898357">لطفاً یک مورد را در فهرست انتخاب کنید.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">فصل</translation> <translation id="8845239796550121995">درحال ارسال محتوا به تلویزیون</translation> <translation id="8851136666856101339">اصلی</translation> +<translation id="8861621546968757188">دکمه بالاپر کادر گفتگو</translation> <translation id="8875657656876809964">خطا در بازپخش ویدئو</translation> <translation id="8889402386540077796">رنگمایه</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> کیلوبایت</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fi.xtb b/third_party/blink/public/strings/translations/blink_strings_fi.xtb index 92b9d1cc..d7a6ef4e 100644 --- a/third_party/blink/public/strings/translations/blink_strings_fi.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_fi.xtb
@@ -168,7 +168,7 @@ <translation id="5677946354068040947">lisäasetukset</translation> <translation id="576709008726043716">johdanto</translation> <translation id="57838592816432529">Mykistä</translation> -<translation id="5787939484346677755">laajennettu, automaattista täydennysehdotusta saatavilla.</translation> +<translation id="5787939484346677755">laajennettu, automaattisia täydennysehdotuksia saatavilla.</translation> <translation id="5860033963881614850">Pois päältä</translation> <translation id="588258955323874662">Koko ruutu</translation> <translation id="5888666972993069672">Katsotaan TV:stä <ph name="DEVICE_FRIENDLY_NAME" /></translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb b/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb index d3d82579..f4d26a3b 100644 --- a/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Veuillez entrer la partie manquante avant le caractère « <ph name="ATSIGN" /> ». L'adresse « <ph name="INVALIDADDRESS" /> » est incomplète.</translation> <translation id="5334352251556557839">Impossible de faire jouer le média.</translation> <translation id="537648784377940524">La date minimale (<ph name="MIN_DATE_OR_TIME" />) doit être antérieure à la date maximale (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">développé, boîte de dialogue ouverte.</translation> <translation id="5406322316791861025">figure</translation> <translation id="5425179576310518467">Date actuelle</translation> <translation id="5453733299334684579">élément d'arborescence</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">autres options</translation> <translation id="576709008726043716">introduction</translation> <translation id="57838592816432529">Désactiver le son</translation> +<translation id="5787939484346677755">développé, des options de saisie semi-automatique sont proposées.</translation> <translation id="5860033963881614850">Désactivé</translation> <translation id="588258955323874662">Plein écran</translation> <translation id="5888666972993069672">Diffusion sur <ph name="DEVICE_FRIENDLY_NAME" /> en cours…</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">zone de liste</translation> <translation id="6150588977291308318">bibliographie</translation> <translation id="6164829606128959761">outil de mesure</translation> +<translation id="6165053282446038410">développé, <ph name="COUNT" /> options de saisie semi-automatique sont proposées.</translation> <translation id="6166809985690652833">postface</translation> <translation id="6209276755895393898">L'image semble être : <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">Page actuelle</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">en-tête</translation> <translation id="6941933287844615239">télécharger des commandes multimédias</translation> <translation id="6981594929165378967">insertion</translation> +<translation id="698788488269350478">développé.</translation> <translation id="6989848892321993519">Veuillez allonger ce texte de manière à ce qu'il comporte au moins <ph name="MIN_CHARACTERS" /> caractères (votre texte compte actuellement 1 caractère).</translation> <translation id="7034405885550056553">suggestion</translation> <translation id="709897737746224366">Veuillez respecter le format demandé.</translation> <translation id="7102274145889307184">Position actuelle</translation> <translation id="7118469954320184356">Aucune description.</translation> <translation id="7139483182332611405">préface</translation> +<translation id="7198226213493847604">bouton contextuel du menu</translation> <translation id="7214187073215825913">renseignements relatifs au contenu</translation> <translation id="7238347055216017155">accentuation</translation> <translation id="7263440858009898357">Veuillez sélectionner un élément dans la liste.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">chapitre</translation> <translation id="8845239796550121995">Diffusion sur votre téléviseur en cours…</translation> <translation id="8851136666856101339">principal</translation> +<translation id="8861621546968757188">bouton contextuel de la fenêtre de dialogue</translation> <translation id="8875657656876809964">Erreur de lecture de la vidéo</translation> <translation id="8889402386540077796">Teinte</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> ko</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_gl.xtb b/third_party/blink/public/strings/translations/blink_strings_gl.xtb index e270a06..cf461af3 100644 --- a/third_party/blink/public/strings/translations/blink_strings_gl.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_gl.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Introduce algo seguido de "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" está incompleto.</translation> <translation id="5334352251556557839">Non se puido reproducir o contido multimedia.</translation> <translation id="537648784377940524">O valor da data mínima (<ph name="MIN_DATE_OR_TIME" />) debe ser anterior á máxima (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">despregouse. Abriuse un cadro de diálogo.</translation> <translation id="5406322316791861025">cifra</translation> <translation id="5425179576310518467">data actual</translation> <translation id="5453733299334684579">elemento da árbore</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">máis opcións</translation> <translation id="576709008726043716">introdución</translation> <translation id="57838592816432529">Silenciar</translation> +<translation id="5787939484346677755">despregouse. Hai opcións de completado automático dispoñibles.</translation> <translation id="5860033963881614850">Non</translation> <translation id="588258955323874662">Pantalla completa</translation> <translation id="5888666972993069672">O vídeo estase emitindo agora en <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">caixa de lista</translation> <translation id="6150588977291308318">bibliografía</translation> <translation id="6164829606128959761">medidor</translation> +<translation id="6165053282446038410">despregouse. Hai <ph name="COUNT" /> opcións de completado automático dispoñibles.</translation> <translation id="6166809985690652833">epílogo</translation> <translation id="6209276755895393898">Parece "<ph name="DESCRIPTION" />"</translation> <translation id="6212595056017402527">páxina actual</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">cabeceira</translation> <translation id="6941933287844615239">descargar contido multimedia</translation> <translation id="6981594929165378967">inserción</translation> +<translation id="698788488269350478">despregouse.</translation> <translation id="6989848892321993519">Amplía este texto a <ph name="MIN_CHARACTERS" /> caracteres ou máis. Actualmente estás utilizando 1 carácter.</translation> <translation id="7034405885550056553">suxestión</translation> <translation id="709897737746224366">Utiliza un formato que coincida co solicitado.</translation> <translation id="7102274145889307184">localización actual</translation> <translation id="7118469954320184356">Non hai ningunha descrición dispoñible.</translation> <translation id="7139483182332611405">prefacio</translation> +<translation id="7198226213493847604">botón emerxente de menú</translation> <translation id="7214187073215825913">información sobre o contido</translation> <translation id="7238347055216017155">énfase</translation> <translation id="7263440858009898357">Selecciona un elemento da lista.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">capítulo</translation> <translation id="8845239796550121995">Agora estase emitindo contido na túa televisión</translation> <translation id="8851136666856101339">principal</translation> +<translation id="8861621546968757188">botón emerxente de cadro de diálogo</translation> <translation id="8875657656876809964">Erro de reprodución do vídeo</translation> <translation id="8889402386540077796">Tonalidade</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hy.xtb b/third_party/blink/public/strings/translations/blink_strings_hy.xtb index 27fd0df6..6e8b4c4 100644 --- a/third_party/blink/public/strings/translations/blink_strings_hy.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_hy.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Մուտքագրեք «<ph name="ATSIGN" />»-ին հաջորդող մասը: «<ph name="INVALIDADDRESS" />»-ը թերի է:</translation> <translation id="5334352251556557839">Չհաջողվեց նվագարկել մեդիա ֆայլը:</translation> <translation id="537648784377940524">Նվազագույն ամսաթիվը (<ph name="MIN_DATE_OR_TIME" />) պետք է լինի առավելագույն ամսաթվից առաջ (<ph name="MAX_DATE_OR_TIME" />)։</translation> +<translation id="5378437566635403538">ծավալվեց, երկխոսության պատուհանը բացվեց։</translation> <translation id="5406322316791861025">պատկեր</translation> <translation id="5425179576310518467">ընթացիկ ամսաթիվը</translation> <translation id="5453733299334684579">ծառի տարր</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">լրացուցիչ ընտրանքներ</translation> <translation id="576709008726043716">ներածություն</translation> <translation id="57838592816432529">Անջատել ձայնը</translation> +<translation id="5787939484346677755">ծավալվեց, հասանելի են ինքնալրացման տարբերակներ։</translation> <translation id="5860033963881614850">Անջատ.</translation> <translation id="588258955323874662">Լիաէկրան</translation> <translation id="5888666972993069672">Հեռարձակում <ph name="DEVICE_FRIENDLY_NAME" /> սարքին</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">ցուցակ</translation> <translation id="6150588977291308318">բիբլիոգրաֆիա</translation> <translation id="6164829606128959761">հաշվիչ</translation> +<translation id="6165053282446038410">ծավալվեց, հասանելի է ինքնալրացման <ph name="COUNT" /> տարբերակ։</translation> <translation id="6166809985690652833">հետգրություն</translation> <translation id="6209276755895393898">Կարող է լինել՝ <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">ընթացիկ էջը</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">վերնագիր</translation> <translation id="6941933287844615239">ներբեռնել ֆայլը</translation> <translation id="6981594929165378967">զետեղում</translation> +<translation id="698788488269350478">ծավալվեց։</translation> <translation id="6989848892321993519">Տեքստը <ph name="MIN_CHARACTERS" /> գրանշանից պակաս չի կարող լինել (ներկայումս 1 գրանշան է)։</translation> <translation id="7034405885550056553">առաջարկ</translation> <translation id="709897737746224366">Հետևեք պահանջված ձևաչափին:</translation> <translation id="7102274145889307184">ընթացիկ տեղադրությունը</translation> <translation id="7118469954320184356">Նկարագրություն չկա:</translation> <translation id="7139483182332611405">ներածական</translation> +<translation id="7198226213493847604">ընտրացանկի ենող պատուհանի կոճակ</translation> <translation id="7214187073215825913">տեղեկություններ բովանդակության մասին</translation> <translation id="7238347055216017155">ընդգծում</translation> <translation id="7263440858009898357">Ցանկից որևէ միավոր ընտրեք:</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">գլուխ</translation> <translation id="8845239796550121995">Հեռարձակվում է հեռուստացույցին</translation> <translation id="8851136666856101339">main</translation> +<translation id="8861621546968757188">երկխոսության ելնող պատուհանի կոճակ</translation> <translation id="8875657656876809964">Տեսանյութի նվագարկման սխալ</translation> <translation id="8889402386540077796">Երանգ</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> ԿԲ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_is.xtb b/third_party/blink/public/strings/translations/blink_strings_is.xtb index 6c6d072d..e53d47d0 100644 --- a/third_party/blink/public/strings/translations/blink_strings_is.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_is.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Sláðu inn hluta og síðan „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ er ólokið.</translation> <translation id="5334352251556557839">Ekki er hægt að spila efni.</translation> <translation id="537648784377940524">Lágmarksdagsetning (<ph name="MIN_DATE_OR_TIME" />) verður að vera á undan hámarksdagsetningu (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">stækkað, gluggi opnaður.</translation> <translation id="5406322316791861025">mynd</translation> <translation id="5425179576310518467">núverandi dagsetning</translation> <translation id="5453733299334684579">trjáatriði</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">fleiri valkostir</translation> <translation id="576709008726043716">inngangur</translation> <translation id="57838592816432529">Þagga</translation> +<translation id="5787939484346677755">stækkað, möguleikar sjálfvirkrar útfyllingar í boði.</translation> <translation id="5860033963881614850">Slökkt</translation> <translation id="588258955323874662">Allur skjárinn</translation> <translation id="5888666972993069672">Sendir út á <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">listareitur</translation> <translation id="6150588977291308318">heimildaskrá</translation> <translation id="6164829606128959761">mælir</translation> +<translation id="6165053282446038410">stækkað, <ph name="COUNT" /> möguleikar sjálfvirkrar útfyllingar í boði.</translation> <translation id="6166809985690652833">eftirmáli</translation> <translation id="6209276755895393898">Virðist vera: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">núverandi síða</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">haus</translation> <translation id="6941933287844615239">sækja miðlaefni</translation> <translation id="6981594929165378967">innsetning</translation> +<translation id="698788488269350478">stækkað.</translation> <translation id="6989848892321993519">Lengdu þennan texta í <ph name="MIN_CHARACTERS" /> stafi eða meira (sem stendur notarðu einn staf).</translation> <translation id="7034405885550056553">tillaga</translation> <translation id="709897737746224366">Fylgdu umbeðnu sniði.</translation> <translation id="7102274145889307184">núverandi staðsetning</translation> <translation id="7118469954320184356">Engin lýsing tiltæk.</translation> <translation id="7139483182332611405">formáli</translation> +<translation id="7198226213493847604">sprettigluggahnappur valmyndar</translation> <translation id="7214187073215825913">upplýsingar um efni</translation> <translation id="7238347055216017155">áhersla</translation> <translation id="7263440858009898357">Veldu atriði af listanum.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">kafli</translation> <translation id="8845239796550121995">Sendir nú út í sjónvarpið</translation> <translation id="8851136666856101339">aðal</translation> +<translation id="8861621546968757188">sprettigluggahnappur</translation> <translation id="8875657656876809964">Villa í spilun myndskeiðs</translation> <translation id="8889402386540077796">Litblær</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_it.xtb b/third_party/blink/public/strings/translations/blink_strings_it.xtb index 539317b..71ded15 100644 --- a/third_party/blink/public/strings/translations/blink_strings_it.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_it.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Inserisci una parte seguita da "<ph name="ATSIGN" />". Il valore "<ph name="INVALIDADDRESS" />" è incompleto.</translation> <translation id="5334352251556557839">Impossibile riprodurre i contenuti multimediali.</translation> <translation id="537648784377940524">Il termine minimo (<ph name="MIN_DATE_OR_TIME" />) deve essere precedente al termine massimo (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">espanso, finestra di dialogo aperta.</translation> <translation id="5406322316791861025">figura</translation> <translation id="5425179576310518467">data attuale</translation> <translation id="5453733299334684579">elemento albero</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">altre opzioni</translation> <translation id="576709008726043716">introduzione</translation> <translation id="57838592816432529">Disattiva audio</translation> +<translation id="5787939484346677755">espanso, opzioni di completamento automatico disponibili.</translation> <translation id="5860033963881614850">OFF</translation> <translation id="588258955323874662">Schermo intero</translation> <translation id="5888666972993069672">Trasmissione in corso a <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">casella di riepilogo</translation> <translation id="6150588977291308318">bibliografia</translation> <translation id="6164829606128959761">indicatore</translation> +<translation id="6165053282446038410">espanso, <ph name="COUNT" /> opzioni di completamento automatico disponibili.</translation> <translation id="6166809985690652833">postfazione</translation> <translation id="6209276755895393898">Sembra che sia: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">pagina attuale</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">intestazione</translation> <translation id="6941933287844615239">scarica contenuti multimediali</translation> <translation id="6981594929165378967">inserimento</translation> +<translation id="698788488269350478">espanso.</translation> <translation id="6989848892321993519">Prolunga questo testo a <ph name="MIN_CHARACTERS" /> o più caratteri (al momento stai utilizzando 1 carattere).</translation> <translation id="7034405885550056553">suggerimento</translation> <translation id="709897737746224366">Rispetta il formato richiesto.</translation> <translation id="7102274145889307184">posizione attuale</translation> <translation id="7118469954320184356">Descrizione non disponibile.</translation> <translation id="7139483182332611405">prefazione</translation> +<translation id="7198226213493847604">pulsante popup menu</translation> <translation id="7214187073215825913">informazioni sui contenuti</translation> <translation id="7238347055216017155">corsivo</translation> <translation id="7263440858009898357">Seleziona un elemento nell'elenco.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">capitolo</translation> <translation id="8845239796550121995">Ora in fase di trasmissione alla TV</translation> <translation id="8851136666856101339">main</translation> +<translation id="8861621546968757188">pulsante popup finestra di dialogo</translation> <translation id="8875657656876809964">Errore di riproduzione video</translation> <translation id="8889402386540077796">Tonalità</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_kk.xtb b/third_party/blink/public/strings/translations/blink_strings_kk.xtb index b082d1a..d2e5c2e0 100644 --- a/third_party/blink/public/strings/translations/blink_strings_kk.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_kk.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">"<ph name="ATSIGN" />" болып жалғасатын бөлікті енгізіңіз. "<ph name="INVALIDADDRESS" />" толық емес.</translation> <translation id="5334352251556557839">Медиафайл ойнатылмады.</translation> <translation id="537648784377940524">Минималды күн (<ph name="MIN_DATE_OR_TIME" />) максималды күннен (<ph name="MAX_DATE_OR_TIME" />) бұрын болуы тиіс.</translation> +<translation id="5378437566635403538">жайылды, диалогтік терезе ашылды.</translation> <translation id="5406322316791861025">пішін</translation> <translation id="5425179576310518467">ағымдағы күн</translation> <translation id="5453733299334684579">ағаш тәрізді элемент</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">басқа да опциялар</translation> <translation id="576709008726043716">кіріспе</translation> <translation id="57838592816432529">Дыбысын өшіру</translation> +<translation id="5787939484346677755">жайылды, автоматты толтыру опциялары қолжетімді.</translation> <translation id="5860033963881614850">Өшірулі</translation> <translation id="588258955323874662">Толық экран</translation> <translation id="5888666972993069672"><ph name="DEVICE_FRIENDLY_NAME" /> құрылғысына трансляциялануда</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">тізім терезесі</translation> <translation id="6150588977291308318">пайдаланылған әдебиеттер</translation> <translation id="6164829606128959761">өлшегіш құрал</translation> +<translation id="6165053282446038410">жайылды, <ph name="COUNT" /> автоматты толтыру опциялары қолжетімді.</translation> <translation id="6166809985690652833">соңғы сөз</translation> <translation id="6209276755895393898">Сурет сипаттамасы: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">ағымдағы бет</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">тақырып</translation> <translation id="6941933287844615239">мультимедиа файлын жүктеп алу</translation> <translation id="6981594929165378967">енгізу</translation> +<translation id="698788488269350478">жайылды.</translation> <translation id="6989848892321993519">Бұл мәтінді <ph name="MIN_CHARACTERS" /> немесе одан көп таңбаға дейін ұзартыңыз (әзірге 1 таңба пайдаланылған).</translation> <translation id="7034405885550056553">ұсыныс</translation> <translation id="709897737746224366">Сұралған пішімге сәйкес толтырыңыз.</translation> <translation id="7102274145889307184">ағымдағы орын</translation> <translation id="7118469954320184356">Сипаттамасы жоқ.</translation> <translation id="7139483182332611405">алғысөз</translation> +<translation id="7198226213493847604">мәзір терезесі түймесі</translation> <translation id="7214187073215825913">мазмұн туралы ақпарат</translation> <translation id="7238347055216017155">бөлектеу</translation> <translation id="7263440858009898357">Тізімдегі элементті таңдаңыз.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">тарау</translation> <translation id="8845239796550121995">Қазір теледидарға трансляциялануда</translation> <translation id="8851136666856101339">басты</translation> +<translation id="8861621546968757188">диалогтік терезе түймесі</translation> <translation id="8875657656876809964">Бейне ойнату қатесі</translation> <translation id="8889402386540077796">Реңкі</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> КБ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_kn.xtb b/third_party/blink/public/strings/translations/blink_strings_kn.xtb index 740e5dfc..14091057 100644 --- a/third_party/blink/public/strings/translations/blink_strings_kn.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_kn.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">'<ph name="ATSIGN" />' ನಂತರದ ಭಾಗವನ್ನು ನಮೂದಿಸಿ. '<ph name="INVALIDADDRESS" />' ಅಪೂರ್ಣವಾಗಿದೆ.</translation> <translation id="5334352251556557839">ಮೀಡಿಯಾ ಪ್ಲೇ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="537648784377940524">ಕನಿಷ್ಠ ದಿನಾಂಕವು (<ph name="MIN_DATE_OR_TIME" />) ಗರಿಷ್ಠ ದಿನಾಂಕ (<ph name="MAX_DATE_OR_TIME" />) ಕ್ಕಿಂತ ಮೊದಲು ಬರಬೇಕು.</translation> +<translation id="5378437566635403538">ವಿಸ್ತರಿಸಲಾಗಿದೆ, ಡೈಲಾಗ್ ತೆರೆಯಲಾಗಿದೆ.</translation> <translation id="5406322316791861025">ಆಕೃತಿ</translation> <translation id="5425179576310518467">ಪ್ರಸ್ತುತ ದಿನಾಂಕ</translation> <translation id="5453733299334684579">ಟ್ರೀ ಐಟಂ</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</translation> <translation id="576709008726043716">ಪರಿಚಯ</translation> <translation id="57838592816432529">ಮ್ಯೂಟ್</translation> +<translation id="5787939484346677755">ವಿಸ್ತರಿಸಲಾಗಿದೆ, ಸ್ವಯಂಪೂರ್ಣತೆ ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿವೆ.</translation> <translation id="5860033963881614850">ಆಫ್</translation> <translation id="588258955323874662">ಪೂರ್ಣಪರದೆ</translation> <translation id="5888666972993069672">ಈಗ <ph name="DEVICE_FRIENDLY_NAME" /> ಗೆ ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">ಪಟ್ಟಿಯ ಬಾಕ್ಸ್</translation> <translation id="6150588977291308318">ಗ್ರಂಥಸೂಚಿ</translation> <translation id="6164829606128959761">ಮೀಟರ್</translation> +<translation id="6165053282446038410">ವಿಸ್ತರಿಸಲಾಗಿದೆ, <ph name="COUNT" /> ಸ್ವಯಂ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿವೆ.</translation> <translation id="6166809985690652833">ನಂತರದ</translation> <translation id="6209276755895393898">ಹೀಗೆ ಕಾಣಿಸುತ್ತಿದೆ: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">ಪ್ರಸ್ತುತ ಪುಟ</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">ಶಿರೋಲೇಖ</translation> <translation id="6941933287844615239">ಮಾಧ್ಯಮ ಡೌನ್ಲೋಡ್</translation> <translation id="6981594929165378967">ಅಳವಡಿಕೆ</translation> +<translation id="698788488269350478">ವಿಸ್ತರಿಸಲಾಗಿದೆ.</translation> <translation id="6989848892321993519">ಈ ಪಠ್ಯವನ್ನು <ph name="MIN_CHARACTERS" /> ಅಥವಾ ಇದಕ್ಕಿಂತಲೂ ಹೆಚ್ಚಿನ ಅಕ್ಷರಗಳಿಗೆ ಉದ್ದಗೊಳಿಸಿ (ನೀವು ಪ್ರಸ್ತುತ 1 ಅಕ್ಷರಗಳನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ).</translation> <translation id="7034405885550056553">ಸಲಹೆ</translation> <translation id="709897737746224366">ದಯವಿಟ್ಟು ವಿನಂತಿಸಿದ ಸ್ವರೂಪವನ್ನು ಹೊಂದಿಸಿ.</translation> <translation id="7102274145889307184">ಪ್ರಸ್ತುತ ಸ್ಥಳ</translation> <translation id="7118469954320184356">ಯಾವುದೇ ವಿವರಣೆ ಲಭ್ಯವಿಲ್ಲ.</translation> <translation id="7139483182332611405">ಮುನ್ನುಡಿ</translation> +<translation id="7198226213493847604">ಮೆನು ಪಾಪ್-ಅಪ್ ಬಟನ್</translation> <translation id="7214187073215825913">ವಿಷಯದ ಮಾಹಿತಿ</translation> <translation id="7238347055216017155">ಎಂಫಸಿಸ್</translation> <translation id="7263440858009898357">ಪಟ್ಟಿಯಲ್ಲಿನ ಐಟಂ ಅನ್ನು ದಯವಿಟ್ಟು ಆಯ್ಕೆ ಮಾಡಿ.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">ಅಧ್ಯಾಯ</translation> <translation id="8845239796550121995">ಈಗ ನಿಮ್ಮ ಟಿವಿಯನ್ನು ಬಿತ್ತರಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="8851136666856101339">ಮುಖ್ಯ</translation> +<translation id="8861621546968757188">ಡೈಲಾಗ್ ಪಾಪ್-ಅಪ್ ಬಟನ್</translation> <translation id="8875657656876809964">ವೀಡಿಯೊ ಪ್ಲೇಬ್ಯಾಕ್ ದೋಷ</translation> <translation id="8889402386540077796">ವರ್ಣ</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ky.xtb b/third_party/blink/public/strings/translations/blink_strings_ky.xtb index 3c311c1..0f6d480e 100644 --- a/third_party/blink/public/strings/translations/blink_strings_ky.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_ky.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">'<ph name="ATSIGN" />' дегенден кийинки бөлүктү киргизиңиз. '<ph name="INVALIDADDRESS" />' толук болбой калды.</translation> <translation id="5334352251556557839">Аудио ойнотулбай жатат.</translation> <translation id="537648784377940524">Минималдуу күн (<ph name="MIN_DATE_OR_TIME" />) Максималдуу күндөн мурда болушу керек (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">жайылып көрсөтүлдү, диалог ачылды.</translation> <translation id="5406322316791861025">сөлөкөт</translation> <translation id="5425179576310518467">учурдагы күн</translation> <translation id="5453733299334684579">дарактагы нерсе</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">дагы параметрлер</translation> <translation id="576709008726043716">киришүү</translation> <translation id="57838592816432529">Үнсүз</translation> +<translation id="5787939484346677755">жайылып көрсөтүлдү, автоматтык түрдө толтуруу параметрлери жеткиликтүү.</translation> <translation id="5860033963881614850">Өчүк</translation> <translation id="588258955323874662">Толук экран</translation> <translation id="5888666972993069672">Азыр <ph name="DEVICE_FRIENDLY_NAME" /> экранына чыгарылууда</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">тизме кутусу</translation> <translation id="6150588977291308318">библиография</translation> <translation id="6164829606128959761">ченегич</translation> +<translation id="6165053282446038410">жайылып көрсөтүлдү, <ph name="COUNT" /> автоматтык түрдө толтуруу параметри жеткиликтүү.</translation> <translation id="6166809985690652833">соңку сөз</translation> <translation id="6209276755895393898">Төмөнкү болуп чыкты: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">учурдагы бет</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">аталышы</translation> <translation id="6941933287844615239">медианы жүктөп алуу</translation> <translation id="6981594929165378967">киргизүү</translation> +<translation id="698788488269350478">жайылып көрсөтүлдү.</translation> <translation id="6989848892321993519">Бул текстти <ph name="MIN_CHARACTERS" /> белгиге же андан көбүрөөк кылып узартыңыз (учурда 1 белги турат).</translation> <translation id="7034405885550056553">сунуш</translation> <translation id="709897737746224366">Суралган форматка туураланыз.</translation> <translation id="7102274145889307184">учурдагы жер</translation> <translation id="7118469954320184356">Эч кандай сүрөттөмө жок.</translation> <translation id="7139483182332611405">кириш сөз</translation> +<translation id="7198226213493847604">менюнун калкыма терезе баскычы</translation> <translation id="7214187073215825913">мазмун маалыматы</translation> <translation id="7238347055216017155">басым</translation> <translation id="7263440858009898357">Тизмедеги нерсени тандап алыңыз.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">бөлүм</translation> <translation id="8845239796550121995">Азыр сыналгыңызга чыгарылууда</translation> <translation id="8851136666856101339">башкы</translation> +<translation id="8861621546968757188">диалогдун калкыма терезе баскычы</translation> <translation id="8875657656876809964">Видеону ойнотууда ката кетти</translation> <translation id="8889402386540077796">Түс</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> Кб</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_si.xtb b/third_party/blink/public/strings/translations/blink_strings_si.xtb index 5b4b93a..f80bdd7 100644 --- a/third_party/blink/public/strings/translations/blink_strings_si.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_si.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">කරුණාකර '<ph name="ATSIGN" />' පසුපසින් යෙදෙන කොටසක් ඇතුළත් කරන්න. '<ph name="INVALIDADDRESS" />' අසම්පූර්ණයි.</translation> <translation id="5334352251556557839">මාධ්ය ධාවන කළ නොහැක.</translation> <translation id="537648784377940524">අවම දිනය (<ph name="MIN_DATE_OR_TIME" />) උපරිම දිනයට (<ph name="MAX_DATE_OR_TIME" />) පෙර ආ යුතුම ය.</translation> +<translation id="5378437566635403538">දිග හරින ලදි, සංවාදය විවෘත කරන ලදි.</translation> <translation id="5406322316791861025">රූප සටහන</translation> <translation id="5425179576310518467">වර්තමාන දිනය</translation> <translation id="5453733299334684579">රුක් අයිතමය</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">තවත් විකල්ප</translation> <translation id="576709008726043716">හැඳින්වීම</translation> <translation id="57838592816432529">නිහඬ කරන්න</translation> +<translation id="5787939484346677755">දිග හරින ලදි, ස්වයං සම්පූර්ණ කිරීමේ විකල්ප ලබා ගත හැකිය.</translation> <translation id="5860033963881614850">අක්රීය</translation> <translation id="588258955323874662">සම්පුර්ණ තිරය</translation> <translation id="5888666972993069672">දැන් <ph name="DEVICE_FRIENDLY_NAME" /> වෙත විකාශය කරමින්</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">ලැයිස්තු කොටුව</translation> <translation id="6150588977291308318">ග්රන්ථ නාමාවලිය</translation> <translation id="6164829606128959761">මීටර්</translation> +<translation id="6165053282446038410">දිග හරින ලදි, ස්වයං සම්පූර්ණ කිරීමේ විකල්ප <ph name="COUNT" />ක් ලබා ගත හැකිය.</translation> <translation id="6166809985690652833">පසුවදන</translation> <translation id="6209276755895393898">මේ බව පෙනේ: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">වත්මන් පිටුව</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">ශීර්ෂය</translation> <translation id="6941933287844615239">මාධ්ය බාගන්න</translation> <translation id="6981594929165378967">ඇතුළත් කිරීම</translation> +<translation id="698788488269350478">දිග හරින ලදී.</translation> <translation id="6989848892321993519">කරුණාකර මෙම පෙළ අනුලකුණු <ph name="MIN_CHARACTERS" />කට හෝ ඊට වඩා දිගු කරන්න (ඔබ දැනට අනුලකුණු 1ක් භාවිත කරමින් සිටී).</translation> <translation id="7034405885550056553">යෝජනාව</translation> <translation id="709897737746224366">කරුණාකර ඉල්ලා සිටි ආකෘතිය ඇතුල් කරන්න.</translation> <translation id="7102274145889307184">වත්මන් ස්ථානය</translation> <translation id="7118469954320184356">විස්තරයක් ලබා ගත නොහැක.</translation> <translation id="7139483182332611405">පූර්විකාව</translation> +<translation id="7198226213493847604">මෙනු උත්පතන බොත්තම</translation> <translation id="7214187073215825913">අන්තර්ගත තොරතුරු</translation> <translation id="7238347055216017155">අවධාරණය</translation> <translation id="7263440858009898357">කරුණාකර ලැයිස්තුවෙහි අයිතමයක් තෝරන්න.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">පරිච්ඡේදය</translation> <translation id="8845239796550121995">දැන් ඔබේ TV වෙත විකාශය කරමින්</translation> <translation id="8851136666856101339">ප්රධාන</translation> +<translation id="8861621546968757188">සංවාද උත්පතන බොත්තම</translation> <translation id="8875657656876809964">වීඩියෝ පසුධාවන දෝෂය</translation> <translation id="8889402386540077796">හියු</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sk.xtb b/third_party/blink/public/strings/translations/blink_strings_sk.xtb index 1a01743..d7f08be 100644 --- a/third_party/blink/public/strings/translations/blink_strings_sk.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_sk.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Zadajte časť pred znakom <ph name="ATSIGN" />. Adresa <ph name="INVALIDADDRESS" /> je neúplná.</translation> <translation id="5334352251556557839">Nepodarilo sa prehrať médiá.</translation> <translation id="537648784377940524">Minimálny dátum (<ph name="MIN_DATE_OR_TIME" />) musí byť pred maximálnym dátumom (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">rozbalené, bolo otvorené dialógové okno.</translation> <translation id="5406322316791861025">hodnota</translation> <translation id="5425179576310518467">aktuálny dátum</translation> <translation id="5453733299334684579">položka stromu</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">ďalšie možnosti</translation> <translation id="576709008726043716">úvod</translation> <translation id="57838592816432529">Vypnúť zvuk</translation> +<translation id="5787939484346677755">rozbalené, k dispozícii sú možnosti automatického dopĺňania.</translation> <translation id="5860033963881614850">Vypnuté</translation> <translation id="588258955323874662">Celá obrazovka</translation> <translation id="5888666972993069672">Prenáša sa do zariadenia <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">zoznamové pole</translation> <translation id="6150588977291308318">bibliografia</translation> <translation id="6164829606128959761">meter</translation> +<translation id="6165053282446038410">rozbalené, počet dostupných možností automatického dopĺňania: <ph name="COUNT" />.</translation> <translation id="6166809985690652833">doslov</translation> <translation id="6209276755895393898">Zrejme to bude: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">aktuálna stránka</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">hlavička</translation> <translation id="6941933287844615239">stiahnuť médiá</translation> <translation id="6981594929165378967">vloženie</translation> +<translation id="698788488269350478">rozbalené.</translation> <translation id="6989848892321993519">Predĺžte tento text aspoň na <ph name="MIN_CHARACTERS" /> alebo viac znakov (momentálne používate jeden znak).</translation> <translation id="7034405885550056553">návrh</translation> <translation id="709897737746224366">Zadajte hodnotu zodpovedajúcu požadovanému formátu.</translation> <translation id="7102274145889307184">aktuálna poloha</translation> <translation id="7118469954320184356">Nie je k dispozícii žiadny popis.</translation> <translation id="7139483182332611405">predslov</translation> +<translation id="7198226213493847604">vyskakovacie tlačidlo ponuky</translation> <translation id="7214187073215825913">informácie o obsahu</translation> <translation id="7238347055216017155">zdôraznené</translation> <translation id="7263440858009898357">Vyberte položku zo zoznamu.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">kapitola</translation> <translation id="8845239796550121995">Prenáša sa do televízora</translation> <translation id="8851136666856101339">hlavné</translation> +<translation id="8861621546968757188">vyskakovacie tlačidlo dialógového okna</translation> <translation id="8875657656876809964">Chyba prehrávania videa</translation> <translation id="8889402386540077796">Odtieň</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sq.xtb b/third_party/blink/public/strings/translations/blink_strings_sq.xtb index d07b5126..8e5012d0 100644 --- a/third_party/blink/public/strings/translations/blink_strings_sq.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_sq.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Fut një pjesë të ndjekur nga "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" është e paplotë.</translation> <translation id="5334352251556557839">Nuk mund të luajë media.</translation> <translation id="537648784377940524">Data minimale (<ph name="MIN_DATE_OR_TIME" />) duhet të jetë përpara datës maksimale (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">u zgjerua, dialogu u hap.</translation> <translation id="5406322316791861025">figura</translation> <translation id="5425179576310518467">data aktuale</translation> <translation id="5453733299334684579">artikull i pemës</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">më shumë opsione</translation> <translation id="576709008726043716">hyrje</translation> <translation id="57838592816432529">Hiqi zërin</translation> +<translation id="5787939484346677755">u zgjerua, ofrohen opsione të plotësimit automatik.</translation> <translation id="5860033963881614850">Çaktivizuar</translation> <translation id="588258955323874662">Ekrani i plotë</translation> <translation id="5888666972993069672">Po transmeton tani në <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">kutia e listës</translation> <translation id="6150588977291308318">bibliografi</translation> <translation id="6164829606128959761">matës</translation> +<translation id="6165053282446038410">u zgjerua, <ph name="COUNT" /> opsione të plotësimit automatik të ofruara.</translation> <translation id="6166809985690652833">pasthënie</translation> <translation id="6209276755895393898">Duket se është: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">faqja aktuale</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">koka e faqes</translation> <translation id="6941933287844615239">shkarko media</translation> <translation id="6981594929165378967">futje</translation> +<translation id="698788488269350478">u zgjerua.</translation> <translation id="6989848892321993519">Zgjate këtë tekst në <ph name="MIN_CHARACTERS" /> karaktere ose më shumë (aktualisht po përdor 1 karakter).</translation> <translation id="7034405885550056553">sugjerim</translation> <translation id="709897737746224366">Përputhe me formatin e kërkuar.</translation> <translation id="7102274145889307184">vendndodhja aktuale</translation> <translation id="7118469954320184356">Nuk ka asnjë përshkrim.</translation> <translation id="7139483182332611405">parathënie</translation> +<translation id="7198226213493847604">butoni kërcyes i menysë</translation> <translation id="7214187073215825913">informacione për përmbajtjen</translation> <translation id="7238347055216017155">theksimi</translation> <translation id="7263440858009898357">Përzgjidh një artikull në listë.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">kapitull</translation> <translation id="8845239796550121995">Po transmeton tani në televizor</translation> <translation id="8851136666856101339">kryesor</translation> +<translation id="8861621546968757188">butoni kërcyes i dialogut</translation> <translation id="8875657656876809964">Gabim gjatë luajtjes së videos</translation> <translation id="8889402386540077796">Nuanca</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sv.xtb b/third_party/blink/public/strings/translations/blink_strings_sv.xtb index 1e6d12d2..966c9e88 100644 --- a/third_party/blink/public/strings/translations/blink_strings_sv.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_sv.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Ange en del följt av <ph name="ATSIGN" />. <ph name="INVALIDADDRESS" /> är ofullständig.</translation> <translation id="5334352251556557839">Det går inte att spela upp media.</translation> <translation id="537648784377940524">Tidigaste datum (<ph name="MIN_DATE_OR_TIME" />) måste vara före senaste datum (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">har utökats, en dialogruta är öppen.</translation> <translation id="5406322316791861025">figur</translation> <translation id="5425179576310518467">aktuellt datum</translation> <translation id="5453733299334684579">trädobjekt</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">fler alternativ</translation> <translation id="576709008726043716">inledning</translation> <translation id="57838592816432529">Stäng av ljudet</translation> +<translation id="5787939484346677755">har utökats, autofyllförslag tillgängliga.</translation> <translation id="5860033963881614850">Av</translation> <translation id="588258955323874662">Helskärm</translation> <translation id="5888666972993069672">Castar till <ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">listruta</translation> <translation id="6150588977291308318">bibliografi</translation> <translation id="6164829606128959761">mätare</translation> +<translation id="6165053282446038410">har utökats, <ph name="COUNT" /> autofyllförslag tillgängliga.</translation> <translation id="6166809985690652833">efterord</translation> <translation id="6209276755895393898">Det verkar vara: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">aktuell sida</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">rubrik</translation> <translation id="6941933287844615239">ladda ned media</translation> <translation id="6981594929165378967">infogning</translation> +<translation id="698788488269350478">har utökats.</translation> <translation id="6989848892321993519">Lägg till minst <ph name="MIN_CHARACTERS" /> tecken (för närvarande har du angett 1 tecken).</translation> <translation id="7034405885550056553">förslag</translation> <translation id="709897737746224366">Matcha det format som anges.</translation> <translation id="7102274145889307184">aktuell plats</translation> <translation id="7118469954320184356">Det finns ingen tillgänglig beskrivning.</translation> <translation id="7139483182332611405">företal</translation> +<translation id="7198226213493847604">popupknapp för meny</translation> <translation id="7214187073215825913">innehållsinformation</translation> <translation id="7238347055216017155">betoning</translation> <translation id="7263440858009898357">Välj ett alternativ i listan.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">kapitel</translation> <translation id="8845239796550121995">Castar nu till TV:n</translation> <translation id="8851136666856101339">huvud</translation> +<translation id="8861621546968757188">popupknapp för dialogruta</translation> <translation id="8875657656876809964">Videouppspelningsfel</translation> <translation id="8889402386540077796">Nyans</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> kB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_te.xtb b/third_party/blink/public/strings/translations/blink_strings_te.xtb index ceaa53c..af38af12 100644 --- a/third_party/blink/public/strings/translations/blink_strings_te.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_te.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">దయచేసి '<ph name="ATSIGN" />'కి ముందు ఉన్న భాగాన్ని నమోదు చేయండి. '<ph name="INVALIDADDRESS" />' అసంపూర్ణంగా ఉంది.</translation> <translation id="5334352251556557839">మీడియాను ప్లే చేయడం సాధ్యపడలేదు.</translation> <translation id="537648784377940524">కనిష్ఠ తేదీ (<ph name="MIN_DATE_OR_TIME" />) తప్పనిసరిగా గరిష్ఠ తేదీ (<ph name="MAX_DATE_OR_TIME" />) కంటే ముందు ఉండాలి.</translation> +<translation id="5378437566635403538">విస్తరించబడింది, డైలాగ్ తెరవబడింది.</translation> <translation id="5406322316791861025">రూపం</translation> <translation id="5425179576310518467">ప్రస్తుత తేదీ</translation> <translation id="5453733299334684579">వృక్షాంశం</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">మరిన్ని ఎంపికలు</translation> <translation id="576709008726043716">పరిచయం</translation> <translation id="57838592816432529">మ్యూట్ చేయి</translation> +<translation id="5787939484346677755">విస్తరించబడింది, ఆటోకంప్లీట్ ఆప్షన్లు అందుబాటులో ఉన్నాయి.</translation> <translation id="5860033963881614850">ఆఫ్ అయ్యింది</translation> <translation id="588258955323874662">పూర్తితెర</translation> <translation id="5888666972993069672">ఇప్పుడు <ph name="DEVICE_FRIENDLY_NAME" />కి ప్రసారం చేస్తోంది</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">జాబితా పెట్టె</translation> <translation id="6150588977291308318">వివరణపట్టి</translation> <translation id="6164829606128959761">మీటర్</translation> +<translation id="6165053282446038410">విస్తరించబడింది, <ph name="COUNT" /> ఆటోకంప్లీట్ ఆప్షన్లు అందుబాటులో ఉన్నాయి.</translation> <translation id="6166809985690652833">చివరిమాట</translation> <translation id="6209276755895393898">వీరిలా కనిపిస్తున్నారు: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">ప్రస్తుత పేజీ</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">ముఖ్య శీర్షిక</translation> <translation id="6941933287844615239">మీడియా అంశం డౌన్లోడ్ చేయి</translation> <translation id="6981594929165378967">చొప్పించడం</translation> +<translation id="698788488269350478">విస్తరించబడింది.</translation> <translation id="6989848892321993519">దయచేసి ఈ వచనాన్ని <ph name="MIN_CHARACTERS" /> లేదా అంతకంటే ఎక్కువ అక్షరాలకు పొడిగించండి (ప్రస్తుతం మీరు 1 అక్షరాన్ని ఉపయోగిస్తున్నారు).</translation> <translation id="7034405885550056553">సూచన</translation> <translation id="709897737746224366">దయచేసి అభ్యర్థించిన ఆకృతీకరణను సరిపోల్చండి.</translation> <translation id="7102274145889307184">ప్రస్తుత లొకేషన్</translation> <translation id="7118469954320184356">వివరణ అందుబాటులో లేదు.</translation> <translation id="7139483182332611405">ముందుమాట</translation> +<translation id="7198226213493847604">మెనూ పాప్ అప్ బటన్</translation> <translation id="7214187073215825913">కంటెంట్ సమాచారం</translation> <translation id="7238347055216017155">ఉద్ఘాటన</translation> <translation id="7263440858009898357">దయచేసి జాబితాలోని ఒక అంశాన్ని ఎంచుకోండి.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">అధ్యాయం</translation> <translation id="8845239796550121995">ఇప్పుడు మీ టీవీలో ప్రసారం చేస్తోంది</translation> <translation id="8851136666856101339">main</translation> +<translation id="8861621546968757188">డైలాగ్ పాప్ అప్ బటన్</translation> <translation id="8875657656876809964">వీడియో ప్లేబ్యాక్ ఎర్రర్</translation> <translation id="8889402386540077796">వర్ణం</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_uz.xtb b/third_party/blink/public/strings/translations/blink_strings_uz.xtb index 7a76fc8..f26af6d 100644 --- a/third_party/blink/public/strings/translations/blink_strings_uz.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_uz.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Elektron manzilning “<ph name="ATSIGN" />” belgisidan keyingi qismini kiriting. “<ph name="INVALIDADDRESS" />” manzili to‘liq emas.</translation> <translation id="5334352251556557839">Media fayl ijro etilmadi.</translation> <translation id="537648784377940524">Minimal sana (<ph name="MIN_DATE_OR_TIME" />) maksimal sanadan (<ph name="MAX_DATE_OR_TIME" />) oldin boʻlsin.</translation> +<translation id="5378437566635403538">yoyilgan, muloqot oynasi ochiq.</translation> <translation id="5406322316791861025">shakl</translation> <translation id="5425179576310518467">joriy sana</translation> <translation id="5453733299334684579">daraxt elementi</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">boshqa sozlamalar</translation> <translation id="576709008726043716">kirish</translation> <translation id="57838592816432529">Ovozni o‘chirib qo‘yish</translation> +<translation id="5787939484346677755">yoyilgan, elementlar avtomatik toʻldirilishi mumkin.</translation> <translation id="5860033963881614850">O‘chiq</translation> <translation id="588258955323874662">Butun ekran</translation> <translation id="5888666972993069672"><ph name="DEVICE_FRIENDLY_NAME" /> ekraniga namoyish etilmoqda</translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">ro‘yxat</translation> <translation id="6150588977291308318">bibliografiya</translation> <translation id="6164829606128959761">hisoblagich</translation> +<translation id="6165053282446038410">yoyilgan, <ph name="COUNT" /> ta element avtomatik toʻldirilishi mumkin.</translation> <translation id="6166809985690652833">xotima</translation> <translation id="6209276755895393898">Bizningcha bu: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">joriy sahifa</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">sarlavha</translation> <translation id="6941933287844615239">faylni yuklab olish</translation> <translation id="6981594929165378967">joylanadi</translation> +<translation id="698788488269350478">yoyilgan</translation> <translation id="6989848892321993519">Matndagi belgilar soni <ph name="MIN_CHARACTERS" /> tadan ko‘p bo‘lishi kerak (siz esa 1 ta belgi kiritdingiz).</translation> <translation id="7034405885550056553">taklif</translation> <translation id="709897737746224366">Talab etilgan formatga rioya qiling.</translation> <translation id="7102274145889307184">joriy joylashuv</translation> <translation id="7118469954320184356">Tavsif berilmagan.</translation> <translation id="7139483182332611405">so‘zboshi</translation> +<translation id="7198226213493847604">qalqib chiquvchi menyu tugmasi</translation> <translation id="7214187073215825913">kontent axboroti</translation> <translation id="7238347055216017155">urgʻu</translation> <translation id="7263440858009898357">Ro‘yxat bandlaridan birini tanlang.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">bob</translation> <translation id="8845239796550121995">Televizoringizga translatsiya qilinmoqda</translation> <translation id="8851136666856101339">main</translation> +<translation id="8861621546968757188">qalqib chiquvchi oyna tugmasi</translation> <translation id="8875657656876809964">Video ijro etilmadi</translation> <translation id="8889402386540077796">Tus</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zu.xtb b/third_party/blink/public/strings/translations/blink_strings_zu.xtb index 1291626..84bd8f70 100644 --- a/third_party/blink/public/strings/translations/blink_strings_zu.xtb +++ b/third_party/blink/public/strings/translations/blink_strings_zu.xtb
@@ -151,6 +151,7 @@ <translation id="5307600278924710095">Sicela ufake ingxenye elandelwa yi-'<ph name="ATSIGN" />'. I-'<ph name="INVALIDADDRESS" />' ayiphelele.</translation> <translation id="5334352251556557839">Ayikwazi ukudlala imidiya.</translation> <translation id="537648784377940524">Idethi encane (<ph name="MIN_DATE_OR_TIME" />) kumele ifike ngaphambi kwedethi enkulu (<ph name="MAX_DATE_OR_TIME" />).</translation> +<translation id="5378437566635403538">kunwetshiwe, ibhokisi livuliwe.</translation> <translation id="5406322316791861025">izibalo</translation> <translation id="5425179576310518467">idethi yamanje</translation> <translation id="5453733299334684579">into yesihlahla</translation> @@ -167,6 +168,7 @@ <translation id="5677946354068040947">izinketho eziningi</translation> <translation id="576709008726043716">isingeniso</translation> <translation id="57838592816432529">Thulisa</translation> +<translation id="5787939484346677755">kunwetshiwe, izinketho zokuqedela ngokuzenzakalela ziyatholakala.</translation> <translation id="5860033963881614850">Valiwe</translation> <translation id="588258955323874662">Isikrini esigcwele</translation> <translation id="5888666972993069672">Manje isakazela ku-<ph name="DEVICE_FRIENDLY_NAME" /></translation> @@ -180,6 +182,7 @@ <translation id="6023896073578205740">ibhokisi lohlu</translation> <translation id="6150588977291308318">i-bibliography</translation> <translation id="6164829606128959761">imitha</translation> +<translation id="6165053282446038410">kunwetshiwe, <ph name="COUNT" /> izinketho zokuqedelela ngokuzenzakalela ziyatholakala.</translation> <translation id="6166809985690652833">amazwi angemuva</translation> <translation id="6209276755895393898">Kubonakala kuyilokhu: <ph name="DESCRIPTION" /></translation> <translation id="6212595056017402527">ikhasi lamanje</translation> @@ -214,12 +217,14 @@ <translation id="693476918119313863">isihloko</translation> <translation id="6941933287844615239">landa imidiya</translation> <translation id="6981594929165378967">ukufaka</translation> +<translation id="698788488269350478">inwetshiwe.</translation> <translation id="6989848892321993519">Sicela welule lo mbhalo kuya kuzinhlamvu ezingu-<ph name="MIN_CHARACTERS" /> noma ngaphezulu (okwamanje usebenzisa uhlamvu olungu1.</translation> <translation id="7034405885550056553">isiphakamiso</translation> <translation id="709897737746224366">Sicela ufanise ifomethi eceliwe.</translation> <translation id="7102274145889307184">indawo yamanje</translation> <translation id="7118469954320184356">Ayikho incazelo ekhona.</translation> <translation id="7139483182332611405">isingeniso</translation> +<translation id="7198226213493847604">inkinobho yokwesikhashana kwemenyu</translation> <translation id="7214187073215825913">ulwazi lokuqukethwe</translation> <translation id="7238347055216017155">ukugxila</translation> <translation id="7263440858009898357">Sicela ukhethe into kuhlu.</translation> @@ -287,6 +292,7 @@ <translation id="8808573423886751634">isahluko</translation> <translation id="8845239796550121995">Manje isakaza ku-TV yakho</translation> <translation id="8851136666856101339">enkulu</translation> +<translation id="8861621546968757188">inkinobho yokwesikhashana yebhokisi</translation> <translation id="8875657656876809964">Iphutha lokudlala ividiyo</translation> <translation id="8889402386540077796">I-Hue</translation> <translation id="8901569739625249689"><ph name="QUANTITY" /> KB</translation>
diff --git a/third_party/blink/public/web/modules/autofill/DIR_METADATA b/third_party/blink/public/web/modules/autofill/DIR_METADATA new file mode 100644 index 0000000..b597ffd --- /dev/null +++ b/third_party/blink/public/web/modules/autofill/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "UI>Browser>Autofill" +}
diff --git a/third_party/blink/public/web/modules/autofill/OWNERS b/third_party/blink/public/web/modules/autofill/OWNERS index 86b79a6..d691287 100644 --- a/third_party/blink/public/web/modules/autofill/OWNERS +++ b/third_party/blink/public/web/modules/autofill/OWNERS
@@ -1,3 +1 @@ jochen@chromium.org - -# COMPONENT: UI>Browser>Autofill
diff --git a/third_party/blink/public/web/modules/media/DIR_METADATA b/third_party/blink/public/web/modules/media/DIR_METADATA new file mode 100644 index 0000000..6667e7f --- /dev/null +++ b/third_party/blink/public/web/modules/media/DIR_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>Media" +}
diff --git a/third_party/blink/public/web/modules/media/OWNERS b/third_party/blink/public/web/modules/media/OWNERS index 4c71fe7..168af18 100644 --- a/third_party/blink/public/web/modules/media/OWNERS +++ b/third_party/blink/public/web/modules/media/OWNERS
@@ -1,3 +1 @@ file://media/OWNERS - -# COMPONENT: Internals>Media
diff --git a/third_party/blink/public/web/modules/mediastream/DIR_METADATA b/third_party/blink/public/web/modules/mediastream/DIR_METADATA new file mode 100644 index 0000000..066f18a --- /dev/null +++ b/third_party/blink/public/web/modules/mediastream/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>GetUserMedia" +} + +team_email: "webrtc-dev@chromium.org"
diff --git a/third_party/blink/public/web/modules/mediastream/OWNERS b/third_party/blink/public/web/modules/mediastream/OWNERS index 9d70184..2ad93e6 100644 --- a/third_party/blink/public/web/modules/mediastream/OWNERS +++ b/third_party/blink/public/web/modules/mediastream/OWNERS
@@ -1,4 +1 @@ file://third_party/blink/common/mediastream/OWNERS - -# TEAM: webrtc-dev@chromium.org -# COMPONENT: Blink>GetUserMedia
diff --git a/third_party/blink/public/web/modules/service_worker/DIR_METADATA b/third_party/blink/public/web/modules/service_worker/DIR_METADATA new file mode 100644 index 0000000..2a951d09 --- /dev/null +++ b/third_party/blink/public/web/modules/service_worker/DIR_METADATA
@@ -0,0 +1,5 @@ +monorail { + component: "Blink>ServiceWorker" +} + +team_email: "worker-dev@chromium.org"
diff --git a/third_party/blink/public/web/modules/service_worker/OWNERS b/third_party/blink/public/web/modules/service_worker/OWNERS index 299b6b92..245436a 100644 --- a/third_party/blink/public/web/modules/service_worker/OWNERS +++ b/third_party/blink/public/web/modules/service_worker/OWNERS
@@ -1,4 +1 @@ file://content/browser/service_worker/OWNERS - -# TEAM: worker-dev@chromium.org -# COMPONENT: Blink>ServiceWorker
diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5 index 6e5e6f2..f6f42d0 100644 --- a/third_party/blink/renderer/core/css/css_properties.json5 +++ b/third_party/blink/renderer/core/css/css_properties.json5
@@ -6065,8 +6065,6 @@ }, // Forced colors properties. - // TODO(almaher): add forced colors properties to a separate raredata - // structure. { name: "-internal-forced-background-color", property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"], @@ -6101,7 +6099,7 @@ name: "-internal-forced-color", property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal", "ColorIncludingFallback"], inherited: true, - field_group: "inherited", + field_group: "*", field_template: "external", include_paths: ["third_party/blink/renderer/core/layout/layout_theme.h"], default_value: "StyleColor(CSSValueID::kCanvastext)", @@ -6130,7 +6128,7 @@ visited_property_for: "-internal-forced-color", property_methods: ["ParseSingleValue", "ColorIncludingFallback"], inherited: true, - field_group: "inherited", + field_group: "*", field_template: "external", include_paths: ["third_party/blink/renderer/core/layout/layout_theme.h"], default_value: "StyleColor(CSSValueID::kCanvastext)",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 5681b9e..38d62c8 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -5887,7 +5887,7 @@ } const String feature_policy_error = - "Setting `document.domain` is disabled by Feature Policy."; + "Setting `document.domain` is disabled by permissions policy."; if (!dom_window_->IsFeatureEnabled( mojom::blink::FeaturePolicyFeature::kDocumentDomain, ReportOptions::kReportOnFailure, feature_policy_error)) { @@ -7206,7 +7206,7 @@ exception_state.ThrowDOMException( DOMExceptionCode::kNotAllowedError, String::Format( - "The use of method '%s' has been blocked by feature policy. The " + "The use of method '%s' has been blocked by permissions policy. The " "feature " "'document-write' is disabled in this document.", api_name));
diff --git a/third_party/blink/renderer/core/frame/feature_policy_violation_report_body.h b/third_party/blink/renderer/core/frame/feature_policy_violation_report_body.h index 7b810fa1..cebd2ce76 100644 --- a/third_party/blink/renderer/core/frame/feature_policy_violation_report_body.h +++ b/third_party/blink/renderer/core/frame/feature_policy_violation_report_body.h
@@ -19,7 +19,7 @@ const String& message, const String& disposition) : feature_id_(feature_id), - message_("Feature policy violation: " + + message_("Permissions policy violation: " + (message.IsEmpty() ? feature_id + " is not allowed in this document." : message)),
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc index 5c702c1..10a93fa 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
@@ -26,7 +26,7 @@ } scoped_refptr<const NGLayoutResult> NGGridLayoutAlgorithm::Layout() { - // Measure Items + // Measure items. Vector<GridItemData> grid_items; Vector<GridItemData> out_of_flow_items; ConstructAndAppendGridItems(&grid_items, &out_of_flow_items); @@ -38,18 +38,14 @@ &algorithm_row_track_collection); // Cache set indices. - CacheItemSetIndices(GridTrackSizingDirection::kForColumns, - &algorithm_column_track_collection, &grid_items); - CacheItemSetIndices(GridTrackSizingDirection::kForRows, - &algorithm_row_track_collection, &grid_items); + CacheItemSetIndices(algorithm_column_track_collection, &grid_items); + CacheItemSetIndices(algorithm_row_track_collection, &grid_items); // Resolve inline size. - ComputeUsedTrackSizes(GridTrackSizingDirection::kForColumns, &grid_items, - &algorithm_column_track_collection); + ComputeUsedTrackSizes(&algorithm_column_track_collection, &grid_items); // Resolve block size. - ComputeUsedTrackSizes(GridTrackSizingDirection::kForRows, &grid_items, - &algorithm_row_track_collection); + ComputeUsedTrackSizes(&algorithm_row_track_collection, &grid_items); // Place items. LayoutUnit intrinsic_block_size; @@ -133,14 +129,10 @@ void NGGridLayoutAlgorithm::GridItemData::SetSpan( const GridSpan& span, GridTrackSizingDirection track_direction) { - switch (track_direction) { - case kForColumns: - resolved_position.columns = span; - break; - case kForRows: - resolved_position.rows = span; - break; - } + if (track_direction == kForColumns) + resolved_position.columns = span; + else + resolved_position.rows = span; } NGGridLayoutAlgorithm::ReorderedGridItems::Iterator::Iterator( @@ -191,13 +183,12 @@ NGGridLayoutAlgorithmTrackCollection::SetIterator NGGridLayoutAlgorithm::GetSetIteratorForItem( const GridItemData& item, - GridTrackSizingDirection track_direction, NGGridLayoutAlgorithmTrackCollection& track_collection) { return track_collection.GetSetIterator( - (track_direction == kForColumns) ? item.columns_begin_set_index - : item.rows_begin_set_index, - (track_direction == kForColumns) ? item.columns_end_set_index - : item.rows_end_set_index); + track_collection.IsForColumns() ? item.columns_begin_set_index + : item.rows_begin_set_index, + track_collection.IsForColumns() ? item.columns_end_set_index + : item.rows_end_set_index); } // TODO(ethavar): Current implementation of this method simply returns the @@ -423,10 +414,8 @@ wtf_size_t automatic_column_repetitions = 0; wtf_size_t automatic_row_repetitions = 0; - SetSpecifiedTracks(GridTrackSizingDirection::kForColumns, - automatic_column_repetitions, column_track_collection); - SetSpecifiedTracks(GridTrackSizingDirection::kForRows, - automatic_row_repetitions, row_track_collection); + SetSpecifiedTracks(automatic_column_repetitions, column_track_collection); + SetSpecifiedTracks(automatic_row_repetitions, row_track_collection); wtf_size_t explicit_column_start; wtf_size_t explicit_row_start; @@ -459,8 +448,8 @@ DCHECK(row_track_collection); DCHECK_NE(child_percentage_size_.inline_size, kIndefiniteSize); // Build track collections. - NGGridBlockTrackCollection column_block_track_collection; - NGGridBlockTrackCollection row_block_track_collection; + NGGridBlockTrackCollection column_block_track_collection(kForColumns); + NGGridBlockTrackCollection row_block_track_collection(kForRows); BuildBlockTrackCollections(grid_items, &column_block_track_collection, &row_block_track_collection); @@ -476,16 +465,17 @@ } void NGGridLayoutAlgorithm::SetSpecifiedTracks( - GridTrackSizingDirection track_direction, wtf_size_t automatic_repetitions, NGGridBlockTrackCollection* track_collection) const { + DCHECK(track_collection); const ComputedStyle& grid_style = Style(); + const NGGridTrackList& template_track_list = - track_direction == GridTrackSizingDirection::kForColumns + track_collection->IsForColumns() ? grid_style.GridTemplateColumns().NGTrackList() : grid_style.GridTemplateRows().NGTrackList(); const NGGridTrackList& auto_track_list = - track_direction == GridTrackSizingDirection::kForColumns + track_collection->IsForColumns() ? grid_style.GridAutoColumns().NGTrackList() : grid_style.GridAutoRows().NGTrackList(); track_collection->SetSpecifiedTracks(&template_track_list, &auto_track_list, @@ -538,27 +528,26 @@ } void NGGridLayoutAlgorithm::CacheItemSetIndices( - GridTrackSizingDirection track_direction, - const NGGridLayoutAlgorithmTrackCollection* track_collection, + const NGGridLayoutAlgorithmTrackCollection& track_collection, Vector<GridItemData>* grid_items) const { - DCHECK(track_collection); DCHECK(grid_items); + const GridTrackSizingDirection track_direction = track_collection.Direction(); + for (GridItemData& item : *grid_items) { - wtf_size_t first_spanned_range = - track_collection->RangeIndexFromTrackNumber( - item.StartLine(track_direction)); - wtf_size_t last_spanned_range = track_collection->RangeIndexFromTrackNumber( + wtf_size_t first_spanned_range = track_collection.RangeIndexFromTrackNumber( + item.StartLine(track_direction)); + wtf_size_t last_spanned_range = track_collection.RangeIndexFromTrackNumber( item.EndLine(track_direction) - 1); DCHECK_LE(first_spanned_range, last_spanned_range); wtf_size_t begin_set_index = - track_collection->RangeStartingSetIndex(first_spanned_range); + track_collection.RangeStartingSetIndex(first_spanned_range); wtf_size_t end_set_index = - track_collection->RangeStartingSetIndex(last_spanned_range) + - track_collection->RangeSetCount(last_spanned_range); + track_collection.RangeStartingSetIndex(last_spanned_range) + + track_collection.RangeSetCount(last_spanned_range); DCHECK_LE(begin_set_index, end_set_index); - DCHECK_LE(end_set_index, track_collection->SetCount()); + DCHECK_LE(end_set_index, track_collection.SetCount()); if (track_direction == kForColumns) { item.columns_begin_set_index = begin_set_index; @@ -571,13 +560,12 @@ } void NGGridLayoutAlgorithm::DetermineGridItemsSpanningIntrinsicOrFlexTracks( - GridTrackSizingDirection track_direction, + const NGGridLayoutAlgorithmTrackCollection& track_collection, Vector<GridItemData>* grid_items, - Vector<wtf_size_t>* reordered_item_indices, - NGGridLayoutAlgorithmTrackCollection* track_collection) const { - DCHECK(grid_items); - DCHECK(track_collection); - DCHECK(reordered_item_indices); + Vector<wtf_size_t>* reordered_item_indices) const { + DCHECK(grid_items && reordered_item_indices); + const GridTrackSizingDirection track_direction = track_collection.Direction(); + auto CompareGridItemsByStartLine = [grid_items, track_direction]( wtf_size_t index_a, wtf_size_t index_b) -> bool { @@ -590,9 +578,9 @@ // At this point we have the grid items sorted by their start line in the // respective direction; this is important since we'll process both, the // ranges in the track collection and the grid items, incrementally. - auto range_spanning_flex_track_iterator = track_collection->RangeIterator(); + auto range_spanning_flex_track_iterator = track_collection.RangeIterator(); auto range_spanning_intrinsic_track_iterator = - track_collection->RangeIterator(); + track_collection.RangeIterator(); for (GridItemData& grid_item : ReorderedGridItems(*reordered_item_indices, *grid_items)) { @@ -607,14 +595,14 @@ while (!range_spanning_intrinsic_track_iterator.IsAtEnd() && (range_spanning_intrinsic_track_iterator.RangeTrackEnd() < grid_item.StartLine(track_direction) || - !track_collection->IsRangeSpanningIntrinsicTrack( + !track_collection.IsRangeSpanningIntrinsicTrack( range_spanning_intrinsic_track_iterator.RangeIndex()))) { range_spanning_intrinsic_track_iterator.MoveToNextRange(); } while (!range_spanning_flex_track_iterator.IsAtEnd() && (range_spanning_flex_track_iterator.RangeTrackEnd() < grid_item.StartLine(track_direction) || - !track_collection->IsRangeSpanningFlexTrack( + !track_collection.IsRangeSpanningFlexTrack( range_spanning_flex_track_iterator.RangeIndex()))) { range_spanning_flex_track_iterator.MoveToNextRange(); } @@ -640,12 +628,10 @@ // https://drafts.csswg.org/css-grid-1/#algo-track-sizing void NGGridLayoutAlgorithm::ComputeUsedTrackSizes( - GridTrackSizingDirection track_direction, - Vector<GridItemData>* grid_items, - NGGridLayoutAlgorithmTrackCollection* track_collection) const { - DCHECK(grid_items); - DCHECK(track_collection); - LayoutUnit content_box_size = (track_direction == kForColumns) + NGGridLayoutAlgorithmTrackCollection* track_collection, + Vector<GridItemData>* grid_items) const { + DCHECK(track_collection && grid_items); + LayoutUnit content_box_size = track_collection->IsForColumns() ? child_percentage_size_.inline_size : child_percentage_size_.block_size; @@ -694,10 +680,10 @@ reordered_item_indices.ReserveInitialCapacity(grid_items->size()); for (wtf_size_t i = 0; i < grid_items->size(); ++i) reordered_item_indices.push_back(i); - DetermineGridItemsSpanningIntrinsicOrFlexTracks( - track_direction, grid_items, &reordered_item_indices, track_collection); - ResolveIntrinsicTrackSizes(track_direction, grid_items, - &reordered_item_indices, track_collection); + DetermineGridItemsSpanningIntrinsicOrFlexTracks(*track_collection, grid_items, + &reordered_item_indices); + ResolveIntrinsicTrackSizes(track_collection, grid_items, + &reordered_item_indices); } // Helpers for the track sizing algorithm. @@ -1002,12 +988,14 @@ } void NGGridLayoutAlgorithm::IncreaseTrackSizesToAccommodateGridItems( - GridTrackSizingDirection track_direction, ReorderedGridItems::Iterator group_begin, ReorderedGridItems::Iterator group_end, GridItemContributionType contribution_type, NGGridLayoutAlgorithmTrackCollection* track_collection) const { DCHECK(track_collection); + const GridTrackSizingDirection track_direction = + track_collection->Direction(); + for (auto set_iterator = track_collection->GetSetIterator(); !set_iterator.IsAtEnd(); set_iterator.MoveToNextSet()) { set_iterator.CurrentSet().SetPlannedIncrease(LayoutUnit()); @@ -1033,8 +1021,8 @@ // know our block size. LayoutUnit spanned_tracks_size = GridGap(track_direction) * (grid_item->SpanSize(track_direction) - 1); - for (auto set_iterator = GetSetIteratorForItem(*grid_item, track_direction, - *track_collection); + for (auto set_iterator = + GetSetIteratorForItem(*grid_item, *track_collection); !set_iterator.IsAtEnd(); set_iterator.MoveToNextSet()) { NGGridSet& current_set = set_iterator.CurrentSet(); @@ -1073,13 +1061,13 @@ // https://drafts.csswg.org/css-grid-1/#algo-content void NGGridLayoutAlgorithm::ResolveIntrinsicTrackSizes( - GridTrackSizingDirection track_direction, + NGGridLayoutAlgorithmTrackCollection* track_collection, Vector<GridItemData>* grid_items, - Vector<wtf_size_t>* reordered_item_indices, - NGGridLayoutAlgorithmTrackCollection* track_collection) const { - DCHECK(grid_items); - DCHECK(reordered_item_indices); - DCHECK(track_collection); + Vector<wtf_size_t>* reordered_item_indices) const { + DCHECK(grid_items && track_collection && reordered_item_indices); + const GridTrackSizingDirection track_direction = + track_collection->Direction(); + // Reorder grid items to process them as follows: // - First, consider items spanning a single non-flexible track. // - Next, consider items with span size of 2 not spanning a flexible track. @@ -1121,7 +1109,7 @@ current_group_span_size); IncreaseTrackSizesToAccommodateGridItems( - track_direction, current_group_begin, current_group_end, + current_group_begin, current_group_end, GridItemContributionType::kForIntrinsicMinimums, track_collection); // TODO(ethavar): Add remaining stages, mark infinitely growable sets... @@ -1148,9 +1136,9 @@ GridGap(kForColumns, ChildAvailableSize().inline_size); LayoutUnit row_grid_gap = GridGap(kForRows, ChildAvailableSize().block_size); Vector<LayoutUnit> column_set_offsets = - ComputeSetOffsets(kForColumns, column_grid_gap, column_track_collection); + ComputeSetOffsets(column_track_collection, column_grid_gap); Vector<LayoutUnit> row_set_offsets = - ComputeSetOffsets(kForRows, row_grid_gap, row_track_collection); + ComputeSetOffsets(row_track_collection, row_grid_gap); // Intrinsic block size is based on the final row offset. // Because gaps are included in row offsets, subtract out the final gap. @@ -1164,8 +1152,7 @@ // intrinsic block size. if (IsRowGridGapUnresolvable(ChildAvailableSize().block_size)) { row_grid_gap = GridGap(kForRows, *intrinsic_block_size); - row_set_offsets = - ComputeSetOffsets(kForRows, row_grid_gap, row_track_collection); + row_set_offsets = ComputeSetOffsets(row_track_collection, row_grid_gap); } for (const GridItemData& grid_item : grid_items) { @@ -1279,10 +1266,9 @@ } Vector<LayoutUnit> NGGridLayoutAlgorithm::ComputeSetOffsets( - GridTrackSizingDirection track_direction, - LayoutUnit grid_gap, - NGGridLayoutAlgorithmTrackCollection& track_collection) const { - LayoutUnit set_offset = track_direction == kForColumns + const NGGridLayoutAlgorithmTrackCollection& track_collection, + LayoutUnit grid_gap) const { + LayoutUnit set_offset = track_collection.IsForColumns() ? BorderScrollbarPadding().inline_start : BorderScrollbarPadding().block_start; Vector<LayoutUnit> set_offsets = {set_offset};
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h index 901d865e..208f92b 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.h
@@ -122,7 +122,6 @@ // in the relevant track collection. static NGGridLayoutAlgorithmTrackCollection::SetIterator GetSetIteratorForItem(const GridItemData& item, - GridTrackSizingDirection track_direction, NGGridLayoutAlgorithmTrackCollection& track_collection); // Returns the size that a grid item will distribute across the tracks with an @@ -149,8 +148,7 @@ NGGridLayoutAlgorithmTrackCollection* row_track_collection) const; // Sets specified track lists on |track_collection|. - void SetSpecifiedTracks(GridTrackSizingDirection track_direction, - wtf_size_t automatic_repetitions, + void SetSpecifiedTracks(wtf_size_t automatic_repetitions, NGGridBlockTrackCollection* track_collection) const; // Determines the explicit column and row track starts. void DetermineExplicitTrackStarts(wtf_size_t automatic_column_repetitions, @@ -164,32 +162,27 @@ // "begin" and "end" such that the item spans every set from the respective // collection's |sets_| with an index in the range [begin, end). void CacheItemSetIndices( - GridTrackSizingDirection track_direction, - const NGGridLayoutAlgorithmTrackCollection* track_collection, + const NGGridLayoutAlgorithmTrackCollection& track_collection, Vector<GridItemData>* grid_items) const; // For every grid item, determines if it spans a track with an intrinsic or // flexible sizing function and caches the answer in its |GridItemData|. void DetermineGridItemsSpanningIntrinsicOrFlexTracks( - GridTrackSizingDirection track_direction, + const NGGridLayoutAlgorithmTrackCollection& track_collection, Vector<GridItemData>* grid_items, - Vector<wtf_size_t>* reordered_item_indices, - NGGridLayoutAlgorithmTrackCollection* track_collection) const; + Vector<wtf_size_t>* reordered_item_indices) const; // Calculates from the min and max track sizing functions the used track size. void ComputeUsedTrackSizes( - GridTrackSizingDirection track_direction, - Vector<GridItemData>* grid_items, - NGGridLayoutAlgorithmTrackCollection* track_collection) const; + NGGridLayoutAlgorithmTrackCollection* track_collection, + Vector<GridItemData>* grid_items) const; // These methods implement the steps of the algorithm for intrinsic track size // resolution defined in https://drafts.csswg.org/css-grid-1/#algo-content. void ResolveIntrinsicTrackSizes( - GridTrackSizingDirection track_direction, + NGGridLayoutAlgorithmTrackCollection* track_collection, Vector<GridItemData>* grid_items, - Vector<wtf_size_t>* reordered_item_indices, - NGGridLayoutAlgorithmTrackCollection* track_collection) const; + Vector<wtf_size_t>* reordered_item_indices) const; void IncreaseTrackSizesToAccommodateGridItems( - GridTrackSizingDirection track_direction, ReorderedGridItems::Iterator group_begin, ReorderedGridItems::Iterator group_end, GridItemContributionType contribution_type, @@ -220,9 +213,8 @@ // Calculates inline and block offsets for all tracks. Vector<LayoutUnit> ComputeSetOffsets( - GridTrackSizingDirection track_direction, - LayoutUnit grid_gap, - NGGridLayoutAlgorithmTrackCollection& track_collection) const; + const NGGridLayoutAlgorithmTrackCollection& track_collection, + LayoutUnit grid_gap) const; // Tests whether the row gap is unresolvable based on its type and the // available size.
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc index 26734f7..f91ddf4 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm_test.cc
@@ -50,22 +50,18 @@ &algorithm_row_track_collection_); // Cache set indices. - algorithm.CacheItemSetIndices(GridTrackSizingDirection::kForColumns, - &algorithm_column_track_collection_, + algorithm.CacheItemSetIndices(algorithm_column_track_collection_, &grid_items_); - algorithm.CacheItemSetIndices(GridTrackSizingDirection::kForRows, - &algorithm_row_track_collection_, + algorithm.CacheItemSetIndices(algorithm_row_track_collection_, &grid_items_); // Resolve inline size. - algorithm.ComputeUsedTrackSizes(GridTrackSizingDirection::kForColumns, - &grid_items_, - &algorithm_column_track_collection_); + algorithm.ComputeUsedTrackSizes(&algorithm_column_track_collection_, + &grid_items_); // Resolve block size. - algorithm.ComputeUsedTrackSizes(GridTrackSizingDirection::kForRows, - &grid_items_, - &algorithm_row_track_collection_); + algorithm.ComputeUsedTrackSizes(&algorithm_row_track_collection_, + &grid_items_); } NGGridLayoutAlgorithmTrackCollection& TrackCollection( @@ -116,15 +112,14 @@ } void DetermineGridItemsSpanningIntrinsicOrFlexTracks( - NGGridLayoutAlgorithm& algorithm, - GridTrackSizingDirection track_direction) { + const NGGridLayoutAlgorithm& algorithm, + const NGGridLayoutAlgorithmTrackCollection& track_collection) { Vector<wtf_size_t> reordered_item_indices; reordered_item_indices.ReserveInitialCapacity(grid_items_.size()); for (wtf_size_t i = 0; i < grid_items_.size(); ++i) reordered_item_indices.push_back(i); algorithm.DetermineGridItemsSpanningIntrinsicOrFlexTracks( - track_direction, &grid_items_, &reordered_item_indices, - &TrackCollection(track_direction)); + track_collection, &grid_items_, &reordered_item_indices); } Vector<wtf_size_t> GridItemsSpanningIntrinsicTrack( @@ -1196,7 +1191,8 @@ NGGridLayoutAlgorithm algorithm({node, fragment_geometry, space}); BuildGridItemsAndTrackCollections(algorithm); - DetermineGridItemsSpanningIntrinsicOrFlexTracks(algorithm, kForColumns); + DetermineGridItemsSpanningIntrinsicOrFlexTracks(algorithm, + TrackCollection(kForColumns)); Vector<wtf_size_t> expected_grid_items_spanning_intrinsic_track = {0, 1, 3}; Vector<wtf_size_t> expected_grid_items_spanning_flex_track = {1}; @@ -1212,7 +1208,8 @@ for (wtf_size_t i = 0; i < actual_items.size(); ++i) EXPECT_EQ(expected_grid_items_spanning_flex_track[i], actual_items[i]); - DetermineGridItemsSpanningIntrinsicOrFlexTracks(algorithm, kForRows); + DetermineGridItemsSpanningIntrinsicOrFlexTracks(algorithm, + TrackCollection(kForRows)); expected_grid_items_spanning_intrinsic_track = {1, 2, 3}; expected_grid_items_spanning_flex_track = {2};
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.cc index 5976eb70..fbe4536 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.cc +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.cc
@@ -136,6 +136,10 @@ return true; } +NGGridBlockTrackCollection::NGGridBlockTrackCollection( + GridTrackSizingDirection direction) + : direction_(direction) {} + void NGGridBlockTrackCollection::SetSpecifiedTracks( const NGGridTrackList* explicit_tracks, const NGGridTrackList* implicit_tracks, @@ -481,36 +485,10 @@ starting_set_index(starting_set_index), is_collapsed(block_track_range.is_collapsed) {} -NGGridLayoutAlgorithmTrackCollection::SetIterator::SetIterator( - NGGridLayoutAlgorithmTrackCollection* collection, - wtf_size_t begin_set_index, - wtf_size_t end_set_index) - : collection_(collection), - current_set_index_(begin_set_index), - end_set_index_(end_set_index) { - DCHECK(collection_); - DCHECK_LE(current_set_index_, end_set_index_); -} - -bool NGGridLayoutAlgorithmTrackCollection::SetIterator::IsAtEnd() const { - DCHECK_LE(current_set_index_, end_set_index_); - return current_set_index_ == end_set_index_; -} - -bool NGGridLayoutAlgorithmTrackCollection::SetIterator::MoveToNextSet() { - current_set_index_ = std::min(current_set_index_ + 1, end_set_index_); - return current_set_index_ < end_set_index_; -} - -NGGridSet& NGGridLayoutAlgorithmTrackCollection::SetIterator::CurrentSet() - const { - DCHECK_LT(current_set_index_, end_set_index_); - return collection_->SetAt(current_set_index_); -} - NGGridLayoutAlgorithmTrackCollection::NGGridLayoutAlgorithmTrackCollection( const NGGridBlockTrackCollection& block_track_collection, - bool is_content_box_size_indefinite) { + bool is_content_box_size_indefinite) + : direction_(block_track_collection.Direction()) { for (auto range_iterator = block_track_collection.RangeIterator(); !range_iterator.IsAtEnd(); range_iterator.MoveToNextRange()) { const NGGridBlockTrackCollection::Range& block_track_range = @@ -602,19 +580,35 @@ return sets_[set_index]; } +const NGGridSet& NGGridLayoutAlgorithmTrackCollection::SetAt( + wtf_size_t set_index) const { + DCHECK_LT(set_index, SetCount()); + return sets_[set_index]; +} + NGGridLayoutAlgorithmTrackCollection::SetIterator NGGridLayoutAlgorithmTrackCollection::GetSetIterator() { return SetIterator(this, 0u, SetCount()); } +NGGridLayoutAlgorithmTrackCollection::ConstSetIterator +NGGridLayoutAlgorithmTrackCollection::GetSetIterator() const { + return ConstSetIterator(this, 0u, SetCount()); +} + NGGridLayoutAlgorithmTrackCollection::SetIterator NGGridLayoutAlgorithmTrackCollection::GetSetIterator(wtf_size_t begin_set_index, wtf_size_t end_set_index) { - DCHECK_LE(end_set_index, SetCount()); - DCHECK_LE(begin_set_index, end_set_index); return SetIterator(this, begin_set_index, end_set_index); } +NGGridLayoutAlgorithmTrackCollection::ConstSetIterator +NGGridLayoutAlgorithmTrackCollection::GetSetIterator( + wtf_size_t begin_set_index, + wtf_size_t end_set_index) const { + return ConstSetIterator(this, begin_set_index, end_set_index); +} + wtf_size_t NGGridLayoutAlgorithmTrackCollection::RangeSetCount( wtf_size_t range_index) const { DCHECK_LT(range_index, RangeCount());
diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.h b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.h index aa0791f..a70bc18 100644 --- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.h +++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_track_collection.h
@@ -58,13 +58,10 @@ protected: // Returns the first track number of a range. virtual wtf_size_t RangeTrackNumber(wtf_size_t range_index) const = 0; - // Returns the number of tracks in a range. virtual wtf_size_t RangeTrackCount(wtf_size_t range_index) const = 0; - // Returns true if the range at the given index is collapsed. virtual bool IsRangeCollapsed(wtf_size_t range_index) const = 0; - // Returns the number of track ranges in the collection. virtual wtf_size_t RangeCount() const = 0; }; @@ -82,6 +79,9 @@ bool is_collapsed : 1; }; + explicit NGGridBlockTrackCollection( + GridTrackSizingDirection track_direction = kForColumns); + // Sets the specified, implicit tracks, along with a given auto repeat value. void SetSpecifiedTracks(const NGGridTrackList* explicit_tracks, const NGGridTrackList* implicit_tracks, @@ -98,9 +98,11 @@ // Returns the range at the given track. const Range& RangeAtTrackNumber(wtf_size_t track_number) const; + GridTrackSizingDirection Direction() const { return direction_; } + bool IsForColumns() const { return direction_ == kForColumns; } + const NGGridTrackList& ExplicitTracks() const; const NGGridTrackList& ImplicitTracks() const; - String ToString() const; protected: @@ -117,6 +119,7 @@ wtf_size_t ImplicitRepeatSize() const; bool track_indices_need_sort_ = false; + GridTrackSizingDirection direction_; wtf_size_t auto_repeat_count_ = 0; // Stores the specified and implicit tracks specified by SetSpecifiedTracks. @@ -233,23 +236,51 @@ bool is_collapsed : 1; }; - // Note that this iterator can alter any set's data. - class CORE_EXPORT SetIterator { + template <bool is_const> + class CORE_EXPORT SetIteratorBase { public: - SetIterator(NGGridLayoutAlgorithmTrackCollection* collection, - wtf_size_t begin_set_index, - wtf_size_t end_set_index); + using TrackCollectionPtr = + typename std::conditional<is_const, + const NGGridLayoutAlgorithmTrackCollection*, + NGGridLayoutAlgorithmTrackCollection*>::type; + using NGGridSetRef = + typename std::conditional<is_const, const NGGridSet&, NGGridSet&>::type; - bool IsAtEnd() const; - bool MoveToNextSet(); - NGGridSet& CurrentSet() const; + SetIteratorBase(TrackCollectionPtr track_collection, + wtf_size_t begin_set_index, + wtf_size_t end_set_index) + : track_collection_(track_collection), + current_set_index_(begin_set_index), + end_set_index_(end_set_index) { + DCHECK(track_collection_); + DCHECK_LE(current_set_index_, end_set_index_); + DCHECK_LE(end_set_index_, track_collection_->SetCount()); + } + + bool IsAtEnd() const { + DCHECK_LE(current_set_index_, end_set_index_); + return current_set_index_ == end_set_index_; + } + + bool MoveToNextSet() { + current_set_index_ = std::min(current_set_index_ + 1, end_set_index_); + return current_set_index_ < end_set_index_; + } + + NGGridSetRef CurrentSet() const { + DCHECK_LT(current_set_index_, end_set_index_); + return track_collection_->SetAt(current_set_index_); + } private: - NGGridLayoutAlgorithmTrackCollection* collection_; + TrackCollectionPtr track_collection_; wtf_size_t current_set_index_; wtf_size_t end_set_index_; }; + using SetIterator = SetIteratorBase<false>; + using ConstSetIterator = SetIteratorBase<true>; + NGGridLayoutAlgorithmTrackCollection() = default; // |is_content_box_size_indefinite| is used to normalize percentage track // sizing functions (see the constructor for |NGGridSet|). @@ -261,12 +292,16 @@ wtf_size_t SetCount() const; // Returns a reference to the set located at position |set_index|. NGGridSet& SetAt(wtf_size_t set_index); + const NGGridSet& SetAt(wtf_size_t set_index) const; // Returns an iterator for all the sets contained in this collection. SetIterator GetSetIterator(); + ConstSetIterator GetSetIterator() const; // Returns an iterator for every set in this collection's |sets_| located at // an index in the interval [begin_set_index, end_set_index). SetIterator GetSetIterator(wtf_size_t begin_set_index, wtf_size_t end_set_index); + ConstSetIterator GetSetIterator(wtf_size_t begin_set_index, + wtf_size_t end_set_index) const; wtf_size_t RangeSetCount(wtf_size_t range_index) const; wtf_size_t RangeStartingSetIndex(wtf_size_t range_index) const; @@ -276,6 +311,9 @@ // Returns true if the range contains a set with a flexible sizing function. bool IsRangeSpanningFlexTrack(wtf_size_t range_index) const; + GridTrackSizingDirection Direction() const { return direction_; } + bool IsForColumns() const { return direction_ == kForColumns; } + protected: // NGGridTrackCollectionBase overrides. wtf_size_t RangeTrackNumber(wtf_size_t range_index) const override; @@ -289,6 +327,8 @@ const NGGridTrackList& specified_track_list, bool is_content_box_size_indefinite); + GridTrackSizingDirection direction_; + Vector<Range> ranges_; // A vector of every set element that compose the entire collection's ranges; // track definitions from the same set are stored in consecutive positions,
diff --git a/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc b/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc index 874b6cf6..d61fa63 100644 --- a/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc +++ b/third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/script/value_wrapper_synthetic_module_script.h" +#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_css_style_sheet_init.h" @@ -199,7 +200,20 @@ DCHECK(!try_catch.HasCaught()); DCHECK(!result.IsNothing() && result.FromJust()); - return v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); + if (base::FeatureList::IsEnabled(features::kTopLevelAwait)) { + v8::Local<v8::Promise::Resolver> promise_resolver; + if (!v8::Promise::Resolver::New(context).ToLocal(&promise_resolver)) { + if (!isolate->IsExecutionTerminating()) { + LOG(FATAL) << "Cannot recover from failure to create a new " + "v8::Promise::Resolver object (OOM?)"; + } + return v8::MaybeLocal<v8::Value>(); + } + promise_resolver->Resolve(context, v8::Undefined(isolate)).ToChecked(); + return promise_resolver->GetPromise(); + } + + return v8::Undefined(isolate); } void ValueWrapperSyntheticModuleScript::Trace(Visitor* visitor) const {
diff --git a/third_party/blink/renderer/core/timing/profiler_group.cc b/third_party/blink/renderer/core/timing/profiler_group.cc index 4404ed8..790ebdc3 100644 --- a/third_party/blink/renderer/core/timing/profiler_group.cc +++ b/third_party/blink/renderer/core/timing/profiler_group.cc
@@ -90,34 +90,50 @@ : v8::CpuProfilingOptions::kNoSampleLimit, static_cast<int>(sample_interval_us)); - cpu_profiler_->StartProfiling(V8String(isolate_, profiler_id), options); + v8::CpuProfilingStatus status = + cpu_profiler_->StartProfiling(V8String(isolate_, profiler_id), options); - // Limit non-crossorigin script frames to the origin that started the - // profiler. - auto* execution_context = ExecutionContext::From(script_state); - scoped_refptr<const SecurityOrigin> source_origin( - execution_context->GetSecurityOrigin()); + switch (status) { + case v8::CpuProfilingStatus::kErrorTooManyProfilers: { + exception_state.ThrowTypeError( + "Reached maximum concurrent amount of profilers"); + return nullptr; + } + case v8::CpuProfilingStatus::kAlreadyStarted: { + // Since we increment the profiler id for every invocation of + // StartProfiling, we do not expect to hit kAlreadyStarted status + DCHECK(false); + return nullptr; + } + case v8::CpuProfilingStatus::kStarted: { + // Limit non-crossorigin script frames to the origin that started the + // profiler. + auto* execution_context = ExecutionContext::From(script_state); + scoped_refptr<const SecurityOrigin> source_origin( + execution_context->GetSecurityOrigin()); - // The V8 CPU profiler ticks in multiples of the base sampling interval. This - // effectively means that we gather samples at the multiple of the base - // sampling interval that's greater than or equal to the requested interval. - int effective_sample_interval_ms = - static_cast<int>(sample_interval.InMilliseconds()); - if (effective_sample_interval_ms % kBaseSampleIntervalMs != 0 || - effective_sample_interval_ms == 0) { - effective_sample_interval_ms += - (kBaseSampleIntervalMs - - effective_sample_interval_ms % kBaseSampleIntervalMs); + // The V8 CPU profiler ticks in multiples of the base sampling interval. + // This effectively means that we gather samples at the multiple of the + // base sampling interval that's greater than or equal to the requested + // interval. + int effective_sample_interval_ms = + static_cast<int>(sample_interval.InMilliseconds()); + if (effective_sample_interval_ms % kBaseSampleIntervalMs != 0 || + effective_sample_interval_ms == 0) { + effective_sample_interval_ms += + (kBaseSampleIntervalMs - + effective_sample_interval_ms % kBaseSampleIntervalMs); + } + + auto* profiler = MakeGarbageCollected<Profiler>( + this, script_state, profiler_id, effective_sample_interval_ms, + source_origin, time_origin); + profilers_.insert(profiler); + + num_active_profilers_++; + return profiler; + } } - - auto* profiler = MakeGarbageCollected<Profiler>( - this, script_state, profiler_id, effective_sample_interval_ms, - source_origin, time_origin); - profilers_.insert(profiler); - - num_active_profilers_++; - - return profiler; } ProfilerGroup::~ProfilerGroup() {
diff --git a/third_party/blink/renderer/core/timing/profiler_group.h b/third_party/blink/renderer/core/timing/profiler_group.h index c775f27c..da540b77 100644 --- a/third_party/blink/renderer/core/timing/profiler_group.h +++ b/third_party/blink/renderer/core/timing/profiler_group.h
@@ -53,7 +53,7 @@ // Cancels a profiler, discarding its associated trace. void CancelProfiler(Profiler*); - // Asynchronously cancels a profiler. Invoked on Profiler descrution. + // Asynchronously cancels a profiler. Invoked on Profiler destruction. void CancelProfilerAsync(ScriptState*, Profiler*); // Internal implementation of cancel. void CancelProfilerImpl(String profiler_id);
diff --git a/third_party/blink/renderer/core/timing/profiler_group_test.cc b/third_party/blink/renderer/core/timing/profiler_group_test.cc index c0af8fdd..eb477f3 100644 --- a/third_party/blink/renderer/core/timing/profiler_group_test.cc +++ b/third_party/blink/renderer/core/timing/profiler_group_test.cc
@@ -16,25 +16,10 @@ namespace { static constexpr int kLargeProfilerCount = 128; +static constexpr int kMaxConcurrentProfilerCount = 100; } // namespace -// Tests that a leaked profiler doesn't crash the isolate on heap teardown. -TEST(ProfilerGroupTest, LeakProfiler) { - V8TestingScope scope; - - ProfilerGroup* profiler_group = ProfilerGroup::From(scope.GetIsolate()); - - ProfilerInitOptions* init_options = ProfilerInitOptions::Create(); - init_options->setSampleInterval(0); - init_options->setMaxBufferSize(0); - Profiler* profiler = profiler_group->CreateProfiler( - scope.GetScriptState(), *init_options, base::TimeTicks(), - scope.GetExceptionState()); - - EXPECT_FALSE(profiler->stopped()); -} - TEST(ProfilerGroupTest, StopProfiler) { V8TestingScope scope; @@ -83,6 +68,9 @@ EXPECT_FALSE(profiler->stopped()); EXPECT_FALSE(scope.GetExceptionState().HadException()); + + // clean up + profiler->stop(scope.GetScriptState()); } TEST(ProfilerGroupTest, ClampedSamplingIntervalZero) { @@ -102,6 +90,9 @@ // interval. EXPECT_EQ(profiler->sampleInterval(), ProfilerGroup::GetBaseSampleInterval().InMilliseconds()); + + // clean up + profiler->stop(scope.GetScriptState()); } TEST(ProfilerGroupTest, ClampedSamplingIntervalNext) { @@ -123,6 +114,42 @@ // interval. EXPECT_EQ(profiler->sampleInterval(), (ProfilerGroup::GetBaseSampleInterval() * 2).InMilliseconds()); + + // clean up + profiler->stop(scope.GetScriptState()); +} + +TEST(ProfilerGroupTest, V8ProfileLimitThrowsExceptionWhenMaxConcurrentReached) { + V8TestingScope scope; + + HeapVector<Member<Profiler>> profilers; + ProfilerGroup* profiler_group = ProfilerGroup::From(scope.GetIsolate()); + ProfilerInitOptions* init_options = ProfilerInitOptions::Create(); + + for (auto i = 0; i < kMaxConcurrentProfilerCount; i++) { + init_options->setSampleInterval(i); + profilers.push_back(profiler_group->CreateProfiler( + scope.GetScriptState(), *init_options, base::TimeTicks(), + scope.GetExceptionState())); + EXPECT_FALSE(scope.GetExceptionState().HadException()); + } + + // check kErrorTooManyProfilers + ProfilerGroup* extra_profiler_group = ProfilerGroup::From(scope.GetIsolate()); + ProfilerInitOptions* extra_init_options = ProfilerInitOptions::Create(); + extra_init_options->setSampleInterval(100); + for (auto i = kMaxConcurrentProfilerCount; i < kLargeProfilerCount; i++) { + extra_profiler_group->CreateProfiler(scope.GetScriptState(), + *extra_init_options, base::TimeTicks(), + scope.GetExceptionState()); + EXPECT_TRUE(scope.GetExceptionState().HadException()); + EXPECT_EQ(scope.GetExceptionState().Message(), + "Reached maximum concurrent amount of profilers"); + } + + for (auto profiler : profilers) { + profiler->stop(scope.GetScriptState()); + } } TEST(ProfilerGroupTest, NegativeSamplingInterval) { @@ -152,30 +179,6 @@ EXPECT_TRUE(scope.GetExceptionState().HadException()); } -// Tests behaviour when exceeding the maximum number of concurrent profiles -// supported by the V8 profiling API (https://crbug.com/1052341). -TEST(ProfilerGroupTest, V8ProfileLimit) { - V8TestingScope scope; - - ProfilerGroup* profiler_group = ProfilerGroup::From(scope.GetIsolate()); - - ProfilerInitOptions* init_options = ProfilerInitOptions::Create(); - init_options->setSampleInterval(0); - - HeapVector<Member<Profiler>> profilers; - for (auto i = 0; i < kLargeProfilerCount; i++) { - // TODO(acomminos): The V8 public API should likely be changed to expose - // exceeding the profile limit during creation. This would enable - // instantiation of profiles to cause a promise rejection instead. - profilers.push_back(profiler_group->CreateProfiler( - scope.GetScriptState(), *init_options, base::TimeTicks(), - scope.GetExceptionState())); - } - for (auto profiler : profilers) { - profiler->stop(scope.GetScriptState()); - } -} - TEST(ProfilerGroupTest, Bug1119865) { class ExpectNoCallFunction : public ScriptFunction { public: @@ -208,6 +211,27 @@ profiler->stop(scope.GetScriptState()).Then(function); } +/* + * LEAK TESTS - SHOULD RUN LAST + */ + +// Tests that a leaked profiler doesn't crash the isolate on heap teardown. +// These should run last +TEST(ProfilerGroupTest, LeakProfiler) { + V8TestingScope scope; + + ProfilerGroup* profiler_group = ProfilerGroup::From(scope.GetIsolate()); + + ProfilerInitOptions* init_options = ProfilerInitOptions::Create(); + init_options->setSampleInterval(0); + init_options->setMaxBufferSize(0); + Profiler* profiler = profiler_group->CreateProfiler( + scope.GetScriptState(), *init_options, base::TimeTicks(), + scope.GetExceptionState()); + + EXPECT_FALSE(profiler->stopped()); +} + // Tests that a leaked profiler doesn't crash when disposed alongside its // context. TEST(ProfilerGroupTest, LeakProfilerWithContext) {
diff --git a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc index 2b279dd..ded2bdb 100644 --- a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc +++ b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.cc
@@ -735,7 +735,7 @@ !GetExecutionContext()->IsFeatureEnabled( mojom::blink::FeaturePolicyFeature::kSyncXHR, ReportOptions::kReportOnFailure, - "Synchronous requests are disabled by Feature Policy.")) { + "Synchronous requests are disabled by permissions policy.")) { HandleNetworkError(); ThrowForLoadFailureIfNeeded(exception_state, String()); return false;
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc index dfaa6e08..33b2d9f 100644 --- a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc +++ b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc
@@ -436,8 +436,9 @@ } constexpr char kFeaturePolicyMessage[] = - "The Clipboard API has been blocked because of a Feature Policy applied " - "to the current document. See https://goo.gl/EuHzyv for more details."; + "The Clipboard API has been blocked because of a permissions policy " + "applied to the current document. See https://goo.gl/EuHzyv for more " + "details."; if ((permission == mojom::blink::PermissionName::CLIPBOARD_READ && !window.IsFeatureEnabled(
diff --git a/third_party/blink/renderer/modules/device_orientation/device_orientation_controller.cc b/third_party/blink/renderer/modules/device_orientation/device_orientation_controller.cc index 701ea76..b73ab189 100644 --- a/third_party/blink/renderer/modules/device_orientation/device_orientation_controller.cc +++ b/third_party/blink/renderer/modules/device_orientation/device_orientation_controller.cc
@@ -153,9 +153,9 @@ LocalFrame& frame, const AtomicString& event_name) { const String& message = String::Format( - "The %s events are blocked by feature policy. " + "The %s events are blocked by permissions policy. " "See " - "https://github.com/WICG/feature-policy/blob/master/" + "https://github.com/w3c/webappsec-permissions-policy/blob/master/" "features.md#sensor-features", event_name.Ascii().c_str()); auto* console_message = MakeGarbageCollected<ConsoleMessage>(
diff --git a/third_party/blink/renderer/modules/encryptedmedia/navigator_request_media_key_system_access.cc b/third_party/blink/renderer/modules/encryptedmedia/navigator_request_media_key_system_access.cc index 823ac10..d2672be 100644 --- a/third_party/blink/renderer/modules/encryptedmedia/navigator_request_media_key_system_access.cc +++ b/third_party/blink/renderer/modules/encryptedmedia/navigator_request_media_key_system_access.cc
@@ -122,7 +122,7 @@ mojom::ConsoleMessageLevel::kWarning, kEncryptedMediaFeaturePolicyConsoleWarning)); exception_state.ThrowSecurityError( - "requestMediaKeySystemAccess is disabled by feature policy."); + "requestMediaKeySystemAccess is disabled by permissions policy."); return ScriptPromise(); }
diff --git a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc index 9baa8875..1defe0f 100644 --- a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc +++ b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
@@ -67,7 +67,7 @@ const char kSecureContextBlocked[] = "Access to the feature \"gamepad\" requires a secure context"; const char kFeaturePolicyBlocked[] = - "Access to the feature \"gamepad\" is disallowed by feature policy."; + "Access to the feature \"gamepad\" is disallowed by permissions policy."; NavigatorGamepad& NavigatorGamepad::From(Navigator& navigator) { NavigatorGamepad* supplement =
diff --git a/third_party/blink/renderer/modules/geolocation/geolocation.cc b/third_party/blink/renderer/modules/geolocation/geolocation.cc index 34c4a23c..6b3cea9 100644 --- a/third_party/blink/renderer/modules/geolocation/geolocation.cc +++ b/third_party/blink/renderer/modules/geolocation/geolocation.cc
@@ -49,10 +49,11 @@ const char kPermissionDeniedErrorMessage[] = "User denied Geolocation"; const char kFeaturePolicyErrorMessage[] = - "Geolocation has been disabled in this document by Feature Policy."; + "Geolocation has been disabled in this document by permissions policy."; const char kFeaturePolicyConsoleWarning[] = - "Geolocation access has been blocked because of a Feature Policy applied " - "to the current document. See https://goo.gl/EuHzyv for more details."; + "Geolocation access has been blocked because of a permissions policy " + "applied to the current document. See https://goo.gl/EuHzyv for more " + "details."; Geoposition* CreateGeoposition( const device::mojom::blink::Geoposition& position) {
diff --git a/third_party/blink/renderer/modules/hid/hid.cc b/third_party/blink/renderer/modules/hid/hid.cc index 6b603f42..ced05f75 100644 --- a/third_party/blink/renderer/modules/hid/hid.cc +++ b/third_party/blink/renderer/modules/hid/hid.cc
@@ -29,7 +29,7 @@ const char kContextGone[] = "Script context has shut down."; const char kFeaturePolicyBlocked[] = - "Access to the feature \"hid\" is disallowed by feature policy."; + "Access to the feature \"hid\" is disallowed by permissions policy."; void RejectWithTypeError(const String& message, ScriptPromiseResolver* resolver) {
diff --git a/third_party/blink/renderer/modules/idle/idle_detector.cc b/third_party/blink/renderer/modules/idle/idle_detector.cc index ecc231cb..594effa 100644 --- a/third_party/blink/renderer/modules/idle/idle_detector.cc +++ b/third_party/blink/renderer/modules/idle/idle_detector.cc
@@ -28,7 +28,8 @@ const char kAbortMessage[] = "Idle detection aborted."; const char kFeaturePolicyBlocked[] = - "Access to the feature \"idle-detection\" is disallowed by feature policy."; + "Access to the feature \"idle-detection\" is disallowed by permissions " + "policy."; constexpr base::TimeDelta kMinimumThreshold = base::TimeDelta::FromSeconds(60);
diff --git a/third_party/blink/renderer/modules/imagecapture/image_capture.cc b/third_party/blink/renderer/modules/imagecapture/image_capture.cc index c019993c..204acba 100644 --- a/third_party/blink/renderer/modules/imagecapture/image_capture.cc +++ b/third_party/blink/renderer/modules/imagecapture/image_capture.cc
@@ -1222,6 +1222,156 @@ return DomWindow() ? DomWindow()->document()->IsPageVisible() : false; } +ImageCapture* ImageCapture::Clone() const { + ImageCapture* clone = MakeGarbageCollected<ImageCapture>( + GetExecutionContext(), stream_track_, HasPanTiltZoomPermissionGranted(), + /*callback=*/base::DoNothing()); + + // Copy capabilities. + if (capabilities_->hasWhiteBalanceMode()) { + clone->capabilities_->setWhiteBalanceMode( + capabilities_->whiteBalanceMode()); + } + if (capabilities_->hasExposureMode()) + clone->capabilities_->setExposureMode(capabilities_->exposureMode()); + if (capabilities_->hasFocusMode()) + clone->capabilities_->setFocusMode(capabilities_->focusMode()); + if (capabilities_->hasExposureCompensation()) { + clone->capabilities_->setExposureCompensation( + capabilities_->exposureCompensation()); + } + if (capabilities_->hasExposureTime()) + clone->capabilities_->setExposureTime(capabilities_->exposureTime()); + if (capabilities_->hasColorTemperature()) { + clone->capabilities_->setColorTemperature( + capabilities_->colorTemperature()); + } + if (capabilities_->hasIso()) + clone->capabilities_->setIso(capabilities_->iso()); + if (capabilities_->hasBrightness()) + clone->capabilities_->setBrightness(capabilities_->brightness()); + if (capabilities_->hasContrast()) + clone->capabilities_->setContrast(capabilities_->contrast()); + if (capabilities_->hasSaturation()) + clone->capabilities_->setSaturation(capabilities_->saturation()); + if (capabilities_->hasSharpness()) + clone->capabilities_->setSharpness(capabilities_->sharpness()); + if (capabilities_->hasFocusDistance()) + clone->capabilities_->setFocusDistance(capabilities_->focusDistance()); + if (capabilities_->hasPan()) + clone->capabilities_->setPan(capabilities_->pan()); + if (capabilities_->hasTilt()) + clone->capabilities_->setTilt(capabilities_->tilt()); + if (capabilities_->hasZoom()) + clone->capabilities_->setZoom(capabilities_->zoom()); + if (capabilities_->hasTorch()) + clone->capabilities_->setTorch(capabilities_->torch()); + + // Copy settings. + if (settings_->hasWhiteBalanceMode()) + clone->settings_->setWhiteBalanceMode(settings_->whiteBalanceMode()); + if (settings_->hasExposureMode()) + clone->settings_->setExposureMode(settings_->exposureMode()); + if (settings_->hasFocusMode()) + clone->settings_->setFocusMode(settings_->focusMode()); + if (settings_->hasPointsOfInterest() && + !settings_->pointsOfInterest().IsEmpty()) { + clone->settings_->setPointsOfInterest(settings_->pointsOfInterest()); + } + if (settings_->hasExposureCompensation()) { + clone->settings_->setExposureCompensation( + settings_->exposureCompensation()); + } + if (settings_->hasExposureTime()) + clone->settings_->setExposureTime(settings_->exposureTime()); + if (settings_->hasColorTemperature()) + clone->settings_->setColorTemperature(settings_->colorTemperature()); + if (settings_->hasIso()) + clone->settings_->setIso(settings_->iso()); + if (settings_->hasBrightness()) + clone->settings_->setBrightness(settings_->brightness()); + if (settings_->hasContrast()) + clone->settings_->setContrast(settings_->contrast()); + if (settings_->hasSaturation()) + clone->settings_->setSaturation(settings_->saturation()); + if (settings_->hasSharpness()) + clone->settings_->setSharpness(settings_->sharpness()); + if (settings_->hasFocusDistance()) + clone->settings_->setFocusDistance(settings_->focusDistance()); + if (settings_->hasPan()) + clone->settings_->setPan(settings_->pan()); + if (settings_->hasTilt()) + clone->settings_->setTilt(settings_->tilt()); + if (settings_->hasZoom()) + clone->settings_->setZoom(settings_->zoom()); + if (settings_->hasTorch()) + clone->settings_->setTorch(settings_->torch()); + + if (!current_constraints_) + return clone; + + // Copy current constraints. + clone->current_constraints_ = MediaTrackConstraintSet::Create(); + if (current_constraints_->hasWhiteBalanceMode()) { + clone->current_constraints_->setWhiteBalanceMode( + current_constraints_->whiteBalanceMode()); + } + if (current_constraints_->hasExposureMode()) { + clone->current_constraints_->setExposureMode( + current_constraints_->exposureMode()); + } + if (current_constraints_->hasFocusMode()) { + clone->current_constraints_->setFocusMode( + current_constraints_->focusMode()); + } + if (current_constraints_->hasPointsOfInterest()) { + clone->current_constraints_->setPointsOfInterest( + current_constraints_->pointsOfInterest()); + } + if (current_constraints_->hasExposureCompensation()) { + clone->current_constraints_->setExposureCompensation( + current_constraints_->exposureCompensation()); + } + if (current_constraints_->hasExposureTime()) { + clone->current_constraints_->setExposureTime( + current_constraints_->exposureTime()); + } + if (current_constraints_->hasColorTemperature()) { + clone->current_constraints_->setColorTemperature( + current_constraints_->colorTemperature()); + } + if (current_constraints_->hasIso()) + clone->current_constraints_->setIso(current_constraints_->iso()); + if (current_constraints_->hasBrightness()) { + clone->current_constraints_->setBrightness( + current_constraints_->brightness()); + } + if (current_constraints_->hasContrast()) + clone->current_constraints_->setContrast(current_constraints_->contrast()); + if (current_constraints_->hasSaturation()) { + clone->current_constraints_->setSaturation( + current_constraints_->saturation()); + } + if (current_constraints_->hasSharpness()) { + clone->current_constraints_->setSharpness( + current_constraints_->sharpness()); + } + if (current_constraints_->hasFocusDistance()) { + clone->current_constraints_->setFocusDistance( + current_constraints_->focusDistance()); + } + if (current_constraints_->hasPan()) + clone->current_constraints_->setPan(current_constraints_->pan()); + if (current_constraints_->hasTilt()) + clone->current_constraints_->setTilt(current_constraints_->tilt()); + if (current_constraints_->hasZoom()) + clone->current_constraints_->setZoom(current_constraints_->zoom()); + if (current_constraints_->hasTorch()) + clone->current_constraints_->setTorch(current_constraints_->torch()); + + return clone; +} + void ImageCapture::Trace(Visitor* visitor) const { visitor->Trace(stream_track_); visitor->Trace(service_);
diff --git a/third_party/blink/renderer/modules/imagecapture/image_capture.h b/third_party/blink/renderer/modules/imagecapture/image_capture.h index ce8ce384..c897750 100644 --- a/third_party/blink/renderer/modules/imagecapture/image_capture.h +++ b/third_party/blink/renderer/modules/imagecapture/image_capture.h
@@ -86,6 +86,10 @@ bool HasPanTiltZoomPermissionGranted() const; bool HasZoomPermissionGranted() const; + // Called by MediaStreamTrack::clone() to get a clone with same capabilities, + // settings, and constraints. + ImageCapture* Clone() const; + void Trace(Visitor*) const override; private:
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track.cc b/third_party/blink/renderer/modules/mediastream/media_stream_track.cc index 34c06b57..5b7c33d6 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track.cc
@@ -426,6 +426,9 @@ ExecutionContext::From(script_state), cloned_component, ready_state_, base::DoNothing()); DidCloneMediaStreamTrack(Component(), cloned_component); + if (image_capture_) { + cloned_track->image_capture_ = image_capture_->Clone(); + } return cloned_track; }
diff --git a/third_party/blink/renderer/modules/picture_in_picture/html_element_picture_in_picture.cc b/third_party/blink/renderer/modules/picture_in_picture/html_element_picture_in_picture.cc index 25b0a77..e189951 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/html_element_picture_in_picture.cc +++ b/third_party/blink/renderer/modules/picture_in_picture/html_element_picture_in_picture.cc
@@ -26,7 +26,7 @@ const char kVideoTrackNotAvailableError[] = "The video element has no video track."; const char kFeaturePolicyBlocked[] = - "Access to the feature \"picture-in-picture\" is disallowed by feature " + "Access to the feature \"picture-in-picture\" is disallowed by permissions " "policy."; const char kNotAvailable[] = "Picture-in-Picture is not available."; const char kUserGestureRequired[] =
diff --git a/third_party/blink/renderer/modules/sensor/sensor.cc b/third_party/blink/renderer/modules/sensor/sensor.cc index 3d777b1a..23b242f 100644 --- a/third_party/blink/renderer/modules/sensor/sensor.cc +++ b/third_party/blink/renderer/modules/sensor/sensor.cc
@@ -52,7 +52,7 @@ if (!AreFeaturesEnabled(execution_context, features)) { exception_state.ThrowSecurityError( - "Access to sensor features is disallowed by feature policy"); + "Access to sensor features is disallowed by permissions policy"); return; }
diff --git a/third_party/blink/renderer/modules/serial/serial.cc b/third_party/blink/renderer/modules/serial/serial.cc index 06da7199..9d985b63 100644 --- a/third_party/blink/renderer/modules/serial/serial.cc +++ b/third_party/blink/renderer/modules/serial/serial.cc
@@ -29,7 +29,7 @@ const char kContextGone[] = "Script context has shut down."; const char kFeaturePolicyBlocked[] = - "Access to the feature \"serial\" is disallowed by feature policy."; + "Access to the feature \"serial\" is disallowed by permissions policy."; const char kNoPortSelected[] = "No port selected by the user."; String TokenToString(const base::UnguessableToken& token) {
diff --git a/third_party/blink/renderer/modules/wake_lock/wake_lock.cc b/third_party/blink/renderer/modules/wake_lock/wake_lock.cc index ca76d70..19f11f8 100644 --- a/third_party/blink/renderer/modules/wake_lock/wake_lock.cc +++ b/third_party/blink/renderer/modules/wake_lock/wake_lock.cc
@@ -97,9 +97,9 @@ !context->IsFeatureEnabled( mojom::blink::FeaturePolicyFeature::kScreenWakeLock, ReportOptions::kReportOnFailure)) { - exception_state.ThrowDOMException( - DOMExceptionCode::kNotAllowedError, - "Access to Screen Wake Lock features is disallowed by feature policy"); + exception_state.ThrowDOMException(DOMExceptionCode::kNotAllowedError, + "Access to Screen Wake Lock features is " + "disallowed by permissions policy"); return ScriptPromise(); }
diff --git a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc index 4bbe6d74..331c2b0 100644 --- a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc +++ b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc
@@ -50,10 +50,10 @@ namespace { const char kFeaturePolicyErrorMessage[] = - "Midi has been disabled in this document by Feature Policy."; + "Midi has been disabled in this document by permissions policy."; const char kFeaturePolicyConsoleWarning[] = - "Midi access has been blocked because of a Feature Policy applied to the " - "current document. See https://goo.gl/EuHzyv for more details."; + "Midi access has been blocked because of a permissions policy applied to " + "the current document. See https://goo.gl/EuHzyv for more details."; } // namespace
diff --git a/third_party/blink/renderer/modules/webusb/usb.cc b/third_party/blink/renderer/modules/webusb/usb.cc index 65ba61c..d99d900 100644 --- a/third_party/blink/renderer/modules/webusb/usb.cc +++ b/third_party/blink/renderer/modules/webusb/usb.cc
@@ -35,7 +35,7 @@ namespace { const char kFeaturePolicyBlocked[] = - "Access to the feature \"usb\" is disallowed by feature policy."; + "Access to the feature \"usb\" is disallowed by permissions policy."; const char kNoDeviceSelected[] = "No device selected."; void RejectWithTypeError(const String& error_details,
diff --git a/third_party/blink/renderer/modules/xr/xr_system.cc b/third_party/blink/renderer/modules/xr/xr_system.cc index 32ea856..a202c4ba 100644 --- a/third_party/blink/renderer/modules/xr/xr_system.cc +++ b/third_party/blink/renderer/modules/xr/xr_system.cc
@@ -47,7 +47,7 @@ const char kPageNotVisible[] = "The page is not visible"; const char kFeaturePolicyBlocked[] = - "Access to the feature \"xr\" is disallowed by feature policy."; + "Access to the feature \"xr\" is disallowed by permissions policy."; const char kActiveImmersiveSession[] = "There is already an active, immersive XRSession."; @@ -1207,7 +1207,7 @@ feature_enum.value())) { AddConsoleMessage(error_level, "Feature '" + feature_string + - "' is not permitted by feature policy"); + "' is not permitted by permissions policy"); result.invalid_features = true; } else { DVLOG(3) << __func__ << ": Adding feature " << feature_string
diff --git a/third_party/blink/renderer/platform/fonts/mac/font_matcher_mac.mm b/third_party/blink/renderer/platform/fonts/mac/font_matcher_mac.mm index 930aba4..7144cab 100644 --- a/third_party/blink/renderer/platform/fonts/mac/font_matcher_mac.mm +++ b/third_party/blink/renderer/platform/fonts/mac/font_matcher_mac.mm
@@ -33,7 +33,6 @@ #import <Foundation/Foundation.h> #import <math.h> -#include "base/bit_cast.h" #include "base/mac/foundation_util.h" #include "base/mac/scoped_cftyperef.h" #include "base/mac/scoped_nsobject.h" @@ -42,33 +41,10 @@ #import "third_party/blink/renderer/platform/wtf/hash_set.h" #import "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h" -namespace { - -static CGFloat toFontWeight(blink::FontSelectionValue font_weight) { - static uint64_t ns_font_weights[] = { - 0xbfe99999a0000000, // NSFontWeightUltraLight - 0xbfe3333340000000, // NSFontWeightThin - 0xbfd99999a0000000, // NSFontWeightLight - 0x0000000000000000, // NSFontWeightRegular - 0x3fcd70a3e0000000, // NSFontWeightMedium - 0x3fd3333340000000, // NSFontWeightSemibold - 0x3fd99999a0000000, // NSFontWeightBold - 0x3fe1eb8520000000, // NSFontWeightHeavy - 0x3fe3d70a40000000, // NSFontWeightBlack - }; - if (font_weight <= 50 || font_weight >= 950) - return bit_cast<CGFloat>(ns_font_weights[3]); - - size_t select_weight = roundf(font_weight / 100) - 1; - DCHECK_GE(select_weight, 0ul); - DCHECK_LE(select_weight, base::size(ns_font_weights)); - return bit_cast<CGFloat>(ns_font_weights[select_weight]); -} - -} // namespace - namespace blink { +namespace { + const NSFontTraitMask SYNTHESIZED_FONT_TRAITS = (NSBoldFontMask | NSItalicFontMask); @@ -77,18 +53,18 @@ NSItalicFontMask | NSNarrowFontMask | NSPosterFontMask | NSSmallCapsFontMask); -static BOOL AcceptableChoice(NSFontTraitMask desired_traits, - NSFontTraitMask candidate_traits) { +BOOL AcceptableChoice(NSFontTraitMask desired_traits, + NSFontTraitMask candidate_traits) { desired_traits &= ~SYNTHESIZED_FONT_TRAITS; return (candidate_traits & desired_traits) == desired_traits; } -static BOOL BetterChoice(NSFontTraitMask desired_traits, - int desired_weight, - NSFontTraitMask chosen_traits, - int chosen_weight, - NSFontTraitMask candidate_traits, - int candidate_weight) { +BOOL BetterChoice(NSFontTraitMask desired_traits, + int desired_weight, + NSFontTraitMask chosen_traits, + int chosen_weight, + NSFontTraitMask candidate_traits, + int candidate_weight) { if (!AcceptableChoice(desired_traits, candidate_traits)) return NO; @@ -125,6 +101,23 @@ return candidate_weight_delta_magnitude < chosen_weight_delta_magnitude; } +NSFontWeight ToFontWeight(blink::FontSelectionValue font_weight) { + if (font_weight <= 50 || font_weight >= 950) + return NSFontWeightRegular; + + const NSFontWeight ns_font_weights[] = { + NSFontWeightUltraLight, NSFontWeightThin, NSFontWeightLight, + NSFontWeightRegular, NSFontWeightMedium, NSFontWeightSemibold, + NSFontWeightBold, NSFontWeightHeavy, NSFontWeightBlack, + }; + size_t select_weight = roundf(font_weight / 100) - 1; + DCHECK_GE(select_weight, 0ul); + DCHECK_LE(select_weight, base::size(ns_font_weights)); + return ns_font_weights[select_weight]; +} + +} // namespace + NSFont* MatchUniqueFont(const AtomicString& unique_font_name, float size) { // Testing with a large list of fonts available on Mac OS shows that matching // for kCTFontNameAttribute matches postscript name as well as full font name. @@ -172,7 +165,7 @@ if (desired_family_string == font_family_names::kSystemUi) { NSFont* font = [NSFont systemFontOfSize:size - weight:toFontWeight(desired_weight)]; + weight:ToFontWeight(desired_weight)]; if (desired_traits & IMPORTANT_FONT_TRAITS) font = [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:desired_traits];
diff --git a/third_party/blink/renderer/platform/heap/BUILD.gn b/third_party/blink/renderer/platform/heap/BUILD.gn index 6079edf..c627958 100644 --- a/third_party/blink/renderer/platform/heap/BUILD.gn +++ b/third_party/blink/renderer/platform/heap/BUILD.gn
@@ -57,6 +57,7 @@ "collection_support/heap_hash_table_backing.h", "collection_support/heap_linked_hash_set.h", "collection_support/heap_linked_stack.h", + "collection_support/heap_list_hash_set.h", "collection_support/heap_vector_backing.h", "disallow_new_wrapper.h", "garbage_collected.h",
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h b/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h new file mode 100644 index 0000000..3b0764ca --- /dev/null +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h
@@ -0,0 +1,124 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_LIST_HASH_SET_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_LIST_HASH_SET_H_ + +#include "third_party/blink/renderer/platform/heap/heap.h" +#include "third_party/blink/renderer/platform/wtf/list_hash_set.h" +#include "third_party/blink/renderer/platform/wtf/type_traits.h" + +namespace blink { + +class HeapListHashSetAllocator; +template <typename ValueArg> +class HeapListHashSetNode; + +template <typename ValueArg> +class HeapListHashSetNode final + : public GarbageCollected<HeapListHashSetNode<ValueArg>> { + public: + using NodeAllocator = HeapListHashSetAllocator; + using PointerType = Member<HeapListHashSetNode>; + using Value = ValueArg; + + template <typename U> + static HeapListHashSetNode* Create(NodeAllocator* allocator, U&& value) { + return MakeGarbageCollected<HeapListHashSetNode>(std::forward<U>(value)); + } + + template <typename U> + explicit HeapListHashSetNode(U&& value) noexcept + : value_(std::forward<U>(value)) { + static_assert(std::is_trivially_destructible<Value>::value, + "Garbage collected types used in ListHashSet must be " + "trivially destructible"); + } + + HeapListHashSetNode() = delete; + HeapListHashSetNode(const HeapListHashSetNode&) = delete; + HeapListHashSetNode& operator=(const HeapListHashSetNode&) = delete; + + void Destroy(NodeAllocator* allocator) {} + + HeapListHashSetNode* Next() const { return next_; } + HeapListHashSetNode* Prev() const { return prev_; } + + void Trace(Visitor* visitor) const { + visitor->Trace(prev_); + visitor->Trace(next_); + visitor->Trace(value_); + } + + ValueArg value_; + PointerType prev_ = nullptr; + PointerType next_ = nullptr; +}; + +// Empty allocator as HeapListHashSetNode directly allocates using +// MakeGarbageCollected(). +class HeapListHashSetAllocator final { + DISALLOW_NEW(); + + public: + using TableAllocator = HeapAllocator; + + static constexpr bool kIsGarbageCollected = true; + + struct AllocatorProvider final { + void CreateAllocatorIfNeeded() {} + HeapListHashSetAllocator* Get() { return nullptr; } + void Swap(AllocatorProvider& other) {} + }; +}; + +template <typename ValueArg, + wtf_size_t inlineCapacity = 0, // The inlineCapacity is just a dummy + // to match ListHashSet (off-heap). + typename HashArg = typename DefaultHash<ValueArg>::Hash> +class HeapListHashSet final + : public GarbageCollected< + HeapListHashSet<ValueArg, inlineCapacity, HashArg>>, + public ListHashSet<ValueArg, + inlineCapacity, + HashArg, + HeapListHashSetAllocator> { + public: + HeapListHashSet() = default; + + void Trace(Visitor* v) const { + CheckType(); + ListHashSet<ValueArg, inlineCapacity, HashArg, + HeapListHashSetAllocator>::Trace(v); + } + + private: + static void CheckType() { + static_assert(WTF::IsMemberOrWeakMemberType<ValueArg>::value, + "HeapListHashSet supports only Member and WeakMember."); + static_assert(std::is_trivially_destructible<HeapListHashSet>::value, + "HeapListHashSet must be trivially destructible."); + static_assert(WTF::IsTraceable<ValueArg>::value, + "For sets without traceable elements, use ListHashSet<> " + "instead of HeapListHashSet<>."); + } +}; + +} // namespace blink + +namespace WTF { + +template <typename Value, wtf_size_t inlineCapacity> +struct ListHashSetTraits<Value, inlineCapacity, blink::HeapListHashSetAllocator> + : public HashTraits<blink::Member<blink::HeapListHashSetNode<Value>>> { + using Allocator = blink::HeapListHashSetAllocator; + using Node = blink::HeapListHashSetNode<Value>; + + static constexpr bool kCanTraceConcurrently = + HashTraits<Value>::kCanTraceConcurrently; +}; + +} // namespace WTF + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_LIST_HASH_SET_H_
diff --git a/third_party/blink/renderer/platform/heap/impl/heap_allocator.h b/third_party/blink/renderer/platform/heap/impl/heap_allocator.h index 6e72c47..d002a09 100644 --- a/third_party/blink/renderer/platform/heap/impl/heap_allocator.h +++ b/third_party/blink/renderer/platform/heap/impl/heap_allocator.h
@@ -10,6 +10,7 @@ #include "build/build_config.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector_backing.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_buildflags.h" @@ -25,17 +26,11 @@ #include "third_party/blink/renderer/platform/wtf/hash_map.h" #include "third_party/blink/renderer/platform/wtf/hash_set.h" #include "third_party/blink/renderer/platform/wtf/hash_table.h" -#include "third_party/blink/renderer/platform/wtf/linked_hash_set.h" -#include "third_party/blink/renderer/platform/wtf/list_hash_set.h" #include "third_party/blink/renderer/platform/wtf/type_traits.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { -class HeapListHashSetAllocator; -template <typename ValueArg> -class HeapListHashSetNode; - namespace internal { template <typename T> @@ -44,7 +39,7 @@ } // namespace internal // This is a static-only class used as a trait on collections to make them heap -// allocated. However see also HeapListHashSetAllocator. +// allocated. class PLATFORM_EXPORT HeapAllocator { STATIC_ONLY(HeapAllocator); @@ -264,113 +259,6 @@ struct GCInfoTrait<HeapHashSet<T, U, V>> : public GCInfoTrait<HashSet<T, U, V, HeapAllocator>> {}; -} // namespace blink - -namespace WTF { - -template <typename Value, wtf_size_t inlineCapacity> -struct ListHashSetTraits<Value, inlineCapacity, blink::HeapListHashSetAllocator> - : public HashTraits<blink::Member<blink::HeapListHashSetNode<Value>>> { - using Allocator = blink::HeapListHashSetAllocator; - using Node = blink::HeapListHashSetNode<Value>; - - static constexpr bool kCanTraceConcurrently = - HashTraits<Value>::kCanTraceConcurrently; -}; - -} // namespace WTF - -namespace blink { - -template <typename ValueArg> -class HeapListHashSetNode final - : public GarbageCollected<HeapListHashSetNode<ValueArg>> { - public: - using NodeAllocator = HeapListHashSetAllocator; - using PointerType = Member<HeapListHashSetNode>; - using Value = ValueArg; - - template <typename U> - static HeapListHashSetNode* Create(NodeAllocator* allocator, U&& value) { - return MakeGarbageCollected<HeapListHashSetNode>(std::forward<U>(value)); - } - - template <typename U> - explicit HeapListHashSetNode(U&& value) : value_(std::forward<U>(value)) { - static_assert(std::is_trivially_destructible<Value>::value, - "Garbage collected types used in ListHashSet must be " - "trivially destructible"); - } - - void Destroy(NodeAllocator* allocator) {} - - HeapListHashSetNode* Next() const { return next_; } - HeapListHashSetNode* Prev() const { return prev_; } - - void Trace(Visitor* visitor) const { - visitor->Trace(prev_); - visitor->Trace(next_); - visitor->Trace(value_); - } - - ValueArg value_; - PointerType prev_; - PointerType next_; -}; - -// Empty allocator as HeapListHashSetNode directly allocates using -// MakeGarbageCollected(). -class HeapListHashSetAllocator { - DISALLOW_NEW(); - - public: - using TableAllocator = HeapAllocator; - - static constexpr bool kIsGarbageCollected = true; - - struct AllocatorProvider final { - void CreateAllocatorIfNeeded() {} - HeapListHashSetAllocator* Get() { return nullptr; } - void Swap(AllocatorProvider& other) {} - }; -}; - -template <typename ValueArg, - wtf_size_t inlineCapacity = 0, // The inlineCapacity is just a dummy - // to match ListHashSet (off-heap). - typename HashArg = typename DefaultHash<ValueArg>::Hash> -class HeapListHashSet : public ListHashSet<ValueArg, - inlineCapacity, - HashArg, - HeapListHashSetAllocator> { - IS_GARBAGE_COLLECTED_CONTAINER_TYPE(); - DISALLOW_NEW(); - - static void CheckType() { - static_assert(WTF::IsMemberOrWeakMemberType<ValueArg>::value, - "HeapListHashSet supports only Member and WeakMember."); - static_assert(std::is_trivially_destructible<HeapListHashSet>::value, - "HeapListHashSet must be trivially destructible."); - static_assert(WTF::IsTraceable<ValueArg>::value, - "For sets without traceable elements, use ListHashSet<> " - "instead of HeapListHashSet<>."); - } - - public: - template <typename> - static void* AllocateObject(size_t size) { - return ThreadHeap::Allocate< - HeapListHashSet<ValueArg, inlineCapacity, HashArg>>(size); - } - - HeapListHashSet() { CheckType(); } -}; - -template <typename T, wtf_size_t inlineCapacity, typename U> -struct GCInfoTrait<HeapListHashSet<T, inlineCapacity, U>> - : public GCInfoTrait< - ListHashSet<T, inlineCapacity, U, HeapListHashSetAllocator>> {}; - template <typename Value, typename HashFunctions = typename DefaultHash<Value>::Hash, typename Traits = HashTraits<Value>>
diff --git a/third_party/blink/renderer/platform/heap/test/concurrent_marking_test.cc b/third_party/blink/renderer/platform/heap/test/concurrent_marking_test.cc index aec8e7f..1e61a95 100644 --- a/third_party/blink/renderer/platform/heap/test/concurrent_marking_test.cc +++ b/third_party/blink/renderer/platform/heap/test/concurrent_marking_test.cc
@@ -230,31 +230,28 @@ // HeapListHashSet template <typename T> -class HeapListHashSetAdapter : public HeapListHashSet<T> { - public: - ALWAYS_INLINE void swap(HeapListHashSetAdapter<T>& other) { - HeapListHashSet<T>::Swap(other); - } +struct MethodAdapter<HeapListHashSet<T>> + : public MethodAdapterBase<HeapListHashSet<T>> { + static void Swap(HeapListHashSet<T>& a, HeapListHashSet<T>& b) { a.Swap(b); } }; TEST_F(ConcurrentMarkingTest, AddToListHashSet) { - AddToCollection<HeapListHashSetAdapter<Member<IntegerObject>>>(); + AddToCollection<HeapListHashSet<Member<IntegerObject>>>(); } TEST_F(ConcurrentMarkingTest, RemoveFromBeginningOfListHashSet) { - RemoveFromBeginningOfCollection< - HeapListHashSetAdapter<Member<IntegerObject>>>(); + RemoveFromBeginningOfCollection<HeapListHashSet<Member<IntegerObject>>>(); } TEST_F(ConcurrentMarkingTest, RemoveFromMiddleOfListHashSet) { - RemoveFromMiddleOfCollection<HeapListHashSetAdapter<Member<IntegerObject>>>(); + RemoveFromMiddleOfCollection<HeapListHashSet<Member<IntegerObject>>>(); } TEST_F(ConcurrentMarkingTest, RemoveFromEndOfListHashSet) { - RemoveFromEndOfCollection<HeapListHashSetAdapter<Member<IntegerObject>>>(); + RemoveFromEndOfCollection<HeapListHashSet<Member<IntegerObject>>>(); } TEST_F(ConcurrentMarkingTest, ClearListHashSet) { - ClearCollection<HeapListHashSetAdapter<Member<IntegerObject>>>(); + ClearCollection<HeapListHashSet<Member<IntegerObject>>>(); } TEST_F(ConcurrentMarkingTest, SwapListHashSet) { - SwapCollections<HeapListHashSetAdapter<Member<IntegerObject>>>(); + SwapCollections<HeapListHashSet<Member<IntegerObject>>>(); } // HeapHashCountedSet
diff --git a/third_party/blink/renderer/platform/wtf/list_hash_set.h b/third_party/blink/renderer/platform/wtf/list_hash_set.h index 6e8a3cb..42d62de 100644 --- a/third_party/blink/renderer/platform/wtf/list_hash_set.h +++ b/third_party/blink/renderer/platform/wtf/list_hash_set.h
@@ -101,6 +101,10 @@ explicit MallocedListHashSetNode(U&& value) : value_(std::forward<U>(value)) {} + MallocedListHashSetNode() = delete; + MallocedListHashSetNode(const MallocedListHashSetNode&) = delete; + MallocedListHashSetNode& operator=(const MallocedListHashSetNode&) = delete; + void Destroy(NodeAllocator* allocator) { this->~MallocedListHashSetNode(); allocator->Deallocate(this);
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 705d9eb..fb658d2 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -828,7 +828,7 @@ crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-justify-content-vert-006.xhtml [ Failure ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-justify-content-wmvert-001.xhtml [ Failure ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-safe-overflow-position-001.html [ Failure ] -crbug.com/1155036 [ Debug ] external/wpt/css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html [ Crash Pass ] +crbug.com/1155036 external/wpt/css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html [ Crash Pass ] # [css-lists] crbug.com/1123457 external/wpt/css/css-lists/counter-list-item-2.html [ Failure ] @@ -1592,6 +1592,7 @@ crbug.com/1022182 virtual/module-top-level-await/external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-immediate-promise.html [ Pass ] crbug.com/1022182 virtual/module-top-level-await/external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html [ Pass ] crbug.com/1022182 virtual/module-top-level-await/external/wpt/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html [ Pass ] +crbug.com/1022182 virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/parse-error.tentative.html [ Skip ] crbug.com/1024331 external/wpt/css/css-text/hyphens/hyphens-out-of-flow-001.html [ Failure ] crbug.com/1024331 external/wpt/css/css-text/hyphens/hyphens-out-of-flow-002.html [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 23909cc..85cd42bf 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -4,6 +4,7 @@ "bases": [ "external/wpt/html/webappapis/dynamic-markup-insertion/document-write", "external/wpt/html/semantics/scripting-1/the-script-element/module", + "external/wpt/html/semantics/scripting-1/the-script-element/json-module", "external/wpt/service-workers/service-worker/registration-script-module.https.html", "external/wpt/service-workers/service-worker/update-registration-with-type.https.html", "external/wpt/workers/Worker-terminate-forever-during-evaluation.html", @@ -14,7 +15,7 @@ "fast/loader/invalid-module-specifier.html", "http/tests/devtools/isolated-code-cache/" ], - "args": ["--enable-features=TopLevelAwait"] + "args": ["--enable-features=TopLevelAwait,JSONModules"] }, { "prefix": "disable-accept-language-header",
diff --git a/third_party/blink/web_tests/android/ChromiumWPTExpectations b/third_party/blink/web_tests/android/ChromiumWPTExpectations index 6072b851..950a2411 100644 --- a/third_party/blink/web_tests/android/ChromiumWPTExpectations +++ b/third_party/blink/web_tests/android/ChromiumWPTExpectations
@@ -3214,6 +3214,7 @@ crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints.https.html [ Failure ] +crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getSettings.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WeblayerWPTExpectations b/third_party/blink/web_tests/android/WeblayerWPTExpectations index 6833b93..895b26e5 100644 --- a/third_party/blink/web_tests/android/WeblayerWPTExpectations +++ b/third_party/blink/web_tests/android/WeblayerWPTExpectations
@@ -3186,6 +3186,7 @@ crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints.https.html [ Failure ] +crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getSettings.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/android/WebviewWPTExpectations b/third_party/blink/web_tests/android/WebviewWPTExpectations index df00ddf..dded3fc 100644 --- a/third_party/blink/web_tests/android/WebviewWPTExpectations +++ b/third_party/blink/web_tests/android/WebviewWPTExpectations
@@ -3444,6 +3444,7 @@ crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-applyConstraints.https.html [ Failure ] +crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getConstraints.https.html [ Failure ] crbug.com/1050754 external/wpt/mediacapture-image/MediaStreamTrack-getSettings.https.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 2682880..3ebebc2 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -91,6 +91,13 @@ } }, "css-flexbox": { + "contain-size-layout-abspos-flex-container-crash.html": [ + "3197d5b796b032742fa44bbd42ba6fe803268d69", + [ + null, + {} + ] + ], "fixedpos-video-in-abspos-quirk-crash.html": [ "80cae086ca7ba1ceb9af2631ea2a5aa04249040b", [ @@ -370,6 +377,13 @@ ] }, "css-pseudo": { + "file-selector-button-display-none-overflow-crash.html": [ + "81051741c29824bb79460f6dba1b147b9e79de45", + [ + null, + {} + ] + ], "file-selector-button-display-toggle-crash.tentative.html": [ "bc9f24ae0194fc3b59a1f0da7e8c2e13cf9eb9c5", [ @@ -494,6 +508,13 @@ {} ] ], + "rendering-rtl-bidi-override-crash.html": [ + "9ba75c9c37b23f3b2dc8ef85bc3f606807c55aaf", + [ + null, + {} + ] + ], "trailing-space-with-cr-crash.html": [ "48c223e352d378e10b7cc10e5e49e8613e43c380", [ @@ -3269,6 +3290,15 @@ ] } }, + "css-multicol": { + "moz-multicol3-column-balancing-break-inside-avoid-1.html": [ + "f18a9ceefa1936b23bdd90d2c2ef3990c83ddb57", + [ + null, + {} + ] + ] + }, "css-overscroll-behavior": { "overscroll-behavior-manual.html": [ "97f52984a51ae4157ec8ed91ddf4b3b8d405bec6", @@ -3345,7 +3375,7 @@ }, "css-scroll-snap": { "snap-at-user-scroll-end-manual.html": [ - "e87b8e9b3fad8f31f3dd88a59931d1ed30cd2150", + "373e3fcb1e1178f0d30d82a06c97c29db150123a", [ null, {} @@ -6330,20 +6360,6 @@ {} ] ], - "focus-visible-003-manual.html": [ - "ccc916a952854cc357ba7a5af73f4e1b476ef97d", - [ - null, - {} - ] - ], - "focus-visible-004-manual.html": [ - "4d7878e751ecd5487eecd9f40477fa4a7ff03484", - [ - null, - {} - ] - ], "focus-visible-006-manual.html": [ "974abc0024e3153008e944ff706156efcb9948e2", [ @@ -7129,6 +7145,13 @@ "browsers": { "browsing-the-web": { "unloading-documents": { + "beforeunload-sticky-activation-manual.html": [ + "55612bbfc4e732ae6d314cf4b35eb88edfb52ada", + [ + null, + {} + ] + ], "unload": { "pagehide-manual.html": [ "ba34c3087f3bf6d859450d7734d2b8dc998ba80a", @@ -8709,13 +8732,6 @@ null, {} ] - ], - "input-events-get-target-ranges-manual.html": [ - "7e6a59769d04717e70dbd2c736c874bda69e6583", - [ - null, - {} - ] ] }, "mediacapture-depth": { @@ -9462,20 +9478,6 @@ ] ] }, - "pointerevent_capture_suppressing_mouse-manual.html": [ - "127b07a9ee0c36004e2a5c1113b01c18633672d4", - [ - null, - {} - ] - ], - "pointerevent_fractional_coordinates-manual.html": [ - "e0e2fdcd62175c325e43744e43addc5f45486159", - [ - null, - {} - ] - ], "pointerevent_pointerleave_pen-manual.html": [ "d0d8dd3682513fa44659573f02aa3eb9044c5605", [ @@ -9775,6 +9777,22 @@ ] ] }, + "serial": { + "serialPort_disconnect-manual.https.html": [ + "3a2e13400c4570cfab7826a7ec7a2972e3596103", + [ + null, + {} + ] + ], + "serialPort_loopback-manual.https.html": [ + "9e7801d8332f13aff063f6267f645be6ba837529", + [ + null, + {} + ] + ] + }, "service-workers": { "service-worker": { "fetch-event-is-history-backward-navigation-manual.https.html": [ @@ -10052,15 +10070,15 @@ ] }, "web-nfc": { - "NDEFReader-document-hidden-manual.https.html": [ - "ffbd7ebc45618a905b91eaa5a6cfa4f41f8efcd9", + "NDEFReader-read-document-hidden-manual.https.html": [ + "47c1332713eef2069820a2149a79dd667e6a62ad", [ null, {} ] ], - "NDEFWriter-document-hidden-manual.https.html": [ - "1a2839857bb69fc06b6ea779e138b17cf54ca580", + "NDEFReader-write-document-hidden-manual.https.html": [ + "150e5a239cfb6dcb6b05288006e80d401ec762a7", [ null, {} @@ -10206,6 +10224,15 @@ ] ] }, + "webusb": { + "usbDevice_claimInterface-manual.https.html": [ + "991c1a9f31f08fce1b5d4797678a2e9917f5e7c0", + [ + null, + {} + ] + ] + }, "xhr": { "send-authentication-existing-session-manual.htm": [ "a80efd6e8436408db15d8019beef3abc0dfd0ab9", @@ -10233,6 +10260,122 @@ "print-reftest": { "css": { "css-break": { + "block-001-wm-vlr-print.html": [ + "6cd5ea07c7b2a132cef7d26abd4204cb157b5eae", + [ + null, + [ + [ + "/css/css-break/block-001-wm-vlr-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 60 + ], + [ + 0, + 200 + ] + ] + ] + ] + } + ] + ], + "block-001-wm-vrl-print.html": [ + "6e073121c6acf3b7c5b381e230365fcf4b7e6d56", + [ + null, + [ + [ + "/css/css-break/block-001-wm-vrl-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 60 + ], + [ + 0, + 200 + ] + ] + ] + ] + } + ] + ], + "block-002-wm-vlr-print.html": [ + "99949623c3923e529687e75ee18e849bfc852180", + [ + null, + [ + [ + "/css/css-break/block-002-wm-vlr-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 35 + ], + [ + 0, + 220 + ] + ] + ] + ] + } + ] + ], + "block-002-wm-vrl-print.html": [ + "084b5325b7ac40ee5b81f22cd542e5b3f5c16b57", + [ + null, + [ + [ + "/css/css-break/block-002-wm-vrl-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 35 + ], + [ + 0, + 220 + ] + ] + ] + ] + } + ] + ], "break-nested-float-in-table-001-print.html": [ "e4e0a578e9a6c6d763fcb9e80d6ff8b91561f3e5", [ @@ -10245,6 +10388,19 @@ ], {} ] + ], + "ink-overflow-001-print.html": [ + "495153d3d423b014aa40aeed87ea0a899edce1f5", + [ + null, + [ + [ + "about:blank", + "==" + ] + ], + {} + ] ] }, "css-flexbox": { @@ -10316,6 +10472,19 @@ ], {} ] + ], + "multicol-height-002-print.xht": [ + "ccc78803d47980cbd95f5d23ecd4025b674fcae1", + [ + null, + [ + [ + "/css/css-multicol/multicol-height-002-print-ref.xht", + "==" + ] + ], + {} + ] ] }, "css-values": { @@ -45662,6 +45831,19 @@ ], {} ] + ], + "transform-animation-under-large-scale.html": [ + "359380d698bb26a4404d027285150de3b63492a0", + [ + null, + [ + [ + "/css/css-animations/transform-animation-under-large-scale-ref.html", + "==" + ] + ], + {} + ] ] }, "css-backgrounds": { @@ -52235,6 +52417,19 @@ {} ] ], + "ink-overflow-002.html": [ + "8af605efea87b618007641729bd3b579fcb654eb", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "line-after-unbreakable-float-after-padding.html": [ "d3a4018cd809fc09eb68c1b25f4dda4736e64131", [ @@ -52728,6 +52923,32 @@ ], {} ] + ], + "widows-orphans-006.html": [ + "39913266412df2a383b6fc091291333856e65c38", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "widows-orphans-007.html": [ + "23809c8ffedf7c4702562a08adfbb23f2fd462fd", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] ] }, "css-cascade": { @@ -57202,6 +57423,19 @@ {} ] ], + "contain-size-monolithic-002.html": [ + "7f407df30b7e459673fc6481e0b150f0ae39d46a", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "contain-size-multicol-001.html": [ "81465c02d6114aa4a27637b2e77b3d62161c0864", [ @@ -75577,6 +75811,19 @@ {} ] ], + "abs-pos-004.html": [ + "b66143c36c135e2dc535cdf7efee3bbed8952f17", + [ + null, + [ + [ + "/css/css-grid/subgrid/abs-pos-004-ref.html", + "==" + ] + ], + {} + ] + ], "auto-track-sizing-001.html": [ "0fdb9b0b7e2ed8855b02dcfb9baceeb61b7d05d3", [ @@ -82730,6 +82977,19 @@ {} ] ], + "mask-image-svg-child-will-change.html": [ + "248589d54dd99f1bcaf74d03944d9a8bc36fd047", + [ + null, + [ + [ + "/css/css-masking/mask-image/reference/mask-image-svg-child-will-change-ref.html", + "==" + ] + ], + {} + ] + ], "mask-image-url-image-hash.html": [ "b1efc90818bec85d5022a9b908a14c2e0c35ff3b", [ @@ -82878,6 +83138,32 @@ {} ] ], + "balance-break-avoidance-000.html": [ + "f6540e4ab0c1ba55ebef6463f90f2246f2801443", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "balance-break-avoidance-001.html": [ + "1449110516f35ac89bcadd0dfc59fbff3961966d", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "balance-grid-container.html": [ "64df23e09fb62c6e71aa834c96b72d4bf2330f06", [ @@ -82891,6 +83177,19 @@ {} ] ], + "balance-orphans-widows-000.html": [ + "97f2d0ccd17699b7b43c6cdc01e0edcde049de9d", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "baseline-000.html": [ "e01e9de1dd124af08eb5a2aa07f36254769375a7", [ @@ -83008,6 +83307,19 @@ {} ] ], + "broken-column-rule-1.html": [ + "13deaa72cb7d28e47e316cc54f1b0a062ac6be4c", + [ + null, + [ + [ + "/css/css-multicol/broken-column-rule-1-ref.html", + "==" + ] + ], + {} + ] + ], "change-intrinsic-width.html": [ "3df3e1ebc8f9b5780dc858a878bca13dbedcdb35", [ @@ -84035,6 +84347,32 @@ {} ] ], + "multicol-fill-balance-005.html": [ + "ad9a592ec9355ded07383e2071d1dda786ba5f8f", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], + "multicol-fill-balance-nested-000.html": [ + "5e466df8077545b4d6474389d296bc26c5b28b86", + [ + null, + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "multicol-gap-000.xht": [ "88aa17e8b488565dc40398e6e8f1d2e3bf3a97a1", [ @@ -142303,6 +142641,19 @@ {} ] ], + "svg-empty-container-with-filter-content-added.html": [ + "6436461f78bc03b7b2655b7c1b114f15acfc81f9", + [ + null, + [ + [ + "/css/filter-effects/reference/green-100x100.html", + "==" + ] + ], + {} + ] + ], "svg-feflood-001.html": [ "4588cf93f6ca52386ce8af1dbe6e0462572bb559", [ @@ -171569,6 +171920,12 @@ "19a0bfaed3f0aa1b498c275ac43100dbcb23010b", [] ], + "resources": { + "concatenate-stream.js": [ + "a35bb1416e754893e331c0089d97720ae3b5af8e", + [] + ] + }, "third_party": { "pako": { "LICENSE": [ @@ -171834,10 +172191,6 @@ "6502444407f59e6ea08da63c8dcdb22978e5ae83", [] ], - "frame-src-sandboxed-allowed-expected.txt": [ - "1102ea6c18da669572590c2617059dcdb516e238", - [] - ], "frame-src-sandboxed-allowed.html.headers": [ "ec9e8deb5991e9950c705a1ac17201faa5e9fc9d", [] @@ -180091,7 +180444,11 @@ "7d3392a54f65dca018e960874efe19f8ca388a70", [] ] - } + }, + "transform-animation-under-large-scale-ref.html": [ + "14b41366268c3a33f2d49e477bab2d40c6acb432", + [] + ] }, "css-backgrounds": { "META.yml": [ @@ -181536,6 +181893,22 @@ "198e62f8c7d4e020e65dad6ecb7937204aaa8912", [] ], + "block-001-wm-vlr-ref.html": [ + "b131b0e486084ed3a127ac07c23425f8e50be93a", + [] + ], + "block-001-wm-vrl-ref.html": [ + "6fb7e7353c7ab73a11c459088d0368f9e96f1484", + [] + ], + "block-002-wm-vlr-ref.html": [ + "d3193f20c4f69ccbed481829df9d8be57a1238ab", + [] + ], + "block-002-wm-vrl-ref.html": [ + "8b5ea92af5fd248ae3994d24e19375f301de98d1", + [] + ], "block-end-aligned-abspos-with-overflow-ref.html": [ "a8470b09a7d67eb3929c0380eaa45779c2b558ad", [] @@ -182948,6 +183321,34 @@ "3aa83671fd24673d28d03805d7a9e374e65c913a", [] ], + "align-content-horiz-001a-expected.txt": [ + "8d5c92ba7fcf51c75e903def5dbe2e009b0e358e", + [] + ], + "align-content-horiz-001b-expected.txt": [ + "8d5c92ba7fcf51c75e903def5dbe2e009b0e358e", + [] + ], + "align-content-horiz-002-expected.txt": [ + "f80359cafe5a171349cffdece607b97c0f33d08b", + [] + ], + "align-content-vert-001a-expected.txt": [ + "b17a1456e5d9078f5b06cd2d7a8b6635c1dbd9fe", + [] + ], + "align-content-vert-001b-expected.txt": [ + "b17a1456e5d9078f5b06cd2d7a8b6635c1dbd9fe", + [] + ], + "align-content-vert-002-expected.txt": [ + "4979d64291e50d66a3012996d188d30162e72e4c", + [] + ], + "align-content-wmvert-001-expected.txt": [ + "4979d64291e50d66a3012996d188d30162e72e4c", + [] + ], "anonymous-flex-item-split-ref.html": [ "163efd401c4d24ce205dc9c39431b79598a7fb6f", [] @@ -192197,7 +192598,7 @@ [] ], "masonry-fragmentation-001-ref.html": [ - "de3fe6f402d31c7256b3f9c36c4db857645beb97", + "c9318ae0bba5ba6419bab7d36fd37720af8fb3b1", [] ], "masonry-fragmentation-002-ref.html": [ @@ -192541,6 +192942,10 @@ "19180106e548c8a183ba903b7b9c6f3e443d79a9", [] ], + "abs-pos-004-ref.html": [ + "ac47309df22993903294406748b4152b27ff0a33", + [] + ], "auto-track-sizing-001-ref.html": [ "800f87e5d00a767f1cb5e5816ffd46110fbd4e80", [] @@ -193652,11 +194057,11 @@ [] ], "list-style-type-computed-expected.txt": [ - "24d8b1a64316a29228d7cfd5c74ea6baed3d209e", + "5e8dad67055da877a9337549e9b689ba943cbaab", [] ], "list-style-type-valid-expected.txt": [ - "59eca290dae95136ad8b80f28dacf5045a8cf655", + "9eced2532c23038d3d5203bb26dbb2516f081b9e", [] ] }, @@ -194179,6 +194584,10 @@ "mask-image-ref.html": [ "4e121163f9d093b468e710882cb164bb965d9aa8", [] + ], + "mask-image-svg-child-will-change-ref.html": [ + "722879303d242a8e2600b36bd6ac730dda20f559", + [] ] }, "support": { @@ -194290,6 +194699,10 @@ "181f7bafec331977d9cc0fb2b291b6d4ce3dc419", [] ], + "broken-column-rule-1-ref.html": [ + "c696d079f43e54af37578842ec0109bd05f814e9", + [] + ], "column-balancing-paged-001-print-ref.html": [ "af1a86b1e73a49e488faaba1741aae9afe63f28f", [] @@ -194306,6 +194719,10 @@ "963f584f17d502f6d693dfe8d662ec2b3978f4ff", [] ], + "moz-multicol3-column-balancing-break-inside-avoid-1-ref.html": [ + "c39deb12f00b2a201b09a38d3847fc80b5055c5e", + [] + ], "multicol-block-no-clip-001-ref.xht": [ "1313948514e9cd6c96ad45ff60ba9c327a0b9838", [] @@ -194482,6 +194899,10 @@ "d55aa7aa94672bed08ef23c352c1f929c5e394e0", [] ], + "multicol-height-002-print-ref.xht": [ + "24943560c304339a408438499c2c028009ece508", + [] + ], "multicol-height-block-child-001-ref.xht": [ "6b3689698115a853b5e2b7d33776b16e81d3ea53", [] @@ -196890,12 +197311,16 @@ ] }, "css-scroll-anchoring": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "META.yml": [ "3d24f5cc9fdf9ca91161d3b164420b78350c3183", [] ], "OWNERS": [ - "6db7af867fb8bb728ec15b36f3dcfc1dc3cb9c0c", + "c6ee3b62850339103fd67d83e06700a22d7f1b2c", [] ], "README.md": [ @@ -197040,12 +197465,16 @@ } }, "css-shapes": { + "DIR_METADATA": [ + "815ca001c09622297d9371d5ed974d9c13aafcde", + [] + ], "META.yml": [ "2e433aa66f914de66e36f0f4f99237254a7def29", [] ], "OWNERS": [ - "45d17fb8d4da90a9b17123fa6cc82d4152792de9", + "e8b3fc19338252f3ccd497f87b62ab1dd82ec696", [] ], "parsing": { @@ -197906,12 +198335,16 @@ } }, "css-sizing": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "META.yml": [ "086e654a8e039f259b5e828d024f808c2e95016b", [] ], "OWNERS": [ - "95f61b78c6990e017abd93aec037d42ca2ab9424", + "51c6a57df7f416859ec03c427d80be542e6205a4", [] ], "aspect-ratio": { @@ -198366,12 +198799,12 @@ } }, "css-syntax": { - "META.yml": [ - "359219c09965b90066e4fb31d952d621d0d0dc5b", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "META.yml": [ + "359219c09965b90066e4fb31d952d621d0d0dc5b", [] ], "charset": { @@ -198496,12 +198929,16 @@ ] }, "css-tables": { + "DIR_METADATA": [ + "bd468f81a1a14c030b25277dea36547beb57ca44", + [] + ], "META.yml": [ "b5372064ac2721687998bb23a9a9b95226d74afd", [] ], "OWNERS": [ - "1cc9d5b6637083e2dcb65280083edb82e4aea251", + "aef437ec77c0df2ec4d56553611bed3fae5c801b", [] ], "absolute-tables-003-expected.txt": [ @@ -198740,12 +199177,12 @@ ] }, "css-text": { - "META.yml": [ - "e7914c0fc7ff9e6999f8847dc1800968472483f2", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "META.yml": [ + "e7914c0fc7ff9e6999f8847dc1800968472483f2", [] ], "boundary-shaping": { @@ -201451,42 +201888,22 @@ [] ] }, - "seg-break-transformation-001-expected.txt": [ - "9612dd0cf28a2ed03a2080e68e2278792060a7e9", - [] - ], "seg-break-transformation-001.tentative-expected.txt": [ "9612dd0cf28a2ed03a2080e68e2278792060a7e9", [] ], - "seg-break-transformation-002-expected.txt": [ - "405bb8e17b14c4b65d41d11c69995c0459fd545f", - [] - ], "seg-break-transformation-002.tentative-expected.txt": [ "405bb8e17b14c4b65d41d11c69995c0459fd545f", [] ], - "seg-break-transformation-003-expected.txt": [ - "716b04b855afad7fb770f34e21606576d2615415", - [] - ], "seg-break-transformation-003.tentative-expected.txt": [ "716b04b855afad7fb770f34e21606576d2615415", [] ], - "seg-break-transformation-008-expected.txt": [ - "69421f2947e4db37f2b1f753f383b151b543b2f1", - [] - ], "seg-break-transformation-008.tentative-expected.txt": [ "69421f2947e4db37f2b1f753f383b151b543b2f1", [] ], - "seg-break-transformation-009-expected.txt": [ - "283611ac4bc3387770fb1e0fe24c6a177d389ba3", - [] - ], "seg-break-transformation-009.tentative-expected.txt": [ "283611ac4bc3387770fb1e0fe24c6a177d389ba3", [] @@ -201870,12 +202287,16 @@ } }, "css-text-decor": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "META.yml": [ "51a4fba49fcbf2f7ad13242ceaf39a0f25b59495", [] ], "OWNERS": [ - "801a0f4a54b73d5dbf9db773c6c1281e76c76c77", + "f196c8221df606e3a22e3019b5cd47ab9bf6e82b", [] ], "inheritance-expected.txt": [ @@ -202270,18 +202691,18 @@ ] }, "css-timing": { - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ] }, "css-transforms": { - "META.yml": [ - "a6d5672c9dfe95c990c538f5596094eb2a9615bc", + "DIR_METADATA": [ + "46ba83204d2bf84c19a5365579d6365ae278793a", [] ], - "OWNERS": [ - "e090a5a8b8b138de3b33ab32d61f9bbe98c87fc1", + "META.yml": [ + "a6d5672c9dfe95c990c538f5596094eb2a9615bc", [] ], "animation": { @@ -203924,12 +204345,12 @@ "918c97d6da7562004967a205522e3614d9c5d35f", [] ], - "META.yml": [ - "a448fc800d26f26f7976bb9358251a5c392262e1", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "META.yml": [ + "a448fc800d26f26f7976bb9358251a5c392262e1", [] ], "idlharness-expected.txt": [ @@ -204230,12 +204651,16 @@ } }, "css-ui": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "META.yml": [ "7ce4b54a22c78576dc2318ebd651dfd1cce374ad", [] ], "OWNERS": [ - "5f43f9116bc8073cfadd3bf840519a3ad96c296f", + "5e03d9bce08ec1c2c4d3a23b993e8f428c9e68db", [] ], "appearance-auto-input-non-widget-001-ref.html": [ @@ -205436,12 +205861,12 @@ ] }, "css-values": { - "META.yml": [ - "a22882a9996b14afa942d3403fa1a873f526073a", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "META.yml": [ + "a22882a9996b14afa942d3403fa1a873f526073a", [] ], "calc-background-position-003-expected.txt": [ @@ -205810,12 +206235,12 @@ ] }, "css-variables": { - "META.yml": [ - "a1747aadc086e75733c15242826d7631b0c95ead", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "META.yml": [ + "a1747aadc086e75733c15242826d7631b0c95ead", [] ], "reference": { @@ -205948,12 +206373,16 @@ ] }, "css-writing-modes": { + "DIR_METADATA": [ + "fecdb38aeaf63e869d123b6ef78aebf45ff0c756", + [] + ], "META.yml": [ "c11da73b6b438ca69cc6425f5118a4f9aa36a34f", [] ], "OWNERS": [ - "d7655b1d773ab9addd5b652424905bea288a85fe", + "53463b38f4154029f9fadf7c337119f9828f57b4", [] ], "abs-pos-non-replaced-icb-vrl-004-ref.xht": [ @@ -208266,6 +208695,10 @@ "7a825be56202175f8b013ec7cc65f7d41ef77872", [] ], + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", + [] + ], "HTMLLinkElement-disabled-alternate-ref.html": [ "5d87bfdaf5b0533f2ea7088a870ca45474d065f4", [] @@ -208274,10 +208707,6 @@ "3250801f64b5d6b4d430083bdc06c09aa0844370", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", - [] - ], "border-shorthand-serialization-expected.txt": [ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] @@ -208331,7 +208760,7 @@ [] ], "serialize-values-expected.txt": [ - "1ae8263a4879fbbf756bd1a07e397c62c664f1cc", + "f9c57d1a9fa21eca0068acc357132ff272b61c92", [] ], "serialize-variable-reference-expected.txt": [ @@ -208556,6 +208985,10 @@ } }, "cssom-view": { + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", + [] + ], "META.yml": [ "a6644945910fc83ca079c93507b21117b91de9c3", [] @@ -208580,10 +209013,6 @@ "7384a2201c30cd11007c5c9f3c552e131c258f2b", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", - [] - ], "cssom-getBoundingClientRect-vertical-rl-ref.html": [ "1ee4fe2652ff56655c20963f90810de6a979462f", [] @@ -208848,12 +209277,12 @@ ] }, "filter-effects": { - "META.yml": [ - "930b762b01a1a75e5b5ab4fb18dedd5939618fe1", + "DIR_METADATA": [ + "765407c4db9cfc7cfe2cfba1a9a04d88645b07a2", [] ], - "OWNERS": [ - "5f3e240be54b8b3d8d86991a78652708cbc1a999", + "META.yml": [ + "930b762b01a1a75e5b5ab4fb18dedd5939618fe1", [] ], "animation": { @@ -209576,12 +210005,16 @@ ] }, "geometry": { + "DIR_METADATA": [ + "f7d3bf58a47dd3ff295252e2ab916e02a9e19f95", + [] + ], "META.yml": [ "98a2ae9860b2d682220dbf21eb2f3606ca68ff61", [] ], "OWNERS": [ - "b788e321869c995fa856257deb78079d0f24d191", + "806af339445513103f567ed57789ad2979e29426", [] ], "idlharness-expected.txt": [ @@ -209600,12 +210033,12 @@ } }, "mediaqueries": { - "META.yml": [ - "f277097263e7acf6f2e7b40fa810231c61b00e63", + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", [] ], - "OWNERS": [ - "e282c4fb98224c0827f24ed9ecdfe95abb1ffbcd", + "META.yml": [ + "f277097263e7acf6f2e7b40fa810231c61b00e63", [] ], "forced-colors-expected.txt": [ @@ -209648,12 +210081,16 @@ ] }, "motion": { + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", + [] + ], "META.yml": [ "20835b48397f136a30b82a62654d389cad326315", [] ], "OWNERS": [ - "d10225e4dc5237552bb74812dc35edb193a481de", + "812e93d099a00b342ff1279f216ab22b86ae17d7", [] ], "animation": { @@ -209830,12 +210267,16 @@ [] ], "selectors": { + "DIR_METADATA": [ + "a1cb39cdf6ab67bedd521ef32a4454c4993cadeb", + [] + ], "META.yml": [ "8e506d671d4b1e741d3450bd66603edbb3de9f30", [] ], "OWNERS": [ - "9b2591142765b391f93914ccda0087206d856785", + "5e03d9bce08ec1c2c4d3a23b993e8f428c9e68db", [] ], "any-link-dynamic-001-ref.html": [ @@ -210346,8 +210787,12 @@ [] ], "mozilla-central-reftests": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "OWNERS": [ - "5f43f9116bc8073cfadd3bf840519a3ad96c296f", + "5e03d9bce08ec1c2c4d3a23b993e8f428c9e68db", [] ], "align3": { @@ -211001,8 +211446,12 @@ ] }, "flexbox": { + "DIR_METADATA": [ + "38ef497cbe0d8246ac84d5ef528f7f043b57f19c", + [] + ], "OWNERS": [ - "3aa83671fd24673d28d03805d7a9e374e65c913a", + "51c6a57df7f416859ec03c427d80be542e6205a4", [] ], "flexbox-abspos-child-001-ref.html": [ @@ -211781,8 +212230,8 @@ ] }, "shapes1": { - "OWNERS": [ - "5704d22454f5292cce276dc85b635bd6d2206adb", + "DIR_METADATA": [ + "815ca001c09622297d9371d5ed974d9c13aafcde", [] ] }, @@ -211979,6 +212428,10 @@ "a78383d744afa18b58a7f547c03f921228fab655", [] ], + "DIR_METADATA": [ + "1c2a667574bfb24b856f2f4040b24f28abadbf7f", + [] + ], "HTMLElement-constructor-expected.txt": [ "ca5b35f6cd8057907dc8e9bd209d961f067f76fd", [] @@ -211987,10 +212440,6 @@ "e30f6fc97f95f78e10c0ada540fbe17528512b63", [] ], - "OWNERS": [ - "e1d5315930d173980cff522fdedcc81e8b48fcb7", - [] - ], "custom-element-registry": { "per-global-expected.txt": [ "b6ce8a322bfc8f0a53c3bffa96fd6d3753f259ef", @@ -216761,6 +217210,34 @@ ] } }, + "cors-rfc1918": { + "non-secure-context.window-expected.txt": [ + "f59d69d8b2355a0f29c0672eff3aa0524cf4d03f", + [] + ], + "resources": { + "support.js": [ + "be49c515ef5422743e618e67a420bd048abce89c", + [] + ], + "treat-as-public-address.html": [ + "7a8f6f09a517f0db695a55436870790a7763870d", + [] + ], + "treat-as-public-address.html.headers": [ + "76371c6209e46f24e611a6689d26b6f1bbfaff9c", + [] + ], + "treat-as-public-address.https.html": [ + "7a8f6f09a517f0db695a55436870790a7763870d", + [] + ], + "treat-as-public-address.https.html.headers": [ + "76371c6209e46f24e611a6689d26b6f1bbfaff9c", + [] + ] + } + }, "cross-origin-resource-policy": { "OWNERS": [ "42d5155b66317b0067f81189e31a9168d13ca2f0", @@ -217071,6 +217548,10 @@ "608a5297881b914a2cf3602f6b79f53a25354f98", [] ], + "post-to-owner-onload.py": [ + "8459edbd68a085f15cda5fd5b33be6a80202a811", + [] + ], "post-to-owner.py": [ "4890c49acbdfb557b9ef679b0a3cc82952305c0f", [] @@ -217243,6 +217724,10 @@ "a43031a6a7b9ddc8df9ba61d7f43c3705558305b", [] ], + "focus-event-after-focusing-iframes-expected.txt": [ + "a84914564261c82e789590fce29db8d63cb92f0f", + [] + ], "focus-restoration-in-different-site-iframes-expected.txt": [ "718870d2f24cbbdb3cb537031c3f3aa19bf4bd1c", [] @@ -217312,6 +217797,18 @@ "f22fa98076fde127961c9b58fc5f76db55b21a42", [] ], + "focus-event-after-focusing-different-site-iframes-outer.sub.html": [ + "7d2fb504d661d5a919f4d8141444d2b626c3aaeb", + [] + ], + "focus-event-after-focusing-iframes-inner.html": [ + "cb154160db4be8bf52ea9db27321d737640b9515", + [] + ], + "focus-event-after-focusing-same-site-iframes-outer.html": [ + "08f2c3f7ae2b1205158d1ce1f4c70c6742e9c330", + [] + ], "focus-restoration-in-different-site-iframes-inner.html": [ "903b0c02858520dd1d3af7f95b82033fc5509585", [] @@ -218994,6 +219491,14 @@ "005b.html": [ "476e8e38c496f4d8261f2b165bbdf5245181b78c", [] + ], + "beforeunload-sticky-destination.html": [ + "2edcf1a43bf5273a53b2f15577cabb3c28c2e99c", + [] + ], + "beforeunload-sticky-start.html": [ + "37109feafe357711b7db172ca314a45e79674658", + [] ] }, "unload": { @@ -222555,11 +223060,11 @@ [] ], "idlharness.https_exclude=(Document_Window_HTML._)-expected.txt": [ - "3806cc9e1b7d88b4259a2db0c5d389983ead743e", + "1e7a0ac0883e6f84e25c69b68b245baa513caf6c", [] ], "idlharness.https_include=(Document_Window)-expected.txt": [ - "d4fb5561f034cc930374f564cd052b4b2eee9e90", + "c63c38a0762c032f7485882cd4a9ebbf5b8666c5", [] ], "idlharness.https_include=HTML._-expected.txt": [ @@ -222567,7 +223072,7 @@ [] ], "idlharness.worker-expected.txt": [ - "7bcd13ef2c33c509b103af17105a4ace44372bb8", + "323d874fce3ac42fb11482e45cbe0b997988d2b3", [] ], "new-harness.js": [ @@ -226868,12 +227373,12 @@ ] }, "the-fieldset-and-legend-elements": { - "META.yml": [ - "f5b533c377160c77541187a301647e174069bd6d", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "META.yml": [ + "f5b533c377160c77541187a301647e174069bd6d", [] ], "fieldset-border-gap-position-relative-ref.html": [ @@ -227024,8 +227529,8 @@ ] }, "the-frameset-and-frame-elements": { - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], "reference": { @@ -227046,8 +227551,8 @@ } }, "the-hr-element-0": { - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], "align-ref.html": [ @@ -227126,8 +227631,8 @@ ], "replaced-elements": { "attributes-for-embedded-content-and-images": { - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], "align-expected.txt": [ @@ -227178,8 +227683,8 @@ ] }, "embedded-content-rendering-rules": { - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], "canvas-fallback-ref.html": [ @@ -227200,8 +227705,8 @@ ] }, "images": { - "OWNERS": [ - "9b2e5be0a19c48f73b57fe0ad8bbeea81238a1d1", + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", [] ], "blocked-by-csp-ref.html": [ @@ -227354,8 +227859,8 @@ ] }, "semantics": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "document-metadata": { @@ -229746,7 +230251,7 @@ [] ], "json-module-service-worker-test.https.tentative-expected.txt": [ - "8b394c7535c33ed56379c8ef0f46fe561e63b740", + "df94598def63e2666aa51cf1012baa410a40e5eb", [] ], "module.json": [ @@ -230973,6 +231478,10 @@ [] ], "parsing": { + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", + [] + ], "DOMContentLoaded-defer-expected.txt": [ "b92095bed64c26b94916f4794223833b7cfe4467", [] @@ -230981,10 +231490,6 @@ "905660380b1c3c8ca01e060e24695b6783d4b07b", [] ], - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", - [] - ], "README": [ "343ebaff746a4ef56aac4fd7c1aec7c026d2d29c", [] @@ -231197,14 +231702,14 @@ ] }, "serializing-html-fragments": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ] }, "serializing-xml-fragments": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ] } @@ -231254,8 +231759,12 @@ ] }, "user-activation": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "OWNERS": [ - "f17b1239cde137fe8f8eeba8c0552f8336047e38", + "35449ec5bab7c3e8ac3c61fa50a8207e667eabe2", [] ], "resources": { @@ -231296,8 +231805,8 @@ "webappapis": { "dynamic-markup-insertion": { "closing-the-input-stream": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ] }, @@ -231350,8 +231859,8 @@ "6a43faec51071fec146390475adcd12bad3d23a6", [] ], - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "contentType.window-expected.txt": [ @@ -231440,8 +231949,8 @@ ] }, "document-writeln": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "original-id.json": [ @@ -231474,8 +231983,8 @@ "ceeeb64df63ccb6d56cd46a93c6ec6c476573a6b", [] ], - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "document.open-03-frame.html": [ @@ -231572,8 +232081,8 @@ }, "scripting": { "event-loops": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "fully_active_document.window-expected.txt": [ @@ -231596,8 +232105,8 @@ } }, "events": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "event-handler-all-global-events-expected.txt": [ @@ -231648,8 +232157,8 @@ } }, "processing-model-2": { - "OWNERS": [ - "422c227ea95706b5eaa67c8784b0ce8ac4fca8e1", + "DIR_METADATA": [ + "15104593acde00649ee4cebb518e9f8ec238cbfa", [] ], "compile-error-same-origin-with-hash-expected.txt": [ @@ -231790,6 +232299,10 @@ "0fe4d380dcbf6cf7e84d889a9c97bbc62d72585a", [] ], + "navigator-window-controls-overlay-expected.txt": [ + "3c87e7a38b8b64a6eadc35f0484f0b331c01b5d8", + [] + ], "navigatorcookies-cookieenabled-false-manual-expected.txt": [ "a95972302bfe24a2e207a7085bde0d103426de8f", [] @@ -231835,12 +232348,16 @@ } }, "html-media-capture": { + "DIR_METADATA": [ + "f76b084a042985923735d48dfc81a6b87670083b", + [] + ], "META.yml": [ "3dd015f3ecb7d95f6677031448823cf5028f546f", [] ], "OWNERS": [ - "bae3815e5cf47954df8394df190e8cd42373ec93", + "3c4f9b8d42f1822bc96b242a31c2f9f55bb0c1f2", [] ], "capture_reflect-expected.txt": [ @@ -231891,22 +232408,22 @@ } }, "imagebitmap-renderingcontext": { - "META.yml": [ - "4239a85f5eeb8de0660d138c5a3d48a17545a9eb", + "DIR_METADATA": [ + "866f70300469c2a927d5a4fe6f122ddbdcfc725a", [] ], - "OWNERS": [ - "3b83b67facae74327e940c3784d6c9befdb48789", + "META.yml": [ + "4239a85f5eeb8de0660d138c5a3d48a17545a9eb", [] ] }, "images": { - "META.yml": [ - "f4c01cfa0f6964b867ddace2c6b4a1c80b081053", + "DIR_METADATA": [ + "13df631c7eae1419082d7d03eb6d3754c891f272", [] ], - "OWNERS": [ - "6640d0e6b172ccd6bb9a30e1be4ecb72d120dfb2", + "META.yml": [ + "f4c01cfa0f6964b867ddace2c6b4a1c80b081053", [] ], "anim-gr.gif": [ @@ -232186,13 +232703,17 @@ "60c415f18633e2bf36d2b2e052ca8ab18493debb", [] ], + "resolving.https-expected.txt": [ + "cdab62db6e169eb62318b8d35c4fd8fb68a66c71", + [] + ], "resources": { "data-base-url.json": [ "81fcf087425c70eefa7d3c3465be59684fb1a521", [] ], "empty-import-map-internal.json": [ - "59390c89f6b4da9ca95da0142d48022e8dc25f40", + "42033a2c07947f90ee779db5ec58d251958796ba", [] ], "empty-import-map.json": [ @@ -232204,7 +232725,7 @@ [] ], "packages-via-trailing-slashes.json": [ - "6b8f0135f50f50cd2691b5d4ee801d9671a3a2f9", + "6ff330cc5a73c15cb9ccabe88376b811ccffff02", [] ], "parsing-addresses-absolute.json": [ @@ -232268,15 +232789,19 @@ [] ], "test-helper.js": [ - "0f53aea5b4b0507a834c112c1a0595e112d27bbf", + "579fd52da8c1b034788ed760ab3744dae34e9fde", [] ], "tricky-specifiers.json": [ "d9c80c9475000587643f52d500c0c4d588640f4a", [] ], + "url-specifiers-schemes-internal.json": [ + "58a97642c2bd81690d6b9703de5688996cd306eb", + [] + ], "url-specifiers.json": [ - "aff55c4d9dda05eb344af83640aaacd18fdc15dc", + "6fcf7f466356fa856d9fbef69cd943c07f942b6f", [] ] }, @@ -232328,7 +232853,7 @@ }, "infrastructure": { "DIR_METADATA": [ - "8e9f60a0761b9b4ec91a767f9115ee60d80cf8e3", + "da335b9432b4a67c326114ad8c0140bd7680bfe5", [] ], "META.yml": [ @@ -232336,7 +232861,7 @@ [] ], "OWNERS": [ - "49891ac83a2dc5ab9f2d1e23737825d613138b15", + "0df202b1edbe15295f368da5bdde3cdfd5687251", [] ], "README.md": [ @@ -232733,8 +233258,12 @@ }, "testdriver": { "actions": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "OWNERS": [ - "6aa7ab767945e24c2f7ed7c144d85af33b1fd15e", + "dee5bb0f00575c0ca7226355c1adbc5131914db4", [] ], "crossOriginChild.html": [ @@ -232817,12 +233346,16 @@ ] }, "input-events": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "META.yml": [ "79e0cbe5229c25509e22ced2a4c3e27611882bf4", [] ], "OWNERS": [ - "3b44901c6bedd96b4f1754295746df05d56ba323", + "004dcc97d85d9b0131e400a54b79bfd31b8335e6", [] ], "input-events-exec-command-expected.txt": [ @@ -233088,7 +233621,7 @@ [] ], "dom.idl": [ - "d404be2aea5fc78ffccd4533213f47f6b76cff8f", + "9d371fbe7c5f63cec026c237456d1df9beacc36f", [] ], "element-timing.idl": [ @@ -233168,7 +233701,7 @@ [] ], "html.idl": [ - "bf8da3733ec26f4979fed63a17a9180c3355a494", + "7a900255780ba3849d9184186efe68cf9b916f79", [] ], "idle-detection.tentative.idl": [ @@ -233236,7 +233769,7 @@ [] ], "media-source.idl": [ - "51eccd906e74bbe7a9aad42817c730c29c281d79", + "f32df3aaedc0b4722f62379273aa489fd5ea0ab7", [] ], "mediacapture-depth.idl": [ @@ -233256,7 +233789,7 @@ [] ], "mediastream-recording.idl": [ - "c5347959383d1fce74a07be9b2709cac8f9ea5b2", + "2878af4b66c276604d4e84e7b9796549f74e7415", [] ], "mst-content-hint.idl": [ @@ -233315,6 +233848,10 @@ "dc0511b0c4b091066a9dcbc94ece9cac28088bde", [] ], + "performance-measure-memory.idl": [ + "b1014f679bb7bd88ed2ef5733ae52c48c4ac0e0f", + [] + ], "performance-timeline.idl": [ "34f62a37823f30360ca94b9d8f695668f3ac0969", [] @@ -233420,7 +233957,7 @@ [] ], "serial.idl": [ - "b376bac1ed7a851baff2bde6010944bb7b1c644e", + "7bca747757345934b076b5f447cf6274483ecbd5", [] ], "server-timing.idl": [ @@ -233528,7 +234065,7 @@ [] ], "webaudio.idl": [ - "d869a978e34da5c5455fe4a99d60841187280474", + "c8ad2a851fc03f90aff3b0c8a2289fadffdb85be", [] ], "webauthn.idl": [ @@ -233572,7 +234109,7 @@ [] ], "webrtc.idl": [ - "db644f031836bd2dfa8d046f5c78d561186490ec", + "cd34d3f3782e9d48695296df274a80a3a3d668ce", [] ], "webusb.idl": [ @@ -233609,12 +234146,16 @@ ] }, "intersection-observer": { + "DIR_METADATA": [ + "85377a77b206fbf1b2892a929462cba04ab6e64a", + [] + ], "META.yml": [ "31dddab561edd292a18e5b2cd4fb313a96af65b9", [] ], "OWNERS": [ - "1d4fb997d04cf3addf210fd2ce4766d049d0a8bd", + "ac2b5a27b5812b5aabf8832b848f113237b76aac", [] ], "idlharness.window-expected.txt": [ @@ -233829,7 +234370,7 @@ ] }, "lint.ignore": [ - "b457f02d14790794883a641f5c3a00fbc386ab9d", + "bfbb29657386bcac90635af829752751260248fb", [] ], "loading": { @@ -233869,6 +234410,10 @@ "subframe-with-longtask.html": [ "298b252d18796c1753ca3c2f8ec594f9bbb54baa", [] + ], + "utils.js": [ + "c022f1a5a7aeb747b3d75b66bf0502a43e861dec", + [] ] }, "shared-renderer": { @@ -239872,7 +240417,7 @@ ] }, "spec.src.json": [ - "ff40591cbb0fce739524f8b4eb84381d83e968d9", + "e540a72683153c6ebf79101a4c236276291d405f", [] ] }, @@ -240361,7 +240906,7 @@ [] ], "nfc-mock.js": [ - "aa94257e2a394d027972f2fd683e672eeafc8d5e", + "2665f3db6b3f2a887ec97d10db6c0123e6a2bb4e", [] ], "web-bluetooth-test.js": [ @@ -240811,6 +241356,10 @@ } }, "selection": { + "DIR_METADATA": [ + "484b90d93e1a775ec91c3282542754b5b5326ed6", + [] + ], "Document-open-expected.txt": [ "eaa85d4992385b5f5265eff529ceaedff9ed7c84", [] @@ -240819,10 +241368,6 @@ "efe4ede48fe307d55416271db15271d7cd443836", [] ], - "OWNERS": [ - "259ded51f65a27573ee753b3126834e4e99e1f46", - [] - ], "addRange.js": [ "7c443f7dade9c236f146d09f274eb9113a5ff90d", [] @@ -240888,6 +241433,14 @@ [] ], "resources": { + "common.js": [ + "5177f83a8655f57a7b04935a136cc00bdd1b2626", + [] + ], + "manual.js": [ + "4ac46b6decc7b6bf42bf4491b192714c55376ada", + [] + ], "serial-allowed-by-feature-policy-worker.js": [ "46c338e9a33a9ee0148ca48d09fc9c3bec37736b", [] @@ -240907,12 +241460,16 @@ ] }, "server-timing": { + "DIR_METADATA": [ + "34d52c709d26e214ffae49e27474d9ea9396b782", + [] + ], "META.yml": [ "f20b425fc5e69d41083c40b8a5d76d69efe510cf", [] ], "OWNERS": [ - "46e79e05fdf5fbff247daa96c4e4ac97bd7f3994", + "2746bb927328ec881ad39925f4c5ad3324aa6a78", [] ], "resources": { @@ -241645,21 +242202,29 @@ ] }, "service-workers": { + "DIR_METADATA": [ + "23931a57abf429f16bcbb6e9dabf93c0885d80d9", + [] + ], "META.yml": [ "03a0dd0fe16e5550e8f349c1dd8fe361cf2072bc", [] ], "OWNERS": [ - "c7c9d2c17a8a230f081b6a25638b97d9e6488cf6", + "245436a036d0eeee265bbb10a2cbafea39f56a86", [] ], "cache-storage": { + "DIR_METADATA": [ + "f48eedf03ebcbaccda82839a1d4b07aff344bc61", + [] + ], "META.yml": [ "bf34474f74aae7d341dff38c553705bb2b4b6826", [] ], "OWNERS": [ - "afb2620d3050e39891abac7d4d9ea4ff69651eb7", + "82c8165c34f3df1366bf49099aa5d75b79c59e7e", [] ], "resources": { @@ -241959,7 +242524,7 @@ [] ], "import-module-scripts.https-expected.txt": [ - "21e4c43a967459857dd8c8e8e05b14ba2a68c6fc", + "ea80ea9c5258e768f4fe2b5611f7fb052274d092", [] ], "import-scripts-redirect.https-expected.txt": [ @@ -242107,7 +242672,7 @@ [] ], "registration-scope-module-static-import.https-expected.txt": [ - "7a29e1e3406906ad4d0d20fc178ffcc754f59796", + "66b5edf9100c6760fdb8885c69a2b58989d301ec", [] ], "registration-updateviacache.https-expected.txt": [ @@ -242836,7 +243401,7 @@ [] ], "malformed-worker.py": [ - "562c44eddc118a20fafba23edb3350218a36b196", + "b8bc842d2caf8f493b62e364f7dc6bd6a27037f8", [] ], "message-vs-microtask.html": [ @@ -243124,7 +243689,7 @@ [] ], "registration-tests-script.js": [ - "f400bb91af93eb0f1ba9dca587d6ac8f53a63370", + "30c03d9ef041817c9429a2640d8c6edf72242678", [] ], "registration-tests-security-error.js": [ @@ -243489,12 +244054,12 @@ } }, "shadow-dom": { - "META.yml": [ - "8fb0a9b995d6289bb28582fa01e6bb092afa5dda", + "DIR_METADATA": [ + "407e33f5fbdafdafdf4163316909b512d66166cc", [] ], - "OWNERS": [ - "5fc1b89558d3add444a8c393c1c219ff482ad8e9", + "META.yml": [ + "8fb0a9b995d6289bb28582fa01e6bb092afa5dda", [] ], "capturing-and-bubbling-event-listeners-across-shadow-trees-expected.txt": [ @@ -243508,7 +244073,7 @@ [] ], "helpers.js": [ - "70808e8db7b11db236b893cfd7147458154f69ce", + "0be3add620065a9303bbe6878487f94771c51e0b", [] ] } @@ -243987,12 +244552,16 @@ ] }, "storage": { + "DIR_METADATA": [ + "56c0693dfd0485f3d25a94bd45a649c76fd36b0d", + [] + ], "META.yml": [ "2aad1fb513710e839ad86c923bf208dae604d3d2", [] ], "OWNERS": [ - "ce2ae1f16185a6dc7d754f7bd3dac8509922d211", + "82c8165c34f3df1366bf49099aa5d75b79c59e7e", [] ], "README.md": [ @@ -244049,12 +244618,16 @@ } }, "streams": { + "DIR_METADATA": [ + "04b78c00f2f8dc1aa448b05669fa022d6169ca4a", + [] + ], "META.yml": [ "1259a55cb5a99e3ba3a13d81d02dd78d697ddabf", [] ], "OWNERS": [ - "041c2b633816809ecdd66e6120c2ab6a877525e3", + "04310353bd38261c2d6dd7702676e3e60e51331b", [] ], "README.md": [ @@ -244094,22 +244667,6 @@ "9a39ea475532ce53b4cb586da6ebb4efde071336", [] ], - "brand-checks.any-expected.txt": [ - "13d86ff94d2afa1a5c6c53fd5657d8d91c1cb129", - [] - ], - "brand-checks.any.serviceworker-expected.txt": [ - "13d86ff94d2afa1a5c6c53fd5657d8d91c1cb129", - [] - ], - "brand-checks.any.sharedworker-expected.txt": [ - "13d86ff94d2afa1a5c6c53fd5657d8d91c1cb129", - [] - ], - "brand-checks.any.worker-expected.txt": [ - "13d86ff94d2afa1a5c6c53fd5657d8d91c1cb129", - [] - ], "construct-byob-request.any-expected.txt": [ "129e634e5436d76e0aa8e404b88375ad53962cd8", [] @@ -244126,38 +244683,6 @@ "129e634e5436d76e0aa8e404b88375ad53962cd8", [] ], - "constructor.any-expected.txt": [ - "30c626c457cb672266c6a7c9f42b7fed607a231c", - [] - ], - "constructor.any.serviceworker-expected.txt": [ - "30c626c457cb672266c6a7c9f42b7fed607a231c", - [] - ], - "constructor.any.sharedworker-expected.txt": [ - "30c626c457cb672266c6a7c9f42b7fed607a231c", - [] - ], - "constructor.any.worker-expected.txt": [ - "30c626c457cb672266c6a7c9f42b7fed607a231c", - [] - ], - "detached-buffers.any-expected.txt": [ - "76867b4809a25d912e2d230cb717988bfa34e18f", - [] - ], - "detached-buffers.any.serviceworker-expected.txt": [ - "76867b4809a25d912e2d230cb717988bfa34e18f", - [] - ], - "detached-buffers.any.sharedworker-expected.txt": [ - "76867b4809a25d912e2d230cb717988bfa34e18f", - [] - ], - "detached-buffers.any.worker-expected.txt": [ - "76867b4809a25d912e2d230cb717988bfa34e18f", - [] - ], "general.any-expected.txt": [ "97c2cf18a6a681f73c4f4a100299c7c7cb271215", [] @@ -244173,22 +244698,6 @@ "general.any.worker-expected.txt": [ "97c2cf18a6a681f73c4f4a100299c7c7cb271215", [] - ], - "properties.any-expected.txt": [ - "46b375460c88cf63a59aa45ea52a54411cc0d7a8", - [] - ], - "properties.any.serviceworker-expected.txt": [ - "46b375460c88cf63a59aa45ea52a54411cc0d7a8", - [] - ], - "properties.any.sharedworker-expected.txt": [ - "46b375460c88cf63a59aa45ea52a54411cc0d7a8", - [] - ], - "properties.any.worker-expected.txt": [ - "46b375460c88cf63a59aa45ea52a54411cc0d7a8", - [] ] }, "readable-streams": { @@ -244208,22 +244717,6 @@ "8ae98efa8f5eb50dc91bc430108c9e048cd71c46", [] ], - "brand-checks.any-expected.txt": [ - "5433379c30c4eaf0e2331c4c8315e9bb4e8d566b", - [] - ], - "brand-checks.any.serviceworker-expected.txt": [ - "5433379c30c4eaf0e2331c4c8315e9bb4e8d566b", - [] - ], - "brand-checks.any.sharedworker-expected.txt": [ - "5433379c30c4eaf0e2331c4c8315e9bb4e8d566b", - [] - ], - "brand-checks.any.worker-expected.txt": [ - "5433379c30c4eaf0e2331c4c8315e9bb4e8d566b", - [] - ], "general.any-expected.txt": [ "f0732e1cac8ad8851c1286e50a8641e261fd641d", [] @@ -244347,12 +244840,16 @@ } }, "subresource-integrity": { + "DIR_METADATA": [ + "56cf7f3f0e7b4dcce8d952ca4af9758b9ddbdca0", + [] + ], "META.yml": [ "f6980682f11bc29b19789c91a93d9e0f58383306", [] ], "OWNERS": [ - "e8e1bb1199754b0c43322162ee11b9d0b9c48035", + "75bf0dee0ac6e0368f093eff1f2b48c74c7e6b71", [] ], "alternate.css": [ @@ -244407,12 +244904,12 @@ } }, "svg": { - "META.yml": [ - "a928f0c399126a5e463e1497c4a454dabe6f24fe", + "DIR_METADATA": [ + "9468b40466ff751bd4d689afd0feea7495b76696", [] ], - "OWNERS": [ - "cf0ed9aa84ee30152987dc0f520973f539b04a00", + "META.yml": [ + "a928f0c399126a5e463e1497c4a454dabe6f24fe", [] ], "README.md": [ @@ -246848,7 +247345,7 @@ [] ], "PKG-INFO": [ - "98927c4d99d9ca2f7ac9aadcb23b5b0922f34206", + "623171e38f68fb27c2e4a5161f06575baf7e6d6a", [] ], "README": [ @@ -246865,21 +247362,17 @@ [] ], "__init__.py": [ - "d6ffb3a40feb07779140f43f1de11ff80e7c13d7", + "51f3cf247069fd673ea9702b80d8762431831826", [] ], "doc": { - "enum.pdf": [ - "8c1383a495e8f924e247cdc5b2099eba2ff9d4f6", - [] - ], "enum.rst": [ "3afc238210b4f43f08bd0f0be422522242971244", [] ] }, "test.py": [ - "d9edfaee40aff5eba7e80415bc75be03642055f5", + "c8c4b962242f4f5a2ed24855a7e5a12df3dec6e6", [] ] }, @@ -246902,11 +247395,11 @@ ] }, "setup.cfg": [ - "861a9f554263efb088d8636c4f17a30696e495ad", + "8bfd5a12f85b8fbb6c058cf67dd23da690835ea0", [] ], "setup.py": [ - "fc67110a43f54869721aeae6178ce40f973f4ea3", + "89732796af493ef8b42676afe19366062a66ebf7", [] ] }, @@ -251927,12 +252420,12 @@ [] ], "chromium.py": [ - "3c52f76965b144ba1845c1f6e60fc6ea0bb63d54", + "2ff2bd1e083a3439d1289c9f540a8bb2b1e20dbc", [] ], "tests": { "test_chromium.py": [ - "807f5837f7964e329d05377b34029c6ab727611f", + "55a12b1d7748aed97b38a56848f052d77412dccb", [] ] }, @@ -252145,7 +252638,7 @@ [] ], "setup.py": [ - "759cb48d1f65f52f6500ed2b871c7ef430518ab6", + "a9cc95f4c1a532b5682de4db367899ad9c5de284", [] ], "wptserve": { @@ -252220,7 +252713,7 @@ [] ], "utils.py": [ - "347acbd15cd0de5de8d8d73f3720fc8c13ac443a", + "1ea2d8c902ff42f0430319d3e658c9494aecd9b6", [] ], "wptserve.py": [ @@ -252231,12 +252724,16 @@ } }, "touch-events": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "META.yml": [ "3dcab9a534bc43753827b2d4f7cc6d3cd9974404", [] ], "OWNERS": [ - "46d4a5db116402d7da9f599289c109fa5fa981e1", + "9258d114cb426f7eb83fa5835348e44d12296524", [] ], "idlharness.window-expected.txt": [ @@ -252263,12 +252760,16 @@ } }, "trusted-types": { + "DIR_METADATA": [ + "56cf7f3f0e7b4dcce8d952ca4af9758b9ddbdca0", + [] + ], "META.yml": [ "d0743949b6a122d8bd0adf7b1ed0181f0c51429d", [] ], "OWNERS": [ - "43db381528ce362bf4a113e08c93a81131562e87", + "3f8456354bd08a3cb87e767ca0eb508603f45f1b", [] ], "default-policy-report-only.tentative.html.headers": [ @@ -252379,12 +252880,16 @@ ] }, "uievents": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "META.yml": [ "2f1ec58efec10e0dd6374aac05cb926c8cffa3f1", [] ], "OWNERS": [ - "8ad136ad4ef9fe98270418737454b15a533009b8", + "26a4978763dbb189b3c50e1ff66ff31532d10cbd", [] ], "README.md": [ @@ -252709,12 +253214,16 @@ [] ], "upgrade-insecure-requests": { + "DIR_METADATA": [ + "56cf7f3f0e7b4dcce8d952ca4af9758b9ddbdca0", + [] + ], "META.yml": [ "a30208ae10d9fea605655386462d289907729a16", [] ], "OWNERS": [ - "43db381528ce362bf4a113e08c93a81131562e87", + "3f8456354bd08a3cb87e767ca0eb508603f45f1b", [] ], "README.md": [ @@ -253125,12 +253634,12 @@ } }, "url": { - "META.yml": [ - "094b266b64b61b97966f2fa88d78dfdf5a00b573", + "DIR_METADATA": [ + "72f55a07bf0614209ec29ccfc63e02435fd01b96", [] ], - "OWNERS": [ - "8263c354debb11010e65383063f506c39841e5ba", + "META.yml": [ + "094b266b64b61b97966f2fa88d78dfdf5a00b573", [] ], "README.md": [ @@ -253192,13 +253701,21 @@ [] ] }, + "urlpattern": { + "resources": { + "utils.js": [ + "9132a52816e0c1cf0bc3a1b577d6611e65be8f6f", + [] + ] + } + }, "user-timing": { - "META.yml": [ - "5cb2a789c09c89b7c1029551e646b3f240e80c2a", + "DIR_METADATA": [ + "45b72a63be742f08a481cb470863cbaae10e105f", [] ], - "OWNERS": [ - "f4011d2bf1144bf42ad8d2a194f517d556407835", + "META.yml": [ + "5cb2a789c09c89b7c1029551e646b3f240e80c2a", [] ], "resources": { @@ -253217,12 +253734,12 @@ } }, "vibration": { - "META.yml": [ - "91cd8c9d8056e8512e049280b7c1a43a76b3074f", + "DIR_METADATA": [ + "e66495f6c355bcfbe92d0058e218d52da032a0a8", [] ], - "OWNERS": [ - "4d14efd12069e21a817505c73a4fbb8c1698a335", + "META.yml": [ + "91cd8c9d8056e8512e049280b7c1a43a76b3074f", [] ] }, @@ -253237,12 +253754,16 @@ ] }, "visual-viewport": { + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", + [] + ], "META.yml": [ "5499f77335b0a2128f7395e73ee777f07a2346b4", [] ], "OWNERS": [ - "e7e045164ea50e9f54c23910b7eaf4842b95f434", + "9f9aedfac3433e18800138c0eb8b36cc1319aeb3", [] ], "helper-resize-event-on-load-overflowing-page.html": [ @@ -253255,12 +253776,16 @@ ] }, "wasm": { + "DIR_METADATA": [ + "cb8992c568ce004a3470acd5269fddf5b5258d0e", + [] + ], "META.yml": [ "3ea02ee7c9e41831aafbd37436f59b51244b142e", [] ], "OWNERS": [ - "317ea704cc0a38a630cdc01b65d4afb39069652b", + "633a0b129157e398557cd806be96ca6cdcd3f0ab", [] ], "compile_worker.js": [ @@ -253521,12 +254046,16 @@ } }, "web-animations": { + "DIR_METADATA": [ + "d7b326bde28c24b93655cdb2e05da8df61af1e07", + [] + ], "META.yml": [ "bf92f7a7516302641aabcefe3c482ba6889c2c23", [] ], "OWNERS": [ - "9bafb3b9b1a47a0d47afea1f812eba4472febcc8", + "50e5c843e824e27aa5f9c5e7e5e3426d27f5d2e5", [] ], "README.md": [ @@ -253863,12 +254392,12 @@ } }, "web-locks": { - "META.yml": [ - "24e7d28340606d9a6290af9ceac4f4fb9156abf0", + "DIR_METADATA": [ + "cc6fcfab65cb639f1905f3f9dbd0a7d690171eda", [] ], - "OWNERS": [ - "5ca6cf5f9c1b106faf1740c9b79da49bfce89434", + "META.yml": [ + "24e7d28340606d9a6290af9ceac4f4fb9156abf0", [] ], "README.md": [ @@ -253899,25 +254428,25 @@ } }, "web-nfc": { + "DIR_METADATA": [ + "b409764e754061220f083eb160d066fb842c6c8e", + [] + ], "META.yml": [ "32c24570db165422a60a18b767c828dab10c5b9c", [] ], "OWNERS": [ - "2a0e82019549591b88878ca70fc6baf616d34c29", + "0243a40c25d6a3a2f4b67ad97517c8ed371a2dce", [] ], "README.md": [ "15c6534a7be35c478993836d54d451a791619cea", [] ], - "idlharness.https.window-expected.txt": [ - "c64b15a2013144b0e3d6b01e5f6651faf395644b", - [] - ], "resources": { "nfc-helpers.js": [ - "0b26d09c96aa8f29ef6d5646c187af0a2a5100a8", + "659f74ed8b128f8fb785eced13f90e21c53439b7", [] ], "support-iframe.html": [ @@ -253963,12 +254492,16 @@ "068fd1ef0665ee2c7c1eee0703f530a5540a7075", [] ], + "DIR_METADATA": [ + "4130bdc1b8828f5a266d88ceefc805884e46ef8c", + [] + ], "META.yml": [ "433896e2396ab7509f1d7c4213eb10e271f69aaa", [] ], "OWNERS": [ - "a4cc14bb31e2b1026655cee1c970fb8a27f2ac89", + "a837fc9b778c06fe4102cfd17f889d315b59ca03", [] ], "README.md": [ @@ -254261,12 +254794,16 @@ } }, "webauthn": { + "DIR_METADATA": [ + "177a02130bbcbb29cde056d6007fffa4b4b14cc5", + [] + ], "META.yml": [ "a52d978f0eac073ea327e13eb6b8773f89d6091b", [] ], "OWNERS": [ - "b694735ff8e9239de546eb096e5ffb73da9001a2", + "bf4ea08fcaf8fc52c91c6823936715e9b733edf9", [] ], "helpers.js": [ @@ -254380,7 +254917,7 @@ }, "element_click": { "__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "68a556aa69e9a738fe7697a593eec6b3212fb9fa", [] ], "support": { @@ -254605,8 +255142,8 @@ ] }, "perform_actions": { - "OWNERS": [ - "1775c1c1af18d78a3f32951cd9e2e7e0705c223c", + "DIR_METADATA": [ + "4a2c8aa4e0a7aea2acc4c1b62444bb49b4499d3b", [] ], "__init__.py": [ @@ -254813,6 +255350,10 @@ } }, "webgpu": { + "DIR_METADATA": [ + "1bd921c131f49d1add7a6eab7c4297c0495aa953", + [] + ], "LICENSE.txt": [ "c7a75d7d221561df02c42470ad5e751324de645d", [] @@ -254822,7 +255363,7 @@ [] ], "OWNERS": [ - "0902cf56183a851dc4e32a6da83083eecfd5cfe0", + "2e37d5eadb69114a9fe9302688d074ab9b0290d5", [] ], "README.md": [ @@ -254980,7 +255521,7 @@ [] ], "RTCConfiguration-iceServers-expected.txt": [ - "301d7e629d21999991d7a95bcc909423d1cc758f", + "fc38ca810d0524cffaf1562f2c3c2ad47c5b5fef", [] ], "RTCConfiguration-iceTransportPolicy-expected.txt": [ @@ -255174,7 +255715,7 @@ [] ], "idlharness.https.window-expected.txt": [ - "222565c81175b75ccd1d29d741aae11dc28f1e03", + "b94b06ac527900ac825ed0f003ab4a325da38e4c", [] ], "legacy": { @@ -255260,6 +255801,10 @@ "META.yml": [ "4ceee0664cbfb800ac8b410c295dde4c7009b024", [] + ], + "RTCOAuthCredential-expected.txt": [ + "e7fb284d1a2e526325e031be8b455b8a4910c913", + [] ] }, "webrtc-identity": { @@ -255780,6 +256325,10 @@ "975d2242c949740217c050beea72db908ef46fc7", [] ], + "manual.js": [ + "869ac450acf19a029eb924a6b290bcabc1acff2d", + [] + ], "open-in-iframe.html": [ "730db24902964282a9ff2b87c0a1c0ec566449bb", [] @@ -255809,10 +256358,6 @@ "4fd1e269362c43d282ca8e3c5c35a5d648f0666b", [] ], - "usb.serviceworker.https-expected.txt": [ - "011ed2a1993e9ad9177ddc0c4476d2dcfdf05e13", - [] - ], "usb.serviceworker.js": [ "c509adfef0d4c0cd3e68cc84467ac7db1140d643", [] @@ -260033,7 +260578,7 @@ ] ], "Blob-stream.any.js": [ - "bd4f8dc40bca12eb10a2f471dee417d3e31075a0", + "792b6639c35a265de4902af83ab5724a178ae8a9", [ "FileAPI/blob/Blob-stream.any.html", { @@ -277737,6 +278282,69 @@ } ] ], + "compression-with-detach.tentative.any.js": [ + "786bba21c800ca9f067a6d033f0345a52bfbb218", + [ + "compression/compression-with-detach.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/compression-with-detach.tentative.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/compression-with-detach.tentative.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/compression-with-detach.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ] + ], "decompression-bad-chunks.tentative.any.js": [ "ba609a5625b959362222f85371628827f44d8768", [ @@ -278097,6 +278705,69 @@ } ] ], + "decompression-with-detach.tentative.any.js": [ + "a2f8bda09148f0d323022b1f93be78d83c4aa654", + [ + "compression/decompression-with-detach.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/decompression-with-detach.tentative.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/decompression-with-detach.tentative.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ], + [ + "compression/decompression-with-detach.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/concatenate-stream.js" + ] + ] + } + ] + ], "idlharness.https.any.js": [ "8d96cf523c495389ec5bfdea921a65d4dd0cd1e3", [ @@ -287590,6 +288261,55 @@ {} ] ], + "align-content-horiz-001a.html": [ + "c0f15b989c51c8c2c85e09ce1f7da75ee924b662", + [ + null, + {} + ] + ], + "align-content-horiz-001b.html": [ + "4b7f027003da1fb64356ca145b8384cce9d730ba", + [ + null, + {} + ] + ], + "align-content-horiz-002.html": [ + "0ef076680b60f82b8bf884fdad26e439386244dd", + [ + null, + {} + ] + ], + "align-content-vert-001a.html": [ + "90116e54974cdb088bd8aee1870d257eaea0a26b", + [ + null, + {} + ] + ], + "align-content-vert-001b.html": [ + "9a67cc4d996f8a66ed4d0ae3402b2197389546f5", + [ + null, + {} + ] + ], + "align-content-vert-002.html": [ + "3cffd3388b2ea5a6eec598da51d3f003fe6203b5", + [ + null, + {} + ] + ], + "align-content-wmvert-001.html": [ + "474eb6d3f88791d1776a0500cba26b2b7adb15c4", + [ + null, + {} + ] + ], "align-content-wrap-001.html": [ "1e0ce42c75f462aea952113582e743bf8bda4dd8", [ @@ -287823,6 +288543,13 @@ {} ] ], + "flex-minimum-size-003.html": [ + "95d9e37d0bdcccbc3f418dc007948425577396f2", + [ + null, + {} + ] + ], "flex-minimum-width-flex-items-014.html": [ "080169b52d7fdf39cbf6ff970c3100480e46d2a3", [ @@ -293662,7 +294389,7 @@ ] ], "list-style-type-computed.html": [ - "21230f31b05058e23f004cfe1a53fa09835372af", + "1f25e52001399fd4dbb93bce1731e36b5e5398c8", [ null, {} @@ -293676,7 +294403,7 @@ ] ], "list-style-type-valid.html": [ - "66067ca43232975409aab83684da9258f10abcea", + "dde0bee8dde7830ce592276f09e987519a6da8b2", [ null, {} @@ -307707,7 +308434,7 @@ ] ], "serialize-values.html": [ - "7334424a0a1e638856e4bdbf5eb95f9e2cecf268", + "31f5f64c8094eb9158e27ab48f756f03c6d594b8", [ null, {} @@ -309573,6 +310300,24 @@ } ] ], + "focus-visible-003.html": [ + "4620c1e411492069f085efc08a3647a5eaae6fa6", + [ + null, + { + "testdriver": true + } + ] + ], + "focus-visible-004.html": [ + "1c3fb3fcedd03b46da79af2aa53fc988d63ff7ca", + [ + null, + { + "testdriver": true + } + ] + ], "focus-visible-005.html": [ "b5d58435db1c6d37881bbcd4c856e8abab03aada", [ @@ -311438,13 +312183,6 @@ }, "dom": { "abort": { - "addEventListenerAbortController.tentative.html": [ - "d208d4b0d6c5765d73ae61432f5a440811a5e623", - [ - null, - {} - ] - ], "event.any.js": [ "a67e6f400fcf1dfa347390e1a76e25b573afbb9a", [ @@ -311551,6 +312289,17 @@ {} ] ], + "AddEventListenerOptions-signal.any.js": [ + "42871061f3b9167cfa28e536b8608844684427d6", + [ + "dom/events/AddEventListenerOptions-signal.any.html", + {} + ], + [ + "dom/events/AddEventListenerOptions-signal.any.worker.html", + {} + ] + ], "CustomEvent.html": [ "87050943f9bffac8c17b85e1dba977eaebc78ec5", [ @@ -332960,7 +333709,7 @@ ] }, "request-bad-port.any.js": [ - "b1a9e93d13cdf39e26eb777781ea690aba708bed", + "afb02aea8b2ee978296607c2b2429bac6dc40bc3", [ "fetch/api/request/request-bad-port.any.html", { @@ -336009,6 +336758,34 @@ "timeout": "long" } ] + ], + "non-secure-context.window.js": [ + "8f49a5cbedda7ece8a598cb1c668abd90051fe65", + [ + "fetch/cors-rfc1918/non-secure-context.window.html", + { + "script_metadata": [ + [ + "script", + "resources/support.js" + ] + ] + } + ] + ], + "secure-context.https.window.js": [ + "8ed028a390c19cddf75587910718b2d5867c318a", + [ + "fetch/cors-rfc1918/secure-context.https.window.html", + { + "script_metadata": [ + [ + "script", + "resources/support.js" + ] + ] + } + ] ] }, "cross-origin-resource-policy": { @@ -337872,7 +338649,7 @@ ] ], "history.https.sub.html": [ - "0a10f32beaf58f222d046d12fe452a5c4f1135c7", + "f0119e6c754d363f2acd2d2794043df91b788a2a", [ null, {} @@ -338559,6 +339336,13 @@ {} ] ], + "focus-event-after-focusing-iframes.html": [ + "b7076a2e480b85911193b3080905ca4d8e854a42", + [ + null, + {} + ] + ], "focus-restoration-in-different-site-iframes.html": [ "3de05455651aef8e37e99aa33877c4e5905103ac", [ @@ -338594,6 +339378,15 @@ } ] ], + "font_access-chooser-multiple.tentative.manual.https.html": [ + "a6b0febc8baf4197b45321d9069f2bc5c8ec816f", + [ + null, + { + "testdriver": true + } + ] + ], "font_access-chooser.tentative.manual.https.html": [ "8f623daa0b86c1af6141fee0cf8a8783559f2b16", [ @@ -340111,6 +340904,20 @@ {} ] ], + "beforeunload-sticky-activation-iframe.html": [ + "212a10c00559d14d4741430e4aefcd9f2ad9194b", + [ + null, + {} + ] + ], + "beforeunload-sticky-activation-popup.html": [ + "23bf8a440d6212f0fb610e09f5e13b9529fdc982", + [ + null, + {} + ] + ], "beforeunload-synchronous.html": [ "6806eaf7a390e9a195b2f7f69d2cf16f4362a0f1", [ @@ -361077,7 +361884,7 @@ ] ], "idlharness.https.html": [ - "a906b19ac88ab44afbb0d2d6ac355ad337777e7d", + "79f949f436a39e3c652b7016e19876d4fdfea983", [ "html/dom/idlharness.https.html?exclude=(Document|Window|HTML.*)", { @@ -368406,7 +369213,7 @@ ] ], "newline-normalization.html": [ - "d3de7699662da75fc37fba31cf994f02a13de191", + "b49468e19991e9309282e3068efff859d1c66751", [ null, {} @@ -368551,7 +369358,7 @@ ] ], "select-event.html": [ - "2fb018f82aabdd527e8bccd59230d2acd925a04b", + "af49024aa2bdfaa45f8eb200fad201d915f831a2", [ null, { @@ -368602,7 +369409,7 @@ ] ], "selection.html": [ - "b5cea0511d1213e804faf1295c1e236824ae2953", + "e216d953cef5ba81067b6e046c8f7ed197c0488c", [ null, { @@ -377399,6 +378206,13 @@ {} ] ], + "navigator-window-controls-overlay.html": [ + "069ff1602a621f55a9414a383f2ca03875fade15", + [ + null, + {} + ] + ], "navigator.any.js": [ "07bccb788052e7ce2cb722558e416b5c017ed9f0", [ @@ -377891,7 +378705,7 @@ ] ], "resolving-internal.https.html": [ - "887b7474d63ad4b05c7c99b2e756e01958c12c16", + "d75bebba47531c721dc6764bdb22a017120565bb", [ null, { @@ -378930,6 +379744,15 @@ } ] ], + "input-events-get-target-ranges.html": [ + "bbb275d8d34dbeb173bbffa871db0849927246a5", + [ + null, + { + "testdriver": true + } + ] + ], "input-events-typing.html": [ "a894beea9bd381313b999e45abe0b4b8f61c804b", [ @@ -380035,7 +380858,7 @@ ] ], "content-visibility-auto-offscreen.html": [ - "8356a340dfb0b515b84ee8c8f14827d362305e30", + "af60412a87f0ab5f532c6e4f0aae0e31d6f84bc5", [ null, {} @@ -380048,6 +380871,13 @@ {} ] ], + "content-visibility-auto-resize.html": [ + "b8de7f52e325e5789a64ff306daf33481078fee7", + [ + null, + {} + ] + ], "content-visibility-hidden.html": [ "939b1a212233a5be7b0b9611fe07cf062a11ffe0", [ @@ -380380,21 +381210,28 @@ }, "longtask-timing": { "buffered-flag.window.js": [ - "88e1363beba7dc39fec18a2b89484b2fc527e207", + "a0ba728ed2b791b70a9a7dbd93f953676bc3debf", [ "longtask-timing/buffered-flag.window.html", - {} + { + "script_metadata": [ + [ + "script", + "resources/utils.js" + ] + ] + } ] ], "containerNames.html": [ - "cfde4a304330357e21da4bcce8a0e8c5b5148ce8", + "90dcd6d9aa52b431f267fae31ca53804a6885bfa", [ null, {} ] ], "containerTypes.html": [ - "5a703f3995cec7f1aa3f3d4a274bdc1780c2fcc7", + "2d48bf77b2450fe20ba603702141f58f21a4c28e", [ null, {} @@ -380419,42 +381256,56 @@ ] ], "long-microtask.window.js": [ - "ef16f00dbe5643f685edeb52445d8803ff4997f9", + "b69a1fd9e6e015f2e58ff046e4e10892ac8e326c", [ "longtask-timing/long-microtask.window.html", - {} + { + "script_metadata": [ + [ + "script", + "resources/utils.js" + ] + ] + } ] ], "longtask-attributes.html": [ - "9af1c7bf95b3ab993a4c325b1c14a2f1172a102b", + "0825ef757fe15074a044d1650f255cee5f90740b", [ null, {} ] ], "longtask-before-observer.window.js": [ - "b7d4eb9d1de1ac1b91a2e6c9b5d124413b6dc0b9", + "79d6990cf806e5245d53f4d4117e52d2e9485a83", [ "longtask-timing/longtask-before-observer.window.html", - {} + { + "script_metadata": [ + [ + "script", + "resources/utils.js" + ] + ] + } ] ], "longtask-in-childiframe-crossorigin.html": [ - "d0fdf742804d722a6682e8f2b455284dc83fa4b9", + "b8607f90dd6363b5034cded2cf5ca2d357e2bd1b", [ null, {} ] ], "longtask-in-childiframe.html": [ - "4c325c42adb3526c32d213e985911139b3da97c7", + "bc7d69c6957bf646ceb697223525918dc3cffee6", [ null, {} ] ], "longtask-in-externalscript.html": [ - "8636025cf286f5772edaba1aefdb1d0050d8d43c", + "ad194ac971911349b7b86f82eea1869fb37140ef", [ null, {} @@ -380468,7 +381319,7 @@ ] ], "longtask-in-raf.html": [ - "40508e1e6778a4ac986ffc5bf0865f4c0d6b3ba4", + "d65f8928186aa11361c1ab79ec21e2865a870368", [ null, {} @@ -381565,6 +382416,85 @@ } ] ], + "idlharness.tentative.any.js": [ + "3e7589aeb95e2d06aa7bfd799a3e5afb342c0fce", + [ + "measure-memory/idlharness.tentative.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ], + [ + "measure-memory/idlharness.tentative.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ], + [ + "measure-memory/idlharness.tentative.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ], + [ + "measure-memory/idlharness.tentative.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ] + ] + } + ] + ], "iframe.cross-origin.tentative.https.window.js": [ "ac0641cc2621df534faedfe50d22dac5bde3cb15", [ @@ -385752,7 +386682,7 @@ ] ], "showPicker-errors.https.window.js": [ - "e8f0d3f540485120cd15d642b1b0d33110797098", + "d1dabf37da8305094bf7e0bd0fea4e0200d8dd2e", [ "native-file-system/showPicker-errors.https.window.html", { @@ -391357,6 +392287,15 @@ } ] ], + "pointerevent_capture_suppressing_mouse.html": [ + "080ca1520d91ecd88264f0c501998cefc410edaf", + [ + null, + { + "testdriver": true + } + ] + ], "pointerevent_change-touch-action-onpointerdown_touch.html": [ "40dbbed72f437172bab73fde62ee487b6150b10d", [ @@ -391427,6 +392366,15 @@ } ] ], + "pointerevent_fractional_coordinates.html": [ + "b106340efd5d05ba4ab4281863a476dbe6134a64", + [ + null, + { + "testdriver": true + } + ] + ], "pointerevent_iframe-touch-action-none_touch.html": [ "1c9651d8c162ff1ea71677f8fd3296c5c65fcad9", [ @@ -397063,6 +398011,282 @@ } }, "iframe.meta": { + "always": { + "a-tag.http.html": [ + "2aaea2f85f619a25ec3d46e1a5694fdee234f9ad", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "bdd4d5b9d43247ec69177f0b00d91adbced784a5", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "609ceed23cc8752618344bd3febfc1a20be2fb66", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "a0e13ad579ab7661b3ba13bb21f398cecde06a6f", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "8bea06d66b1872d436f80e355c74c3d7a88fb061", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "e6f63da5a5f2023729f99eebff39d98b3314d038", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "baa084a5fe5487d0b8398ef71db98f8645affb12", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "753a69fe4ba6ebd363ca8c5f2c9e53e3e9126fcd", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "a47736458fc3ee237aa46bd965e370965b42954c", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "54077bb8508953af087eace4c12a838acbb1bf2b", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "default": { + "a-tag.http.html": [ + "d35e2e544c0845a3ee239074af23ec0b9529f9e6", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "6f43cb64b83b07fe98a0e9e24d6190d542a8ec76", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "5ea994a00ecc826c54957415adbc906462dea2a4", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "243ed3a860491b5188b5970a6986fec371ef1f3a", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "6c210c911edce177aea8b0b6b0ade55e82c5f117", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "fe87beaabeec1b8bf88f6bdc57a86f5fd45fa56a", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "146e3203b0d6f6e874f1bad4e3f476ad34895d8b", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "e87c134d1cbaf4b620a2c861481d000eded22fe0", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "8e4d56f2b953418948be922ac3a84cb5aaa26fe6", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "00d97993a4a456f4708b890cd0c3dffd71efa1bd", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "never": { + "a-tag.http.html": [ + "ef93ec1e85a8ea87c8179d71fbd28ddc23283186", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "820be2e0d36034e7deb255d71fcd377f408b788d", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "c5b16d57ba5ed74eab9417b1bb6ac2300a2f815b", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "a3e3cc36b235d621eaef56fa1eeec167b8704330", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "b1fe5e948ed5b3e7f56a936ebe99458b4478259e", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "abf14520d9c8a4d8d27056e48d95adbe96f91ca2", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "a4642bbb8597400cfe715d37fe9e8f0555f67198", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "0fce32445ae13bd8f5e8cc629d2aac28871d75d3", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "6f5da6d0fd8eec52f2a1e0698e44350498b102d6", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "57eb2fbf0a7f264e8736236ae2be37a039eebf4d", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "no-referrer": { "a-tag.http.html": [ "83efe8b9b0cf5911c5cf9d70ab650c6b665c4574", @@ -397431,6 +398655,98 @@ ] ] }, + "origin-when-crossorigin": { + "a-tag.http.html": [ + "76dd31cbb30359d90cd84aab3b8b77279a81cbe6", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "c40bbb5a753a43fbfdf480a8419a3b15f055124e", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "90c4cb9ac445cc55f71fa19a993725d5118568d8", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "4003c2be83f3dbff3f25d8a25f3548a16b2ec700", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "96f1653d44e8ab16ab05a1cef91406f7c62f4b5a", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "57fe7fefe755726f0c14091ea63c38dcffd2cc7d", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "b63ba59ac2a32dbf15679cc62e229ae25fad8999", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "dafbec3934c796a3f8ce9634ea452ee8ece012a0", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "f3fae57b6523d14242d5072440fb29503372b850", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "cba63de387bbb436160c4226ccd4eb9ba7f1502f", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "same-origin": { "a-tag.http.html": [ "2c8788a3fc1d970ac0f5b705f25bb77684e8cd82", @@ -399042,6 +400358,282 @@ } }, "srcdoc-inherit.meta": { + "always": { + "a-tag.http.html": [ + "820d4cf0ec94f8ce79e5866076ae3211d0a667ad", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "1fcc0e5006fd11e343d67ea20eff8107bccea7bc", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "7f28cc13daa0257414a8b08e9fe857135f2cb03b", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "eb2d519ce5d0740feb52ff940355862581916090", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "1167cfd12545b3c2c8d8c235a7e3ab4163871ac5", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "67972ef771e972ff3853b444b1bcafe0aaaf8240", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "ee76c6c1229ad9a5a4d82799ae8c0fb75786a00b", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "fe9c6561ba98d6c03d75d09fe01a4571a7d94ec0", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "f834ecc6ae638d593b09d983f56bc1633d934650", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "e6bf9e04f99971575479de673dd39878db08483d", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "default": { + "a-tag.http.html": [ + "e74fad3b638637afbc31605df55186efbd4148a1", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "e71aabe8d628eeadb2ecfa83af5b9f0b19f17c60", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "99cf044f15052315adb3766b90f9dc64daf6f17d", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "0075dd051c38856beb2f16b1841a7ffc42856ddf", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "e0cdcf4ff9cf015612f01d0fda23ad1baa25ed8e", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "3351a49e1c95ff8c4150076ea6f6b0169059fbb6", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "b8d5044bc73476845e92329fe23787b05d8ba062", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "5e3ffcaf235f5e2ee4ac4a2f28f5da93ffcd72a0", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "1b5a55cdb2b7c52287db7cada9852bce0b9f5ed9", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "0cdbf28b423b2191be9e380b4f2e4151215e761c", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "never": { + "a-tag.http.html": [ + "7555f25db89523159beb49bf17effc2b8dafe7f8", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "29a849cbbdce5c17e846b7c24ce62b0ed39b4b5f", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "d6a0c4f31ca41fa00a4f606486ba75186fa3c8f5", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "b6eef755663fb9c2d2fb5b4dc41caf6cac0c03b1", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "b9be802312b66e7c7446e7783bfd907736267e4f", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "1ccc8b7a15309396010903711ebecf19f9746b7b", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "fd201609c843409545c5d9c87a969ca84366c704", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "55357061f76202b3af707b25e4018cecd27ccd3d", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "bf397f451fc8dc43456e114190945346007ac9f9", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "2ef0d4738c694cf9006a51f19c46f793e75bf1b1", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "no-referrer": { "a-tag.http.html": [ "36beb5760f365b0ca778012ced1cab5a62ef6cc2", @@ -399410,6 +401002,98 @@ ] ] }, + "origin-when-crossorigin": { + "a-tag.http.html": [ + "71b8965db0233d060e1fdb06472e23ffe58614c0", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "c1baef7000cd6e1fee4f00571cbc45d209973e46", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "7a76a2723d59c0c3b82f2df8a68aa2fe60ee9bc0", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "689b775fa832d1c8138d8a0834560e3c3db791a4", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "a8a9b08e9a8904440c31f8d163046ccd49335ba4", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "def1c2792259742af893db25838cca4982f791af", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "d647061a270461f57b97cf17fef8ea0290469017", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "413a7923d58135fc8dd5eeff916b26cf37678edd", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "710457c5f0eb995a25a8ad67117e409ef4ee78fe", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "b8b6e257bec3b3c5f0a5528d8e3ae0eaebdfa32c", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "same-origin": { "a-tag.http.html": [ "121fb003b4b359d05390e18788e03b639ab91682", @@ -399872,6 +401556,282 @@ } }, "srcdoc.meta": { + "always": { + "a-tag.http.html": [ + "6dc7b1a410d66f5b4cd631cabae3a49453f118f1", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "935c3752360cd50d842d94f70f2fb62a5f8a58f7", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "af6a08d2a8b7872387af44752bdd4a16d613c611", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "1581f50b88194440b1fa0c4cf6194530bc3e2f3f", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "de7d41428c95a36c6abacb02fc324f74efca4de2", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "3a95d56b1ce912559e7daff4f9f8d9ee5086f8d5", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "d43e0669045d251b3f9a4bdcfca98aaec799da9a", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "29bfacbfc26d3f8878ff84eb5a25b348de9560ba", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "1d1a951dd9db869da71165f85aaafa6fe9c1d74f", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "374da2f5df14473a095a4e6fc93a2372deee9896", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "default": { + "a-tag.http.html": [ + "1280804f4bab34f694b26a324264f84c92df7600", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "80785f29d730922406cd5728c8cc3c85285ba24c", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "27596461a62cec287c27a7390f3adcc517344391", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "9523861b73ef330da1998ac325e0d3a05c4c77e8", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "1b53e4f226a2cae6b6490f6822272558bd0c4f23", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "41f855b0945dc8246d8334319c3802dab25fbc3d", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "21805239960fb76242c2c22bc6cfc2d9e29148db", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "7d14a97a88f12d6d0ba8ba401417bbf194951e25", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "8cf3b592357b07326a6357952317bdf26c93f0cb", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "19bf93d9db73fd2b5704ff71dbb052aa3e325988", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "never": { + "a-tag.http.html": [ + "94e6fa5dff7e6602f6127f304208224c3d998137", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "8f8cd83497cca48da76bd5bebe2b0319dd017fc8", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "aec4bacf43c7fa0d92184973fb4109a5e5f17583", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "5c70d80da71fa3778747da73a7e4b7a78c44f573", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "8ea3f2c05443fbd99ba13cac8a306206ee8aaa16", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "7d05fbd426bafbcb9a098387af5ce0f253e697a6", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "c41b2ac13e3fe32db20abd68b6ed341a3024a5ce", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "170395f05b5247837d7b78c8c74d2e2b2f8d4710", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "c7cd8bd4a6efceaffac33b1dcc4bc6e157063831", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "0228b0b2dcc00ffe70f1ea62020ea3ad65c2cfa4", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "no-referrer": { "a-tag.http.html": [ "36341adda3934cc6479892abec0386fa22b6e009", @@ -400240,6 +402200,98 @@ ] ] }, + "origin-when-crossorigin": { + "a-tag.http.html": [ + "1e9bfad5bfb8c71c00cf217f4db4277fc4f27c8f", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "384acbb02d17e527e739322fc854228c672fe91a", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "b3592033be419e3a912d38d4ff391305a29e1af4", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "8f72e4362997850f49c8836bf6d9cbde44204de8", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "00e3d081941cb67cfe56c445ed1e617fd33bf82c", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "c76d32d3d149666abb22932846af8d81d58c45ee", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "23581fd13137ca04cc681a042a8fcc98ff8ed9e9", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "08961d2ea989ff73f58ab50622a7afa89524fe7c", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "a4c6e0ef4e8493921e3f7186acb2fd0fa3d3145d", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "78ac1bf7e9a4e1a8376588c6c4ba345bd11f1304", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "same-origin": { "a-tag.http.html": [ "aadbf7fb9834e47f26b73ef642bd4b28a5729b90", @@ -401440,6 +403492,282 @@ } }, "top.meta": { + "always": { + "a-tag.http.html": [ + "574b17a7cdd9a6e7b0d68dd51e04beaa30c6c035", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "7554f25fc1dbcb93f6ae55262efef9d0b622afa9", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "0461b5642736a4373714ccf4266e8329fd0e6e3e", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "e211a9cc871959ff2f35e09cddd786fc43a889a4", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "d9de64e1d77e5b969d4441039fd6ada4ccd7500b", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "45c5bc545612b71a4e625117a15e6706bf98aa2f", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "22950273afd8627897c771cd7bb5c17bf9150d73", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "ac59c72ddba927e39890dca3b60297fae44c393d", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "1a7d3aa9f984f52461d33fbdfa88eaa98c2ca943", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "db12bea102f77a4137e1b8d7dd9d46ab1e95019e", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "default": { + "a-tag.http.html": [ + "21b191652bb1a22f9a9bc66063695e2b1227251d", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "d772f9fb8bfd2fe3bc2e548ca59755948d0ecf94", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "b71966f54ca89b1b4b687a6e3cbb39fa80ba8cd3", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "937aaf515c90379ff65e08d6c36fb31d8d7dfd6e", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "2795b8a9abd994f0f36f8ab1dc3a02bdfc799a43", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "a5dec50421bd1f2c6111da792342d7f246fe929e", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "8dcac3557f36e07b14269d34f73abf09bb6fb0b8", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "10752b889f9cdf414bf60a0286d9bdb7b2cb5650", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "b908f84497dde0c0913be26dd365c1f3ff70dc81", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "0dd95ca5844aa887411433c01a37cd7be27aa128", + [ + null, + { + "timeout": "long" + } + ] + ] + }, + "never": { + "a-tag.http.html": [ + "f15738fa3eb993661948ee53d9c637832fe3614e", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "fc15d5f7f3b751b9bfdab24b918739b1e5382a71", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "2932078a7be53f218728ec288e8f8df17be3cbdb", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "6a69539224aecbd8786593d4e160bf44cfc74cea", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "b30b9c8e2889b9cf97c3e2fedffb11e280b78a7d", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "38f9a5f051bc5e0e9d657233d5e0f0ec425ae62f", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "55e8cec205ad25a9213ab7c712b280993337a07e", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "bfcc6f6ab286feb2f4658f2c4b7924ca0c426a13", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "57330eaa0200e0f9752e24a3662257f18a0a6ff5", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "98ea3ff25a38f79ba8e1cc2239b46b69ed4b7fc5", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "no-referrer": { "a-tag.http.html": [ "3760f51c6d3efde7717ac8311d7ae8808e2eeea9", @@ -401808,6 +404136,98 @@ ] ] }, + "origin-when-crossorigin": { + "a-tag.http.html": [ + "270bc100e65b1d7f1fae6fa4711248ea76fe53ac", + [ + null, + { + "timeout": "long" + } + ] + ], + "fetch.http.html": [ + "074d6ff4543d57828da5fc2371928bd56cbed0a3", + [ + null, + { + "timeout": "long" + } + ] + ], + "iframe-tag.http.html": [ + "9b2be1b36db3ad6ee13fc5dd2ea1dac677d7dfff", + [ + null, + { + "timeout": "long" + } + ] + ], + "img-tag.http.html": [ + "23f029e018125051429e832b6ea386da579b0634", + [ + null, + { + "timeout": "long" + } + ] + ], + "script-tag.http.html": [ + "de679acf6743b73b96ac83e77992360ebeed55ea", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-classic.http.html": [ + "ccc463ff5c026e9bd6a36ab955be26dd0e7c2093", + [ + null, + { + "timeout": "long" + } + ] + ], + "sharedworker-module.http.html": [ + "29fd0f2ef347688114e97921bfae8ce9147b72e6", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-classic.http.html": [ + "dd99c2a6083160764c6bcdd5c791611a85d194f2", + [ + null, + { + "timeout": "long" + } + ] + ], + "worker-module.http.html": [ + "dd3800f59e256c4b7fcc03d7aeb2ee5eecfd1f7c", + [ + null, + { + "timeout": "long" + } + ] + ], + "xhr.http.html": [ + "d639073154a3b614986c0d962e0912841b1f7c6e", + [ + null, + { + "timeout": "long" + } + ] + ] + }, "same-origin": { "a-tag.http.html": [ "e527be69a2fd13abf2573a22e63f917f831b36b9", @@ -420972,6 +423392,134 @@ ] ] }, + "urlpattern": { + "input.https.any.js": [ + "71a8fb237b8101789828e1352dc516d97c7d509a", + [ + "urlpattern/input.https.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/input.https.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/input.https.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/input.https.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ] + ], + "pathname.https.any.js": [ + "5de41ccc438de61af3dd396b3b67489059140f55", + [ + "urlpattern/pathname.https.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/pathname.https.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/pathname.https.any.sharedworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ], + [ + "urlpattern/pathname.https.any.worker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "resources/utils.js" + ] + ] + } + ] + ] + }, "user-timing": { "buffered-flag.any.js": [ "f938c8522d829a5d4c0a28483fb1196be5512323", @@ -426203,14 +428751,21 @@ ] ], "NDEFReader_scan.https.html": [ - "b551af0150f068b0794047cdfb08c862ac3bbb4b", + "ba101d67e5debc657b140bd23b7d81f9f5dc525d", [ null, {} ] ], "NDEFReader_scan_iframe.https.html": [ - "8803c25fb0a54fe13b23eb455e6da09c422aa3d4", + "6967c76ecd6d6bf6bfcb26c146931312f224734a", + [ + null, + {} + ] + ], + "NDEFReader_write.https.html": [ + "35e6dd37299485d914df3e9f0c36d5aed4f10e8b", [ null, {} @@ -426230,13 +428785,6 @@ {} ] ], - "NDEFWriter_write.https.html": [ - "57fd300a34f9b8fddf0489dec6048b4a55273f54", - [ - null, - {} - ] - ], "idlharness.https.window.js": [ "e2000abce8da4e44e793b0f935340b1348033cef", [ @@ -426261,7 +428809,7 @@ ] ], "nfc_insecure_context.html": [ - "9a8e58cf802fceb818fa93000cb5a3db75bddc14", + "8c2eb5a14275b7a301ac418b2c5be48bd03705ed", [ null, {} @@ -429494,7 +432042,7 @@ ] ], "RTCConfiguration-iceServers.html": [ - "1cbf1d6c1da47b80d9b3d7173f78062f2e49bf10", + "36f1277678ac3e402e60e1254c39bc0d4d84e851", [ null, {} @@ -429556,7 +432104,7 @@ ] ], "RTCDataChannel-close.html": [ - "cd4ace2a836be2c9f18deca48c8c01f5e1cdff1d", + "e2a5ba77245ce4d8204f473cfed1c1223741667e", [ null, { @@ -430588,6 +433136,13 @@ } }, "webrtc-extensions": { + "RTCOAuthCredential.html": [ + "63e92c6d087d3f3395651b9fd8ea583736bf7030", + [ + null, + {} + ] + ], "RTCRtpParameters-maxFramerate.html": [ "c1d472386009d693835263483959a83d0e898048", [ @@ -454805,7 +457360,7 @@ ] ], "navigate.py": [ - "d776a1eb84e6899e0cbe4bea74d82f5b80b246a9", + "548587cd2b60c24469d0f21fff400e9a39b820e9", [ null, {}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-print.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-print.html new file mode 100644 index 0000000..6cd5ea0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-print.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="block-001-wm-vlr-ref.html"> +<meta name="flags" content="paged"> +<meta name="fuzzy" content="maxDifference=0-60;totalPixels=0-200"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-lr; +} +html { block-size: 40vw; } + +.b { + inline-size: 50vh; + block-size: 210vw; + box-sizing: border-box; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; + margin-block-end: -20px; +} +</style> +<body> + <div class="b"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-ref.html new file mode 100644 index 0000000..b131b0e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vlr-ref.html
@@ -0,0 +1,48 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<meta name="flags" content="paged"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-lr; +} +html { block-size: 40vw; } + +.b { + box-sizing: border-box; + inline-size: 50vh; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} + +.b1 { + block-size: 100vw; + border-block-end-style: none; +} + +.b2 { + block-size: 100vw; + border-block-start-style: none; + border-block-end-style: none; +} + +.b3 { + block-size: 10vw; + border-block-start-style: none; + margin-block-end: -20px; +} +</style> +<body> + <div class="b b1"></div> + <div class="b b2"></div> + <div class="b b3"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-print.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-print.html new file mode 100644 index 0000000..6e07312 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-print.html
@@ -0,0 +1,33 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="block-001-wm-vrl-ref.html"> +<meta name="flags" content="paged"> +<meta name="fuzzy" content="maxDifference=0-60;totalPixels=0-200"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-rl; +} +html { block-size: 40vw; } + +.b { + inline-size: 50vh; + block-size: 210vw; + box-sizing: border-box; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} +</style> +<body> + <div class="b"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-ref.html new file mode 100644 index 0000000..6fb7e735 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-001-wm-vrl-ref.html
@@ -0,0 +1,48 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<meta name="flags" content="paged"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-rl; +} +html { block-size: 40vw; } + +.b { + box-sizing: border-box; + inline-size: 50vh; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} + +.b1 { + block-size: 100vw; + border-block-end-style: none; +} + +.b2 { + block-size: 100vw; + border-block-start-style: none; + border-block-end-style: none; +} + +.b3 { + block-size: 10vw; + border-block-start-style: none; + margin-block-end: -20px; +} +</style> +<body> + <div class="b b1"></div> + <div class="b b2"></div> + <div class="b b3"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-print.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-print.html new file mode 100644 index 0000000..9994962 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-print.html
@@ -0,0 +1,51 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="block-002-wm-vlr-ref.html"> +<meta name="flags" content="paged"> +<meta name="fuzzy" content="maxDifference=0-35;totalPixels=0-220"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-lr; +} +html { margin-block-start: 80vw; } +* { box-sizing: border-box; } + +.b { + inline-size: 50vh; + block-size: 130vw; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} + +.b > div { + inline-size: 50vh; + block-size: 150vw; + border: 5px solid grey; + margin-inline-start: 20px; + margin-block-start: -5px; +} + +.after { + inline-size: 60vh; + block-size: 30vw; + margin-block-start: 5vw; + border: 5px solid blue; +} +</style> +<body> + <div class="b"> + <div></div> + </div> + <div class="after"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-ref.html new file mode 100644 index 0000000..d3193f20 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vlr-ref.html
@@ -0,0 +1,73 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<meta name="flags" content="paged"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-lr; +} +html { margin-block-start: 80vw; } +* { box-sizing: border-box; } + +.b { + inline-size: 50vh; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} +.b1 { + block-size: 20vw; + border-block-end-style: none; +} + +.b2 { + block-size: 100vw; + border-block-start-style: none; + border-block-end-style: none; +} + +.b3 { + block-size: 10vw; + border-block-start-style: none; +} + +.b > div { + inline-size: 50vh; + block-size: 100vw; + border: 5px solid grey; + margin-inline-start: 20px; +} +.b1 > div { + border-block-end-style: none; + margin-block-start: -5px; +} +.b2 > div { + border-block-start-style: none; + border-block-end-style: none; +} +.b3 > div { + block-size: 30vw; + border-block-start-style: none; +} + +.after { + inline-size: 60vh; + block-size: 30vw; + margin-block-start: 5vw; + border: 5px solid blue; +} +</style> +<body> + <div class="b b1"><div></div></div> + <div class="b b2"><div></div></div> + <div class="b b3"><div></div></div> + <div class="after"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-print.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-print.html new file mode 100644 index 0000000..084b532 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-print.html
@@ -0,0 +1,51 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="block-002-wm-vrl-ref.html"> +<meta name="flags" content="paged"> +<meta name="fuzzy" content="maxDifference=0-35;totalPixels=0-220"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-rl; +} +html { margin-block-start: 80vw; } +* { box-sizing: border-box; } + +.b { + inline-size: 50vh; + block-size: 130vw; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} + +.b > div { + inline-size: 50vh; + block-size: 150vw; + border: 5px solid grey; + margin-inline-start: 20px; + margin-block-start: -5px; +} + +.after { + inline-size: 60vh; + block-size: 30vw; + margin-block-start: 5vw; + border: 5px solid blue; +} +</style> +<body> + <div class="b"> + <div></div> + </div> + <div class="after"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-ref.html b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-ref.html new file mode 100644 index 0000000..8b5ea92 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/block-002-wm-vrl-ref.html
@@ -0,0 +1,73 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<meta name="flags" content="paged"> +<html> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; + writing-mode: vertical-rl; +} +html { margin-block-start: 80vw; } +* { box-sizing: border-box; } + +.b { + inline-size: 50vh; + border: 5px solid black; + border-block-start-color: blue; + border-inline-start-color: lime; + margin-inline-start: 20px; +} +.b1 { + block-size: 20vw; + border-block-end-style: none; +} + +.b2 { + block-size: 100vw; + border-block-start-style: none; + border-block-end-style: none; +} + +.b3 { + block-size: 10vw; + border-block-start-style: none; +} + +.b > div { + inline-size: 50vh; + block-size: 100vw; + border: 5px solid grey; + margin-inline-start: 20px; +} +.b1 > div { + border-block-end-style: none; + margin-block-start: -5px; +} +.b2 > div { + border-block-start-style: none; + border-block-end-style: none; +} +.b3 > div { + block-size: 30vw; + border-block-start-style: none; +} + +.after { + inline-size: 60vh; + block-size: 30vw; + margin-block-start: 5vw; + border: 5px solid blue; +} +</style> +<body> + <div class="b b1"><div></div></div> + <div class="b b2"><div></div></div> + <div class="b b3"><div></div></div> + <div class="after"></div> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-001-print.html b/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-001-print.html new file mode 100644 index 0000000..495153d3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-001-print.html
@@ -0,0 +1,23 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="about:blank"> +<meta name="flags" content="paged"> +<style> +@page { + size: 5in 3in; + margin: 0.5in; +} + +html,body { + color:black; background-color:white; font:20px/1 monospace; padding:0; margin:0; +} + +body { + width: 100vw; + height: 100vh; + outline: 100px solid red; + box-shadow: 100px 100px 0 #F00; +} +</style> +<body></body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-002.html b/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-002.html new file mode 100644 index 0000000..8af605ef --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/ink-overflow-002.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<style> +.col { + column-width: 100px; + column-rule: 100px solid red; + height: 100px; + column-fill: auto; + gap: 0; + overflow: hidden; +} + +.col > div { + display: flow-root; + width: 100px; + height: 100px; + background: green; +} + +.col > div > div { + width: 10px; + height: 10px; + margin-top: 80px; + margin-left: 50px; + outline: 30px solid green; + box-shadow: 0 30px 0 30px green; +} +</style> +<body> + <p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + <div class="col"><div><div></div></div></div> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-monolithic-002.html b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-monolithic-002.html new file mode 100644 index 0000000..7f407df --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-monolithic-002.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + <meta charset="UTF-8"> + <title>CSS Containment Test: absolute positioned 'contain: size' element is monolithic</title> + <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> + <link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + <link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size"> + <link rel="match" href="../reference/ref-filled-green-100px-square-only.html"> + <meta name="assert" content="This test checks that an absolute positioned element with size containment is monolithic."> + + <style> + #multicol { + width: 300px; + column-count: 3; + } + #container { + position: relative; + } + #abs-size-contain { + position: absolute; + contain: size; + width: 100px; + height: 100px; + background: green; + } + </style> + + <p>Test passes if there is a filled green square.</p> + <div id="multicol"> + <div id="container"> + <div id="abs-size-contain"></div> + </div> + </div> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html new file mode 100644 index 0000000..3197d5b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/contain-size-layout-abspos-flex-container-crash.html
@@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> + <meta charset="UTF-8"> + <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com"> + <link rel="author" title="Mozilla" href="https://www.mozilla.org/"> + <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1678469"> + <meta name="assert" content="This test ensures that the browser does not crash after removing the element 'c'."> + + <style> + html { columns: 0 } + body { + transform: rotate(14deg); + } + #flex-container { + display: flex; + contain: size layout; + position: absolute; + width: 100px; + height: 100px; + } + </style> + + <script> + function boom() { + let flex = document.getElementById('flex-container'); + let c = document.getElementById('c'); + flex.removeChild(c); + } + </script> + + <body onload="boom()"> + <div id="flex-container"> + x + <div id="c"></div> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/masonry-fragmentation-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/masonry-fragmentation-001-ref.html index de3fe6f..c9318ae 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/masonry-fragmentation-001-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/masonry-fragmentation-001-ref.html
@@ -55,7 +55,7 @@ } x,y,z,masonry-track { display: block; } masonry-track > * { margin-bottom:2px; } -masonry-track.last > :last-child { margin-bottom:0; } +.last > masonry-track > :last-child { margin-bottom:0; } masonry-track:nth-child(1) { width: 10px; } masonry-track:nth-child(2) { width: 15px; margin-left:2px; } masonry-track:nth-child(3) { width: 20px; margin-left:2px; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004-ref.html new file mode 100644 index 0000000..ac47309d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004-ref.html
@@ -0,0 +1,198 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <title>Reference: abs.pos. subgrid edge cases</title> + <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> +<style> +html,body { + color:black; background-color:white; font:15px/1 monospace; +} + +body > div { + display: inline-block; + height: 20px; + border: 1px solid; + margin: 1px; + vertical-align: top; +} +body > div > div { height: 20px; background: lightgrey; } +body > div > div > div { height: 20px; } +</style> +</head> +<body> + +<script> +let results = [ + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "10px", "0", "10px", "0", "10px", "lime" ], + [ "50px", "0", "50px", "0", "10px", "lime" ], + [ "50px", "0", "50px", "0", "10px", "lime" ], + [ "50px", "0", "50px", "0", "50px", "lime" ], + [ "50px", "0", "50px", "0", "10px", "lime" ], + [ "50px", "0", "50px", "0", "10px", "lime" ], + [ "50px", "0", "50px", "0", "50px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + [ "50px", "0", "40px", "0", "40px", "lime" ], + + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "10px", "0", "10px", "0", "10px", "blue" ], + [ "50px", "0", "50px", "0", "10px", "blue" ], + [ "50px", "0", "50px", "0", "10px", "blue" ], + [ "50px", "0", "50px", "0", "50px", "blue" ], + [ "50px", "0", "50px", "0", "10px", "blue" ], + [ "50px", "0", "50px", "0", "10px", "blue" ], + [ "50px", "0", "50px", "0", "50px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + [ "50px", "0", "40px", "0", "40px", "blue" ], + + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "20px", "0", "20px", "0", "20px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + [ "50px", "0", "0", "0", "30px", "lime" ], + + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "20px", "0", "20px", "0", "20px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + [ "50px", "0", "0", "0", "30px", "blue" ], + + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "30px", "0", "30px", "0", "30px", "lime" ], + [ "50px", "20px", "30px", "0", "10px", "lime" ], + [ "50px", "20px", "30px", "0", "10px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "20px", "30px", "0", "10px", "lime" ], + [ "50px", "20px", "30px", "0", "10px", "lime" ], + [ "50px", "0", "0", "20px", "30px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + [ "50px", "0", "0", "0", "20px", "lime" ], + + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "30px", "0", "30px", "0", "30px", "blue" ], + [ "50px", "20px", "30px", "0", "10px", "blue" ], + [ "50px", "20px", "30px", "0", "10px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "20px", "30px", "0", "10px", "blue" ], + [ "50px", "20px", "30px", "0", "10px", "blue" ], + [ "50px", "0", "0", "20px", "30px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], + [ "50px", "0", "0", "0", "20px", "blue" ], +]; +results.forEach(function(arr) { + let grid_width, subgrid_width, subgrid_pos, item_pos, item_width, item_bg; + [grid_width, subgrid_pos, subgrid_width, item_pos, item_width, item_bg] = arr; + let grid = document.createElement('div'); + grid.style.width = grid_width; + let subgrid = document.createElement('div'); + subgrid.style.width = subgrid_width; + subgrid.style.marginLeft = subgrid_pos; + let subgridItem = document.createElement('div'); + subgridItem.style.width = item_width; + subgridItem.style.marginLeft = item_pos; + subgridItem.style.backgroundColor = item_bg; + subgrid.appendChild(subgridItem); + grid.appendChild(subgrid); + document.body.appendChild(grid); +}); +</script> + +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004.html b/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004.html new file mode 100644 index 0000000..b66143c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/subgrid/abs-pos-004.html
@@ -0,0 +1,104 @@ +<!DOCTYPE HTML> +<!-- + Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +--> +<html><head> + <title>CSS Grid Test: abs.pos. subgrid edge cases</title> + <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-grid-2"> + <link rel="match" href="abs-pos-004-ref.html"> +<style> +html,body { + color:black; background-color:white; font:15px/1 monospace; +} + +.grid { + position: relative; + display: inline-grid; + grid-auto-columns: 10px; + grid-auto-rows: 20px; + grid-auto-flow: column; + border: 1px solid; + margin: 1px; + vertical-align: top; +} + +.subgrid { + position: absolute; + inset: 0; + display: grid; + background: lightgrey; +} +.t1 { grid: subgrid / subgrid; } +.t2 { grid: none / subgrid; } +.t3 { grid: subgrid / none; } + +x { + background: lime; + grid-area: 1/1/-1/-1; +} +fail { + background: red; +} + +.a { + position: absolute; + grid-area: 1/1/-1/-1; + inset: 0; + background: blue; +} + +.o { overflow: hidden; } + +.start .subgrid { + grid-column-start: 3; +} +.end .subgrid { + grid-column-end: 1; +} +.start, .end { + width: 50px; +} +.end { + justify-content: end; +} +.start > fail, .end > fail { + background: initial; +} +</style> +</head> +<body> + +<script> +function make_grids(items, abspos) { + ["", "o", "start", "end"].forEach(function(grid1) { + ["", "o"].forEach(function(subgrid1) { + ["t1", "t2", "t3"].forEach(function(subgrid2) { + let grid = document.createElement('div'); + for (let i = 0; i < items; ++i) { + grid.appendChild(document.createElement('fail')); + } + grid.className = "grid " + grid1; + document.body.appendChild(grid); + document.body.offsetHeight; + let subgrid = document.createElement('div'); + subgrid.className = "subgrid " + subgrid1 + " " + subgrid2; + let subgridItem = document.createElement('x'); + if (abspos) { + subgridItem.className = "a"; + } + subgrid.appendChild(subgridItem); + grid.appendChild(subgrid); + }) + }) + }); +} +for (let i = 1; i <= 3; ++i) { + make_grids(i, false); + make_grids(i, true); +} +</script> + +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1-ref.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1-ref.html new file mode 100644 index 0000000..c696d079 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1-ref.html
@@ -0,0 +1,31 @@ +<!DOCTYPE HTML> +<title>CSS Test Reference: breaking of column rule</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<style> + +.ref1, .ref2 { + display: inline-block; + vertical-align: top; + + border: 2px solid blue; + border-top: none; + border-bottom: none; +} + +.ref1 { + margin-left:49px; + height: 100px; + width: 148px; +} + +.ref2 { + margin-left: 148px; + height: 50px; + width: 10px; + + border-right: none; +} + +</style> +<span class="ref1"></span><span class="ref2"></span>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1.html new file mode 100644 index 0000000..13deaa7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/broken-column-rule-1.html
@@ -0,0 +1,34 @@ +<!DOCTYPE HTML> +<title>CSS Test: breaking of column rule</title> +<meta charset="utf-8"> +<link rel="author" title="L. David Baron" href="https://dbaron.org/"> +<link rel="help" href="https://drafts.csswg.org/css-multicol/#column-gaps-and-rules"> +<link rel="match" href="broken-column-rule-1-ref.html"> +<style> + +.outer { + height: 100px; + column-fill: auto; + width: 550px; + column-count: 4; + column-gap: 50px; + /* leaves 100px for each column */ +} + +.inner { + column-count: 2; + column-rule: 2px solid blue; + height: 250px; +} + +.fill { + height: 500px; /* work around https://bugzilla.mozilla.org/show_bug.cgi?id=1374479#c4 */ +} + +</style> + +<div class="outer"> + <div class="inner"> + <div class="fill"></div> + </div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-ref.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-ref.html new file mode 100644 index 0000000..c39deb1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-ref.html
@@ -0,0 +1,47 @@ +<!DOCTYPE HTML> +<html><head> + <title>CSS Test: Balancing Overflow, page-break-inside:avoid</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=685012"> + <meta name="flags" content="paged"> + <meta charset="utf-8"> + <style type="text/css"> +@page { size:5in 3in; margin:0.5in; } + + html,body { + color:black; background-color:white; font-size:16px; padding:0; margin:0; + } + + .colset { + column-count: 3; + column-gap: 0; + border: solid silver; + width: 9em; + } + p { margin: 0; } + .short { height: 5px; } + .short p { } + + </style> +</head> +<body> + +<div class="colset"> +<p>one<br> </p> +<p>two three</p> +<p>four five</p> +</div> + +<div class="colset"> + <p>one two three four five</p> +</div> + +<div class="colset"> +one two three four five +</div> + +<div class="colset"> + <div class="short"><p>one two three four five</p></div> +</div> + +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1.html b/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1.html new file mode 100644 index 0000000..f18a9ce --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1.html
@@ -0,0 +1,50 @@ +<!DOCTYPE HTML> +<html><head> + <title>CSS Test: Balancing Overflow, page-break-inside:avoid</title> + <link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=685012"> + <link rel="help" href="http://www.w3.org/TR/CSS21/page.html#propdef-page-break-inside"> + <link rel="match" href="moz-multicol3-column-balancing-break-inside-avoid-1-ref.html"> + <meta name="flags" content="paged"> + <meta charset="utf-8"> + <style type="text/css"> +@page { size:5in 3in; margin:0.5in; } + + html,body { + color:black; background-color:white; font-size:16px; padding:0; margin:0; + } + + .colset { + column-count: 3; + column-gap: 0; + border: solid silver; + width: 9em; + } + p { margin: 0; page-break-inside:avoid; } + .short { height: 5px; page-break-inside:avoid; } + .short p { page-break-inside:auto; } + + </style> +</head> +<body> + +<div class="colset"> +<p>one</p> +<p>two three</p> +<p>four five</p> +</div> + +<div class="colset"> + <p>one two three four five</p> +</div> + +<div class="colset"> +<p>one two</p> +<p>three four five</p> +</div> + +<div class="colset"> + <div class="short"><p>one two three four five</p></div> +</div> + +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print-ref.xht b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print-ref.xht new file mode 100644 index 0000000..24943560c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print-ref.xht
@@ -0,0 +1,37 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Reftest Reference</title> + <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact" /> + <style type="text/css"><![CDATA[ + html, body { height: 100%; } + * { margin: 0; } + div { + border: double blue 12px; + height: 150%; + padding: 0 12px; + } + div > p { + border-right: solid orange 12px; + border-left: solid orange 12px; + width: 50%; + margin: 0 auto; + height: 100%; + } + blockquote { + border: solid thick yellow; + } ]]></style> + </head> + <body> + <p>Test passes if even when printed:</p> + <ul> + <li>Two vertical orange stripes stretch exactly + from the inner top edge to the inner bottom edge of the blue box below.</li> + <li>There is a yellow stripe immediately below the blue box.</li> + </ul> + <div> + <p></p> + </div> + <blockquote></blockquote> + </body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print.xht b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print.xht new file mode 100644 index 0000000..ccc7880 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-height-002-print.xht
@@ -0,0 +1,44 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>CSS Test: Percentage Computed Height on Multicol Child (Definite Multicol Height)</title> + <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact" /> + <link rel="help" href="http://www.w3.org/TR/css3-multicol/#the-multi-column-model" /> + <link rel="help" href="http://www.w3.org/TR/CSS21/visudet.html#the-height-property"/> + <meta name="flags" content="" /> + <meta name="assert" content="Percentage heights with a multi-column element are relative to the computed height of the multicolumn box, and this works even when the multi-column element is paginated." /> + <link rel="match" href="multicol-height-002-print-ref.xht" /> + <style type="text/css"><![CDATA[ + html, body { height: 100%; } + * { margin: 0; } + div { + border: double blue 12px; + column-count:2; + column-gap:0; + column-fill: balance; + height: 150%; + } + div > p { + border-right: solid orange 12px; + width: 0; + margin: 0 auto; + height: 200%; + } + blockquote { + border: solid thick yellow; + } + ]]></style> + </head> + <body> + <p>Test passes if even when printed:</p> + <ul> + <li>Two vertical orange stripes stretch exactly + from the inner top edge to the inner bottom edge of the blue box below.</li> + <li>There is a yellow stripe immediately below the blue box.</li> + </ul> + <div> + <p></p> + </div> + <blockquote></blockquote> + </body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/file-selector-button-display-none-overflow-crash.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/file-selector-button-display-none-overflow-crash.html new file mode 100644 index 0000000..8105174 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/file-selector-button-display-none-overflow-crash.html
@@ -0,0 +1,5 @@ +<link rel="author" href="mailto:mats@mozilla.com"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1679682"> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5049"> +<style>input{width:1px}::file-selector-button{display: none;}</style> +<input type="file">
diff --git a/third_party/blink/web_tests/external/wpt/dom/abort/addEventListenerAbortController.tentative.html b/third_party/blink/web_tests/external/wpt/dom/abort/addEventListenerAbortController.tentative.html deleted file mode 100644 index d208d4b..0000000 --- a/third_party/blink/web_tests/external/wpt/dom/abort/addEventListenerAbortController.tentative.html +++ /dev/null
@@ -1,56 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org"> - -<!-- This behavior has not been specified yet. See https://github.com/whatwg/dom/issues/911 --> - -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<body> - -<script> -test(t => { - const target = new EventTarget(); - const controller = new AbortController(); - - target.addEventListener('testevent', t.step_func(() => { - assert_unreached('testevent should have been canceled by AbortController'); - }), {signal: controller.signal}); - - controller.abort(); - target.dispatchEvent(new Event('testevent')); -}, 'Tests support for EventController to cancel event listeners in addEventListener.'); - -test(t => { - const target = new EventTarget(); - const controller = new AbortController(); - - target.addEventListener('testevent', t.step_func(() => { - assert_unreached('testevent should have been canceled by AbortController'); - }), {signal: controller.signal, capture: true}); - - controller.abort(); - target.dispatchEvent(new Event('testevent')); -}, 'Tests support for EventController to cancel capture event listeners in addEventListener.'); - -test(function() { - let count = 0; - function handler() { - count++; - } - const et = new EventTarget(); - const controller = new AbortController(); - et.addEventListener('test', handler, { signal: controller.signal }); - et.dispatchEvent(new Event('test')); - assert_equals(count, 1, "Adding a signal still adds a listener"); - et.dispatchEvent(new Event('test')); - assert_equals(count, 2, "The listener was not added with the once flag"); - controller.abort(); - et.dispatchEvent(new Event('test')); - assert_equals(count, 2, "Aborting on the controller removes the listener"); - et.addEventListener('test', handler, { signal: controller.signal }); - et.dispatchEvent(new Event('test')); - assert_equals(count, 2, "Passing an aborted signal never adds the handler"); -}, "Passing an AbortSignal to addEventListener options should allow removing a listener"); -</script>
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js b/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js new file mode 100644 index 0000000..4287106 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/dom/events/AddEventListenerOptions-signal.any.js
@@ -0,0 +1,133 @@ +'use strict'; + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 1, "Adding a signal still adds a listener"); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "The listener was not added with the once flag"); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "Aborting on the controller removes the listener"); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 2, "Passing an aborted signal never adds the handler"); +}, "Passing an AbortSignal to addEventListener options should allow removing a listener"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal }); + et.removeEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener does not prevent removeEventListener"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, once: true }); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener works with the once flag"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, once: true }); + et.removeEventListener('test', handler); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Removing a once listener works with a passed signal"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('first', handler, { signal: controller.signal, once: true }); + et.addEventListener('second', handler, { signal: controller.signal, once: true }); + controller.abort(); + et.dispatchEvent(new Event('first')); + et.dispatchEvent(new Event('second')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to multiple listeners"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', handler, { signal: controller.signal, capture: true }); + controller.abort(); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Passing an AbortSignal to addEventListener works with the capture flag"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', () => { + controller.abort(); + }, { signal: controller.signal }); + et.addEventListener('test', handler, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Aborting from a listener does not call future listeners"); + +test(function() { + let count = 0; + function handler() { + count++; + } + const et = new EventTarget(); + const controller = new AbortController(); + et.addEventListener('test', () => { + et.addEventListener('test', handler, { signal: controller.signal }); + controller.abort(); + }, { signal: controller.signal }); + et.dispatchEvent(new Event('test')); + assert_equals(count, 0, "The listener was still removed"); +}, "Adding then aborting a listener in another listener does not call it"); + +test(function() { + const et = new EventTarget(); + const ac = new AbortController(); + let count = 0; + et.addEventListener('foo', () => { + et.addEventListener('foo', () => { + count++; + if (count > 5) ac.abort(); + et.dispatchEvent(new Event('foo')); + }, { signal: ac.signal }); + et.dispatchEvent(new Event('foo')); + }, { once: true }); + et.dispatchEvent(new Event('foo')); +}, "Aborting from a nested listener should remove it");
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-bad-port.any.js b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-bad-port.any.js index b1a9e93..afb02ae 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/request/request-bad-port.any.js +++ b/third_party/blink/web_tests/external/wpt/fetch/api/request/request-bad-port.any.js
@@ -66,6 +66,8 @@ 2049, // nfs 3659, // apple-sasl 4045, // lockd + 5060, // sip + 5061, // sips 6000, // x11 6665, // irc (alternate) 6666, // irc (alternate)
diff --git a/third_party/blink/web_tests/external/wpt/fetch/metadata/history.https.sub.html b/third_party/blink/web_tests/external/wpt/fetch/metadata/history.https.sub.html index 0a10f32..f0119e6 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/metadata/history.https.sub.html +++ b/third_party/blink/web_tests/external/wpt/fetch/metadata/history.https.sub.html
@@ -9,8 +9,8 @@ /// headers) are used in navigations triggered by |history.back()|. function add_test(description, report_host, go_back_host, expectations) { async_test(t => { - // STEP1: Navigate a new window to report_host/post-to-owner.py - const url_suffix = '/fetch/metadata/resources/post-to-owner.py'; + // STEP1: Navigate a new window to report_host/post-to-owner-onload.py + const url_suffix = '/fetch/metadata/resources/post-to-owner-onload.py'; const url = `https://${report_host}${url_suffix}`; const w = window.open(url, '_blank'); @@ -24,15 +24,10 @@ // headers are used here and in STEP5). assert_header_equals(e.data, expectations, description + " 1"); - // STEP3: Go to go_back_host/go-back.html (postponing this via - // step_timeout ensures that go-back.html will get a separate - // history entry - otherwise it might be treated as a client-side - // redirect and we might end up with nowhere to go back to). - t.step_timeout(() => { - const url_suffix = '/fetch/metadata/resources/go-back.html'; - const url = `https://${go_back_host}${url_suffix}`; - w.location = url; - }); + // STEP3: Go to go_back_host/go-back.html + const url_suffix = '/fetch/metadata/resources/go-back.html'; + const url = `https://${go_back_host}${url_suffix}`; + w.location = url; // STEP4 (elsewhere - inside go-back.html): Call history.back(). } else if (msg_counter == 2) {
diff --git a/third_party/blink/web_tests/external/wpt/fetch/metadata/resources/post-to-owner-onload.py b/third_party/blink/web_tests/external/wpt/fetch/metadata/resources/post-to-owner-onload.py new file mode 100644 index 0000000..8459edb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/metadata/resources/post-to-owner-onload.py
@@ -0,0 +1,34 @@ +import json + +from wptserve.utils import isomorphic_decode + +def main(request, response): + headers = [ + (b"Content-Type", b"text/html"), + (b"Cache-Control", b"no-cache, no-store, must-revalidate") + ] + key = request.GET.first(b"key", None) + + body = u""" + <!DOCTYPE html> + <script src="/portals/resources/stash-utils.sub.js"></script> + <script> + window.onload = function() { + var data = %s; + if (window.opener) + window.opener.postMessage(data, "*"); + if (window.top != window) + window.top.postMessage(data, "*"); + + const key = %s; + if (key) + StashUtils.putValue(key, data); + } + </script> + """ % (json.dumps({ + u"dest": isomorphic_decode(request.headers.get(b"sec-fetch-dest", b"")), + u"mode": isomorphic_decode(request.headers.get(b"sec-fetch-mode", b"")), + u"site": isomorphic_decode(request.headers.get(b"sec-fetch-site", b"")), + u"user": isomorphic_decode(request.headers.get(b"sec-fetch-user", b"")), + }), json.dumps(key)) + return headers, body
diff --git a/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes-expected.txt b/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes-expected.txt new file mode 100644 index 0000000..a849145 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL Check focus event after focusing different site iframe assert_equals: expected "outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:windowfocus," but got "outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:" +FAIL Check focus event after focusing same site iframe assert_equals: expected "outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:windowfocus," but got "outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes.html b/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes.html new file mode 100644 index 0000000..b7076a2e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/focus/focus-event-after-focusing-iframes.html
@@ -0,0 +1,55 @@ +<!doctype html> +<meta charset=utf-8> +<title>Test focus event after focusing iframe</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script> +function waitForEvent(target, event, checkFn) { + return new Promise(resolve => { + target.addEventListener(event, e => { + if (checkFn && !checkFn(e)) { + return; + } + resolve(); + }, { once: true }); + }); +} + +function focusIframe(w) { + w.postMessage("focus", "*"); +} + +// This will send message to outer frame and also inner frame to ask them +// send the log they collect back, the logs of outer and inner will be +// concatenated. +async function getLog(w) { + let log = ""; + step_timeout(function() { + w.postMessage("getlog", "*"); + }, 0); + await waitForEvent(window, "message", (e) => { + log = e.data; + return true; + }); + return log; +} + +async function runTest(t, url) { + let w = window.open(url); + t.add_cleanup(() => { w.close(); }); + await waitForEvent(window, "message", e => e.data === "ready"); + focusIframe(w); + assert_equals(await getLog(w), 'outerlog:willfocusiframe,windowblur,didfocusiframe,innerlog:windowfocus,'); + focusIframe(w); + assert_equals(await getLog(w), 'outerlog:willfocusiframe,windowblur,didfocusiframe,willfocusiframe,didfocusiframe,innerlog:windowfocus,'); +} + +promise_test(async t => { + await runTest(t, "support/focus-event-after-focusing-different-site-iframes-outer.sub.html"); +}, "Check focus event after focusing different site iframe"); + +promise_test(async t => { + await runTest(t, "support/focus-event-after-focusing-same-site-iframes-outer.html"); +}, "Check focus event after focusing same site iframe"); + +</script>
diff --git a/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html new file mode 100644 index 0000000..7d2fb50 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-different-site-iframes-outer.sub.html
@@ -0,0 +1,32 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Focus event after focusing different site iframes outer</title> +<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/focus-event-after-focusing-iframes-inner.html"></iframe> +<script> +let outerlog = "outerlog:"; + +let iframe = document.querySelector("iframe"); +window.onmessage = function(e) { + if (e.data == "focus") { + outerlog += "willfocusiframe,"; + iframe.focus(); + outerlog += "didfocusiframe,"; + } else if (e.data == "getlog") { + iframe.contentWindow.postMessage("getlog", "*"); + } else { + opener.postMessage(outerlog + e.data, "*"); + } +}; + +window.onload = function() { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + + window.onblur = function() { + outerlog += "windowblur,"; + }; + + opener.postMessage("ready", "*"); +}; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-iframes-inner.html b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-iframes-inner.html new file mode 100644 index 0000000..cb15416 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-iframes-inner.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>Focus event inner document</title> +</head> +<body> +<h1>Inner</h1> +<script> +let innerlog = "innerlog:"; + +window.onmessage = function(e) { + if (e.data == "getlog") { + parent.postMessage(innerlog, "*"); + } +}; + +window.onfocus = function() { + innerlog += "windowfocus,"; +}; + +window.onblur = function() { + innerlog += "windowblur,"; +}; +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-same-site-iframes-outer.html b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-same-site-iframes-outer.html new file mode 100644 index 0000000..08f2c3f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/focus/support/focus-event-after-focusing-same-site-iframes-outer.html
@@ -0,0 +1,32 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Focus event after focusing same site iframes outer</title> +<iframe src="focus-event-after-focusing-iframes-inner.html"></iframe> +<script> +let outerlog = "outerlog:"; + +let iframe = document.querySelector("iframe"); +window.onmessage = function(e) { + if (e.data == "focus") { + outerlog += "willfocusiframe,"; + document.querySelector("iframe").focus(); + outerlog += "didfocusiframe,"; + } else if (e.data == "getlog") { + iframe.contentWindow.postMessage("getlog", "*"); + } else { + opener.postMessage(outerlog + e.data, "*"); + } +}; + +window.onload = function() { + window.onfocus = function() { + outerlog += "windowfocus,"; + }; + + window.onblur = function() { + outerlog += "windowblur,"; + }; + + opener.postMessage("ready", "*"); +}; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-iframe.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-iframe.html new file mode 100644 index 0000000..212a10c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-iframe.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Beforeunload must be gated behind sticky activation: nested browsing context</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<p>If you happen to be running this test as a human, then be sure not to interact with any part of the page; that would invalidate the results! + +<script> +setup({ single_test: true }); + +const iframe = document.createElement('iframe'); +iframe.src = 'support/beforeunload-sticky-start.html'; + +window.onmessage = e => { + assert_equals(e.data, 'navigated successfully'); + + const desiredURL = (new URL('support/beforeunload-sticky-destination.html', location.href)).href; + assert_equals(iframe.contentWindow.location.href, desiredURL); + + done(); +}; + +document.body.append(iframe); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual.html new file mode 100644 index 0000000..55612bb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual.html
@@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Beforeunload must be gated behind sticky activation: normal top-level browsing context</title> + +<p>This test is manual because we want to test non-popup, non-iframe situations. Sibling files contain automated tests for those situations. + +<p>In three seconds, this document will redirect itself to a new page. The test passes if the redirect succeeds. The test fails if a beforeunload dialog pops up asking for confirmation. + +<p>Be sure not to interact with any part of the page in the meantime. That would invalidate the results. + +<script> +window.onbeforeunload = e => e.preventDefault(); + +setTimeout(() => { + location.href = 'support/beforeunload-sticky-destination.html'; +}, 3000); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-popup.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-popup.html new file mode 100644 index 0000000..23bf8a4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-popup.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Beforeunload must be gated behind sticky activation: auxiliary browsing context</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<p>If you happen to be running this test as a human, then be sure not to interact with any part of the page; that would invalidate the results! + +<script> +setup({ single_test: true }); + +const w = window.open('support/beforeunload-sticky-start.html'); + +window.onmessage = e => { + assert_equals(e.data, 'navigated successfully'); + + const desiredURL = (new URL('support/beforeunload-sticky-destination.html', location.href)).href; + assert_equals(w.location.href, desiredURL); + + w.close(); + + done(); +}; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-destination.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-destination.html new file mode 100644 index 0000000..2edcf1a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-destination.html
@@ -0,0 +1,13 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Beforeunload must be gated behind sticky activation: destination page</title> + +<p>If you reached this page without clicking through a confirmation dialog, then the test has passed! + +<script> +if (window.opener) { + window.opener.postMessage('navigated successfully'); +} else if (window.parent) { + window.parent.postMessage('navigated successfully'); +} +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-start.html b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-start.html new file mode 100644 index 0000000..37109fe --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/support/beforeunload-sticky-start.html
@@ -0,0 +1,10 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Beforeunload must be gated behind sticky activation: start page</title> + +<p>This page will immediately navigate. If a beforeunload dialog pops up, the test fails.</p> + +<script> +window.onbeforeunload = e => e.preventDefault(); +location.href = 'beforeunload-sticky-destination.html'; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html index a906b19..79f949f 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html +++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https.html
@@ -195,7 +195,6 @@ HashChangeEvent: [], PageTransitionEvent: [], BeforeUnloadEvent: [], - ApplicationCache: ['window.applicationCache'], WindowModal: [], DOMParser: ['new DOMParser()'], Navigator: ['window.navigator'],
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" index 3806cc9e1..1e7a0ac 100644 --- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" +++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 1467 tests; 1385 PASS, 82 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 1417 tests; 1385 PASS, 32 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -939,56 +939,6 @@ PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's "constructor" property PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's @@unscopables property PASS BeforeUnloadEvent interface: attribute returnValue -FAIL ApplicationCache interface: existence and properties of interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface object length assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface object name assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: existence and properties of interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant UNCACHED on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant UNCACHED on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant IDLE on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant IDLE on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant CHECKING on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant CHECKING on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant DOWNLOADING on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant DOWNLOADING on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant UPDATEREADY on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant UPDATEREADY on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant OBSOLETE on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: constant OBSOLETE on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute status assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: operation update() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: operation abort() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: operation swapCache() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onchecking assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onerror assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onnoupdate assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute ondownloading assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onprogress assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onupdateready assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute oncached assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache interface: attribute onobsolete assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing -FAIL ApplicationCache must be primary interface of window.applicationCache assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL Stringification of window.applicationCache assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" -FAIL ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" PASS ErrorEvent interface: existence and properties of interface object PASS ErrorEvent interface object length PASS ErrorEvent interface object name
diff --git "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" index d4fb556..c63c38a0 100644 --- "a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" +++ "b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 965 tests; 954 PASS, 11 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 963 tests; 954 PASS, 9 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -205,7 +205,6 @@ PASS Window interface: attribute frameElement PASS Window interface: operation open(optional USVString, optional DOMString, optional DOMString) PASS Window interface: attribute navigator -FAIL Window interface: attribute applicationCache assert_own_property: The global object must have a property "applicationCache" expected property "applicationCache" missing PASS Window interface: attribute originIsolated PASS Window interface: operation alert() PASS Window interface: operation alert(DOMString) @@ -351,7 +350,6 @@ PASS Window interface: window must inherit property "open(optional USVString, optional DOMString, optional DOMString)" with the proper type PASS Window interface: calling open(optional USVString, optional DOMString, optional DOMString) on window with too few arguments must throw TypeError PASS Window interface: window must inherit property "navigator" with the proper type -FAIL Window interface: window must inherit property "applicationCache" with the proper type assert_own_property: expected property "applicationCache" missing PASS Window interface: window must inherit property "originIsolated" with the proper type PASS Window interface: window must inherit property "alert()" with the proper type PASS Window interface: window must inherit property "alert(DOMString)" with the proper type
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt index 7bcd13ef..323d874f 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/dom/idlharness.worker-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 804 tests; 796 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 803 tests; 795 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS idl_test setup PASS idl_test validation PASS Partial interface Document: original interface defined @@ -418,7 +418,6 @@ PASS HashChangeEvent interface: existence and properties of interface object PASS PageTransitionEvent interface: existence and properties of interface object PASS BeforeUnloadEvent interface: existence and properties of interface object -PASS ApplicationCache interface: existence and properties of interface object PASS ErrorEvent interface: existence and properties of interface object PASS ErrorEvent interface object length PASS ErrorEvent interface object name
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html index d3de7699..b49468e 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/newline-normalization.html
@@ -22,6 +22,22 @@ return form; } + function createFormWithFile(testCase, name, filename) { + const form = document.createElement("form"); + const input = document.createElement("input"); + input.type = "file"; + input.name = name; + const dataTransfer = new DataTransfer(); + dataTransfer.items.add(new File([], filename, { type: "text/plain" })); + input.files = dataTransfer.files; + form.appendChild(input); + document.body.appendChild(form); + testCase.add_cleanup(() => { + document.body.removeChild(form); + }); + return form; + } + test((testCase) => { const formData = new FormData(createForm(testCase, "a", "b\nc")); assert_equals(formData.get("a"), "b\r\nc"); @@ -61,6 +77,34 @@ const formData = new FormData(createForm(testCase, "a\n\rb", "c")); assert_equals([...formData][0][0], "a\r\n\r\nb"); }, document.title + ": \\n\\r in the name becomes \\r\\n\\r\\n"); + + test((testCase) => { + const formData = new FormData( + createFormWithFile(testCase, "a", "b\nc") + ); + assert_equals(formData.get("a").name, "b\nc"); + }, document.title + ": \\n in the filename stays unchanged"); + + test((testCase) => { + const formData = new FormData( + createFormWithFile(testCase, "a", "b\rc") + ); + assert_equals(formData.get("a").name, "b\rc"); + }, document.title + ": \\r in the filename stays unchanged"); + + test((testCase) => { + const formData = new FormData( + createFormWithFile(testCase, "a", "b\r\nc") + ); + assert_equals(formData.get("a").name, "b\r\nc"); + }, document.title + ": \\r\\n in the filename stays unchanged"); + + test((testCase) => { + const formData = new FormData( + createFormWithFile(testCase, "a", "b\n\rc") + ); + assert_equals(formData.get("a").name, "b\n\rc"); + }, document.title + ": \\n\\r in the filename stays unchanged"); </script> </body> </html>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/select-event.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/select-event.html index 2fb018f..af49024a 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/select-event.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/select-event.html
@@ -43,7 +43,7 @@ }, { label: "setRangeText()", - action: el => el.setRangeText("newmiddle") + action: el => el.setRangeText("newmiddle", el.selectionStart, el.selectionEnd, "select") } ]; @@ -79,6 +79,19 @@ }, 200); }); }, `${elLabel}: ${action.label} a second time (must not fire select)`); + + promise_test(async t => { + const element = el.cloneNode(true); + + element.onselect = e => { + element.onselect = null; + }; + + action.action(element); + + // step_wait properly timeouts before the whole test collapses + await t.step_wait(() => !element.onselect, "event didn't fire", 200, 10); + }, `${elLabel}: ${action.label} disconnected node`); }); }); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/selection.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/selection.html index b5cea05..e216d95 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/selection.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/textfieldselection/selection.html
@@ -95,12 +95,9 @@ // to the character that immediately follows the text entry cursor. assert_equals(el.selectionStart, el.value.length, "SelectionStart offset without selection in " + el.id); - if (!el.parentNode) { - return; - } el.select(); assert_equals(el.selectionStart, 0, "SelectionStart offset"); - el.parentNode.removeChild(el); + el.remove(); }, "test SelectionStart offset for input that is " + (append ? "appended" : " not appended")); } @@ -112,12 +109,9 @@ // to the character that immediately follows the text entry cursor. assert_equals(el.selectionStart, el.value.length, "SelectionStart offset without selection in " + el.id); - if (!el.parentNode) { - return; - } el.select(); assert_equals(el.selectionStart, 0, "SelectionStart offset"); - el.parentNode.removeChild(el); + el.remove(); }, "test SelectionStart offset for textarea that is " + (append ? "appended" : " not appended")); } @@ -129,12 +123,9 @@ // to the character that immediately follows the text entry cursor. assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset without selection in " + el.id); - if (!el.parentNode) { - return; - } el.select(); assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset"); - el.parentNode.removeChild(el); + el.remove(); }, "test SelectionEnd offset for input that is " + (append ? "appended" : " not appended")); } @@ -147,12 +138,9 @@ // to the character that immediately follows the text entry cursor. assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset without selection in " + el.id); - if (!el.parentNode) { - return; - } el.select(); assert_equals(el.selectionEnd, el.value.length, "SelectionEnd offset"); - el.parentNode.removeChild(el); + el.remove(); }, "test SelectionEnd offset for textarea that is " + (append ? "appended" : " not appended")); }
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/dom.idl b/third_party/blink/web_tests/external/wpt/interfaces/dom.idl index d404be2a..9d371fb 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/dom.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/dom.idl
@@ -79,6 +79,7 @@ dictionary AddEventListenerOptions : EventListenerOptions { boolean passive = false; boolean once = false; + AbortSignal signal; }; [Exposed=(Window,Worker)]
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl index bf8da373..7a90025 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -1701,7 +1701,6 @@ // the user agent readonly attribute Navigator navigator; - [SecureContext] readonly attribute ApplicationCache applicationCache; readonly attribute boolean originIsolated; // user prompts @@ -1801,39 +1800,6 @@ attribute DOMString returnValue; }; -[SecureContext, - Exposed=Window] -interface ApplicationCache : EventTarget { - - // update status - const unsigned short UNCACHED = 0; - const unsigned short IDLE = 1; - const unsigned short CHECKING = 2; - const unsigned short DOWNLOADING = 3; - const unsigned short UPDATEREADY = 4; - const unsigned short OBSOLETE = 5; - readonly attribute unsigned short status; - - // updates - undefined update(); - undefined abort(); - undefined swapCache(); - - // events - attribute EventHandler onchecking; - attribute EventHandler onerror; - attribute EventHandler onnoupdate; - attribute EventHandler ondownloading; - attribute EventHandler onprogress; - attribute EventHandler onupdateready; - attribute EventHandler oncached; - attribute EventHandler onobsolete; -}; - -interface mixin NavigatorOnLine { - readonly attribute boolean onLine; -}; - [Exposed=(Window,Worker)] interface ErrorEvent : Event { constructor(DOMString type, optional ErrorEventInit eventInitDict = {}); @@ -2048,6 +2014,10 @@ readonly attribute FrozenArray<DOMString> languages; }; +interface mixin NavigatorOnLine { + readonly attribute boolean onLine; +}; + interface mixin NavigatorContentUtils { [SecureContext] undefined registerProtocolHandler(DOMString scheme, USVString url); [SecureContext] undefined unregisterProtocolHandler(DOMString scheme, USVString url);
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/media-source.idl b/third_party/blink/web_tests/external/wpt/interfaces/media-source.idl index 51eccd9..f32df3aae 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/media-source.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/media-source.idl
@@ -25,10 +25,10 @@ attribute EventHandler onsourceended; attribute EventHandler onsourceclose; SourceBuffer addSourceBuffer (DOMString type); - void removeSourceBuffer (SourceBuffer sourceBuffer); - void endOfStream (optional EndOfStreamError error); - void setLiveSeekableRange (double start, double end); - void clearLiveSeekableRange (); + undefined removeSourceBuffer (SourceBuffer sourceBuffer); + undefined endOfStream (optional EndOfStreamError error); + undefined setLiveSeekableRange (double start, double end); + undefined clearLiveSeekableRange (); static boolean isTypeSupported (DOMString type); }; @@ -53,9 +53,9 @@ attribute EventHandler onupdateend; attribute EventHandler onerror; attribute EventHandler onabort; - void appendBuffer (BufferSource data); - void abort (); - void remove (double start, unrestricted double end); + undefined appendBuffer (BufferSource data); + undefined abort (); + undefined remove (double start, unrestricted double end); }; [Exposed=Window]
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/mediastream-recording.idl b/third_party/blink/web_tests/external/wpt/interfaces/mediastream-recording.idl index c534795..2878af4 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/mediastream-recording.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/mediastream-recording.idl
@@ -3,9 +3,9 @@ // (https://github.com/w3c/webref) // Source: MediaStream Recording (https://w3c.github.io/mediacapture-record/) -[Exposed=Window, - Constructor(MediaStream stream, optional MediaRecorderOptions options = {})] +[Exposed=Window] interface MediaRecorder : EventTarget { + constructor(MediaStream stream, optional MediaRecorderOptions options = {}); readonly attribute MediaStream stream; readonly attribute DOMString mimeType; readonly attribute RecordingState state; @@ -19,11 +19,11 @@ readonly attribute unsigned long audioBitsPerSecond; readonly attribute BitrateMode audioBitrateMode; - void start(optional unsigned long timeslice); - void stop(); - void pause(); - void resume(); - void requestData(); + undefined start(optional unsigned long timeslice); + undefined stop(); + undefined pause(); + undefined resume(); + undefined requestData(); static boolean isTypeSupported(DOMString type); }; @@ -47,8 +47,9 @@ "paused" }; -[Exposed=Window, Constructor(DOMString type, BlobEventInit eventInitDict)] +[Exposed=Window] interface BlobEvent : Event { + constructor(DOMString type, BlobEventInit eventInitDict); [SameObject] readonly attribute Blob data; readonly attribute DOMHighResTimeStamp timecode; }; @@ -62,7 +63,8 @@ required DOMException error; }; -[Exposed=Window, Constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict)] +[Exposed=Window] interface MediaRecorderErrorEvent : Event { + constructor(DOMString type, MediaRecorderErrorEventInit eventInitDict); [SameObject] readonly attribute DOMException error; };
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/performance-measure-memory.idl b/third_party/blink/web_tests/external/wpt/interfaces/performance-measure-memory.idl new file mode 100644 index 0000000..b1014f6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/interfaces/performance-measure-memory.idl
@@ -0,0 +1,30 @@ +// GENERATED CONTENT - DO NOT EDIT +// Content was automatically extracted by Reffy into webref +// (https://github.com/w3c/webref) +// Source: Measure Memory API (https://wicg.github.io/performance-measure-memory/) + +dictionary MemoryMeasurement { + unsigned long long bytes; + sequence<MemoryBreakdownEntry> breakdown; +}; + +dictionary MemoryBreakdownEntry { + unsigned long long bytes; + sequence<MemoryAttribution> attribution; + sequence<DOMString> userAgentSpecificTypes; +}; + +dictionary MemoryAttribution { + USVString url; + MemoryAttributionContainer container; + DOMString scope; +}; + +dictionary MemoryAttributionContainer { + DOMString id; + USVString src; +}; + +partial interface Performance { + [CrossOriginIsolated] Promise<MemoryMeasurement> measureMemory(); +};
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/serial.idl b/third_party/blink/web_tests/external/wpt/interfaces/serial.idl index b376bac1..7bca747 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/serial.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/serial.idl
@@ -23,7 +23,7 @@ [Exposed=(DedicatedWorker,Window), SecureContext] interface SerialPort { - Promise<void> open(optional SerialOptions options = {}); + Promise<undefined> open(optional SerialOptions options = {}); readonly attribute ReadableStream in; readonly attribute WritableStream out; SerialPortInfo getInfo();
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webaudio.idl b/third_party/blink/web_tests/external/wpt/interfaces/webaudio.idl index d869a978..c8ad2a8 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webaudio.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webaudio.idl
@@ -613,6 +613,11 @@ readonly attribute MessagePort port; }; +callback AudioWorkletProcessCallback = + boolean (FrozenArray<FrozenArray<Float32Array>> inputs, + FrozenArray<FrozenArray<Float32Array>> outputs, + object parameters); + dictionary AudioParamDescriptor { required DOMString name; float defaultValue = 0;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl b/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl index db644f03..cd34d3f 100644 --- a/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl +++ b/third_party/blink/web_tests/external/wpt/interfaces/webrtc.idl
@@ -119,7 +119,7 @@ Promise<undefined> createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional RTCOfferOptions options = {}); - Promise<undefined> setLocalDescription(optional RTCLocalSessionDescriptionInit description = {}, + Promise<undefined> setLocalDescription(RTCLocalSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback); Promise<undefined> createAnswer(RTCSessionDescriptionCallback successCallback, @@ -373,7 +373,6 @@ }; dictionary RTCRtpSynchronizationSource : RTCRtpContributingSource { - boolean voiceActivityFlag; }; [Exposed=Window]
diff --git a/third_party/blink/web_tests/external/wpt/measure-memory/idlharness.tentative.any.js b/third_party/blink/web_tests/external/wpt/measure-memory/idlharness.tentative.any.js new file mode 100644 index 0000000..3e7589a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/measure-memory/idlharness.tentative.any.js
@@ -0,0 +1,15 @@ +// META: global=window,worker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +// https://wicg.github.io/performance-measure-memory/ + +idl_test( + ['performance-measure-memory'], + ['hr-time', 'dom'], + async idl_array => { + // Nothing to add. + } +);
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html b/third_party/blink/web_tests/external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html new file mode 100644 index 0000000..c2b3e2b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/mediacapture-image/MediaStreamTrack-clone.https.html
@@ -0,0 +1,362 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/mediacapture-image/resources/imagecapture-helpers.js"></script> +<script> + +// This test verifies that we can set some nondefault constraints, then clone a +// MediaStreamTrack and check that the cloned constraints are the same as the +// original, with a mock Mojo service implementation. +image_capture_test(async (t, imageCaptureTest) => { + await test_driver.set_permission({name: 'camera', panTiltZoom: true}, + 'granted', false); + + const constraints = { advanced : [{ whiteBalanceMode : 'single-shot', + exposureMode : 'manual', + focusMode : 'single-shot', + + pointsOfInterest : [{x : 0.1, y : 0.2}, + {x : 0.3, y : 0.4}], + + exposureCompensation : 133.77, + exposureTime : 10000, + colorTemperature : 6000, + iso : 120.0, + + brightness : 3, + contrast : 4, + saturation : 5, + sharpness : 6, + focusDistance : 7, + + pan : 8, + tilt : 9, + zoom : 3.141592, + + torch : true + }]}; + + let stream = await navigator.mediaDevices.getUserMedia({video: true}); + let originalVideoTrack = stream.getVideoTracks()[0]; + + await originalVideoTrack.applyConstraints(constraints); + + let appliedConstraints = originalVideoTrack.getConstraints(); + + let clonedVideoTrack = originalVideoTrack.clone(); + let appliedClonedConstraints = clonedVideoTrack.getConstraints(); + assert_true('advanced' in appliedClonedConstraints); + assert_equals(appliedClonedConstraints.advanced.length, 1); + const appliedClonedAdvancedConstraints = appliedClonedConstraints.advanced[0]; + + // Check that |appliedClonedAdvancedConstraints| and |appliedAdvancedConstraints| are equal. + const appliedAdvancedConstraints = appliedConstraints.advanced[0]; + assert_equals(appliedAdvancedConstraints.length, appliedClonedAdvancedConstraints.length); + Object.keys(appliedClonedAdvancedConstraints).forEach((key, value) => { + assert_not_equals(appliedAdvancedConstraints[key], undefined, 'key ' + key); + if (key != 'pointsOfInterest') { + assert_equals(appliedAdvancedConstraints[key], appliedClonedAdvancedConstraints[key], key); + } else { + assert_point2d_array_approx_equals(appliedAdvancedConstraints[key], + appliedClonedAdvancedConstraints[key], 0.01); + } + }); + + assert_equals(appliedAdvancedConstraints.whiteBalanceMode, + appliedClonedAdvancedConstraints.whiteBalanceMode, + 'whiteBalanceMode'); + assert_equals(appliedAdvancedConstraints.exposureMode, + appliedClonedAdvancedConstraints.exposureMode, + 'exposureMode'); + assert_equals(appliedAdvancedConstraints.focusMode, + appliedClonedAdvancedConstraints.focusMode, + 'focusMode'); + + assert_point2d_array_approx_equals( + appliedAdvancedConstraints.pointsOfInterest, + appliedClonedAdvancedConstraints.pointsOfInterest, + 0.01); + + assert_equals(appliedAdvancedConstraints.exposureCompensation, + appliedClonedAdvancedConstraints.exposureCompensation, + 'exposureCompensation'); + assert_equals(appliedAdvancedConstraints.exposureTime, + appliedClonedAdvancedConstraints.exposureTime, + 'exposureTime'); + assert_equals(appliedAdvancedConstraints.colorTemperature, + appliedClonedAdvancedConstraints.colorTemperature, + 'colorTemperature'); + assert_equals(appliedAdvancedConstraints.iso, + appliedClonedAdvancedConstraints.iso, + 'iso'); + assert_equals(appliedAdvancedConstraints.brightness, + appliedClonedAdvancedConstraints.brightness, + 'brightness'); + assert_equals(appliedAdvancedConstraints.contrast, + appliedClonedAdvancedConstraints.contrast, + 'constrast'); + assert_equals(appliedAdvancedConstraints.saturation, + appliedClonedAdvancedConstraints.saturation, + 'saturation'); + assert_equals(appliedAdvancedConstraints.sharpness, + appliedClonedAdvancedConstraints.sharpness, + 'sharpness'); + assert_equals(appliedAdvancedConstraints.focusDistance, + appliedClonedAdvancedConstraints.focusDistance, + 'focusDistance'); + + assert_equals(appliedAdvancedConstraints.pan, + appliedClonedAdvancedConstraints.pan, + 'pan'); + assert_equals(appliedAdvancedConstraints.tilt, + appliedClonedAdvancedConstraints.tilt, + 'tilt'); + assert_equals(appliedAdvancedConstraints.zoom, + appliedClonedAdvancedConstraints.zoom, + 'zoom'); + + assert_equals(appliedAdvancedConstraints.torch, + appliedClonedAdvancedConstraints.torch, + 'torch'); +}, 'checks MediaStreamTrack.clone() gets same applied constraints'); + +// This test verifies that MediaStreamTrack ImageCapture settings are copied +// when cloning a MediaStreamTrack. +image_capture_test(async (t, imageCaptureTest) => { + await test_driver.set_permission({name: 'camera', panTiltZoom: true}, + 'granted', false); + + let stream = await navigator.mediaDevices.getUserMedia({video: true}); + let originalVideoTrack = stream.getVideoTracks()[0]; + let clonedVideoTrack = originalVideoTrack.clone(); + + let settings = originalVideoTrack.getSettings(); + let clonedSettings = clonedVideoTrack.getSettings(); + + assert_equals(settings.whiteBalanceMode, + clonedSettings.whiteBalanceMode, + 'whiteBalanceMode'); + assert_equals(settings.exposureMode, + clonedSettings.exposureMode, + 'exposureMode;'); + assert_equals(settings.focusMode, + clonedSettings.focusMode, + 'focusMode'); + + assert_point2d_array_approx_equals( + settings.pointsOfInterest, + clonedSettings.pointsOfInterest, + 0.01); + + assert_equals(settings.exposureCompensation, + clonedSettings.exposureCompensation, + 'exposureCompensation'); + assert_equals(settings.exposureTime, + clonedSettings.exposureTime, + 'exposureTime'); + assert_equals(settings.colorTemperature, + clonedSettings.colorTemperature, + 'colorTemperature'); + assert_equals(settings.iso, + clonedSettings.iso, + 'iso'); + + assert_equals(settings.brightness, + clonedSettings.brightness, + 'brightness'); + assert_equals(settings.contrast, + clonedSettings.contrast, + 'contrast'); + assert_equals(settings.saturation, + clonedSettings.saturation, + 'saturation'); + assert_equals(settings.sharpness, + clonedSettings.sharpness, + 'sharpness'); + + assert_equals(settings.focusDistance, + clonedSettings.focusDistance, + 'focusDistance'); + + assert_equals(settings.pan, + clonedSettings.pan, + 'pan'); + assert_equals(settings.tilt, + clonedSettings.tilt, + 'tilt'); + assert_equals(settings.zoom, + clonedSettings.zoom, + 'zoom'); + + assert_equals(settings.torch, + clonedSettings.torch, + 'torch'); +}, 'checks MediaStreamTrack.clone() gets same settings'); + +// This test verifies that MediaStreamTrack ImageCapture capabilities are copied +// when cloning a MediaStreamTrack. +image_capture_test(async (t, imageCaptureTest) => { + await test_driver.set_permission({name: 'camera', panTiltZoom: true}, + 'granted', false); + + let stream = await navigator.mediaDevices.getUserMedia({video: true}); + let originalVideoTrack = stream.getVideoTracks()[0]; + let clonedVideoTrack = originalVideoTrack.clone(); + + let capabilities = originalVideoTrack.getCapabilities(); + let clonedCapabilities = clonedVideoTrack.getCapabilities(); + + assert_equals(capabilities.whiteBalanceMode.length, + clonedCapabilities.whiteBalanceMode.length, + 'whiteBalanceMode length'); + for (i = 0; i < capabilities.whiteBalanceMode.length; ++i) { + assert_equals(capabilities.whiteBalanceMode[i], + clonedCapabilities.whiteBalanceMode[i], + 'whiteBalanceMode'); + } + + assert_equals(capabilities.exposureMode.length, + clonedCapabilities.exposureMode.length, + 'exposureMode length'); + for (i = 0; i < capabilities.exposureMode.length; ++i) { + assert_equals(capabilities.exposureMode[i], + clonedCapabilities.exposureMode[i], + 'exposureMode'); + } + + assert_equals(capabilities.focusMode.length, + clonedCapabilities.focusMode.length, + 'focusMode length'); + for (i = 0; i < capabilities.focusMode.length; ++i) { + assert_equals(capabilities.focusMode[i], + clonedCapabilities.focusMode[i], + 'focusMode'); + } + + assert_equals(capabilities.exposureCompensation.max, + clonedCapabilities.exposureCompensation.max, + 'exposureCompensation max'); + assert_equals(capabilities.exposureCompensation.min, + clonedCapabilities.exposureCompensation.min, + 'exposureCompensation min'); + assert_equals(capabilities.exposureCompensation.step, + clonedCapabilities.exposureCompensation.step, + 'exposureCompensation step'); + + assert_equals(capabilities.exposureTime.max, + clonedCapabilities.exposureTime.max, + 'exposureTime max'); + assert_equals(capabilities.exposureTime.min, + clonedCapabilities.exposureTime.min, + 'exposureTime min'); + assert_equals(capabilities.exposureTime.step, + clonedCapabilities.exposureTime.step, + 'exposureTime step'); + + assert_equals(capabilities.colorTemperature.max, + clonedCapabilities.colorTemperature.max, + 'colorTemperature max'); + assert_equals(capabilities.colorTemperature.min, + clonedCapabilities.colorTemperature.min, + 'colorTemperature min'); + assert_equals(capabilities.colorTemperature.step, + clonedCapabilities.colorTemperature.step, + 'colorTemperature step'); + + assert_equals(capabilities.iso.max, + clonedCapabilities.iso.max, + 'iso max'); + assert_equals(capabilities.iso.min, + clonedCapabilities.iso.min, + 'iso min'); + assert_equals(capabilities.iso.step, + clonedCapabilities.iso.step, + 'iso step'); + + assert_equals(capabilities.brightness.max, + clonedCapabilities.brightness.max, + 'brightness max'); + assert_equals(capabilities.brightness.min, + clonedCapabilities.brightness.min, + 'brightness min'); + assert_equals(capabilities.brightness.step, + clonedCapabilities.brightness.step, + 'brightness step'); + + assert_equals(capabilities.contrast.max, + clonedCapabilities.contrast.max, + 'contrast max'); + assert_equals(capabilities.contrast.min, + clonedCapabilities.contrast.min, + 'contrast min'); + assert_equals(capabilities.contrast.step, + clonedCapabilities.contrast.step, + 'contrast step'); + + assert_equals(capabilities.saturation.max, + clonedCapabilities.saturation.max, + 'saturation max'); + assert_equals(capabilities.saturation.min, + clonedCapabilities.saturation.min, + 'saturation min'); + assert_equals(capabilities.saturation.step, + clonedCapabilities.saturation.step, + 'saturation step'); + + assert_equals(capabilities.sharpness.max, + clonedCapabilities.sharpness.max, + 'sharpness max'); + assert_equals(capabilities.sharpness.min, + clonedCapabilities.sharpness.min, + 'sharpness min'); + assert_equals(capabilities.sharpness.step, + clonedCapabilities.sharpness.step, + 'sharpness step'); + + assert_equals(capabilities.focusDistance.max, + clonedCapabilities.focusDistance.max, + 'focusDistance max'); + assert_equals(capabilities.focusDistance.min, + clonedCapabilities.focusDistance.min, + 'focusDistance min'); + assert_equals(capabilities.focusDistance.step, + clonedCapabilities.focusDistance.step, + 'focusDistance step'); + + assert_equals(capabilities.pan.max, + clonedCapabilities.pan.max, + 'pan max'); + assert_equals(capabilities.pan.min, + clonedCapabilities.pan.min, + 'pan min'); + assert_equals(capabilities.pan.step, + clonedCapabilities.pan.step, + 'pan step'); + + assert_equals(capabilities.tilt.max, + clonedCapabilities.tilt.max, + 'tilt max'); + assert_equals(capabilities.tilt.min, + clonedCapabilities.tilt.min, + 'tilt min'); + assert_equals(capabilities.tilt.step, + clonedCapabilities.tilt.step, + 'tilt step'); + + assert_equals(capabilities.zoom.max, + clonedCapabilities.zoom.max, + 'zoom max'); + assert_equals(capabilities.zoom.min, + clonedCapabilities.zoom.min, + 'zoom min'); + assert_equals(capabilities.zoom.step, + clonedCapabilities.zoom.step, + 'zoom step'); + + assert_equals(capabilities.torch, + clonedCapabilities.torch, + 'torch'); +}, 'checks MediaStreamTrack.clone() gets same capabilities'); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/PKG-INFO b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/PKG-INFO index 98927c4..623171e 100644 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/PKG-INFO +++ b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/PKG-INFO
@@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: enum34 -Version: 1.1.6 +Version: 1.1.10 Summary: Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4 Home-page: https://bitbucket.org/stoneleaf/enum34 Author: Ethan Furman @@ -57,6 +57,4 @@ Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 Provides: enum
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/__init__.py b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/__init__.py index d6ffb3a..51f3cf2 100644 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/__init__.py +++ b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/__init__.py
@@ -4,7 +4,7 @@ __all__ = ['Enum', 'IntEnum', 'unique'] -version = 1, 1, 6 +version = 1, 1, 10 pyver = float('%s.%s' % _sys.version_info[:2]) @@ -183,7 +183,8 @@ else: del classdict['_order_'] if pyver < 3.0: - _order_ = _order_.replace(',', ' ').split() + if isinstance(_order_, basestring): + _order_ = _order_.replace(',', ' ').split() aliases = [name for name in members if name not in _order_] _order_ += aliases @@ -463,7 +464,7 @@ _order_.append(member_name) # only set _order_ in classdict if name/value was not from a mapping if not isinstance(item, basestring): - classdict['_order_'] = ' '.join(_order_) + classdict['_order_'] = _order_ enum_class = metacls.__new__(metacls, class_name, bases, classdict) # TODO: replace the frame hack if a blessed way to know the calling
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/doc/enum.pdf b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/doc/enum.pdf deleted file mode 100644 index 8c1383a..0000000 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/doc/enum.pdf +++ /dev/null
@@ -1,2237 +0,0 @@ -%PDF-1.4 -% ReportLab Generated PDF document http://www.reportlab.com -1 0 obj -<< /F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 8 0 R /F6 15 0 R >> -endobj -2 0 obj -<< /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> -endobj -3 0 obj -<< /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font >> -endobj -4 0 obj -<< /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> -endobj -5 0 obj -<< /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> -endobj -6 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /XYZ 62.69291 639.3236 0 ] /Rect [ 335.1805 574.4272 405.2473 586.4272 ] /Subtype /Link /Type /Annot >> -endobj -7 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /XYZ 62.69291 639.3236 0 ] /Rect [ 255.9742 427.4272 321.5378 439.4272 ] /Subtype /Link /Type /Annot >> -endobj -8 0 obj -<< /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> -endobj -9 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /XYZ 62.69291 278.1236 0 ] /Rect [ 82.69291 182.2272 201.0729 194.2272 ] /Subtype /Link /Type /Annot >> -endobj -10 0 obj -<< /Annots [ 6 0 R 7 0 R 9 0 R ] /Contents 56 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> -endobj -11 0 obj -<< /Contents 57 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -12 0 obj -<< /Contents 58 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -13 0 obj -<< /Contents 59 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -14 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /XYZ 62.69291 157.2236 0 ] /Rect [ 101.6029 741.7736 141.6229 753.7736 ] /Subtype /Link /Type /Annot >> -endobj -15 0 obj -<< /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> -endobj -16 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /XYZ 62.69291 359.6236 0 ] /Rect [ 327.1529 585.5736 392.7329 597.5736 ] /Subtype /Link /Type /Annot >> -endobj -17 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /XYZ 62.69291 639.3236 0 ] /Rect [ 181.1917 312.1736 246.4634 324.1736 ] /Subtype /Link /Type /Annot >> -endobj -18 0 obj -<< /Annots [ 14 0 R 16 0 R 17 0 R ] /Contents 60 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> -endobj -19 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /XYZ 62.69291 610.8236 0 ] /Rect [ 326.1329 511.3736 357.2629 523.3736 ] /Subtype /Link /Type /Annot >> -endobj -20 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /XYZ 62.69291 359.6236 0 ] /Rect [ 241.1229 185.9736 306.7029 197.9736 ] /Subtype /Link /Type /Annot >> -endobj -21 0 obj -<< /Annots [ 19 0 R 20 0 R ] /Contents 61 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> -endobj -22 0 obj -<< /Contents 62 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -23 0 obj -<< /Contents 63 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -24 0 obj -<< /Contents 64 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -25 0 obj -<< /Contents 65 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -26 0 obj -<< /Contents 66 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> -endobj -27 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /XYZ 62.69291 610.8236 0 ] /Rect [ 309.4094 299.5736 340.6461 311.5736 ] /Subtype /Link /Type /Annot >> -endobj -28 0 obj -<< /Annots [ 27 0 R ] /Contents 67 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 55 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> -endobj -29 0 obj -<< /Outlines 31 0 R /PageLabels 68 0 R /PageMode /UseNone /Pages 55 0 R /Type /Catalog >> -endobj -30 0 obj -<< /Author () /CreationDate (D:20160515202831+08'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) - /Title (enum --- support for enumerations) >> -endobj -31 0 obj -<< /Count 27 /First 32 0 R /Last 51 0 R /Type /Outlines >> -endobj -32 0 obj -<< /Dest [ 10 0 R /XYZ 62.69291 660.6772 0 ] /Next 33 0 R /Parent 31 0 R /Title (Module Contents) >> -endobj -33 0 obj -<< /Dest [ 10 0 R /XYZ 62.69291 477.6772 0 ] /Next 34 0 R /Parent 31 0 R /Prev 32 0 R /Title (Creating an Enum) >> -endobj -34 0 obj -<< /Dest [ 11 0 R /XYZ 62.69291 197.0236 0 ] /Next 35 0 R /Parent 31 0 R /Prev 33 0 R /Title (Programmatic access to enumeration members and their attributes) >> -endobj -35 0 obj -<< /Dest [ 12 0 R /XYZ 62.69291 501.4236 0 ] /Next 36 0 R /Parent 31 0 R /Prev 34 0 R /Title (Duplicating enum members and values) >> -endobj -36 0 obj -<< /Dest [ 13 0 R /XYZ 62.69291 215.0236 0 ] /Next 37 0 R /Parent 31 0 R /Prev 35 0 R /Title (Comparisons) >> -endobj -37 0 obj -<< /Dest [ 18 0 R /XYZ 62.69291 362.4236 0 ] /Next 38 0 R /Parent 31 0 R /Prev 36 0 R /Title (Allowed members and attributes of enumerations) >> -endobj -38 0 obj -<< /Dest [ 21 0 R /XYZ 62.69291 498.6236 0 ] /Next 39 0 R /Parent 31 0 R /Prev 37 0 R /Title (Restricted subclassing of enumerations) >> -endobj -39 0 obj -<< /Dest [ 21 0 R /XYZ 62.69291 173.2236 0 ] /Next 40 0 R /Parent 31 0 R /Prev 38 0 R /Title (Pickling) >> -endobj -40 0 obj -<< /Dest [ 22 0 R /XYZ 62.69291 635.8236 0 ] /Next 41 0 R /Parent 31 0 R /Prev 39 0 R /Title (Functional API) >> -endobj -41 0 obj -<< /Count 2 /Dest [ 22 0 R /XYZ 62.69291 187.2236 0 ] /First 42 0 R /Last 43 0 R /Next 44 0 R /Parent 31 0 R - /Prev 40 0 R /Title (Derived Enumerations) >> -endobj -42 0 obj -<< /Dest [ 22 0 R /XYZ 62.69291 154.2236 0 ] /Next 43 0 R /Parent 41 0 R /Title (IntEnum) >> -endobj -43 0 obj -<< /Dest [ 23 0 R /XYZ 62.69291 217.4236 0 ] /Parent 41 0 R /Prev 42 0 R /Title (Others) >> -endobj -44 0 obj -<< /Count 1 /Dest [ 24 0 R /XYZ 62.69291 567.0236 0 ] /First 45 0 R /Last 45 0 R /Next 46 0 R /Parent 31 0 R - /Prev 41 0 R /Title (Decorators) >> -endobj -45 0 obj -<< /Dest [ 24 0 R /XYZ 62.69291 534.0236 0 ] /Parent 44 0 R /Title (unique) >> -endobj -46 0 obj -<< /Count 4 /Dest [ 24 0 R /XYZ 62.69291 356.8236 0 ] /First 47 0 R /Last 50 0 R /Next 51 0 R /Parent 31 0 R - /Prev 44 0 R /Title (Interesting examples) >> -endobj -47 0 obj -<< /Dest [ 24 0 R /XYZ 62.69291 281.8236 0 ] /Next 48 0 R /Parent 46 0 R /Title (AutoNumber) >> -endobj -48 0 obj -<< /Dest [ 25 0 R /XYZ 62.69291 641.8236 0 ] /Next 49 0 R /Parent 46 0 R /Prev 47 0 R /Title (UniqueEnum) >> -endobj -49 0 obj -<< /Dest [ 25 0 R /XYZ 62.69291 356.6236 0 ] /Next 50 0 R /Parent 46 0 R /Prev 48 0 R /Title (OrderedEnum) >> -endobj -50 0 obj -<< /Dest [ 26 0 R /XYZ 62.69291 607.8236 0 ] /Parent 46 0 R /Prev 49 0 R /Title (Planet) >> -endobj -51 0 obj -<< /Count 3 /Dest [ 26 0 R /XYZ 62.69291 274.6236 0 ] /First 52 0 R /Last 54 0 R /Parent 31 0 R /Prev 46 0 R - /Title (How are Enums different?) >> -endobj -52 0 obj -<< /Dest [ 26 0 R /XYZ 62.69291 211.6236 0 ] /Next 53 0 R /Parent 51 0 R /Title (Enum Classes) >> -endobj -53 0 obj -<< /Dest [ 28 0 R /XYZ 62.69291 664.0236 0 ] /Next 54 0 R /Parent 51 0 R /Prev 52 0 R /Title (Enum Members \(aka instances\)) >> -endobj -54 0 obj -<< /Dest [ 28 0 R /XYZ 62.69291 592.0236 0 ] /Parent 51 0 R /Prev 53 0 R /Title (Finer Points) >> -endobj -55 0 obj -<< /Count 12 /Kids [ 10 0 R 11 0 R 12 0 R 13 0 R 18 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R - 26 0 R 28 0 R ] /Type /Pages >> -endobj -56 0 obj -<< /Length 6458 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 741.0236 cm -q -BT 1 0 0 1 0 4 Tm 73.71488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (enum ) Tj /F3 20 Tf 0 0 0 rg (--- support for enumerations) Tj T* -73.71488 0 Td ET -Q -Q -q -1 0 0 1 62.69291 702.6772 cm -n 0 14.17323 m 469.8898 14.17323 l S -Q -q -1 0 0 1 62.69291 672.6772 cm -q -BT 1 0 0 1 0 14 Tm 2.091318 Tw 12 TL /F1 10 Tf 0 0 0 rg (An enumeration is a set of symbolic names \(members\) bound to unique, constant values. Within an) Tj T* 0 Tw (enumeration, the members can be compared by identity, and the enumeration itself can be iterated over.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 639.6772 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Module Contents) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 609.6772 cm -q -BT 1 0 0 1 0 14 Tm 2.027485 Tw 12 TL /F1 10 Tf 0 0 0 rg (This module defines two enumeration classes that can be used to define unique sets of names and) Tj T* 0 Tw (values: ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (and ) Tj /F4 10 Tf 0 0 0 rg (IntEnum) Tj /F1 10 Tf 0 0 0 rg (. It also defines one decorator, ) Tj /F4 10 Tf 0 0 0 rg (unique) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 591.6772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (Enum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 561.6772 cm -q -BT 1 0 0 1 0 14 Tm 1.128443 Tw 12 TL /F1 10 Tf 0 0 0 rg (Base class for creating enumerated constants. See section ) Tj 0 0 .501961 rg (Functional API ) Tj 0 0 0 rg (for an alternate construction) Tj T* 0 Tw (syntax.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 543.6772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (IntEnum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 525.6772 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Base class for creating enumerated constants that are also subclasses of ) Tj /F4 10 Tf 0 0 0 rg (int) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 507.6772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (unique) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 489.6772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enum class decorator that ensures only one name is bound to any one value.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 456.6772 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Creating an Enum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 414.6772 cm -q -BT 1 0 0 1 0 26 Tm 2.432651 Tw 12 TL /F1 10 Tf 0 0 0 rg (Enumerations are created using the ) Tj /F4 10 Tf 0 0 0 rg (class ) Tj /F1 10 Tf 0 0 0 rg (syntax, which makes them easy to read and write. An) Tj T* 0 Tw .533555 Tw (alternative creation method is described in ) Tj 0 0 .501961 rg (Functional API) Tj 0 0 0 rg (. To define an enumeration, subclass ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (as) Tj T* 0 Tw (follows:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 333.4772 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( from enum import Enum) Tj T* (>) Tj (>) Tj (>) Tj ( class Color\(Enum\):) Tj T* (... red = 1) Tj T* (... green = 2) Tj T* (... blue = 3) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 313.4772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Note: Nomenclature) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 307.4772 cm -Q -q -1 0 0 1 62.69291 229.4772 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 72 cm -Q -q -1 0 0 1 20 72 cm -Q -q -1 0 0 1 20 60 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 -3 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The class ) Tj /F4 10 Tf 0 0 0 rg (Color ) Tj /F1 10 Tf 0 0 0 rg (is an ) Tj /F5 10 Tf (enumeration ) Tj /F1 10 Tf (\(or ) Tj /F5 10 Tf (enum) Tj /F1 10 Tf (\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 20 54 cm -Q -q -1 0 0 1 20 30 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm 5.568863 Tw 12 TL /F1 10 Tf 0 0 0 rg (The attributes ) Tj /F4 10 Tf 0 0 0 rg (Color.red) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (Color.green) Tj /F1 10 Tf 0 0 0 rg (, etc., are ) Tj /F5 10 Tf (enumeration members ) Tj /F1 10 Tf (\(or ) Tj /F5 10 Tf (enum) Tj T* 0 Tw (members) Tj /F1 10 Tf (\).) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 20 24 cm -Q -q -1 0 0 1 20 0 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm 1.471318 Tw 12 TL /F1 10 Tf 0 0 0 rg (The enum members have ) Tj /F5 10 Tf (names ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (values ) Tj /F1 10 Tf (\(the name of ) Tj /F4 10 Tf 0 0 0 rg (Color.red ) Tj /F1 10 Tf 0 0 0 rg (is ) Tj /F4 10 Tf 0 0 0 rg (red) Tj /F1 10 Tf 0 0 0 rg (, the value of) Tj T* 0 Tw /F4 10 Tf 0 0 0 rg (Color.blue ) Tj /F1 10 Tf 0 0 0 rg (is ) Tj /F4 10 Tf 0 0 0 rg (3) Tj /F1 10 Tf 0 0 0 rg (, etc.\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 20 0 cm -Q -q -Q -Q -q -1 0 0 1 62.69291 229.4772 cm -Q -q -1 0 0 1 62.69291 211.4772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Note:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 205.4772 cm -Q -q -1 0 0 1 62.69291 181.4772 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 14 Tm .126235 Tw 12 TL /F1 10 Tf 0 0 0 rg (Even though we use the ) Tj /F4 10 Tf 0 0 0 rg (class ) Tj /F1 10 Tf 0 0 0 rg (syntax to create Enums, Enums are not normal Python classes. See) Tj T* 0 Tw 0 0 .501961 rg (How are Enums different? ) Tj 0 0 0 rg (for more details.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 181.4772 cm -Q -q -1 0 0 1 62.69291 163.4772 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enumeration members have human readable string representations:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 118.2772 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( print\(Color.red\)) Tj T* (Color.red) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 98.27717 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (...while their ) Tj /F4 10 Tf 0 0 0 rg (repr ) Tj /F1 10 Tf 0 0 0 rg (has more information:) Tj T* ET -Q -Q - -endstream -endobj -57 0 obj -<< /Length 4174 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 727.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( print\(repr\(Color.red\)\)) Tj T* (<) Tj (Color.red: 1) Tj (>) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 707.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (type ) Tj /F1 10 Tf (of an enumeration member is the enumeration it belongs to:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 626.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( type\(Color.red\)) Tj T* (<) Tj (enum 'Color') Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( isinstance\(Color.green, Color\)) Tj T* (True) Tj T* (>) Tj (>) Tj (>) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 606.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enum members also have a property that contains just their item name:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 561.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( print\(Color.red.name\)) Tj T* (red) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 529.4236 cm -q -BT 1 0 0 1 0 14 Tm .464985 Tw 12 TL /F1 10 Tf 0 0 0 rg (Enumerations support iteration. In Python 3.x definition order is used; in Python 2.x the definition order is) Tj T* 0 Tw (not available, but class attribute ) Tj /F4 10 Tf 0 0 0 rg (__order__ ) Tj /F1 10 Tf 0 0 0 rg (is supported; otherwise, value order is used:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 340.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 180 re B* -Q -q -BT 1 0 0 1 0 158 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Shake\(Enum\):) Tj T* (... __order__ = 'vanilla chocolate cookies mint' # only needed in 2.x) Tj T* (... vanilla = 7) Tj T* (... chocolate = 4) Tj T* (... cookies = 9) Tj T* (... mint = 3) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( for shake in Shake:) Tj T* (... print\(shake\)) Tj T* (...) Tj T* (Shake.vanilla) Tj T* (Shake.chocolate) Tj T* (Shake.cookies) Tj T* (Shake.mint) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 308.2236 cm -q -BT 1 0 0 1 0 14 Tm 1.893735 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf 0 0 0 rg (__order__ ) Tj /F1 10 Tf 0 0 0 rg (attribute is always removed, and in 3.x it is also ignored \(order is definition order\);) Tj T* 0 Tw (however, in the stdlib version it will be ignored but not removed.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 290.2236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enumeration members are hashable, so they can be used in dictionaries and sets:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 209.0236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( apples = {}) Tj T* (>) Tj (>) Tj (>) Tj ( apples[Color.red] = 'red delicious') Tj T* (>) Tj (>) Tj (>) Tj ( apples[Color.green] = 'granny smith') Tj T* (>) Tj (>) Tj (>) Tj ( apples == {Color.red: 'red delicious', Color.green: 'granny smith'}) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 155.0236 cm -q -BT 1 0 0 1 0 24.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Programmatic access to enumeration members and) Tj T* (their attributes) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 113.0236 cm -q -BT 1 0 0 1 0 26 Tm 3.541797 Tw 12 TL /F1 10 Tf 0 0 0 rg (Sometimes it's useful to access members in enumerations programmatically \(i.e. situations where) Tj T* 0 Tw .922651 Tw /F4 10 Tf 0 0 0 rg (Color.red ) Tj /F1 10 Tf 0 0 0 rg (won't do because the exact color is not known at program-writing time\). ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (allows such) Tj T* 0 Tw (access:) Tj T* ET -Q -Q - -endstream -endobj -58 0 obj -<< /Length 3791 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 703.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 60 re B* -Q -q -BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color\(1\)) Tj T* (<) Tj (Color.red: 1) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Color\(3\)) Tj T* (<) Tj (Color.blue: 3) Tj (>) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 683.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If you want to access enum members by ) Tj /F5 10 Tf (name) Tj /F1 10 Tf (, use item access:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 614.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 60 re B* -Q -q -BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color['red']) Tj T* (<) Tj (Color.red: 1) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Color['green']) Tj T* (<) Tj (Color.green: 2) Tj (>) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 594.6236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If have an enum member and need its ) Tj /F4 10 Tf 0 0 0 rg (name ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (value) Tj /F1 10 Tf 0 0 0 rg (:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 513.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( member = Color.red) Tj T* (>) Tj (>) Tj (>) Tj ( member.name) Tj T* ('red') Tj T* (>) Tj (>) Tj (>) Tj ( member.value) Tj T* (1) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 480.4236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Duplicating enum members and values) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 450.4236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .13832 Tw (Having two enum members \(or any other attribute\) with the same name is invalid; in Python 3.x this would) Tj T* 0 Tw (raise an error, but in Python 2.x the second member simply overwrites the first:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 249.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 192 re B* -Q -q -BT 1 0 0 1 0 170 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( # python 2.x) Tj T* (>) Tj (>) Tj (>) Tj ( class Shape\(Enum\):) Tj T* (... square = 2) Tj T* (... square = 3) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.square) Tj T* (<) Tj (Shape.square: 3) Tj (>) Tj T* T* (>) Tj (>) Tj (>) Tj ( # python 3.x) Tj T* (>) Tj (>) Tj (>) Tj ( class Shape\(Enum\):) Tj T* (... square = 2) Tj T* (... square = 3) Tj T* (Traceback \(most recent call last\):) Tj T* (...) Tj T* (TypeError: Attempted to reuse key: 'square') Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 205.2236 cm -q -0 0 0 rg -BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .384987 Tw (However, two enum members are allowed to have the same value. Given two members A and B with the) Tj T* 0 Tw .444772 Tw (same value \(and A defined first\), B is an alias to A. By-value lookup of the value of A and B will return A.) Tj T* 0 Tw (By-name lookup of B will also return A:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 88.02362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 492 108 re B* -Q -q -BT 1 0 0 1 0 86 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Shape\(Enum\):) Tj T* (... __order__ = 'square diamond circle alias_for_square' # only needed in 2.x) Tj T* (... square = 2) Tj T* (... diamond = 1) Tj T* (... circle = 3) Tj T* (... alias_for_square = 2) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.square) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -59 0 obj -<< /Length 4406 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 691.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (<) Tj (Shape.square: 2) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.alias_for_square) Tj T* (<) Tj (Shape.square: 2) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Shape\(2\)) Tj T* (<) Tj (Shape.square: 2) Tj (>) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 659.8236 cm -q -BT 1 0 0 1 0 14 Tm 1.074104 Tw 12 TL /F1 10 Tf 0 0 0 rg (Allowing aliases is not always desirable. ) Tj /F4 10 Tf 0 0 0 rg (unique ) Tj /F1 10 Tf 0 0 0 rg (can be used to ensure that none exist in a particular) Tj T* 0 Tw (enumeration:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 506.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 144 re B* -Q -q -BT 1 0 0 1 0 122 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( from enum import unique) Tj T* (>) Tj (>) Tj (>) Tj ( @unique) Tj T* (... class Mistake\(Enum\):) Tj T* (... __order__ = 'one two three four' # only needed in 2.x) Tj T* (... one = 1) Tj T* (... two = 2) Tj T* (... three = 3) Tj T* (... four = 3) Tj T* (Traceback \(most recent call last\):) Tj T* (...) Tj T* (ValueError: duplicate names found in ) Tj (<) Tj (enum 'Mistake') Tj (>) Tj (: four -) Tj (>) Tj ( three) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 486.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Iterating over the members of an enum does not provide the aliases:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 441.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( list\(Shape\)) Tj T* ([) Tj (<) Tj (Shape.square: 2) Tj (>) Tj (, ) Tj (<) Tj (Shape.diamond: 1) Tj (>) Tj (, ) Tj (<) Tj (Shape.circle: 3) Tj (>) Tj (]) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 409.4236 cm -q -BT 1 0 0 1 0 14 Tm 1.307126 Tw 12 TL /F1 10 Tf 0 0 0 rg (The special attribute ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (is a dictionary mapping names to members. It includes all names) Tj T* 0 Tw (defined in the enumeration, including the aliases:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 304.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 96 re B* -Q -q -BT 1 0 0 1 0 74 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( for name, member in sorted\(Shape.__members__.items\(\)\):) Tj T* (... name, member) Tj T* (...) Tj T* (\('alias_for_square', ) Tj (<) Tj (Shape.square: 2) Tj (>) Tj (\)) Tj T* (\('circle', ) Tj (<) Tj (Shape.circle: 3) Tj (>) Tj (\)) Tj T* (\('diamond', ) Tj (<) Tj (Shape.diamond: 1) Tj (>) Tj (\)) Tj T* (\('square', ) Tj (<) Tj (Shape.square: 2) Tj (>) Tj (\)) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 272.2236 cm -q -BT 1 0 0 1 0 14 Tm .080751 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (attribute can be used for detailed programmatic access to the enumeration members.) Tj T* 0 Tw (For example, finding all the aliases:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 227.0236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 486 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( [name for name, member in Shape.__members__.items\(\) if member.name != name]) Tj T* (['alias_for_square']) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 194.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Comparisons) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 176.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enumeration members are compared by identity:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 82.82362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 84 re B* -Q -q -BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color.red is Color.red) Tj T* (True) Tj T* (>) Tj (>) Tj (>) Tj ( Color.red is Color.blue) Tj T* (False) Tj T* (>) Tj (>) Tj (>) Tj ( Color.red is not Color.blue) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -60 0 obj -<< /Length 4521 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 741.0236 cm -q -BT 1 0 0 1 0 14 Tm 1.131647 Tw 12 TL /F1 10 Tf 0 0 0 rg (Ordered comparisons between enumeration values are ) Tj /F5 10 Tf (not ) Tj /F1 10 Tf (supported. Enum members are not integers) Tj T* 0 Tw (\(but see ) Tj 0 0 .501961 rg (IntEnum ) Tj 0 0 0 rg (below\):) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 671.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 60 re B* -Q -q -BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color.red ) Tj (<) Tj ( Color.blue) Tj T* (Traceback \(most recent call last\):) Tj T* ( File ") Tj (<) Tj (stdin) Tj (>) Tj (", line 1, in ) Tj (<) Tj (module) Tj (>) Tj T* (TypeError: unorderable types: Color\(\) ) Tj (<) Tj ( Color\(\)) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 651.8236 cm -Q -q -1 0 0 1 62.69291 568.8236 cm -.960784 .960784 .862745 rg -n 0 83 469.8898 -83 re f* -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 6 57 Tm T* ET -q -1 0 0 1 16 52 cm -q -0 0 0 rg -BT 1 0 0 1 0 2.5 Tm /F6 12.5 Tf 15 TL (Warning) Tj T* ET -Q -Q -q -1 0 0 1 16 16 cm -q -BT 1 0 0 1 0 14 Tm .189398 Tw 12 TL /F1 10 Tf 0 0 0 rg (In Python 2 ) Tj /F5 10 Tf (everything ) Tj /F1 10 Tf (is ordered, even though the ordering may not make sense. If you want your) Tj T* 0 Tw (enumerations to have a sensible ordering check out the ) Tj 0 0 .501961 rg (OrderedEnum ) Tj 0 0 0 rg (recipe below.) Tj T* ET -Q -Q -q -1 J -1 j -.662745 .662745 .662745 RG -.5 w -n 0 83 m 469.8898 83 l S -n 0 0 m 469.8898 0 l S -n 0 0 m 0 83 l S -n 469.8898 0 m 469.8898 83 l S -Q -Q -q -1 0 0 1 62.69291 562.8236 cm -Q -q -1 0 0 1 62.69291 544.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Equality comparisons are defined though:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 451.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 84 re B* -Q -q -BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color.blue == Color.red) Tj T* (False) Tj T* (>) Tj (>) Tj (>) Tj ( Color.blue != Color.red) Tj T* (True) Tj T* (>) Tj (>) Tj (>) Tj ( Color.blue == Color.blue) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 419.6236 cm -q -BT 1 0 0 1 0 14 Tm 2.582706 Tw 12 TL /F1 10 Tf 0 0 0 rg (Comparisons against non-enumeration values will always compare not equal \(again, ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (was) Tj T* 0 Tw (explicitly designed to behave differently, see below\):) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 374.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Color.blue == 2) Tj T* (False) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 341.4236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Allowed members and attributes of enumerations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 287.4236 cm -q -BT 1 0 0 1 0 38 Tm 2.755697 Tw 12 TL /F1 10 Tf 0 0 0 rg (The examples above use integers for enumeration values. Using integers is short and handy \(and) Tj T* 0 Tw .241751 Tw (provided by default by the ) Tj 0 0 .501961 rg (Functional API) Tj 0 0 0 rg (\), but not strictly enforced. In the vast majority of use-cases, one) Tj T* 0 Tw .848221 Tw (doesn't care what the actual value of an enumeration is. But if the value ) Tj /F5 10 Tf (is ) Tj /F1 10 Tf (important, enumerations can) Tj T* 0 Tw (have arbitrary values.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 257.4236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .638735 Tw (Enumerations are Python classes, and can have methods and special methods as usual. If we have this) Tj T* 0 Tw (enumeration:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 80.22362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 168 re B* -Q -q -BT 1 0 0 1 0 146 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Mood\(Enum\):) Tj T* (... funky = 1) Tj T* (... happy = 3) Tj T* (...) Tj T* (... def describe\(self\):) Tj T* (... # self is the member here) Tj T* (... return self.name, self.value) Tj T* (...) Tj T* (... def __str__\(self\):) Tj T* (... return 'my custom str! {0}'.format\(self.value\)) Tj T* (...) Tj T* (... @classmethod) Tj T* (... def favorite_mood\(cls\):) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -61 0 obj -<< /Length 4627 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 727.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (... # cls here is the enumeration) Tj T* (... return cls.happy) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 707.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Then:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 614.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 84 re B* -Q -q -BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Mood.favorite_mood\(\)) Tj T* (<) Tj (Mood.happy: 3) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Mood.happy.describe\(\)) Tj T* (\('happy', 3\)) Tj T* (>) Tj (>) Tj (>) Tj ( str\(Mood.funky\)) Tj T* ('my custom str! 1') Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 558.6236 cm -q -BT 1 0 0 1 0 38 Tm 3.14186 Tw 12 TL /F1 10 Tf 0 0 0 rg (The rules for what is allowed are as follows: _sunder_ names \(starting and ending with a single) Tj T* 0 Tw .310651 Tw (underscore\) are reserved by enum and cannot be used; all other attributes defined within an enumeration) Tj T* 0 Tw 2.199213 Tw (will become members of this enumeration, with the exception of ) Tj /F5 10 Tf (__dunder__ ) Tj /F1 10 Tf (names and descriptors) Tj T* 0 Tw (\(methods are also descriptors\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 540.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Note:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 534.6236 cm -Q -q -1 0 0 1 62.69291 510.6236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 14 Tm .979213 Tw 12 TL /F1 10 Tf 0 0 0 rg (If your enumeration defines ) Tj /F4 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (and/or ) Tj /F4 10 Tf 0 0 0 rg (__init__ ) Tj /F1 10 Tf 0 0 0 rg (then whatever value\(s\) were given to the) Tj T* 0 Tw (enum member will be passed into those methods. See ) Tj 0 0 .501961 rg (Planet ) Tj 0 0 0 rg (for an example.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 510.6236 cm -Q -q -1 0 0 1 62.69291 477.6236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Restricted subclassing of enumerations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 447.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .778735 Tw (Subclassing an enumeration is allowed only if the enumeration does not define any members. So this is) Tj T* 0 Tw (forbidden:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 366.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class MoreColor\(Color\):) Tj T* (... pink = 17) Tj T* (Traceback \(most recent call last\):) Tj T* (...) Tj T* (TypeError: Cannot extend enumerations) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 346.4236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (But this is allowed:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 229.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 108 re B* -Q -q -BT 1 0 0 1 0 86 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Foo\(Enum\):) Tj T* (... def some_behavior\(self\):) Tj T* (... pass) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Bar\(Foo\):) Tj T* (... happy = 1) Tj T* (... sad = 2) Tj T* (...) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 185.2236 cm -q -BT 1 0 0 1 0 26 Tm .127984 Tw 12 TL /F1 10 Tf 0 0 0 rg (Allowing subclassing of enums that define members would lead to a violation of some important invariants) Tj T* 0 Tw 1.889985 Tw (of types and instances. On the other hand, it makes sense to allow sharing some common behavior) Tj T* 0 Tw (between a group of enumerations. \(See ) Tj 0 0 .501961 rg (OrderedEnum ) Tj 0 0 0 rg (for an example.\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 152.2236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Pickling) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 134.2236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Enumerations can be pickled and unpickled:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 89.02362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( from enum.test_enum import Fruit) Tj T* (>) Tj (>) Tj (>) Tj ( from pickle import dumps, loads) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -62 0 obj -<< /Length 5372 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 727.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -BT 1 0 0 1 0 14 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Fruit.tomato is loads\(dumps\(Fruit.tomato, 2\)\)) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 695.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.256457 Tw (The usual restrictions for pickling apply: picklable enums must be defined in the top level of a module,) Tj T* 0 Tw (since unpickling requires them to be importable from that module.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 677.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Note:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 671.8236 cm -Q -q -1 0 0 1 62.69291 647.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .081163 Tw (With pickle protocol version 4 \(introduced in Python 3.4\) it is possible to easily pickle enums nested in) Tj T* 0 Tw (other classes.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 647.8236 cm -Q -q -1 0 0 1 62.69291 614.8236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Functional API) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 596.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (class is callable, providing the following functional API:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 467.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 120 re B* -Q -q -BT 1 0 0 1 0 98 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Animal = Enum\('Animal', 'ant bee cat dog'\)) Tj T* (>) Tj (>) Tj (>) Tj ( Animal) Tj T* (<) Tj (enum 'Animal') Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Animal.ant) Tj T* (<) Tj (Animal.ant: 1) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( Animal.ant.value) Tj T* (1) Tj T* (>) Tj (>) Tj (>) Tj ( list\(Animal\)) Tj T* ([) Tj (<) Tj (Animal.ant: 1) Tj (>) Tj (, ) Tj (<) Tj (Animal.bee: 2) Tj (>) Tj (, ) Tj (<) Tj (Animal.cat: 3) Tj (>) Tj (, ) Tj (<) Tj (Animal.dog: 4) Tj (>) Tj (]) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 435.6236 cm -q -BT 1 0 0 1 0 14 Tm .602209 Tw 12 TL /F1 10 Tf 0 0 0 rg (The semantics of this API resemble ) Tj /F4 10 Tf 0 0 0 rg (namedtuple) Tj /F1 10 Tf 0 0 0 rg (. The first argument of the call to ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (is the name of) Tj T* 0 Tw (the enumeration.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 369.6236 cm -q -BT 1 0 0 1 0 50 Tm 1.326412 Tw 12 TL /F1 10 Tf 0 0 0 rg (The second argument is the ) Tj /F5 10 Tf (source ) Tj /F1 10 Tf (of enumeration member names. It can be a whitespace-separated) Tj T* 0 Tw .993516 Tw (string of names, a sequence of names, a sequence of 2-tuples with key/value pairs, or a mapping \(e.g.) Tj T* 0 Tw 1.168555 Tw (dictionary\) of names to values. The last two options enable assigning arbitrary values to enumerations;) Tj T* 0 Tw .537485 Tw (the others auto-assign increasing integers starting with 1. A new class derived from ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (is returned. In) Tj T* 0 Tw (other words, the above assignment to ) Tj /F4 10 Tf 0 0 0 rg (Animal ) Tj /F1 10 Tf 0 0 0 rg (is equivalent to:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 288.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Animals\(Enum\):) Tj T* (... ant = 1) Tj T* (... bee = 2) Tj T* (... cat = 3) Tj T* (... dog = 4) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 232.4236 cm -q -0 0 0 rg -BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL 1.239984 Tw (Pickling enums created with the functional API can be tricky as frame stack implementation details are) Tj T* 0 Tw .937132 Tw (used to try and figure out which module the enumeration is being created in \(e.g. it will fail if you use a) Tj T* 0 Tw 1.321163 Tw (utility function in separate module, and also may not work on IronPython or Jython\). The solution is to) Tj T* 0 Tw (specify the module name explicitly as follows:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 199.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 24 re B* -Q -q -BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( Animals = Enum\('Animals', 'ant bee cat dog', module=__name__\)) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 166.2236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Derived Enumerations) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 136.2236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (IntEnum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 94.22362 cm -q -BT 1 0 0 1 0 26 Tm 1.99832 Tw 12 TL /F1 10 Tf 0 0 0 rg (A variation of ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (is provided which is also a subclass of ) Tj /F4 10 Tf 0 0 0 rg (int) Tj /F1 10 Tf 0 0 0 rg (. Members of an ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (can be) Tj T* 0 Tw .087984 Tw (compared to integers; by extension, integer enumerations of different types can also be compared to each) Tj T* 0 Tw (other:) Tj T* ET -Q -Q - -endstream -endobj -63 0 obj -<< /Length 4141 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 571.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 192 re B* -Q -q -BT 1 0 0 1 0 170 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( from enum import IntEnum) Tj T* (>) Tj (>) Tj (>) Tj ( class Shape\(IntEnum\):) Tj T* (... circle = 1) Tj T* (... square = 2) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Request\(IntEnum\):) Tj T* (... post = 1) Tj T* (... get = 2) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Shape == 1) Tj T* (False) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.circle == 1) Tj T* (True) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.circle == Request.post) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 551.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (However, they still can't be compared to standard ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (enumerations:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 410.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 132 re B* -Q -q -BT 1 0 0 1 0 110 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Shape\(IntEnum\):) Tj T* (... circle = 1) Tj T* (... square = 2) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Color\(Enum\):) Tj T* (... red = 1) Tj T* (... green = 2) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Shape.circle == Color.red) Tj T* (False) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 390.6236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (values behave like integers in other ways you'd expect:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 297.4236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 84 re B* -Q -q -BT 1 0 0 1 0 62 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( int\(Shape.circle\)) Tj T* (1) Tj T* (>) Tj (>) Tj (>) Tj ( ['a', 'b', 'c'][Shape.circle]) Tj T* ('b') Tj T* (>) Tj (>) Tj (>) Tj ( [i for i in range\(Shape.square\)]) Tj T* ([0, 1]) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 229.4236 cm -q -BT 1 0 0 1 0 50 Tm 1.197126 Tw 12 TL /F1 10 Tf 0 0 0 rg (For the vast majority of code, ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (is strongly recommended, since ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (breaks some semantic) Tj T* 0 Tw .793318 Tw (promises of an enumeration \(by being comparable to integers, and thus by transitivity to other unrelated) Tj T* 0 Tw .554985 Tw (enumerations\). It should be used only in special cases where there's no other choice; for example, when) Tj T* 0 Tw .746136 Tw (integer constants are replaced with enumerations and backwards compatibility is required with code that) Tj T* 0 Tw (still expects integers.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 199.4236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (Others) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 181.4236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (While ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (is part of the ) Tj /F4 10 Tf 0 0 0 rg (enum ) Tj /F1 10 Tf 0 0 0 rg (module, it would be very simple to implement independently:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 136.2236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 36 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F4 10 Tf 12 TL (class IntEnum\(int, Enum\):) Tj T* ( pass) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 104.2236 cm -q -BT 1 0 0 1 0 14 Tm .361412 Tw 12 TL /F1 10 Tf 0 0 0 rg (This demonstrates how similar derived enumerations can be defined; for example a ) Tj /F4 10 Tf 0 0 0 rg (StrEnum ) Tj /F1 10 Tf 0 0 0 rg (that mixes) Tj T* 0 Tw (in ) Tj /F4 10 Tf 0 0 0 rg (str ) Tj /F1 10 Tf 0 0 0 rg (instead of ) Tj /F4 10 Tf 0 0 0 rg (int) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 86.22362 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Some rules:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 80.22362 cm -Q -q -1 0 0 1 62.69291 80.22362 cm -Q - -endstream -endobj -64 0 obj -<< /Length 7108 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 741.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm .477318 Tw 12 TL /F1 10 Tf 0 0 0 rg (When subclassing ) Tj /F4 10 Tf 0 0 0 rg (Enum) Tj /F1 10 Tf 0 0 0 rg (, mix-in types must appear before ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (itself in the sequence of bases, as) Tj T* 0 Tw (in the ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (example above.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 735.0236 cm -Q -q -1 0 0 1 62.69291 699.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 21 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 26 Tm 1.147045 Tw 12 TL /F1 10 Tf 0 0 0 rg (While ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (can have members of any type, once you mix in an additional type, all the members) Tj T* 0 Tw .420574 Tw (must have values of that type, e.g. ) Tj /F4 10 Tf 0 0 0 rg (int ) Tj /F1 10 Tf 0 0 0 rg (above. This restriction does not apply to mix-ins which only) Tj T* 0 Tw (add methods and don't specify another data type such as ) Tj /F4 10 Tf 0 0 0 rg (int ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (str) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 693.0236 cm -Q -q -1 0 0 1 62.69291 669.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm .100542 Tw 12 TL /F1 10 Tf 0 0 0 rg (When another data type is mixed in, the ) Tj /F4 10 Tf 0 0 0 rg (value ) Tj /F1 10 Tf 0 0 0 rg (attribute is ) Tj /F5 10 Tf (not the same ) Tj /F1 10 Tf (as the enum member itself,) Tj T* 0 Tw (although it is equivalant and will compare equal.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 663.0236 cm -Q -q -1 0 0 1 62.69291 609.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 39 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET -Q -Q -q -1 0 0 1 23 27 cm -q -BT 1 0 0 1 0 14 Tm 1.85998 Tw 12 TL /F1 10 Tf 0 0 0 rg (%-style formatting: ) Tj /F4 10 Tf 0 0 0 rg (%s ) Tj /F1 10 Tf 0 0 0 rg (and ) Tj /F4 10 Tf 0 0 0 rg (%r ) Tj /F1 10 Tf 0 0 0 rg (call ) Tj /F4 10 Tf 0 0 0 rg (Enum) Tj /F1 10 Tf 0 0 0 rg ('s ) Tj /F4 10 Tf 0 0 0 rg (__str__ ) Tj /F1 10 Tf 0 0 0 rg (and ) Tj /F4 10 Tf 0 0 0 rg (__repr__ ) Tj /F1 10 Tf 0 0 0 rg (respectively; other codes) Tj T* 0 Tw (\(such as ) Tj /F4 10 Tf 0 0 0 rg (%i ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (%h ) Tj /F1 10 Tf 0 0 0 rg (for IntEnum\) treat the enum member as its mixed-in type.) Tj T* ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm .067045 Tw 12 TL /F1 10 Tf 0 0 0 rg (Note: Prior to Python 3.4 there is a bug in ) Tj /F4 10 Tf 0 0 0 rg (str) Tj /F1 10 Tf 0 0 0 rg ('s %-formatting: ) Tj /F4 10 Tf 0 0 0 rg (int ) Tj /F1 10 Tf 0 0 0 rg (subclasses are printed as strings) Tj T* 0 Tw (and not numbers when the ) Tj /F4 10 Tf 0 0 0 rg (%d) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (%i) Tj /F1 10 Tf 0 0 0 rg (, or ) Tj /F4 10 Tf 0 0 0 rg (%u ) Tj /F1 10 Tf 0 0 0 rg (codes are used.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 603.0236 cm -Q -q -1 0 0 1 62.69291 579.0236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -q -1 0 0 1 6 9 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET -Q -Q -q -1 0 0 1 23 -3 cm -q -BT 1 0 0 1 0 14 Tm 1.880751 Tw 12 TL /F4 10 Tf 0 0 0 rg (str.__format__ ) Tj /F1 10 Tf 0 0 0 rg (\(or ) Tj /F4 10 Tf 0 0 0 rg (format) Tj /F1 10 Tf 0 0 0 rg (\) will use the mixed-in type's ) Tj /F4 10 Tf 0 0 0 rg (__format__) Tj /F1 10 Tf 0 0 0 rg (. If the ) Tj /F4 10 Tf 0 0 0 rg (Enum) Tj /F1 10 Tf 0 0 0 rg ('s ) Tj /F4 10 Tf 0 0 0 rg (str ) Tj /F1 10 Tf 0 0 0 rg (or) Tj T* 0 Tw /F4 10 Tf 0 0 0 rg (repr ) Tj /F1 10 Tf 0 0 0 rg (is desired use the ) Tj /F4 10 Tf 0 0 0 rg (!s ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (!r) Tj /F1 10 Tf 0 0 0 rg ( ) Tj /F4 10 Tf 0 0 0 rg (str ) Tj /F1 10 Tf 0 0 0 rg (format codes.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 579.0236 cm -Q -q -1 0 0 1 62.69291 546.0236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Decorators) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 516.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (unique) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 486.0236 cm -q -BT 1 0 0 1 0 14 Tm .287251 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf 0 0 0 rg (class ) Tj /F1 10 Tf 0 0 0 rg (decorator specifically for enumerations. It searches an enumeration's ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (gathering) Tj T* 0 Tw (any aliases it finds; if any are found ) Tj /F4 10 Tf 0 0 0 rg (ValueError ) Tj /F1 10 Tf 0 0 0 rg (is raised with the details:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 368.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 108 re B* -Q -q -BT 1 0 0 1 0 86 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( @unique) Tj T* (... class NoDupes\(Enum\):) Tj T* (... first = 'one') Tj T* (... second = 'two') Tj T* (... third = 'two') Tj T* (Traceback \(most recent call last\):) Tj T* (...) Tj T* (ValueError: duplicate names found in ) Tj (<) Tj (enum 'NoDupes') Tj (>) Tj (: third -) Tj (>) Tj ( second) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 335.8236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Interesting examples) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 293.8236 cm -q -BT 1 0 0 1 0 26 Tm .593735 Tw 12 TL /F1 10 Tf 0 0 0 rg (While ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (and ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (are expected to cover the majority of use-cases, they cannot cover them all.) Tj T* 0 Tw .897045 Tw (Here are recipes for some different types of enumerations that can be used directly, or as examples for) Tj T* 0 Tw (creating one's own.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 263.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (AutoNumber) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 245.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Avoids having to specify the value for each enumeration member:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 80.62362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 156 re B* -Q -q -BT 1 0 0 1 0 134 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class AutoNumber\(Enum\):) Tj T* (... def __new__\(cls\):) Tj T* (... value = len\(cls.__members__\) + 1) Tj T* (... obj = object.__new__\(cls\)) Tj T* (... obj._value_ = value) Tj T* (... return obj) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Color\(AutoNumber\):) Tj T* (... __order__ = "red green blue" # only needed in 2.x) Tj T* (... red = \(\)) Tj T* (... green = \(\)) Tj T* (... blue = \(\)) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -65 0 obj -<< /Length 4158 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 715.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 48 re B* -Q -q -BT 1 0 0 1 0 26 Tm 12 TL /F4 10 Tf 0 0 0 rg (...) Tj T* (>) Tj (>) Tj (>) Tj ( Color.green.value == 2) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 695.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Note:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 689.8236 cm -Q -q -1 0 0 1 62.69291 653.8236 cm -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 0 2 Tm T* ET -q -1 0 0 1 20 0 cm -q -BT 1 0 0 1 0 26 Tm .144104 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (method, if defined, is used during creation of the Enum members; it is then replaced by) Tj T* 0 Tw .799985 Tw (Enum's ) Tj /F5 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (which is used after class creation for lookup of existing members. Due to the way) Tj T* 0 Tw (Enums are supposed to behave, there is no way to customize Enum's ) Tj /F5 10 Tf 0 0 0 rg (__new__) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 653.8236 cm -Q -q -1 0 0 1 62.69291 623.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (UniqueEnum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 605.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Raises an error if a duplicate member name is found instead of creating an alias:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 368.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 228 re B* -Q -q -BT 1 0 0 1 0 206 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class UniqueEnum\(Enum\):) Tj T* (... def __init__\(self, *args\):) Tj T* (... cls = self.__class__) Tj T* (... if any\(self.value == e.value for e in cls\):) Tj T* (... a = self.name) Tj T* (... e = cls\(self.value\).name) Tj T* (... raise ValueError\() Tj T* (... "aliases not allowed in UniqueEnum: %r --) Tj (>) Tj ( %r") Tj T* (... % \(a, e\)\)) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Color\(UniqueEnum\):) Tj T* (... red = 1) Tj T* (... green = 2) Tj T* (... blue = 3) Tj T* (... grene = 2) Tj T* (Traceback \(most recent call last\):) Tj T* (...) Tj T* (ValueError: aliases not allowed in UniqueEnum: 'grene' --) Tj (>) Tj ( 'green') Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 338.6236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (OrderedEnum) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 308.6236 cm -q -BT 1 0 0 1 0 14 Tm 1.335984 Tw 12 TL /F1 10 Tf 0 0 0 rg (An ordered enumeration that is not based on ) Tj /F4 10 Tf 0 0 0 rg (IntEnum ) Tj /F1 10 Tf 0 0 0 rg (and so maintains the normal ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (invariants) Tj T* 0 Tw (\(such as not being comparable to other enumerations\):) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 83.42362 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 216 re B* -Q -q -BT 1 0 0 1 0 194 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class OrderedEnum\(Enum\):) Tj T* (... def __ge__\(self, other\):) Tj T* (... if self.__class__ is other.__class__:) Tj T* (... return self._value_ ) Tj (>) Tj (= other._value_) Tj T* (... return NotImplemented) Tj T* (... def __gt__\(self, other\):) Tj T* (... if self.__class__ is other.__class__:) Tj T* (... return self._value_ ) Tj (>) Tj ( other._value_) Tj T* (... return NotImplemented) Tj T* (... def __le__\(self, other\):) Tj T* (... if self.__class__ is other.__class__:) Tj T* (... return self._value_ ) Tj (<) Tj (= other._value_) Tj T* (... return NotImplemented) Tj T* (... def __lt__\(self, other\):) Tj T* (... if self.__class__ is other.__class__:) Tj T* (... return self._value_ ) Tj (<) Tj ( other._value_) Tj T* (... return NotImplemented) Tj T* ET -Q -Q -Q -Q -Q - -endstream -endobj -66 0 obj -<< /Length 4039 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 619.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 144 re B* -Q -q -BT 1 0 0 1 0 122 Tm 12 TL /F4 10 Tf 0 0 0 rg (...) Tj T* (>) Tj (>) Tj (>) Tj ( class Grade\(OrderedEnum\):) Tj T* (... __ordered__ = 'A B C D F') Tj T* (... A = 5) Tj T* (... B = 4) Tj T* (... C = 3) Tj T* (... D = 2) Tj T* (... F = 1) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Grade.C ) Tj (<) Tj ( Grade.A) Tj T* (True) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 589.8236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (Planet) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 571.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (If ) Tj /F4 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (__init__ ) Tj /F1 10 Tf 0 0 0 rg (is defined the value of the enum member will be passed to those methods:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 286.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 276 re B* -Q -q -BT 1 0 0 1 0 254 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class Planet\(Enum\):) Tj T* (... MERCURY = \(3.303e+23, 2.4397e6\)) Tj T* (... VENUS = \(4.869e+24, 6.0518e6\)) Tj T* (... EARTH = \(5.976e+24, 6.37814e6\)) Tj T* (... MARS = \(6.421e+23, 3.3972e6\)) Tj T* (... JUPITER = \(1.9e+27, 7.1492e7\)) Tj T* (... SATURN = \(5.688e+26, 6.0268e7\)) Tj T* (... URANUS = \(8.686e+25, 2.5559e7\)) Tj T* (... NEPTUNE = \(1.024e+26, 2.4746e7\)) Tj T* (... def __init__\(self, mass, radius\):) Tj T* (... self.mass = mass # in kilograms) Tj T* (... self.radius = radius # in meters) Tj T* (... @property) Tj T* (... def surface_gravity\(self\):) Tj T* (... # universal gravitational constant \(m3 kg-1 s-2\)) Tj T* (... G = 6.67300E-11) Tj T* (... return G * self.mass / \(self.radius * self.radius\)) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( Planet.EARTH.value) Tj T* (\(5.976e+24, 6378140.0\)) Tj T* (>) Tj (>) Tj (>) Tj ( Planet.EARTH.surface_gravity) Tj T* (9.802652743337129) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 253.6236 cm -q -BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (How are Enums different?) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 223.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 2.090651 Tw (Enums have a custom metaclass that affects many aspects of both derived Enum classes and their) Tj T* 0 Tw (instances \(members\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 193.6236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (Enum Classes) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 127.6236 cm -q -BT 1 0 0 1 0 50 Tm 1.263615 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf 0 0 0 rg (EnumMeta ) Tj /F1 10 Tf 0 0 0 rg (metaclass is responsible for providing the ) Tj /F4 10 Tf 0 0 0 rg (__contains__) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (__dir__) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (__iter__ ) Tj /F1 10 Tf 0 0 0 rg (and) Tj T* 0 Tw 2.264724 Tw (other methods that allow one to do things with an ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (class that fail on a typical class, such as) Tj T* 0 Tw 2.594147 Tw /F4 10 Tf 0 0 0 rg (list\(Color\) ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F4 10 Tf 0 0 0 rg (some_var) Tj ( ) Tj (in) Tj ( ) Tj (Color) Tj /F1 10 Tf 0 0 0 rg (. ) Tj /F4 10 Tf 0 0 0 rg (EnumMeta ) Tj /F1 10 Tf 0 0 0 rg (is responsible for ensuring that various other) Tj T* 0 Tw 2.196905 Tw (methods on the final ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (class are correct \(such as ) Tj /F4 10 Tf 0 0 0 rg (__new__) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (__getnewargs__) Tj /F1 10 Tf 0 0 0 rg (, ) Tj /F4 10 Tf 0 0 0 rg (__str__ ) Tj /F1 10 Tf 0 0 0 rg (and) Tj T* 0 Tw /F4 10 Tf 0 0 0 rg (__repr__) Tj /F1 10 Tf 0 0 0 rg (\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 115.6236 cm -Q - -endstream -endobj -67 0 obj -<< /Length 5453 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 682.0236 cm -.960784 .960784 .862745 rg -n 0 83 469.8898 -83 re f* -0 0 0 rg -BT /F1 10 Tf 12 TL ET -BT 1 0 0 1 6 57 Tm T* ET -q -1 0 0 1 16 52 cm -q -0 0 0 rg -BT 1 0 0 1 0 2.5 Tm /F6 12.5 Tf 15 TL (Note) Tj T* ET -Q -Q -q -1 0 0 1 16 16 cm -q -BT 1 0 0 1 0 14 Tm .686654 Tw 12 TL /F4 10 Tf 0 0 0 rg (__dir__ ) Tj /F1 10 Tf 0 0 0 rg (is not changed in the Python 2 line as it messes up some of the decorators included in) Tj T* 0 Tw (the stdlib.) Tj T* ET -Q -Q -q -1 J -1 j -.662745 .662745 .662745 RG -.5 w -n 0 83 m 469.8898 83 l S -n 0 0 m 469.8898 0 l S -n 0 0 m 0 83 l S -n 469.8898 0 m 469.8898 83 l S -Q -Q -q -1 0 0 1 62.69291 676.0236 cm -Q -q -1 0 0 1 62.69291 646.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (Enum Members \(aka instances\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 604.0236 cm -q -BT 1 0 0 1 0 26 Tm .491984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The most interesting thing about Enum members is that they are singletons. ) Tj /F4 10 Tf 0 0 0 rg (EnumMeta ) Tj /F1 10 Tf 0 0 0 rg (creates them all) Tj T* 0 Tw .084988 Tw (while it is creating the ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (class itself, and then puts a custom ) Tj /F4 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (in place to ensure that no new) Tj T* 0 Tw (ones are ever instantiated by returning only the existing member instances.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 574.0236 cm -q -BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (Finer Points) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 520.0236 cm -q -BT 1 0 0 1 0 38 Tm 5.488555 Tw 12 TL /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (members are instances of an ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (class, and even though they are accessible as) Tj T* 0 Tw 1.504147 Tw /F5 10 Tf 0 0 0 rg (EnumClass.member1.member2) Tj /F1 10 Tf 0 0 0 rg (, they should not be accessed directly from the member as that lookup) Tj T* 0 Tw .329985 Tw (may fail or, worse, return something besides the ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (member you were looking for \(changed in version) Tj T* 0 Tw (1.1.1\):) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 390.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 120 re B* -Q -q -BT 1 0 0 1 0 98 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( class FieldTypes\(Enum\):) Tj T* (... name = 1) Tj T* (... value = 2) Tj T* (... size = 3) Tj T* (...) Tj T* (>) Tj (>) Tj (>) Tj ( FieldTypes.value.size) Tj T* (<) Tj (FieldTypes.size: 3) Tj (>) Tj T* (>) Tj (>) Tj (>) Tj ( FieldTypes.size.value) Tj T* (3) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 370.8236 cm -q -BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (attribute is only available on the class.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 316.8236 cm -q -BT 1 0 0 1 0 38 Tm 1.374651 Tw 12 TL /F1 10 Tf 0 0 0 rg (In Python 3.x ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (is always an ) Tj /F4 10 Tf 0 0 0 rg (OrderedDict) Tj /F1 10 Tf 0 0 0 rg (, with the order being the definition order. In) Tj T* 0 Tw 3.009213 Tw (Python 2.7 ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (is an ) Tj /F4 10 Tf 0 0 0 rg (OrderedDict ) Tj /F1 10 Tf 0 0 0 rg (if ) Tj /F4 10 Tf 0 0 0 rg (__order__ ) Tj /F1 10 Tf 0 0 0 rg (was specified, and a plain ) Tj /F4 10 Tf 0 0 0 rg (dict) Tj T* 0 Tw 1.851318 Tw /F1 10 Tf 0 0 0 rg (otherwise. In all other Python 2.x versions ) Tj /F4 10 Tf 0 0 0 rg (__members__ ) Tj /F1 10 Tf 0 0 0 rg (is a plain ) Tj /F4 10 Tf 0 0 0 rg (dict ) Tj /F1 10 Tf 0 0 0 rg (even if ) Tj /F4 10 Tf 0 0 0 rg (__order__ ) Tj /F1 10 Tf 0 0 0 rg (was) Tj T* 0 Tw (specified as the ) Tj /F4 10 Tf 0 0 0 rg (OrderedDict ) Tj /F1 10 Tf 0 0 0 rg (type didn't exist yet.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 286.8236 cm -q -BT 1 0 0 1 0 14 Tm .106654 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you give your ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (subclass extra methods, like the ) Tj 0 0 .501961 rg (Planet ) Tj 0 0 0 rg (class above, those methods will show up in) Tj T* 0 Tw (a ) Tj /F5 10 Tf 0 0 0 rg (dir ) Tj /F1 10 Tf 0 0 0 rg (of the member, but not of the class:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 205.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* -Q -q -BT 1 0 0 1 0 50 Tm 12 TL /F4 10 Tf 0 0 0 rg (>) Tj (>) Tj (>) Tj ( dir\(Planet\)) Tj T* (['EARTH', 'JUPITER', 'MARS', 'MERCURY', 'NEPTUNE', 'SATURN', 'URANUS',) Tj T* ('VENUS', '__class__', '__doc__', '__members__', '__module__']) Tj T* (>) Tj (>) Tj (>) Tj ( dir\(Planet.EARTH\)) Tj T* (['__class__', '__doc__', '__module__', 'name', 'surface_gravity', 'value']) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 161.6236 cm -q -BT 1 0 0 1 0 26 Tm .938935 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F4 10 Tf 0 0 0 rg (__new__ ) Tj /F1 10 Tf 0 0 0 rg (method will only be used for the creation of the ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (members -- after that it is replaced.) Tj T* 0 Tw .949461 Tw (This means if you wish to change how ) Tj /F4 10 Tf 0 0 0 rg (Enum ) Tj /F1 10 Tf 0 0 0 rg (members are looked up you either have to write a helper) Tj T* 0 Tw (function or a ) Tj /F4 10 Tf 0 0 0 rg (classmethod) Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET -Q -Q - -endstream -endobj -68 0 obj -<< /Nums [ 0 69 0 R 1 70 0 R 2 71 0 R 3 72 0 R 4 73 0 R - 5 74 0 R 6 75 0 R 7 76 0 R 8 77 0 R 9 78 0 R - 10 79 0 R 11 80 0 R ] >> -endobj -69 0 obj -<< /S /D /St 1 >> -endobj -70 0 obj -<< /S /D /St 2 >> -endobj -71 0 obj -<< /S /D /St 3 >> -endobj -72 0 obj -<< /S /D /St 4 >> -endobj -73 0 obj -<< /S /D /St 5 >> -endobj -74 0 obj -<< /S /D /St 6 >> -endobj -75 0 obj -<< /S /D /St 7 >> -endobj -76 0 obj -<< /S /D /St 8 >> -endobj -77 0 obj -<< /S /D /St 9 >> -endobj -78 0 obj -<< /S /D /St 10 >> -endobj -79 0 obj -<< /S /D /St 11 >> -endobj -80 0 obj -<< /S /D /St 12 >> -endobj -xref -0 81 -0000000000 65535 f -0000000075 00000 n -0000000160 00000 n -0000000270 00000 n -0000000383 00000 n -0000000498 00000 n -0000000606 00000 n -0000000777 00000 n -0000000948 00000 n -0000001066 00000 n -0000001237 00000 n -0000001477 00000 n -0000001687 00000 n -0000001897 00000 n -0000002107 00000 n -0000002279 00000 n -0000002402 00000 n -0000002574 00000 n -0000002746 00000 n -0000002989 00000 n -0000003161 00000 n -0000003333 00000 n -0000003569 00000 n -0000003779 00000 n -0000003989 00000 n -0000004199 00000 n -0000004409 00000 n -0000004619 00000 n -0000004791 00000 n -0000005020 00000 n -0000005129 00000 n -0000005373 00000 n -0000005451 00000 n -0000005571 00000 n -0000005705 00000 n -0000005886 00000 n -0000006039 00000 n -0000006168 00000 n -0000006332 00000 n -0000006488 00000 n -0000006614 00000 n -0000006746 00000 n -0000006924 00000 n -0000007036 00000 n -0000007147 00000 n -0000007315 00000 n -0000007413 00000 n -0000007591 00000 n -0000007706 00000 n -0000007834 00000 n -0000007963 00000 n -0000008074 00000 n -0000008243 00000 n -0000008360 00000 n -0000008508 00000 n -0000008625 00000 n -0000008771 00000 n -0000015286 00000 n -0000019517 00000 n -0000023365 00000 n -0000027828 00000 n -0000032406 00000 n -0000037090 00000 n -0000042519 00000 n -0000046717 00000 n -0000053882 00000 n -0000058097 00000 n -0000062193 00000 n -0000067703 00000 n -0000067856 00000 n -0000067893 00000 n -0000067930 00000 n -0000067967 00000 n -0000068004 00000 n -0000068041 00000 n -0000068078 00000 n -0000068115 00000 n -0000068152 00000 n -0000068189 00000 n -0000068227 00000 n -0000068265 00000 n -trailer -<< /ID - % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(<}|~gm\352\320\235=\001p\220v\224\336) (<}|~gm\352\320\235=\001p\220v\224\336)] - /Info 30 0 R /Root 29 0 R /Size 81 >> -startxref -68303 -%%EOF
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/test.py b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/test.py index d9edfae..c8c4b96 100644 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/test.py +++ b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/enum/test.py
@@ -452,8 +452,8 @@ self.assertEqual(dates[Season.AUTUMN], '1031') def test_enum_duplicates(self): - _order_ = "SPRING SUMMER AUTUMN WINTER" class Season(Enum): + _order_ = "SPRING SUMMER AUTUMN WINTER" SPRING = 1 SUMMER = 2 AUTUMN = FALL = 3 @@ -665,7 +665,7 @@ protocol=(0, HIGHEST_PROTOCOL)) def test_exploding_pickle(self): - BadPickle = Enum('BadPickle', 'dill sweet bread-n-butter') + BadPickle = Enum('BadPickle', 'dill sweet bread_n_butter') enum._make_class_unpicklable(BadPickle) globals()['BadPickle'] = BadPickle test_pickle_exception(self.assertRaises, TypeError, BadPickle.dill) @@ -813,6 +813,27 @@ self.assertTrue(e in SummerMonth) self.assertTrue(type(e) is SummerMonth) + def test_programatic_function_iterable_with_weird_names(self): + SummerMonth = Enum( + 'SummerMonth', + (('june', 1), ('july', 2), ('august', 3), ('fabulous september', 4)) + ) + lst = list(SummerMonth) + self.assertEqual(len(lst), len(SummerMonth)) + self.assertEqual(len(SummerMonth), 4, SummerMonth) + self.assertEqual( + [SummerMonth.june, SummerMonth.july, SummerMonth.august, SummerMonth['fabulous september']], + lst, + ) + for i, month in enumerate('june july august'.split() + ['fabulous september']): + i += 1 + e = SummerMonth(i) + self.assertEqual(int(e.value), i) + self.assertNotEqual(e, i) + self.assertEqual(e.name, month) + self.assertTrue(e in SummerMonth) + self.assertTrue(type(e) is SummerMonth) + def test_programatic_function_from_dict(self): SummerMonth = Enum( 'SummerMonth',
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.cfg b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.cfg index 861a9f5..8bfd5a1 100644 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.cfg +++ b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.cfg
@@ -1,5 +1,4 @@ [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0
diff --git a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.py b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.py index fc67110a..8973279 100644 --- a/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.py +++ b/third_party/blink/web_tests/external/wpt/tools/third_party/enum/setup.py
@@ -9,6 +9,14 @@ else: required = [] +# Don't shadow builtin enum package if we are being installed on a +# recent Python. This causes conflicts since at least 3.6: +# https://bitbucket.org/stoneleaf/enum34/issues/19/enum34-isnt-compatible-with-python-36 +if sys.version_info[:2] < (3, 4): + packages = ['enum'] +else: + packages = [] + long_desc = '''\ enum --- support for enumerations ======================================== @@ -54,15 +62,15 @@ py2_only = () py3_only = () make = [ - 'rst2pdf enum/doc/enum.rst --output=enum/doc/enum.pdf', + # 'rst2pdf enum/doc/enum.rst --output=enum/doc/enum.pdf', ] data = dict( name='enum34', - version='1.1.6', + version='1.1.10', url='https://bitbucket.org/stoneleaf/enum34', - packages=['enum'], + packages=packages, package_data={ 'enum' : [ 'LICENSE', @@ -90,8 +98,6 @@ 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', ], )
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptserve/setup.py b/third_party/blink/web_tests/external/wpt/tools/wptserve/setup.py index 759cb48..a9cc95f 100644 --- a/third_party/blink/web_tests/external/wpt/tools/wptserve/setup.py +++ b/third_party/blink/web_tests/external/wpt/tools/wptserve/setup.py
@@ -1,7 +1,7 @@ from setuptools import setup PACKAGE_VERSION = '3.0' -deps = ["six>=1.8", "h2==3.0.1"] +deps = ["six>=1.13.0", "h2==3.0.1"] setup(name='wptserve', version=PACKAGE_VERSION,
diff --git a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/utils.py b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/utils.py index 347acbd..1ea2d8c 100644 --- a/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/utils.py +++ b/third_party/blink/web_tests/external/wpt/tools/wptserve/wptserve/utils.py
@@ -133,6 +133,8 @@ 2049, # nfs 3659, # apple-sasl 4045, # lockd + 5060, # sip + 5061, # sips 6000, # x11 6665, # irc (alternate) 6666, # irc (alternate)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/__init__.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/__init__.py index e69de29..68a556a 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/__init__.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/__init__.py
@@ -0,0 +1,16 @@ +from tests.support.sync import Poll + + +def wait_for_new_handle(session, handles_before): + def find_new_handle(session): + new_handles = list(set(session.handles) - set(handles_before)) + if new_handles and len(new_handles) == 1: + return new_handles[0] + return None + + wait = Poll( + session, + timeout=5, + message="No new window has been opened") + + return wait.until(find_new_handle)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/navigate.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/navigate.py index d776a1e..548587cd 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/navigate.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/element_click/navigate.py
@@ -1,7 +1,13 @@ +import pytest + +from webdriver.error import NoSuchElementException + from tests.support.asserts import assert_success -from tests.support.inline import inline +from tests.support.inline import iframe, inline from tests.support.sync import Poll +from . import wait_for_new_handle + def element_click(session, element): return session.transport.send( @@ -93,31 +99,72 @@ """, args=(element,)) is True -def test_link_open_target_in_new_window(session, url): - orig_handles = session.handles +@pytest.mark.parametrize("target", [ + "", + "_blank", + "_parent", + "_self", + "_top", +]) +def test_link_from_toplevel_context_with_target(session, target): + target_page = inline("<p id='foo'>foo</p>") - session.url = inline(""" - <a href="{}" target="_blank">Open in new window</a> - """.format(inline("<p id=foo"))) + session.url = inline("<a href='{}' target='{}'>click</a>".format(target_page, target)) element = session.find.css("a", all=False) + orig_handles = session.handles + response = element_click(session, element) assert_success(response) - def find_new_handle(session): - new_handles = list(set(session.handles) - set(orig_handles)) - if new_handles and len(new_handles) == 1: - return new_handles[0] - return None + if target == "_blank": + session.window_handle = wait_for_new_handle(session, orig_handles) wait = Poll( session, timeout=5, - message="No new window has been opened") - new_handle = wait.until(find_new_handle) + ignored_exceptions=NoSuchElementException, + message="Expected element has not been found") + wait.until(lambda s: s.find.css("#foo")) - session.window_handle = new_handle - session.find.css("#foo") + +@pytest.mark.parametrize("target", [ + "", + "_blank", + "_parent", + "_self", + "_top", +]) +def test_link_from_nested_context_with_target(session, target): + target_page = inline("<p id='foo'>foo</p>") + + session.url = inline(iframe("<a href='{}' target='{}'>click</a>".format(target_page, target))) + frame = session.find.css("iframe", all=False) + session.switch_frame(frame) + element = session.find.css("a".format(target), all=False) + + orig_handles = session.handles + + response = element_click(session, element) + assert_success(response) + + if target == "_blank": + session.window_handle = wait_for_new_handle(session, orig_handles) + + # With the current browsing context removed the navigation should + # not timeout. Switch to the target context, and wait until the expected + # element is available. + if target == "_parent": + session.switch_frame("parent") + elif target == "_top": + session.switch_frame(None) + + wait = Poll( + session, + timeout=5, + ignored_exceptions=NoSuchElementException, + message="Expected element has not been found") + wait.until(lambda s: s.find.css("#foo")) def test_link_closes_window(session):
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt index 222565c..b94b06a 100644 --- a/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -51,7 +51,7 @@ PASS RTCPeerConnection interface: attribute onicegatheringstatechange PASS RTCPeerConnection interface: attribute onconnectionstatechange PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) -PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1 @@ -104,8 +104,8 @@ PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions)" with the proper type PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError -PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type -PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
diff --git a/third_party/blink/web_tests/fullscreen/full-screen-frameset-expected.txt b/third_party/blink/web_tests/fullscreen/full-screen-frameset-expected.txt index baf6704..2c0aebe 100644 --- a/third_party/blink/web_tests/fullscreen/full-screen-frameset-expected.txt +++ b/third_party/blink/web_tests/fullscreen/full-screen-frameset-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE ERROR: line 28: Feature policy violation: fullscreen is not allowed in this document. +CONSOLE ERROR: line 28: Permissions policy violation: fullscreen is not allowed in this document. --------
diff --git a/third_party/blink/web_tests/images/jpeg-with-non-interleaved-dc-channels-expected.png b/third_party/blink/web_tests/images/jpeg-with-non-interleaved-dc-channels-expected.png index e055106..f651700 100644 --- a/third_party/blink/web_tests/images/jpeg-with-non-interleaved-dc-channels-expected.png +++ b/third_party/blink/web_tests/images/jpeg-with-non-interleaved-dc-channels-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..4828b57 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png b/third_party/blink/web_tests/platform/linux/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png new file mode 100644 index 0000000..d087fd0 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..71fa82d --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git "a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" "b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt" new file mode 100644 index 0000000..3806cc9e1 --- /dev/null +++ "b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_exclude=\050Document_Window_HTML._\051-expected.txt"
@@ -0,0 +1,1471 @@ +This is a testharness.js-based test. +Found 1467 tests; 1385 PASS, 82 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Document: original interface defined +PASS Partial interface Document: member names are unique +PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined +PASS Partial interface mixin DocumentOrShadowRoot: member names are unique +PASS Partial interface mixin NavigatorID: original interface mixin defined +PASS Partial interface mixin NavigatorID: member names are unique +PASS Partial interface HTMLAnchorElement: original interface defined +PASS Partial interface HTMLAnchorElement: member names are unique +PASS Partial interface HTMLAreaElement: original interface defined +PASS Partial interface HTMLAreaElement: member names are unique +PASS Partial interface HTMLBodyElement: original interface defined +PASS Partial interface HTMLBodyElement: member names are unique +PASS Partial interface HTMLBRElement: original interface defined +PASS Partial interface HTMLBRElement: member names are unique +PASS Partial interface HTMLTableCaptionElement: original interface defined +PASS Partial interface HTMLTableCaptionElement: member names are unique +PASS Partial interface HTMLTableColElement: original interface defined +PASS Partial interface HTMLTableColElement: member names are unique +PASS Partial interface HTMLDivElement: original interface defined +PASS Partial interface HTMLDivElement: member names are unique +PASS Partial interface HTMLDListElement: original interface defined +PASS Partial interface HTMLDListElement: member names are unique +PASS Partial interface HTMLEmbedElement: original interface defined +PASS Partial interface HTMLEmbedElement: member names are unique +PASS Partial interface HTMLHeadingElement: original interface defined +PASS Partial interface HTMLHeadingElement: member names are unique +PASS Partial interface HTMLHRElement: original interface defined +PASS Partial interface HTMLHRElement: member names are unique +PASS Partial interface HTMLHtmlElement: original interface defined +PASS Partial interface HTMLHtmlElement: member names are unique +PASS Partial interface HTMLIFrameElement: original interface defined +PASS Partial interface HTMLIFrameElement: member names are unique +PASS Partial interface HTMLImageElement: original interface defined +PASS Partial interface HTMLImageElement: member names are unique +PASS Partial interface HTMLInputElement: original interface defined +PASS Partial interface HTMLInputElement: member names are unique +PASS Partial interface HTMLLegendElement: original interface defined +PASS Partial interface HTMLLegendElement: member names are unique +PASS Partial interface HTMLLIElement: original interface defined +PASS Partial interface HTMLLIElement: member names are unique +PASS Partial interface HTMLLinkElement: original interface defined +PASS Partial interface HTMLLinkElement: member names are unique +PASS Partial interface HTMLMenuElement: original interface defined +PASS Partial interface HTMLMenuElement: member names are unique +PASS Partial interface HTMLMetaElement: original interface defined +PASS Partial interface HTMLMetaElement: member names are unique +PASS Partial interface HTMLObjectElement: original interface defined +PASS Partial interface HTMLObjectElement: member names are unique +PASS Partial interface HTMLOListElement: original interface defined +PASS Partial interface HTMLOListElement: member names are unique +PASS Partial interface HTMLParagraphElement: original interface defined +PASS Partial interface HTMLParagraphElement: member names are unique +PASS Partial interface HTMLParamElement: original interface defined +PASS Partial interface HTMLParamElement: member names are unique +PASS Partial interface HTMLPreElement: original interface defined +PASS Partial interface HTMLPreElement: member names are unique +PASS Partial interface HTMLStyleElement: original interface defined +PASS Partial interface HTMLStyleElement: member names are unique +PASS Partial interface HTMLScriptElement: original interface defined +PASS Partial interface HTMLScriptElement: member names are unique +PASS Partial interface HTMLTableElement: original interface defined +PASS Partial interface HTMLTableElement: member names are unique +PASS Partial interface HTMLTableSectionElement: original interface defined +PASS Partial interface HTMLTableSectionElement: member names are unique +PASS Partial interface HTMLTableCellElement: original interface defined +PASS Partial interface HTMLTableCellElement: member names are unique +PASS Partial interface HTMLTableRowElement: original interface defined +PASS Partial interface HTMLTableRowElement: member names are unique +PASS Partial interface HTMLUListElement: original interface defined +PASS Partial interface HTMLUListElement: member names are unique +PASS Partial interface Document[2]: original interface defined +PASS Partial interface Document[2]: member names are unique +PASS Partial interface Window: original interface defined +PASS Partial interface Window: member names are unique +PASS Partial interface Document[3]: member names are unique +PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique +PASS Partial interface UIEvent: member names are unique +PASS Document includes GlobalEventHandlers: member names are unique +PASS Document includes DocumentAndElementEventHandlers: member names are unique +PASS Document includes NonElementParentNode: member names are unique +PASS Document includes DocumentOrShadowRoot: member names are unique +PASS Document includes ParentNode: member names are unique +PASS Document includes XPathEvaluatorBase: member names are unique +PASS HTMLElement includes GlobalEventHandlers: member names are unique +PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique +PASS HTMLElement includes ElementContentEditable: member names are unique +PASS HTMLElement includes HTMLOrSVGElement: member names are unique +PASS HTMLElement includes ElementCSSInlineStyle: member names are unique +PASS HTMLLinkElement includes LinkStyle: member names are unique +PASS HTMLStyleElement includes LinkStyle: member names are unique +PASS HTMLBodyElement includes WindowEventHandlers: member names are unique +PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique +PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique +PASS CanvasRenderingContext2D includes CanvasState: member names are unique +PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS CanvasRenderingContext2D includes CanvasRect: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique +PASS CanvasRenderingContext2D includes CanvasText: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasPath: member names are unique +PASS Path2D includes CanvasPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique +PASS ElementInternals includes ARIAMixin: member names are unique +PASS Window includes GlobalEventHandlers: member names are unique +PASS Window includes WindowEventHandlers: member names are unique +PASS Window includes WindowOrWorkerGlobalScope: member names are unique +PASS Window includes AnimationFrameProvider: member names are unique +PASS Window includes WindowSessionStorage: member names are unique +PASS Window includes WindowLocalStorage: member names are unique +PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique +PASS Navigator includes NavigatorID: member names are unique +PASS Navigator includes NavigatorLanguage: member names are unique +PASS Navigator includes NavigatorOnLine: member names are unique +PASS Navigator includes NavigatorContentUtils: member names are unique +PASS Navigator includes NavigatorCookies: member names are unique +PASS Navigator includes NavigatorPlugins: member names are unique +PASS Navigator includes NavigatorConcurrentHardware: member names are unique +PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique +PASS Worker includes AbstractWorker: member names are unique +PASS SharedWorker includes AbstractWorker: member names are unique +PASS WorkerNavigator includes NavigatorID: member names are unique +PASS WorkerNavigator includes NavigatorLanguage: member names are unique +PASS WorkerNavigator includes NavigatorOnLine: member names are unique +PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique +PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique +PASS Element includes ARIAMixin: member names are unique +PASS Element includes ParentNode: member names are unique +PASS Element includes NonDocumentTypeChildNode: member names are unique +PASS Element includes ChildNode: member names are unique +PASS Element includes Slottable: member names are unique +PASS SVGElement includes GlobalEventHandlers: member names are unique +PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique +PASS SVGElement includes SVGElementInstance: member names are unique +PASS SVGElement includes HTMLOrSVGElement: member names are unique +PASS SVGElement includes ElementCSSInlineStyle: member names are unique +PASS SVGGraphicsElement includes SVGTests: member names are unique +PASS SVGSVGElement includes SVGFitToViewBox: member names are unique +PASS SVGSVGElement includes WindowEventHandlers: member names are unique +PASS SVGImageElement includes SVGURIReference: member names are unique +PASS SVGScriptElement includes SVGURIReference: member names are unique +PASS SVGAElement includes SVGURIReference: member names are unique +FAIL SVGAElement includes HTMLHyperlinkElementUtils: member names are unique assert_true: member href is unique expected true got false +PASS DocumentFragment includes NonElementParentNode: member names are unique +PASS DocumentFragment includes ParentNode: member names are unique +PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique +PASS RadioNodeList interface: existence and properties of interface object +PASS RadioNodeList interface object length +PASS RadioNodeList interface object name +PASS RadioNodeList interface: existence and properties of interface prototype object +PASS RadioNodeList interface: existence and properties of interface prototype object's "constructor" property +PASS RadioNodeList interface: existence and properties of interface prototype object's @@unscopables property +PASS RadioNodeList interface: attribute value +PASS DOMStringList interface: existence and properties of interface object +PASS DOMStringList interface object length +PASS DOMStringList interface object name +PASS DOMStringList interface: existence and properties of interface prototype object +PASS DOMStringList interface: existence and properties of interface prototype object's "constructor" property +PASS DOMStringList interface: existence and properties of interface prototype object's @@unscopables property +PASS DOMStringList interface: attribute length +PASS DOMStringList interface: operation item(unsigned long) +PASS DOMStringList interface: operation contains(DOMString) +PASS DOMStringList must be primary interface of location.ancestorOrigins +PASS Stringification of location.ancestorOrigins +PASS DOMStringList interface: location.ancestorOrigins must inherit property "length" with the proper type +PASS DOMStringList interface: location.ancestorOrigins must inherit property "item(unsigned long)" with the proper type +PASS DOMStringList interface: calling item(unsigned long) on location.ancestorOrigins with too few arguments must throw TypeError +PASS DOMStringList interface: location.ancestorOrigins must inherit property "contains(DOMString)" with the proper type +PASS DOMStringList interface: calling contains(DOMString) on location.ancestorOrigins with too few arguments must throw TypeError +PASS DOMStringMap interface: existence and properties of interface object +PASS DOMStringMap interface object length +PASS DOMStringMap interface object name +PASS DOMStringMap interface: existence and properties of interface prototype object +PASS DOMStringMap interface: existence and properties of interface prototype object's "constructor" property +PASS DOMStringMap interface: existence and properties of interface prototype object's @@unscopables property +PASS DOMStringMap must be primary interface of document.head.dataset +PASS Stringification of document.head.dataset +PASS MediaError interface: existence and properties of interface object +PASS MediaError interface object length +PASS MediaError interface object name +PASS MediaError interface: existence and properties of interface prototype object +PASS MediaError interface: existence and properties of interface prototype object's "constructor" property +PASS MediaError interface: existence and properties of interface prototype object's @@unscopables property +PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface object +PASS MediaError interface: constant MEDIA_ERR_ABORTED on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface object +PASS MediaError interface: constant MEDIA_ERR_NETWORK on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_DECODE on interface object +PASS MediaError interface: constant MEDIA_ERR_DECODE on interface prototype object +PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface object +PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface prototype object +PASS MediaError interface: attribute code +PASS MediaError interface: attribute message +PASS MediaError must be primary interface of errorVideo.error +PASS Stringification of errorVideo.error +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_ABORTED" with the proper type +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_NETWORK" with the proper type +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_DECODE" with the proper type +PASS MediaError interface: errorVideo.error must inherit property "MEDIA_ERR_SRC_NOT_SUPPORTED" with the proper type +PASS MediaError interface: errorVideo.error must inherit property "code" with the proper type +PASS MediaError interface: errorVideo.error must inherit property "message" with the proper type +PASS AudioTrackList interface: existence and properties of interface object +PASS AudioTrackList interface object length +PASS AudioTrackList interface object name +PASS AudioTrackList interface: existence and properties of interface prototype object +PASS AudioTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS AudioTrackList interface: existence and properties of interface prototype object's @@unscopables property +PASS AudioTrackList interface: attribute length +PASS AudioTrackList interface: operation getTrackById(DOMString) +PASS AudioTrackList interface: attribute onchange +PASS AudioTrackList interface: attribute onaddtrack +PASS AudioTrackList interface: attribute onremovetrack +PASS AudioTrack interface: existence and properties of interface object +PASS AudioTrack interface object length +PASS AudioTrack interface object name +PASS AudioTrack interface: existence and properties of interface prototype object +PASS AudioTrack interface: existence and properties of interface prototype object's "constructor" property +PASS AudioTrack interface: existence and properties of interface prototype object's @@unscopables property +PASS AudioTrack interface: attribute id +PASS AudioTrack interface: attribute kind +PASS AudioTrack interface: attribute label +PASS AudioTrack interface: attribute language +PASS AudioTrack interface: attribute enabled +PASS VideoTrackList interface: existence and properties of interface object +PASS VideoTrackList interface object length +PASS VideoTrackList interface object name +PASS VideoTrackList interface: existence and properties of interface prototype object +PASS VideoTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS VideoTrackList interface: existence and properties of interface prototype object's @@unscopables property +PASS VideoTrackList interface: attribute length +PASS VideoTrackList interface: operation getTrackById(DOMString) +PASS VideoTrackList interface: attribute selectedIndex +PASS VideoTrackList interface: attribute onchange +PASS VideoTrackList interface: attribute onaddtrack +PASS VideoTrackList interface: attribute onremovetrack +PASS VideoTrack interface: existence and properties of interface object +PASS VideoTrack interface object length +PASS VideoTrack interface object name +PASS VideoTrack interface: existence and properties of interface prototype object +PASS VideoTrack interface: existence and properties of interface prototype object's "constructor" property +PASS VideoTrack interface: existence and properties of interface prototype object's @@unscopables property +PASS VideoTrack interface: attribute id +PASS VideoTrack interface: attribute kind +PASS VideoTrack interface: attribute label +PASS VideoTrack interface: attribute language +PASS VideoTrack interface: attribute selected +PASS TextTrackList interface: existence and properties of interface object +PASS TextTrackList interface object length +PASS TextTrackList interface object name +PASS TextTrackList interface: existence and properties of interface prototype object +PASS TextTrackList interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackList interface: existence and properties of interface prototype object's @@unscopables property +PASS TextTrackList interface: attribute length +PASS TextTrackList interface: operation getTrackById(DOMString) +PASS TextTrackList interface: attribute onchange +PASS TextTrackList interface: attribute onaddtrack +PASS TextTrackList interface: attribute onremovetrack +PASS TextTrackList must be primary interface of document.createElement("video").textTracks +PASS Stringification of document.createElement("video").textTracks +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById(DOMString)" with the proper type +PASS TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type +PASS TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type +PASS TextTrack interface: existence and properties of interface object +PASS TextTrack interface object length +PASS TextTrack interface object name +PASS TextTrack interface: existence and properties of interface prototype object +PASS TextTrack interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrack interface: existence and properties of interface prototype object's @@unscopables property +PASS TextTrack interface: attribute kind +PASS TextTrack interface: attribute label +PASS TextTrack interface: attribute language +PASS TextTrack interface: attribute id +FAIL TextTrack interface: attribute inBandMetadataTrackDispatchType assert_true: The prototype object must have a property "inBandMetadataTrackDispatchType" expected true got false +PASS TextTrack interface: attribute mode +PASS TextTrack interface: attribute cues +PASS TextTrack interface: attribute activeCues +PASS TextTrack interface: operation addCue(TextTrackCue) +PASS TextTrack interface: operation removeCue(TextTrackCue) +PASS TextTrack interface: attribute oncuechange +PASS TextTrack must be primary interface of document.createElement("track").track +PASS Stringification of document.createElement("track").track +PASS TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type +FAIL TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type assert_inherits: property "inBandMetadataTrackDispatchType" not found in prototype chain +PASS TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type +PASS TextTrack interface: document.createElement("track").track must inherit property "addCue(TextTrackCue)" with the proper type +PASS TextTrack interface: calling addCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError +PASS TextTrack interface: document.createElement("track").track must inherit property "removeCue(TextTrackCue)" with the proper type +PASS TextTrack interface: calling removeCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError +PASS TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type +PASS TextTrackCueList interface: existence and properties of interface object +PASS TextTrackCueList interface object length +PASS TextTrackCueList interface object name +PASS TextTrackCueList interface: existence and properties of interface prototype object +PASS TextTrackCueList interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackCueList interface: existence and properties of interface prototype object's @@unscopables property +PASS TextTrackCueList interface: attribute length +PASS TextTrackCueList interface: operation getCueById(DOMString) +PASS TextTrackCueList must be primary interface of document.createElement("video").addTextTrack("subtitles").cues +PASS Stringification of document.createElement("video").addTextTrack("subtitles").cues +PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type +PASS TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById(DOMString)" with the proper type +PASS TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError +PASS TextTrackCue interface: existence and properties of interface object +PASS TextTrackCue interface object length +PASS TextTrackCue interface object name +PASS TextTrackCue interface: existence and properties of interface prototype object +PASS TextTrackCue interface: existence and properties of interface prototype object's "constructor" property +PASS TextTrackCue interface: existence and properties of interface prototype object's @@unscopables property +PASS TextTrackCue interface: attribute track +PASS TextTrackCue interface: attribute id +PASS TextTrackCue interface: attribute startTime +PASS TextTrackCue interface: attribute endTime +PASS TextTrackCue interface: attribute pauseOnExit +PASS TextTrackCue interface: attribute onenter +PASS TextTrackCue interface: attribute onexit +PASS TimeRanges interface: existence and properties of interface object +PASS TimeRanges interface object length +PASS TimeRanges interface object name +PASS TimeRanges interface: existence and properties of interface prototype object +PASS TimeRanges interface: existence and properties of interface prototype object's "constructor" property +PASS TimeRanges interface: existence and properties of interface prototype object's @@unscopables property +PASS TimeRanges interface: attribute length +PASS TimeRanges interface: operation start(unsigned long) +PASS TimeRanges interface: operation end(unsigned long) +PASS TimeRanges must be primary interface of document.createElement("video").buffered +PASS Stringification of document.createElement("video").buffered +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "start(unsigned long)" with the proper type +PASS TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError +PASS TimeRanges interface: document.createElement("video").buffered must inherit property "end(unsigned long)" with the proper type +PASS TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError +PASS TrackEvent interface: existence and properties of interface object +PASS TrackEvent interface object length +PASS TrackEvent interface object name +PASS TrackEvent interface: existence and properties of interface prototype object +PASS TrackEvent interface: existence and properties of interface prototype object's "constructor" property +PASS TrackEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS TrackEvent interface: attribute track +PASS TrackEvent must be primary interface of new TrackEvent("addtrack", {track:document.createElement("track").track}) +PASS Stringification of new TrackEvent("addtrack", {track:document.createElement("track").track}) +PASS TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type +PASS ValidityState interface: existence and properties of interface object +PASS ValidityState interface object length +PASS ValidityState interface object name +PASS ValidityState interface: existence and properties of interface prototype object +PASS ValidityState interface: existence and properties of interface prototype object's "constructor" property +PASS ValidityState interface: existence and properties of interface prototype object's @@unscopables property +PASS ValidityState interface: attribute valueMissing +PASS ValidityState interface: attribute typeMismatch +PASS ValidityState interface: attribute patternMismatch +PASS ValidityState interface: attribute tooLong +PASS ValidityState interface: attribute tooShort +PASS ValidityState interface: attribute rangeUnderflow +PASS ValidityState interface: attribute rangeOverflow +PASS ValidityState interface: attribute stepMismatch +PASS ValidityState interface: attribute badInput +PASS ValidityState interface: attribute customError +PASS ValidityState interface: attribute valid +PASS ValidityState must be primary interface of document.createElement("input").validity +PASS Stringification of document.createElement("input").validity +PASS ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type +PASS ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type +PASS SubmitEvent interface: existence and properties of interface object +PASS SubmitEvent interface object length +PASS SubmitEvent interface object name +PASS SubmitEvent interface: existence and properties of interface prototype object +PASS SubmitEvent interface: existence and properties of interface prototype object's "constructor" property +PASS SubmitEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS SubmitEvent interface: attribute submitter +PASS FormDataEvent interface: existence and properties of interface object +PASS FormDataEvent interface object length +PASS FormDataEvent interface object name +PASS FormDataEvent interface: existence and properties of interface prototype object +PASS FormDataEvent interface: existence and properties of interface prototype object's "constructor" property +PASS FormDataEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS FormDataEvent interface: attribute formData +PASS FormDataEvent must be primary interface of new FormDataEvent("formdata", { formData: new FormData() }) +PASS Stringification of new FormDataEvent("formdata", { formData: new FormData() }) +PASS FormDataEvent interface: new FormDataEvent("formdata", { formData: new FormData() }) must inherit property "formData" with the proper type +PASS CanvasRenderingContext2D interface: existence and properties of interface object +PASS CanvasRenderingContext2D interface object length +PASS CanvasRenderingContext2D interface object name +PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object +PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property +PASS CanvasRenderingContext2D interface: attribute canvas +PASS CanvasRenderingContext2D interface: operation getContextAttributes() +PASS CanvasRenderingContext2D interface: operation save() +PASS CanvasRenderingContext2D interface: operation restore() +PASS CanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation rotate(unrestricted double) +PASS CanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation getTransform() +PASS CanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit) +PASS CanvasRenderingContext2D interface: operation resetTransform() +PASS CanvasRenderingContext2D interface: attribute globalAlpha +PASS CanvasRenderingContext2D interface: attribute globalCompositeOperation +PASS CanvasRenderingContext2D interface: attribute imageSmoothingEnabled +PASS CanvasRenderingContext2D interface: attribute imageSmoothingQuality +PASS CanvasRenderingContext2D interface: attribute strokeStyle +PASS CanvasRenderingContext2D interface: attribute fillStyle +PASS CanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double) +PASS CanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double) +PASS CanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString) +PASS CanvasRenderingContext2D interface: attribute shadowOffsetX +PASS CanvasRenderingContext2D interface: attribute shadowOffsetY +PASS CanvasRenderingContext2D interface: attribute shadowBlur +PASS CanvasRenderingContext2D interface: attribute shadowColor +PASS CanvasRenderingContext2D interface: attribute filter +PASS CanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation beginPath() +PASS CanvasRenderingContext2D interface: operation fill(optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation fill(Path2D, optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation stroke() +PASS CanvasRenderingContext2D interface: operation stroke(Path2D) +PASS CanvasRenderingContext2D interface: operation clip(optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation clip(Path2D, optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule) +PASS CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element) +PASS CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D, Element) +PASS CanvasRenderingContext2D interface: operation scrollPathIntoView() +PASS CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D) +PASS CanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS CanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS CanvasRenderingContext2D interface: operation measureText(DOMString) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation createImageData(long, long) +PASS CanvasRenderingContext2D interface: operation createImageData(ImageData) +PASS CanvasRenderingContext2D interface: operation getImageData(long, long, long, long) +PASS CanvasRenderingContext2D interface: operation putImageData(ImageData, long, long) +PASS CanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long) +PASS CanvasRenderingContext2D interface: attribute lineWidth +PASS CanvasRenderingContext2D interface: attribute lineCap +PASS CanvasRenderingContext2D interface: attribute lineJoin +PASS CanvasRenderingContext2D interface: attribute miterLimit +PASS CanvasRenderingContext2D interface: operation setLineDash(sequence<unrestricted double>) +PASS CanvasRenderingContext2D interface: operation getLineDash() +PASS CanvasRenderingContext2D interface: attribute lineDashOffset +PASS CanvasRenderingContext2D interface: attribute font +PASS CanvasRenderingContext2D interface: attribute textAlign +PASS CanvasRenderingContext2D interface: attribute textBaseline +PASS CanvasRenderingContext2D interface: attribute direction +PASS CanvasRenderingContext2D interface: operation closePath() +PASS CanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS CanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS CanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS CanvasRenderingContext2D must be primary interface of document.createElement("canvas").getContext("2d") +PASS Stringification of document.createElement("canvas").getContext("2d") +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "canvas" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getContextAttributes()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "save()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "restore()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scale(unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling scale(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rotate(unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling rotate(unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "translate(unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling translate(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setTransform(optional DOMMatrix2DInit)" with the proper type +PASS CanvasRenderingContext2D interface: calling setTransform(optional DOMMatrix2DInit) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetTransform()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalAlpha" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "globalCompositeOperation" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingEnabled" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeStyle" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillStyle" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createLinearGradient(double, double, double, double)" with the proper type +PASS CanvasRenderingContext2D interface: calling createLinearGradient(double, double, double, double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createRadialGradient(double, double, double, double, double, double)" with the proper type +PASS CanvasRenderingContext2D interface: calling createRadialGradient(double, double, double, double, double, double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createPattern(CanvasImageSource, DOMString)" with the proper type +PASS CanvasRenderingContext2D interface: calling createPattern(CanvasImageSource, DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetX" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowOffsetY" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowBlur" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "shadowColor" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "beginPath()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill(optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling fill(optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fill(Path2D, optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling fill(Path2D, optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "stroke(Path2D)" with the proper type +PASS CanvasRenderingContext2D interface: calling stroke(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip(optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling clip(optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clip(Path2D, optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling clip(Path2D, optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule)" with the proper type +PASS CanvasRenderingContext2D interface: calling isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(Path2D, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling isPointInStroke(Path2D, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Element)" with the proper type +PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Path2D, Element)" with the proper type +PASS CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Path2D, Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView(Path2D)" with the proper type +PASS CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "measureText(DOMString)" with the proper type +PASS CanvasRenderingContext2D interface: calling measureText(DOMString) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData(long, long)" with the proper type +PASS CanvasRenderingContext2D interface: calling createImageData(long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createImageData(ImageData)" with the proper type +PASS CanvasRenderingContext2D interface: calling createImageData(ImageData) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getImageData(long, long, long, long)" with the proper type +PASS CanvasRenderingContext2D interface: calling getImageData(long, long, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData(ImageData, long, long)" with the proper type +PASS CanvasRenderingContext2D interface: calling putImageData(ImageData, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "putImageData(ImageData, long, long, long, long, long, long)" with the proper type +PASS CanvasRenderingContext2D interface: calling putImageData(ImageData, long, long, long, long, long, long) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineWidth" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineCap" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineJoin" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "miterLimit" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash(sequence<unrestricted double>)" with the proper type +PASS CanvasRenderingContext2D interface: calling setLineDash(sequence<unrestricted double>) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "closePath()" with the proper type +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "moveTo(unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling moveTo(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineTo(unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling lineTo(unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)" with the proper type +PASS CanvasRenderingContext2D interface: calling rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)" with the proper type +PASS CanvasRenderingContext2D interface: calling arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean)" with the proper type +PASS CanvasRenderingContext2D interface: calling ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError +PASS CanvasGradient interface: existence and properties of interface object +PASS CanvasGradient interface object length +PASS CanvasGradient interface object name +PASS CanvasGradient interface: existence and properties of interface prototype object +PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasGradient interface: existence and properties of interface prototype object's @@unscopables property +PASS CanvasGradient interface: operation addColorStop(double, DOMString) +PASS CanvasPattern interface: existence and properties of interface object +PASS CanvasPattern interface object length +PASS CanvasPattern interface object name +PASS CanvasPattern interface: existence and properties of interface prototype object +PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasPattern interface: existence and properties of interface prototype object's @@unscopables property +PASS CanvasPattern interface: operation setTransform(optional DOMMatrix2DInit) +PASS TextMetrics interface: existence and properties of interface object +PASS TextMetrics interface object length +PASS TextMetrics interface object name +PASS TextMetrics interface: existence and properties of interface prototype object +PASS TextMetrics interface: existence and properties of interface prototype object's "constructor" property +PASS TextMetrics interface: existence and properties of interface prototype object's @@unscopables property +PASS TextMetrics interface: attribute width +PASS TextMetrics interface: attribute actualBoundingBoxLeft +PASS TextMetrics interface: attribute actualBoundingBoxRight +PASS TextMetrics interface: attribute fontBoundingBoxAscent +PASS TextMetrics interface: attribute fontBoundingBoxDescent +PASS TextMetrics interface: attribute actualBoundingBoxAscent +PASS TextMetrics interface: attribute actualBoundingBoxDescent +PASS TextMetrics interface: attribute emHeightAscent +PASS TextMetrics interface: attribute emHeightDescent +FAIL TextMetrics interface: attribute hangingBaseline assert_true: The prototype object must have a property "hangingBaseline" expected true got false +FAIL TextMetrics interface: attribute alphabeticBaseline assert_true: The prototype object must have a property "alphabeticBaseline" expected true got false +FAIL TextMetrics interface: attribute ideographicBaseline assert_true: The prototype object must have a property "ideographicBaseline" expected true got false +PASS ImageData interface: existence and properties of interface object +PASS ImageData interface object length +PASS ImageData interface object name +PASS ImageData interface: existence and properties of interface prototype object +PASS ImageData interface: existence and properties of interface prototype object's "constructor" property +PASS ImageData interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageData interface: attribute width +PASS ImageData interface: attribute height +PASS ImageData interface: attribute data +PASS ImageData must be primary interface of new ImageData(10, 10) +PASS Stringification of new ImageData(10, 10) +PASS ImageData interface: new ImageData(10, 10) must inherit property "width" with the proper type +PASS ImageData interface: new ImageData(10, 10) must inherit property "height" with the proper type +FAIL ImageData interface: new ImageData(10, 10) must inherit property "data" with the proper type assert_inherits: property "data" found on object expected in prototype chain +PASS Path2D interface: existence and properties of interface object +PASS Path2D interface object length +PASS Path2D interface object name +PASS Path2D interface: existence and properties of interface prototype object +PASS Path2D interface: existence and properties of interface prototype object's "constructor" property +PASS Path2D interface: existence and properties of interface prototype object's @@unscopables property +PASS Path2D interface: operation addPath(Path2D, optional DOMMatrix2DInit) +PASS Path2D interface: operation closePath() +PASS Path2D interface: operation moveTo(unrestricted double, unrestricted double) +PASS Path2D interface: operation lineTo(unrestricted double, unrestricted double) +PASS Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS ImageBitmapRenderingContext interface: existence and properties of interface object +PASS ImageBitmapRenderingContext interface object length +PASS ImageBitmapRenderingContext interface object name +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageBitmapRenderingContext interface: attribute canvas +PASS ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap?) +PASS OffscreenCanvas interface: existence and properties of interface object +PASS OffscreenCanvas interface object length +PASS OffscreenCanvas interface object name +PASS OffscreenCanvas interface: existence and properties of interface prototype object +PASS OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property +PASS OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property +PASS OffscreenCanvas interface: attribute width +PASS OffscreenCanvas interface: attribute height +PASS OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, optional any) +PASS OffscreenCanvas interface: operation transferToImageBitmap() +PASS OffscreenCanvas interface: operation convertToBlob(optional ImageEncodeOptions) +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface object +PASS OffscreenCanvasRenderingContext2D interface object length +PASS OffscreenCanvasRenderingContext2D interface object name +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property +PASS OffscreenCanvasRenderingContext2D interface: operation commit() +PASS OffscreenCanvasRenderingContext2D interface: attribute canvas +PASS OffscreenCanvasRenderingContext2D interface: operation save() +PASS OffscreenCanvasRenderingContext2D interface: operation restore() +PASS OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation getTransform() +PASS OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit) +PASS OffscreenCanvasRenderingContext2D interface: operation resetTransform() +PASS OffscreenCanvasRenderingContext2D interface: attribute globalAlpha +PASS OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation +PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled +PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality +PASS OffscreenCanvasRenderingContext2D interface: attribute strokeStyle +PASS OffscreenCanvasRenderingContext2D interface: attribute fillStyle +PASS OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double) +PASS OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double) +PASS OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString) +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowBlur +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowColor +PASS OffscreenCanvasRenderingContext2D interface: attribute filter +PASS OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation beginPath() +PASS OffscreenCanvasRenderingContext2D interface: operation fill(optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation stroke() +PASS OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D) +PASS OffscreenCanvasRenderingContext2D interface: operation clip(optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData) +PASS OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long) +PASS OffscreenCanvasRenderingContext2D interface: attribute lineWidth +PASS OffscreenCanvasRenderingContext2D interface: attribute lineCap +PASS OffscreenCanvasRenderingContext2D interface: attribute lineJoin +PASS OffscreenCanvasRenderingContext2D interface: attribute miterLimit +PASS OffscreenCanvasRenderingContext2D interface: operation setLineDash(sequence<unrestricted double>) +PASS OffscreenCanvasRenderingContext2D interface: operation getLineDash() +PASS OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset +PASS OffscreenCanvasRenderingContext2D interface: attribute font +PASS OffscreenCanvasRenderingContext2D interface: attribute textAlign +PASS OffscreenCanvasRenderingContext2D interface: attribute textBaseline +PASS OffscreenCanvasRenderingContext2D interface: attribute direction +PASS OffscreenCanvasRenderingContext2D interface: operation closePath() +PASS OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS CustomElementRegistry interface: existence and properties of interface object +PASS CustomElementRegistry interface object length +PASS CustomElementRegistry interface object name +PASS CustomElementRegistry interface: existence and properties of interface prototype object +PASS CustomElementRegistry interface: existence and properties of interface prototype object's "constructor" property +PASS CustomElementRegistry interface: existence and properties of interface prototype object's @@unscopables property +PASS CustomElementRegistry interface: operation define(DOMString, CustomElementConstructor, optional ElementDefinitionOptions) +PASS CustomElementRegistry interface: operation get(DOMString) +PASS CustomElementRegistry interface: operation whenDefined(DOMString) +PASS CustomElementRegistry interface: operation upgrade(Node) +PASS ElementInternals interface: existence and properties of interface object +PASS ElementInternals interface object length +PASS ElementInternals interface object name +PASS ElementInternals interface: existence and properties of interface prototype object +PASS ElementInternals interface: existence and properties of interface prototype object's "constructor" property +PASS ElementInternals interface: existence and properties of interface prototype object's @@unscopables property +PASS ElementInternals interface: attribute shadowRoot +PASS ElementInternals interface: operation setFormValue((File or USVString or FormData)?, optional (File or USVString or FormData)?) +PASS ElementInternals interface: attribute form +FAIL ElementInternals interface: operation setValidity(optional ValidityStateFlags, optional DOMString, optional HTMLElement) assert_equals: property has wrong .length expected 0 but got 1 +PASS ElementInternals interface: attribute willValidate +PASS ElementInternals interface: attribute validity +PASS ElementInternals interface: attribute validationMessage +PASS ElementInternals interface: operation checkValidity() +PASS ElementInternals interface: operation reportValidity() +PASS ElementInternals interface: attribute labels +PASS DataTransfer interface: existence and properties of interface object +PASS DataTransfer interface object length +PASS DataTransfer interface object name +PASS DataTransfer interface: existence and properties of interface prototype object +PASS DataTransfer interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransfer interface: existence and properties of interface prototype object's @@unscopables property +PASS DataTransfer interface: attribute dropEffect +PASS DataTransfer interface: attribute effectAllowed +PASS DataTransfer interface: attribute items +PASS DataTransfer interface: operation setDragImage(Element, long, long) +PASS DataTransfer interface: attribute types +PASS DataTransfer interface: operation getData(DOMString) +PASS DataTransfer interface: operation setData(DOMString, DOMString) +PASS DataTransfer interface: operation clearData(optional DOMString) +PASS DataTransfer interface: attribute files +PASS DataTransferItemList interface: existence and properties of interface object +PASS DataTransferItemList interface object length +PASS DataTransferItemList interface object name +PASS DataTransferItemList interface: existence and properties of interface prototype object +PASS DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransferItemList interface: existence and properties of interface prototype object's @@unscopables property +PASS DataTransferItemList interface: attribute length +PASS DataTransferItemList interface: operation add(DOMString, DOMString) +PASS DataTransferItemList interface: operation add(File) +PASS DataTransferItemList interface: operation remove(unsigned long) +PASS DataTransferItemList interface: operation clear() +PASS DataTransferItem interface: existence and properties of interface object +PASS DataTransferItem interface object length +PASS DataTransferItem interface object name +PASS DataTransferItem interface: existence and properties of interface prototype object +PASS DataTransferItem interface: existence and properties of interface prototype object's "constructor" property +PASS DataTransferItem interface: existence and properties of interface prototype object's @@unscopables property +PASS DataTransferItem interface: attribute kind +PASS DataTransferItem interface: attribute type +PASS DataTransferItem interface: operation getAsString(FunctionStringCallback?) +PASS DataTransferItem interface: operation getAsFile() +PASS DragEvent interface: existence and properties of interface object +PASS DragEvent interface object length +PASS DragEvent interface object name +PASS DragEvent interface: existence and properties of interface prototype object +PASS DragEvent interface: existence and properties of interface prototype object's "constructor" property +PASS DragEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS DragEvent interface: attribute dataTransfer +PASS BarProp interface: existence and properties of interface object +PASS BarProp interface object length +PASS BarProp interface object name +PASS BarProp interface: existence and properties of interface prototype object +PASS BarProp interface: existence and properties of interface prototype object's "constructor" property +PASS BarProp interface: existence and properties of interface prototype object's @@unscopables property +PASS BarProp interface: attribute visible +PASS History interface: existence and properties of interface object +PASS History interface object length +PASS History interface object name +PASS History interface: existence and properties of interface prototype object +PASS History interface: existence and properties of interface prototype object's "constructor" property +PASS History interface: existence and properties of interface prototype object's @@unscopables property +PASS History interface: attribute length +PASS History interface: attribute scrollRestoration +PASS History interface: attribute state +PASS History interface: operation go(optional long) +PASS History interface: operation back() +PASS History interface: operation forward() +PASS History interface: operation pushState(any, DOMString, optional USVString?) +PASS History interface: operation replaceState(any, DOMString, optional USVString?) +PASS History must be primary interface of window.history +PASS Stringification of window.history +PASS History interface: window.history must inherit property "length" with the proper type +PASS History interface: window.history must inherit property "scrollRestoration" with the proper type +PASS History interface: window.history must inherit property "state" with the proper type +PASS History interface: window.history must inherit property "go(optional long)" with the proper type +PASS History interface: calling go(optional long) on window.history with too few arguments must throw TypeError +PASS History interface: window.history must inherit property "back()" with the proper type +PASS History interface: window.history must inherit property "forward()" with the proper type +PASS History interface: window.history must inherit property "pushState(any, DOMString, optional USVString?)" with the proper type +PASS History interface: calling pushState(any, DOMString, optional USVString?) on window.history with too few arguments must throw TypeError +PASS History interface: window.history must inherit property "replaceState(any, DOMString, optional USVString?)" with the proper type +PASS History interface: calling replaceState(any, DOMString, optional USVString?) on window.history with too few arguments must throw TypeError +PASS Location interface: existence and properties of interface object +PASS Location interface object length +PASS Location interface object name +PASS Location interface: existence and properties of interface prototype object +PASS Location interface: existence and properties of interface prototype object's "constructor" property +PASS Location interface: existence and properties of interface prototype object's @@unscopables property +FAIL Location interface: stringifier assert_own_property: interface prototype object missing non-static operation expected property "toString" missing +PASS Location must be primary interface of window.location +PASS Stringification of window.location +PASS Location interface: window.location must have own property "href" +PASS Location interface: window.location must have own property "origin" +PASS Location interface: window.location must have own property "protocol" +PASS Location interface: window.location must have own property "host" +PASS Location interface: window.location must have own property "hostname" +PASS Location interface: window.location must have own property "port" +PASS Location interface: window.location must have own property "pathname" +PASS Location interface: window.location must have own property "search" +PASS Location interface: window.location must have own property "hash" +PASS Location interface: window.location must have own property "assign" +PASS Location interface: calling assign(USVString) on window.location with too few arguments must throw TypeError +PASS Location interface: window.location must have own property "replace" +PASS Location interface: calling replace(USVString) on window.location with too few arguments must throw TypeError +PASS Location interface: window.location must have own property "reload" +PASS Location interface: window.location must have own property "ancestorOrigins" +PASS PopStateEvent interface: existence and properties of interface object +PASS PopStateEvent interface object length +PASS PopStateEvent interface object name +PASS PopStateEvent interface: existence and properties of interface prototype object +PASS PopStateEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PopStateEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS PopStateEvent interface: attribute state +PASS PopStateEvent must be primary interface of new PopStateEvent("popstate", { data: {} }) +PASS Stringification of new PopStateEvent("popstate", { data: {} }) +PASS PopStateEvent interface: new PopStateEvent("popstate", { data: {} }) must inherit property "state" with the proper type +PASS HashChangeEvent interface: existence and properties of interface object +PASS HashChangeEvent interface object length +PASS HashChangeEvent interface object name +PASS HashChangeEvent interface: existence and properties of interface prototype object +PASS HashChangeEvent interface: existence and properties of interface prototype object's "constructor" property +PASS HashChangeEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS HashChangeEvent interface: attribute oldURL +PASS HashChangeEvent interface: attribute newURL +PASS PageTransitionEvent interface: existence and properties of interface object +PASS PageTransitionEvent interface object length +PASS PageTransitionEvent interface object name +PASS PageTransitionEvent interface: existence and properties of interface prototype object +PASS PageTransitionEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PageTransitionEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS PageTransitionEvent interface: attribute persisted +PASS BeforeUnloadEvent interface: existence and properties of interface object +PASS BeforeUnloadEvent interface object length +PASS BeforeUnloadEvent interface object name +PASS BeforeUnloadEvent interface: existence and properties of interface prototype object +PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's "constructor" property +PASS BeforeUnloadEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS BeforeUnloadEvent interface: attribute returnValue +FAIL ApplicationCache interface: existence and properties of interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface object length assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface object name assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: existence and properties of interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant UNCACHED on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant UNCACHED on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant IDLE on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant IDLE on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant CHECKING on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant CHECKING on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant DOWNLOADING on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant DOWNLOADING on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant UPDATEREADY on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant UPDATEREADY on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant OBSOLETE on interface object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: constant OBSOLETE on interface prototype object assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute status assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: operation update() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: operation abort() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: operation swapCache() assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onchecking assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onerror assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onnoupdate assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute ondownloading assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onprogress assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onupdateready assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute oncached assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache interface: attribute onobsolete assert_own_property: self does not have own property "ApplicationCache" expected property "ApplicationCache" missing +FAIL ApplicationCache must be primary interface of window.applicationCache assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL Stringification of window.applicationCache assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +PASS ErrorEvent interface: existence and properties of interface object +PASS ErrorEvent interface object length +PASS ErrorEvent interface object name +PASS ErrorEvent interface: existence and properties of interface prototype object +PASS ErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS ErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS ErrorEvent interface: attribute message +PASS ErrorEvent interface: attribute filename +PASS ErrorEvent interface: attribute lineno +PASS ErrorEvent interface: attribute colno +PASS ErrorEvent interface: attribute error +PASS PromiseRejectionEvent interface: existence and properties of interface object +PASS PromiseRejectionEvent interface object length +PASS PromiseRejectionEvent interface object name +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS PromiseRejectionEvent interface: attribute promise +PASS PromiseRejectionEvent interface: attribute reason +PASS DOMParser interface: existence and properties of interface object +PASS DOMParser interface object length +PASS DOMParser interface object name +PASS DOMParser interface: existence and properties of interface prototype object +PASS DOMParser interface: existence and properties of interface prototype object's "constructor" property +PASS DOMParser interface: existence and properties of interface prototype object's @@unscopables property +PASS DOMParser interface: operation parseFromString(DOMString, DOMParserSupportedType) +PASS DOMParser must be primary interface of new DOMParser() +PASS Stringification of new DOMParser() +PASS DOMParser interface: new DOMParser() must inherit property "parseFromString(DOMString, DOMParserSupportedType)" with the proper type +PASS DOMParser interface: calling parseFromString(DOMString, DOMParserSupportedType) on new DOMParser() with too few arguments must throw TypeError +PASS Navigator interface: existence and properties of interface object +PASS Navigator interface object length +PASS Navigator interface object name +PASS Navigator interface: existence and properties of interface prototype object +PASS Navigator interface: existence and properties of interface prototype object's "constructor" property +PASS Navigator interface: existence and properties of interface prototype object's @@unscopables property +PASS Navigator interface: attribute appCodeName +PASS Navigator interface: attribute appName +PASS Navigator interface: attribute appVersion +PASS Navigator interface: attribute platform +PASS Navigator interface: attribute product +PASS Navigator interface: attribute productSub +PASS Navigator interface: attribute userAgent +PASS Navigator interface: attribute vendor +PASS Navigator interface: attribute vendorSub +FAIL Navigator interface: operation taintEnabled() assert_own_property: interface prototype object missing non-static operation expected property "taintEnabled" missing +FAIL Navigator interface: attribute oscpu assert_true: The prototype object must have a property "oscpu" expected true got false +PASS Navigator interface: attribute language +PASS Navigator interface: attribute languages +PASS Navigator interface: attribute onLine +PASS Navigator interface: operation registerProtocolHandler(DOMString, USVString) +PASS Navigator interface: operation unregisterProtocolHandler(DOMString, USVString) +PASS Navigator interface: attribute cookieEnabled +PASS Navigator interface: attribute plugins +PASS Navigator interface: attribute mimeTypes +PASS Navigator interface: operation javaEnabled() +PASS Navigator interface: attribute hardwareConcurrency +PASS Navigator must be primary interface of window.navigator +PASS Stringification of window.navigator +PASS Navigator interface: window.navigator must inherit property "appCodeName" with the proper type +PASS Navigator interface: window.navigator must inherit property "appName" with the proper type +PASS Navigator interface: window.navigator must inherit property "appVersion" with the proper type +PASS Navigator interface: window.navigator must inherit property "platform" with the proper type +PASS Navigator interface: window.navigator must inherit property "product" with the proper type +PASS Navigator interface: window.navigator must inherit property "productSub" with the proper type +PASS Navigator interface: window.navigator must inherit property "userAgent" with the proper type +PASS Navigator interface: window.navigator must inherit property "vendor" with the proper type +PASS Navigator interface: window.navigator must inherit property "vendorSub" with the proper type +FAIL Navigator interface: window.navigator must inherit property "taintEnabled()" with the proper type assert_inherits: property "taintEnabled" not found in prototype chain +FAIL Navigator interface: window.navigator must inherit property "oscpu" with the proper type assert_inherits: property "oscpu" not found in prototype chain +PASS Navigator interface: window.navigator must inherit property "language" with the proper type +PASS Navigator interface: window.navigator must inherit property "languages" with the proper type +PASS Navigator interface: window.navigator must inherit property "onLine" with the proper type +PASS Navigator interface: window.navigator must inherit property "registerProtocolHandler(DOMString, USVString)" with the proper type +PASS Navigator interface: calling registerProtocolHandler(DOMString, USVString) on window.navigator with too few arguments must throw TypeError +PASS Navigator interface: window.navigator must inherit property "unregisterProtocolHandler(DOMString, USVString)" with the proper type +PASS Navigator interface: calling unregisterProtocolHandler(DOMString, USVString) on window.navigator with too few arguments must throw TypeError +PASS Navigator interface: window.navigator must inherit property "cookieEnabled" with the proper type +PASS Navigator interface: window.navigator must inherit property "plugins" with the proper type +PASS Navigator interface: window.navigator must inherit property "mimeTypes" with the proper type +PASS Navigator interface: window.navigator must inherit property "javaEnabled()" with the proper type +PASS Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type +PASS PluginArray interface: existence and properties of interface object +PASS PluginArray interface object length +PASS PluginArray interface object name +PASS PluginArray interface: existence and properties of interface prototype object +PASS PluginArray interface: existence and properties of interface prototype object's "constructor" property +PASS PluginArray interface: existence and properties of interface prototype object's @@unscopables property +PASS PluginArray interface: operation refresh(optional boolean) +PASS PluginArray interface: attribute length +PASS PluginArray interface: operation item(unsigned long) +PASS PluginArray interface: operation namedItem(DOMString) +PASS MimeTypeArray interface: existence and properties of interface object +PASS MimeTypeArray interface object length +PASS MimeTypeArray interface object name +PASS MimeTypeArray interface: existence and properties of interface prototype object +PASS MimeTypeArray interface: existence and properties of interface prototype object's "constructor" property +PASS MimeTypeArray interface: existence and properties of interface prototype object's @@unscopables property +PASS MimeTypeArray interface: attribute length +PASS MimeTypeArray interface: operation item(unsigned long) +PASS MimeTypeArray interface: operation namedItem(DOMString) +PASS Plugin interface: existence and properties of interface object +PASS Plugin interface object length +PASS Plugin interface object name +PASS Plugin interface: existence and properties of interface prototype object +PASS Plugin interface: existence and properties of interface prototype object's "constructor" property +PASS Plugin interface: existence and properties of interface prototype object's @@unscopables property +PASS Plugin interface: attribute name +PASS Plugin interface: attribute description +PASS Plugin interface: attribute filename +PASS Plugin interface: attribute length +PASS Plugin interface: operation item(unsigned long) +PASS Plugin interface: operation namedItem(DOMString) +PASS MimeType interface: existence and properties of interface object +PASS MimeType interface object length +PASS MimeType interface object name +PASS MimeType interface: existence and properties of interface prototype object +PASS MimeType interface: existence and properties of interface prototype object's "constructor" property +PASS MimeType interface: existence and properties of interface prototype object's @@unscopables property +PASS MimeType interface: attribute type +PASS MimeType interface: attribute description +PASS MimeType interface: attribute suffixes +PASS MimeType interface: attribute enabledPlugin +PASS ImageBitmap interface: existence and properties of interface object +PASS ImageBitmap interface object length +PASS ImageBitmap interface object name +PASS ImageBitmap interface: existence and properties of interface prototype object +PASS ImageBitmap interface: existence and properties of interface prototype object's "constructor" property +PASS ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageBitmap interface: attribute width +PASS ImageBitmap interface: attribute height +PASS ImageBitmap interface: operation close() +PASS MessageEvent interface: existence and properties of interface object +PASS MessageEvent interface object length +PASS MessageEvent interface object name +PASS MessageEvent interface: existence and properties of interface prototype object +PASS MessageEvent interface: existence and properties of interface prototype object's "constructor" property +PASS MessageEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS MessageEvent interface: attribute data +PASS MessageEvent interface: attribute origin +PASS MessageEvent interface: attribute lastEventId +PASS MessageEvent interface: attribute source +PASS MessageEvent interface: attribute ports +PASS MessageEvent interface: operation initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>) +PASS MessageEvent must be primary interface of new MessageEvent("message", { data: 5 }) +PASS Stringification of new MessageEvent("message", { data: 5 }) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>)" with the proper type +PASS MessageEvent interface: calling initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError +PASS EventSource interface: existence and properties of interface object +PASS EventSource interface object length +PASS EventSource interface object name +PASS EventSource interface: existence and properties of interface prototype object +PASS EventSource interface: existence and properties of interface prototype object's "constructor" property +PASS EventSource interface: existence and properties of interface prototype object's @@unscopables property +PASS EventSource interface: attribute url +PASS EventSource interface: attribute withCredentials +PASS EventSource interface: constant CONNECTING on interface object +PASS EventSource interface: constant CONNECTING on interface prototype object +PASS EventSource interface: constant OPEN on interface object +PASS EventSource interface: constant OPEN on interface prototype object +PASS EventSource interface: constant CLOSED on interface object +PASS EventSource interface: constant CLOSED on interface prototype object +PASS EventSource interface: attribute readyState +PASS EventSource interface: attribute onopen +PASS EventSource interface: attribute onmessage +PASS EventSource interface: attribute onerror +PASS EventSource interface: operation close() +PASS EventSource must be primary interface of new EventSource("http://invalid") +PASS Stringification of new EventSource("http://invalid") +PASS EventSource interface: new EventSource("http://invalid") must inherit property "url" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "withCredentials" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "CONNECTING" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "OPEN" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "CLOSED" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "readyState" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onopen" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onmessage" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onerror" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "close()" with the proper type +PASS WebSocket interface: existence and properties of interface object +PASS WebSocket interface object length +PASS WebSocket interface object name +PASS WebSocket interface: existence and properties of interface prototype object +PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property +PASS WebSocket interface: existence and properties of interface prototype object's @@unscopables property +PASS WebSocket interface: attribute url +PASS WebSocket interface: constant CONNECTING on interface object +PASS WebSocket interface: constant CONNECTING on interface prototype object +PASS WebSocket interface: constant OPEN on interface object +PASS WebSocket interface: constant OPEN on interface prototype object +PASS WebSocket interface: constant CLOSING on interface object +PASS WebSocket interface: constant CLOSING on interface prototype object +PASS WebSocket interface: constant CLOSED on interface object +PASS WebSocket interface: constant CLOSED on interface prototype object +PASS WebSocket interface: attribute readyState +PASS WebSocket interface: attribute bufferedAmount +PASS WebSocket interface: attribute onopen +PASS WebSocket interface: attribute onerror +PASS WebSocket interface: attribute onclose +PASS WebSocket interface: attribute extensions +PASS WebSocket interface: attribute protocol +PASS WebSocket interface: operation close(optional unsigned short, optional USVString) +PASS WebSocket interface: attribute onmessage +PASS WebSocket interface: attribute binaryType +PASS WebSocket interface: operation send(USVString) +PASS WebSocket interface: operation send(Blob) +PASS WebSocket interface: operation send(ArrayBuffer) +PASS WebSocket interface: operation send(ArrayBufferView) +PASS WebSocket must be primary interface of new WebSocket("wss://nonexistent.web-platform.test") +PASS Stringification of new WebSocket("wss://nonexistent.web-platform.test") +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "url" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CONNECTING" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "OPEN" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CLOSING" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "CLOSED" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "readyState" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "bufferedAmount" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onopen" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onerror" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onclose" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "extensions" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "protocol" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "close(optional unsigned short, optional USVString)" with the proper type +PASS WebSocket interface: calling close(optional unsigned short, optional USVString) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "onmessage" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "binaryType" with the proper type +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(USVString)" with the proper type +PASS WebSocket interface: calling send(USVString) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(Blob)" with the proper type +PASS WebSocket interface: calling send(Blob) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(ArrayBuffer)" with the proper type +PASS WebSocket interface: calling send(ArrayBuffer) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("wss://nonexistent.web-platform.test") must inherit property "send(ArrayBufferView)" with the proper type +PASS WebSocket interface: calling send(ArrayBufferView) on new WebSocket("wss://nonexistent.web-platform.test") with too few arguments must throw TypeError +PASS CloseEvent interface: existence and properties of interface object +PASS CloseEvent interface object length +PASS CloseEvent interface object name +PASS CloseEvent interface: existence and properties of interface prototype object +PASS CloseEvent interface: existence and properties of interface prototype object's "constructor" property +PASS CloseEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS CloseEvent interface: attribute wasClean +PASS CloseEvent interface: attribute code +PASS CloseEvent interface: attribute reason +PASS CloseEvent must be primary interface of new CloseEvent("close") +PASS Stringification of new CloseEvent("close") +PASS CloseEvent interface: new CloseEvent("close") must inherit property "wasClean" with the proper type +PASS CloseEvent interface: new CloseEvent("close") must inherit property "code" with the proper type +PASS CloseEvent interface: new CloseEvent("close") must inherit property "reason" with the proper type +PASS MessageChannel interface: existence and properties of interface object +PASS MessageChannel interface object length +PASS MessageChannel interface object name +PASS MessageChannel interface: existence and properties of interface prototype object +PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property +PASS MessageChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS MessageChannel interface: attribute port1 +PASS MessageChannel interface: attribute port2 +PASS MessagePort interface: existence and properties of interface object +PASS MessagePort interface object length +PASS MessagePort interface object name +PASS MessagePort interface: existence and properties of interface prototype object +PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property +PASS MessagePort interface: existence and properties of interface prototype object's @@unscopables property +PASS MessagePort interface: operation postMessage(any, sequence<object>) +PASS MessagePort interface: operation postMessage(any, optional PostMessageOptions) +PASS MessagePort interface: operation start() +PASS MessagePort interface: operation close() +PASS MessagePort interface: attribute onmessage +PASS MessagePort interface: attribute onmessageerror +PASS BroadcastChannel interface: existence and properties of interface object +PASS BroadcastChannel interface object length +PASS BroadcastChannel interface object name +PASS BroadcastChannel interface: existence and properties of interface prototype object +PASS BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property +PASS BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS BroadcastChannel interface: attribute name +PASS BroadcastChannel interface: operation postMessage(any) +PASS BroadcastChannel interface: operation close() +PASS BroadcastChannel interface: attribute onmessage +PASS BroadcastChannel interface: attribute onmessageerror +PASS WorkerGlobalScope interface: existence and properties of interface object +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface object +PASS SharedWorkerGlobalScope interface: existence and properties of interface object +PASS Worker interface: existence and properties of interface object +PASS Worker interface object length +PASS Worker interface object name +PASS Worker interface: existence and properties of interface prototype object +PASS Worker interface: existence and properties of interface prototype object's "constructor" property +PASS Worker interface: existence and properties of interface prototype object's @@unscopables property +PASS Worker interface: operation terminate() +PASS Worker interface: operation postMessage(any, sequence<object>) +PASS Worker interface: operation postMessage(any, optional PostMessageOptions) +PASS Worker interface: attribute onmessage +FAIL Worker interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false +PASS Worker interface: attribute onerror +PASS SharedWorker interface: existence and properties of interface object +PASS SharedWorker interface object length +PASS SharedWorker interface object name +PASS SharedWorker interface: existence and properties of interface prototype object +PASS SharedWorker interface: existence and properties of interface prototype object's "constructor" property +PASS SharedWorker interface: existence and properties of interface prototype object's @@unscopables property +PASS SharedWorker interface: attribute port +PASS SharedWorker interface: attribute onerror +PASS WorkerNavigator interface: existence and properties of interface object +PASS WorkerLocation interface: existence and properties of interface object +PASS WorkletGlobalScope interface: existence and properties of interface object +PASS Worklet interface: existence and properties of interface object +PASS Worklet interface object length +PASS Worklet interface object name +PASS Worklet interface: existence and properties of interface prototype object +PASS Worklet interface: existence and properties of interface prototype object's "constructor" property +PASS Worklet interface: existence and properties of interface prototype object's @@unscopables property +PASS Worklet interface: operation addModule(USVString, optional WorkletOptions) +PASS Storage interface: existence and properties of interface object +PASS Storage interface object length +PASS Storage interface object name +PASS Storage interface: existence and properties of interface prototype object +PASS Storage interface: existence and properties of interface prototype object's "constructor" property +PASS Storage interface: existence and properties of interface prototype object's @@unscopables property +PASS Storage interface: attribute length +PASS Storage interface: operation key(unsigned long) +PASS Storage interface: operation getItem(DOMString) +PASS Storage interface: operation setItem(DOMString, DOMString) +PASS Storage interface: operation removeItem(DOMString) +PASS Storage interface: operation clear() +PASS Storage must be primary interface of localStorage +PASS Stringification of localStorage +PASS Storage interface: localStorage must inherit property "length" with the proper type +PASS Storage interface: localStorage must inherit property "key(unsigned long)" with the proper type +PASS Storage interface: calling key(unsigned long) on localStorage with too few arguments must throw TypeError +PASS Storage interface: localStorage must inherit property "getItem(DOMString)" with the proper type +PASS Storage interface: calling getItem(DOMString) on localStorage with too few arguments must throw TypeError +PASS Storage interface: localStorage must inherit property "setItem(DOMString, DOMString)" with the proper type +PASS Storage interface: calling setItem(DOMString, DOMString) on localStorage with too few arguments must throw TypeError +PASS Storage interface: localStorage must inherit property "removeItem(DOMString)" with the proper type +PASS Storage interface: calling removeItem(DOMString) on localStorage with too few arguments must throw TypeError +PASS Storage interface: localStorage must inherit property "clear()" with the proper type +PASS Storage must be primary interface of sessionStorage +PASS Stringification of sessionStorage +PASS Storage interface: sessionStorage must inherit property "length" with the proper type +PASS Storage interface: sessionStorage must inherit property "key(unsigned long)" with the proper type +PASS Storage interface: calling key(unsigned long) on sessionStorage with too few arguments must throw TypeError +PASS Storage interface: sessionStorage must inherit property "getItem(DOMString)" with the proper type +PASS Storage interface: calling getItem(DOMString) on sessionStorage with too few arguments must throw TypeError +PASS Storage interface: sessionStorage must inherit property "setItem(DOMString, DOMString)" with the proper type +PASS Storage interface: calling setItem(DOMString, DOMString) on sessionStorage with too few arguments must throw TypeError +PASS Storage interface: sessionStorage must inherit property "removeItem(DOMString)" with the proper type +PASS Storage interface: calling removeItem(DOMString) on sessionStorage with too few arguments must throw TypeError +PASS Storage interface: sessionStorage must inherit property "clear()" with the proper type +PASS StorageEvent interface: existence and properties of interface object +PASS StorageEvent interface object length +PASS StorageEvent interface object name +PASS StorageEvent interface: existence and properties of interface prototype object +PASS StorageEvent interface: existence and properties of interface prototype object's "constructor" property +PASS StorageEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS StorageEvent interface: attribute key +PASS StorageEvent interface: attribute oldValue +PASS StorageEvent interface: attribute newValue +PASS StorageEvent interface: attribute url +PASS StorageEvent interface: attribute storageArea +PASS StorageEvent interface: operation initStorageEvent(DOMString, optional boolean, optional boolean, optional DOMString?, optional DOMString?, optional DOMString?, optional USVString, optional Storage?) +PASS StorageEvent must be primary interface of new StorageEvent("storage") +PASS Stringification of new StorageEvent("storage") +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "key" with the proper type +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "oldValue" with the proper type +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "newValue" with the proper type +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "url" with the proper type +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "storageArea" with the proper type +PASS StorageEvent interface: new StorageEvent("storage") must inherit property "initStorageEvent(DOMString, optional boolean, optional boolean, optional DOMString?, optional DOMString?, optional DOMString?, optional USVString, optional Storage?)" with the proper type +PASS StorageEvent interface: calling initStorageEvent(DOMString, optional boolean, optional boolean, optional DOMString?, optional DOMString?, optional DOMString?, optional USVString, optional Storage?) on new StorageEvent("storage") with too few arguments must throw TypeError +PASS External interface: existence and properties of interface object +PASS External interface object length +PASS External interface object name +PASS External interface: existence and properties of interface prototype object +PASS External interface: existence and properties of interface prototype object's "constructor" property +PASS External interface: existence and properties of interface prototype object's @@unscopables property +PASS External interface: operation AddSearchProvider() +PASS External interface: operation IsSearchProviderInstalled() +PASS External must be primary interface of window.external +PASS Stringification of window.external +PASS External interface: window.external must inherit property "AddSearchProvider()" with the proper type +PASS External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type +PASS SVGElement interface: attribute onabort +PASS SVGElement interface: attribute onauxclick +PASS SVGElement interface: attribute onblur +PASS SVGElement interface: attribute oncancel +PASS SVGElement interface: attribute oncanplay +PASS SVGElement interface: attribute oncanplaythrough +PASS SVGElement interface: attribute onchange +PASS SVGElement interface: attribute onclick +PASS SVGElement interface: attribute onclose +PASS SVGElement interface: attribute oncontextmenu +PASS SVGElement interface: attribute oncuechange +PASS SVGElement interface: attribute ondblclick +PASS SVGElement interface: attribute ondrag +PASS SVGElement interface: attribute ondragend +PASS SVGElement interface: attribute ondragenter +PASS SVGElement interface: attribute ondragleave +PASS SVGElement interface: attribute ondragover +PASS SVGElement interface: attribute ondragstart +PASS SVGElement interface: attribute ondrop +PASS SVGElement interface: attribute ondurationchange +PASS SVGElement interface: attribute onemptied +PASS SVGElement interface: attribute onended +PASS SVGElement interface: attribute onerror +PASS SVGElement interface: attribute onfocus +PASS SVGElement interface: attribute onformdata +PASS SVGElement interface: attribute oninput +PASS SVGElement interface: attribute oninvalid +PASS SVGElement interface: attribute onkeydown +PASS SVGElement interface: attribute onkeypress +PASS SVGElement interface: attribute onkeyup +PASS SVGElement interface: attribute onload +PASS SVGElement interface: attribute onloadeddata +PASS SVGElement interface: attribute onloadedmetadata +PASS SVGElement interface: attribute onloadstart +PASS SVGElement interface: attribute onmousedown +PASS SVGElement interface: attribute onmouseenter +PASS SVGElement interface: attribute onmouseleave +PASS SVGElement interface: attribute onmousemove +PASS SVGElement interface: attribute onmouseout +PASS SVGElement interface: attribute onmouseover +PASS SVGElement interface: attribute onmouseup +PASS SVGElement interface: attribute onpause +PASS SVGElement interface: attribute onplay +PASS SVGElement interface: attribute onplaying +PASS SVGElement interface: attribute onprogress +PASS SVGElement interface: attribute onratechange +PASS SVGElement interface: attribute onreset +PASS SVGElement interface: attribute onresize +PASS SVGElement interface: attribute onscroll +FAIL SVGElement interface: attribute onsecuritypolicyviolation assert_true: The prototype object must have a property "onsecuritypolicyviolation" expected true got false +PASS SVGElement interface: attribute onseeked +PASS SVGElement interface: attribute onseeking +PASS SVGElement interface: attribute onselect +FAIL SVGElement interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false +PASS SVGElement interface: attribute onstalled +PASS SVGElement interface: attribute onsubmit +PASS SVGElement interface: attribute onsuspend +PASS SVGElement interface: attribute ontimeupdate +PASS SVGElement interface: attribute ontoggle +PASS SVGElement interface: attribute onvolumechange +PASS SVGElement interface: attribute onwaiting +PASS SVGElement interface: attribute onwebkitanimationend +PASS SVGElement interface: attribute onwebkitanimationiteration +PASS SVGElement interface: attribute onwebkitanimationstart +PASS SVGElement interface: attribute onwebkittransitionend +PASS SVGElement interface: attribute onwheel +PASS SVGElement interface: attribute oncopy +PASS SVGElement interface: attribute oncut +PASS SVGElement interface: attribute onpaste +PASS SVGElement interface: attribute dataset +PASS SVGElement interface: attribute nonce +PASS SVGElement interface: attribute autofocus +PASS SVGElement interface: attribute tabIndex +PASS SVGElement interface: operation focus(optional FocusOptions) +PASS SVGElement interface: operation blur() +FAIL SVGSVGElement interface: attribute onafterprint assert_true: The prototype object must have a property "onafterprint" expected true got false +FAIL SVGSVGElement interface: attribute onbeforeprint assert_true: The prototype object must have a property "onbeforeprint" expected true got false +FAIL SVGSVGElement interface: attribute onbeforeunload assert_true: The prototype object must have a property "onbeforeunload" expected true got false +FAIL SVGSVGElement interface: attribute onhashchange assert_true: The prototype object must have a property "onhashchange" expected true got false +FAIL SVGSVGElement interface: attribute onlanguagechange assert_true: The prototype object must have a property "onlanguagechange" expected true got false +FAIL SVGSVGElement interface: attribute onmessage assert_true: The prototype object must have a property "onmessage" expected true got false +FAIL SVGSVGElement interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false +FAIL SVGSVGElement interface: attribute onoffline assert_true: The prototype object must have a property "onoffline" expected true got false +FAIL SVGSVGElement interface: attribute ononline assert_true: The prototype object must have a property "ononline" expected true got false +FAIL SVGSVGElement interface: attribute onpagehide assert_true: The prototype object must have a property "onpagehide" expected true got false +FAIL SVGSVGElement interface: attribute onpageshow assert_true: The prototype object must have a property "onpageshow" expected true got false +FAIL SVGSVGElement interface: attribute onpopstate assert_true: The prototype object must have a property "onpopstate" expected true got false +FAIL SVGSVGElement interface: attribute onrejectionhandled assert_true: The prototype object must have a property "onrejectionhandled" expected true got false +FAIL SVGSVGElement interface: attribute onstorage assert_true: The prototype object must have a property "onstorage" expected true got false +FAIL SVGSVGElement interface: attribute onunhandledrejection assert_true: The prototype object must have a property "onunhandledrejection" expected true got false +FAIL SVGSVGElement interface: attribute onunload assert_true: The prototype object must have a property "onunload" expected true got false +PASS ShadowRoot interface: attribute activeElement +Harness: the test ran to completion. +
diff --git "a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" "b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt" new file mode 100644 index 0000000..d4fb556 --- /dev/null +++ "b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.https_include=\050Document_Window\051-expected.txt"
@@ -0,0 +1,969 @@ +This is a testharness.js-based test. +Found 965 tests; 954 PASS, 11 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Document: original interface defined +PASS Partial interface Document: member names are unique +PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined +PASS Partial interface mixin DocumentOrShadowRoot: member names are unique +PASS Partial interface mixin NavigatorID: original interface mixin defined +PASS Partial interface mixin NavigatorID: member names are unique +PASS Partial interface HTMLAnchorElement: original interface defined +PASS Partial interface HTMLAnchorElement: member names are unique +PASS Partial interface HTMLAreaElement: original interface defined +PASS Partial interface HTMLAreaElement: member names are unique +PASS Partial interface HTMLBodyElement: original interface defined +PASS Partial interface HTMLBodyElement: member names are unique +PASS Partial interface HTMLBRElement: original interface defined +PASS Partial interface HTMLBRElement: member names are unique +PASS Partial interface HTMLTableCaptionElement: original interface defined +PASS Partial interface HTMLTableCaptionElement: member names are unique +PASS Partial interface HTMLTableColElement: original interface defined +PASS Partial interface HTMLTableColElement: member names are unique +PASS Partial interface HTMLDivElement: original interface defined +PASS Partial interface HTMLDivElement: member names are unique +PASS Partial interface HTMLDListElement: original interface defined +PASS Partial interface HTMLDListElement: member names are unique +PASS Partial interface HTMLEmbedElement: original interface defined +PASS Partial interface HTMLEmbedElement: member names are unique +PASS Partial interface HTMLHeadingElement: original interface defined +PASS Partial interface HTMLHeadingElement: member names are unique +PASS Partial interface HTMLHRElement: original interface defined +PASS Partial interface HTMLHRElement: member names are unique +PASS Partial interface HTMLHtmlElement: original interface defined +PASS Partial interface HTMLHtmlElement: member names are unique +PASS Partial interface HTMLIFrameElement: original interface defined +PASS Partial interface HTMLIFrameElement: member names are unique +PASS Partial interface HTMLImageElement: original interface defined +PASS Partial interface HTMLImageElement: member names are unique +PASS Partial interface HTMLInputElement: original interface defined +PASS Partial interface HTMLInputElement: member names are unique +PASS Partial interface HTMLLegendElement: original interface defined +PASS Partial interface HTMLLegendElement: member names are unique +PASS Partial interface HTMLLIElement: original interface defined +PASS Partial interface HTMLLIElement: member names are unique +PASS Partial interface HTMLLinkElement: original interface defined +PASS Partial interface HTMLLinkElement: member names are unique +PASS Partial interface HTMLMenuElement: original interface defined +PASS Partial interface HTMLMenuElement: member names are unique +PASS Partial interface HTMLMetaElement: original interface defined +PASS Partial interface HTMLMetaElement: member names are unique +PASS Partial interface HTMLObjectElement: original interface defined +PASS Partial interface HTMLObjectElement: member names are unique +PASS Partial interface HTMLOListElement: original interface defined +PASS Partial interface HTMLOListElement: member names are unique +PASS Partial interface HTMLParagraphElement: original interface defined +PASS Partial interface HTMLParagraphElement: member names are unique +PASS Partial interface HTMLParamElement: original interface defined +PASS Partial interface HTMLParamElement: member names are unique +PASS Partial interface HTMLPreElement: original interface defined +PASS Partial interface HTMLPreElement: member names are unique +PASS Partial interface HTMLStyleElement: original interface defined +PASS Partial interface HTMLStyleElement: member names are unique +PASS Partial interface HTMLScriptElement: original interface defined +PASS Partial interface HTMLScriptElement: member names are unique +PASS Partial interface HTMLTableElement: original interface defined +PASS Partial interface HTMLTableElement: member names are unique +PASS Partial interface HTMLTableSectionElement: original interface defined +PASS Partial interface HTMLTableSectionElement: member names are unique +PASS Partial interface HTMLTableCellElement: original interface defined +PASS Partial interface HTMLTableCellElement: member names are unique +PASS Partial interface HTMLTableRowElement: original interface defined +PASS Partial interface HTMLTableRowElement: member names are unique +PASS Partial interface HTMLUListElement: original interface defined +PASS Partial interface HTMLUListElement: member names are unique +PASS Partial interface Document[2]: original interface defined +PASS Partial interface Document[2]: member names are unique +PASS Partial interface Window: original interface defined +PASS Partial interface Window: member names are unique +PASS Partial interface Document[3]: member names are unique +PASS Partial interface mixin DocumentOrShadowRoot[2]: member names are unique +PASS Partial interface UIEvent: member names are unique +PASS Document includes GlobalEventHandlers: member names are unique +PASS Document includes DocumentAndElementEventHandlers: member names are unique +PASS Document includes NonElementParentNode: member names are unique +PASS Document includes DocumentOrShadowRoot: member names are unique +PASS Document includes ParentNode: member names are unique +PASS Document includes XPathEvaluatorBase: member names are unique +PASS HTMLElement includes GlobalEventHandlers: member names are unique +PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique +PASS HTMLElement includes ElementContentEditable: member names are unique +PASS HTMLElement includes HTMLOrSVGElement: member names are unique +PASS HTMLElement includes ElementCSSInlineStyle: member names are unique +PASS HTMLLinkElement includes LinkStyle: member names are unique +PASS HTMLStyleElement includes LinkStyle: member names are unique +PASS HTMLBodyElement includes WindowEventHandlers: member names are unique +PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique +PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique +PASS CanvasRenderingContext2D includes CanvasState: member names are unique +PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS CanvasRenderingContext2D includes CanvasRect: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique +PASS CanvasRenderingContext2D includes CanvasText: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasPath: member names are unique +PASS Path2D includes CanvasPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique +PASS ElementInternals includes ARIAMixin: member names are unique +PASS Window includes GlobalEventHandlers: member names are unique +PASS Window includes WindowEventHandlers: member names are unique +PASS Window includes WindowOrWorkerGlobalScope: member names are unique +PASS Window includes AnimationFrameProvider: member names are unique +PASS Window includes WindowSessionStorage: member names are unique +PASS Window includes WindowLocalStorage: member names are unique +PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique +PASS Navigator includes NavigatorID: member names are unique +PASS Navigator includes NavigatorLanguage: member names are unique +PASS Navigator includes NavigatorOnLine: member names are unique +PASS Navigator includes NavigatorContentUtils: member names are unique +PASS Navigator includes NavigatorCookies: member names are unique +PASS Navigator includes NavigatorPlugins: member names are unique +PASS Navigator includes NavigatorConcurrentHardware: member names are unique +PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique +PASS Worker includes AbstractWorker: member names are unique +PASS SharedWorker includes AbstractWorker: member names are unique +PASS WorkerNavigator includes NavigatorID: member names are unique +PASS WorkerNavigator includes NavigatorLanguage: member names are unique +PASS WorkerNavigator includes NavigatorOnLine: member names are unique +PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique +PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique +PASS Element includes ARIAMixin: member names are unique +PASS Element includes ParentNode: member names are unique +PASS Element includes NonDocumentTypeChildNode: member names are unique +PASS Element includes ChildNode: member names are unique +PASS Element includes Slottable: member names are unique +PASS SVGElement includes GlobalEventHandlers: member names are unique +PASS SVGElement includes DocumentAndElementEventHandlers: member names are unique +PASS SVGElement includes SVGElementInstance: member names are unique +PASS SVGElement includes HTMLOrSVGElement: member names are unique +PASS SVGElement includes ElementCSSInlineStyle: member names are unique +PASS SVGGraphicsElement includes SVGTests: member names are unique +PASS SVGSVGElement includes SVGFitToViewBox: member names are unique +PASS SVGSVGElement includes WindowEventHandlers: member names are unique +PASS SVGImageElement includes SVGURIReference: member names are unique +PASS SVGScriptElement includes SVGURIReference: member names are unique +PASS SVGAElement includes SVGURIReference: member names are unique +FAIL SVGAElement includes HTMLHyperlinkElementUtils: member names are unique assert_true: member href is unique expected true got false +PASS DocumentFragment includes NonElementParentNode: member names are unique +PASS DocumentFragment includes ParentNode: member names are unique +PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique +PASS Window interface: existence and properties of interface object +PASS Window interface object length +PASS Window interface object name +PASS Window interface: existence and properties of interface prototype object +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true +PASS Window interface: existence and properties of interface prototype object's "constructor" property +PASS Window interface: existence and properties of interface prototype object's @@unscopables property +PASS Window interface: attribute self +PASS Window interface: attribute name +PASS Window interface: attribute history +PASS Window interface: attribute customElements +PASS Window interface: attribute locationbar +PASS Window interface: attribute menubar +PASS Window interface: attribute personalbar +PASS Window interface: attribute scrollbars +PASS Window interface: attribute statusbar +PASS Window interface: attribute toolbar +PASS Window interface: attribute status +PASS Window interface: operation close() +PASS Window interface: attribute closed +PASS Window interface: operation stop() +PASS Window interface: operation focus() +PASS Window interface: operation blur() +PASS Window interface: attribute frames +PASS Window interface: attribute length +PASS Window interface: attribute opener +PASS Window interface: attribute parent +PASS Window interface: attribute frameElement +PASS Window interface: operation open(optional USVString, optional DOMString, optional DOMString) +PASS Window interface: attribute navigator +FAIL Window interface: attribute applicationCache assert_own_property: The global object must have a property "applicationCache" expected property "applicationCache" missing +PASS Window interface: attribute originIsolated +PASS Window interface: operation alert() +PASS Window interface: operation alert(DOMString) +PASS Window interface: operation confirm(optional DOMString) +PASS Window interface: operation prompt(optional DOMString, optional DOMString) +PASS Window interface: operation print() +PASS Window interface: operation postMessage(any, USVString, optional sequence<object>) +PASS Window interface: operation postMessage(any, optional WindowPostMessageOptions) +PASS Window interface: operation captureEvents() +PASS Window interface: operation releaseEvents() +PASS Window interface: attribute external +PASS Window interface: attribute onabort +PASS Window interface: attribute onauxclick +PASS Window interface: attribute onblur +PASS Window interface: attribute oncancel +PASS Window interface: attribute oncanplay +PASS Window interface: attribute oncanplaythrough +PASS Window interface: attribute onchange +PASS Window interface: attribute onclick +PASS Window interface: attribute onclose +PASS Window interface: attribute oncontextmenu +PASS Window interface: attribute oncuechange +PASS Window interface: attribute ondblclick +PASS Window interface: attribute ondrag +PASS Window interface: attribute ondragend +PASS Window interface: attribute ondragenter +PASS Window interface: attribute ondragleave +PASS Window interface: attribute ondragover +PASS Window interface: attribute ondragstart +PASS Window interface: attribute ondrop +PASS Window interface: attribute ondurationchange +PASS Window interface: attribute onemptied +PASS Window interface: attribute onended +PASS Window interface: attribute onerror +PASS Window interface: attribute onfocus +PASS Window interface: attribute onformdata +PASS Window interface: attribute oninput +PASS Window interface: attribute oninvalid +PASS Window interface: attribute onkeydown +PASS Window interface: attribute onkeypress +PASS Window interface: attribute onkeyup +PASS Window interface: attribute onload +PASS Window interface: attribute onloadeddata +PASS Window interface: attribute onloadedmetadata +PASS Window interface: attribute onloadstart +PASS Window interface: attribute onmousedown +PASS Window interface: attribute onmouseenter +PASS Window interface: attribute onmouseleave +PASS Window interface: attribute onmousemove +PASS Window interface: attribute onmouseout +PASS Window interface: attribute onmouseover +PASS Window interface: attribute onmouseup +PASS Window interface: attribute onpause +PASS Window interface: attribute onplay +PASS Window interface: attribute onplaying +PASS Window interface: attribute onprogress +PASS Window interface: attribute onratechange +PASS Window interface: attribute onreset +PASS Window interface: attribute onresize +PASS Window interface: attribute onscroll +FAIL Window interface: attribute onsecuritypolicyviolation assert_own_property: The global object must have a property "onsecuritypolicyviolation" expected property "onsecuritypolicyviolation" missing +PASS Window interface: attribute onseeked +PASS Window interface: attribute onseeking +PASS Window interface: attribute onselect +FAIL Window interface: attribute onslotchange assert_own_property: The global object must have a property "onslotchange" expected property "onslotchange" missing +PASS Window interface: attribute onstalled +PASS Window interface: attribute onsubmit +PASS Window interface: attribute onsuspend +PASS Window interface: attribute ontimeupdate +PASS Window interface: attribute ontoggle +PASS Window interface: attribute onvolumechange +PASS Window interface: attribute onwaiting +PASS Window interface: attribute onwebkitanimationend +PASS Window interface: attribute onwebkitanimationiteration +PASS Window interface: attribute onwebkitanimationstart +PASS Window interface: attribute onwebkittransitionend +PASS Window interface: attribute onwheel +PASS Window interface: attribute onafterprint +PASS Window interface: attribute onbeforeprint +PASS Window interface: attribute onbeforeunload +PASS Window interface: attribute onhashchange +PASS Window interface: attribute onlanguagechange +PASS Window interface: attribute onmessage +PASS Window interface: attribute onmessageerror +PASS Window interface: attribute onoffline +PASS Window interface: attribute ononline +PASS Window interface: attribute onpagehide +PASS Window interface: attribute onpageshow +PASS Window interface: attribute onpopstate +PASS Window interface: attribute onrejectionhandled +PASS Window interface: attribute onstorage +PASS Window interface: attribute onunhandledrejection +PASS Window interface: attribute onunload +PASS Window interface: attribute origin +PASS Window interface: attribute isSecureContext +PASS Window interface: attribute crossOriginIsolated +PASS Window interface: operation btoa(DOMString) +PASS Window interface: operation atob(DOMString) +PASS Window interface: operation setTimeout(TimerHandler, optional long, any...) +PASS Window interface: operation clearTimeout(optional long) +PASS Window interface: operation setInterval(TimerHandler, optional long, any...) +PASS Window interface: operation clearInterval(optional long) +PASS Window interface: operation queueMicrotask(VoidFunction) +PASS Window interface: operation createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) +PASS Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) +PASS Window interface: operation requestAnimationFrame(FrameRequestCallback) +PASS Window interface: operation cancelAnimationFrame(unsigned long) +PASS Window interface: attribute sessionStorage +PASS Window interface: attribute localStorage +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw +PASS Window interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true +PASS Window must be primary interface of window +PASS Stringification of window +PASS Window interface: window must have own property "window" +PASS Window interface: window must inherit property "self" with the proper type +PASS Window interface: window must have own property "document" +PASS Window interface: window must inherit property "name" with the proper type +PASS Window interface: window must have own property "location" +PASS Window interface: window must inherit property "history" with the proper type +PASS Window interface: window must inherit property "customElements" with the proper type +PASS Window interface: window must inherit property "locationbar" with the proper type +PASS Window interface: window must inherit property "menubar" with the proper type +PASS Window interface: window must inherit property "personalbar" with the proper type +PASS Window interface: window must inherit property "scrollbars" with the proper type +PASS Window interface: window must inherit property "statusbar" with the proper type +PASS Window interface: window must inherit property "toolbar" with the proper type +PASS Window interface: window must inherit property "status" with the proper type +PASS Window interface: window must inherit property "close()" with the proper type +PASS Window interface: window must inherit property "closed" with the proper type +PASS Window interface: window must inherit property "stop()" with the proper type +PASS Window interface: window must inherit property "focus()" with the proper type +PASS Window interface: window must inherit property "blur()" with the proper type +PASS Window interface: window must inherit property "frames" with the proper type +PASS Window interface: window must inherit property "length" with the proper type +PASS Window interface: window must have own property "top" +PASS Window interface: window must inherit property "opener" with the proper type +PASS Window interface: window must inherit property "parent" with the proper type +PASS Window interface: window must inherit property "frameElement" with the proper type +PASS Window interface: window must inherit property "open(optional USVString, optional DOMString, optional DOMString)" with the proper type +PASS Window interface: calling open(optional USVString, optional DOMString, optional DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "navigator" with the proper type +FAIL Window interface: window must inherit property "applicationCache" with the proper type assert_own_property: expected property "applicationCache" missing +PASS Window interface: window must inherit property "originIsolated" with the proper type +PASS Window interface: window must inherit property "alert()" with the proper type +PASS Window interface: window must inherit property "alert(DOMString)" with the proper type +PASS Window interface: calling alert(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "confirm(optional DOMString)" with the proper type +PASS Window interface: calling confirm(optional DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "prompt(optional DOMString, optional DOMString)" with the proper type +PASS Window interface: calling prompt(optional DOMString, optional DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "print()" with the proper type +PASS Window interface: window must inherit property "postMessage(any, USVString, optional sequence<object>)" with the proper type +PASS Window interface: calling postMessage(any, USVString, optional sequence<object>) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "postMessage(any, optional WindowPostMessageOptions)" with the proper type +PASS Window interface: calling postMessage(any, optional WindowPostMessageOptions) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "captureEvents()" with the proper type +PASS Window interface: window must inherit property "releaseEvents()" with the proper type +PASS Window interface: window must inherit property "external" with the proper type +PASS Window interface: window must inherit property "onabort" with the proper type +PASS Window interface: window must inherit property "onauxclick" with the proper type +PASS Window interface: window must inherit property "onblur" with the proper type +PASS Window interface: window must inherit property "oncancel" with the proper type +PASS Window interface: window must inherit property "oncanplay" with the proper type +PASS Window interface: window must inherit property "oncanplaythrough" with the proper type +PASS Window interface: window must inherit property "onchange" with the proper type +PASS Window interface: window must inherit property "onclick" with the proper type +PASS Window interface: window must inherit property "onclose" with the proper type +PASS Window interface: window must inherit property "oncontextmenu" with the proper type +PASS Window interface: window must inherit property "oncuechange" with the proper type +PASS Window interface: window must inherit property "ondblclick" with the proper type +PASS Window interface: window must inherit property "ondrag" with the proper type +PASS Window interface: window must inherit property "ondragend" with the proper type +PASS Window interface: window must inherit property "ondragenter" with the proper type +PASS Window interface: window must inherit property "ondragleave" with the proper type +PASS Window interface: window must inherit property "ondragover" with the proper type +PASS Window interface: window must inherit property "ondragstart" with the proper type +PASS Window interface: window must inherit property "ondrop" with the proper type +PASS Window interface: window must inherit property "ondurationchange" with the proper type +PASS Window interface: window must inherit property "onemptied" with the proper type +PASS Window interface: window must inherit property "onended" with the proper type +PASS Window interface: window must inherit property "onerror" with the proper type +PASS Window interface: window must inherit property "onfocus" with the proper type +PASS Window interface: window must inherit property "onformdata" with the proper type +PASS Window interface: window must inherit property "oninput" with the proper type +PASS Window interface: window must inherit property "oninvalid" with the proper type +PASS Window interface: window must inherit property "onkeydown" with the proper type +PASS Window interface: window must inherit property "onkeypress" with the proper type +PASS Window interface: window must inherit property "onkeyup" with the proper type +PASS Window interface: window must inherit property "onload" with the proper type +PASS Window interface: window must inherit property "onloadeddata" with the proper type +PASS Window interface: window must inherit property "onloadedmetadata" with the proper type +PASS Window interface: window must inherit property "onloadstart" with the proper type +PASS Window interface: window must inherit property "onmousedown" with the proper type +PASS Window interface: window must inherit property "onmouseenter" with the proper type +PASS Window interface: window must inherit property "onmouseleave" with the proper type +PASS Window interface: window must inherit property "onmousemove" with the proper type +PASS Window interface: window must inherit property "onmouseout" with the proper type +PASS Window interface: window must inherit property "onmouseover" with the proper type +PASS Window interface: window must inherit property "onmouseup" with the proper type +PASS Window interface: window must inherit property "onpause" with the proper type +PASS Window interface: window must inherit property "onplay" with the proper type +PASS Window interface: window must inherit property "onplaying" with the proper type +PASS Window interface: window must inherit property "onprogress" with the proper type +PASS Window interface: window must inherit property "onratechange" with the proper type +PASS Window interface: window must inherit property "onreset" with the proper type +PASS Window interface: window must inherit property "onresize" with the proper type +PASS Window interface: window must inherit property "onscroll" with the proper type +FAIL Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type assert_own_property: expected property "onsecuritypolicyviolation" missing +PASS Window interface: window must inherit property "onseeked" with the proper type +PASS Window interface: window must inherit property "onseeking" with the proper type +PASS Window interface: window must inherit property "onselect" with the proper type +FAIL Window interface: window must inherit property "onslotchange" with the proper type assert_own_property: expected property "onslotchange" missing +PASS Window interface: window must inherit property "onstalled" with the proper type +PASS Window interface: window must inherit property "onsubmit" with the proper type +PASS Window interface: window must inherit property "onsuspend" with the proper type +PASS Window interface: window must inherit property "ontimeupdate" with the proper type +PASS Window interface: window must inherit property "ontoggle" with the proper type +PASS Window interface: window must inherit property "onvolumechange" with the proper type +PASS Window interface: window must inherit property "onwaiting" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationend" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationiteration" with the proper type +PASS Window interface: window must inherit property "onwebkitanimationstart" with the proper type +PASS Window interface: window must inherit property "onwebkittransitionend" with the proper type +PASS Window interface: window must inherit property "onwheel" with the proper type +PASS Window interface: window must inherit property "onafterprint" with the proper type +PASS Window interface: window must inherit property "onbeforeprint" with the proper type +PASS Window interface: window must inherit property "onbeforeunload" with the proper type +PASS Window interface: window must inherit property "onhashchange" with the proper type +PASS Window interface: window must inherit property "onlanguagechange" with the proper type +PASS Window interface: window must inherit property "onmessage" with the proper type +PASS Window interface: window must inherit property "onmessageerror" with the proper type +PASS Window interface: window must inherit property "onoffline" with the proper type +PASS Window interface: window must inherit property "ononline" with the proper type +PASS Window interface: window must inherit property "onpagehide" with the proper type +PASS Window interface: window must inherit property "onpageshow" with the proper type +PASS Window interface: window must inherit property "onpopstate" with the proper type +PASS Window interface: window must inherit property "onrejectionhandled" with the proper type +PASS Window interface: window must inherit property "onstorage" with the proper type +PASS Window interface: window must inherit property "onunhandledrejection" with the proper type +PASS Window interface: window must inherit property "onunload" with the proper type +PASS Window interface: window must inherit property "origin" with the proper type +PASS Window interface: window must inherit property "isSecureContext" with the proper type +PASS Window interface: window must inherit property "crossOriginIsolated" with the proper type +PASS Window interface: window must inherit property "btoa(DOMString)" with the proper type +PASS Window interface: calling btoa(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "atob(DOMString)" with the proper type +PASS Window interface: calling atob(DOMString) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "setTimeout(TimerHandler, optional long, any...)" with the proper type +PASS Window interface: calling setTimeout(TimerHandler, optional long, any...) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "clearTimeout(optional long)" with the proper type +PASS Window interface: calling clearTimeout(optional long) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "setInterval(TimerHandler, optional long, any...)" with the proper type +PASS Window interface: calling setInterval(TimerHandler, optional long, any...) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "clearInterval(optional long)" with the proper type +PASS Window interface: calling clearInterval(optional long) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "queueMicrotask(VoidFunction)" with the proper type +PASS Window interface: calling queueMicrotask(VoidFunction) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)" with the proper type +PASS Window interface: calling createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)" with the proper type +PASS Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type +PASS Window interface: calling requestAnimationFrame(FrameRequestCallback) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "cancelAnimationFrame(unsigned long)" with the proper type +PASS Window interface: calling cancelAnimationFrame(unsigned long) on window with too few arguments must throw TypeError +PASS Window interface: window must inherit property "sessionStorage" with the proper type +PASS Window interface: window must inherit property "localStorage" with the proper type +PASS Document interface: attribute domain +PASS Document interface: attribute referrer +PASS Document interface: attribute cookie +PASS Document interface: attribute lastModified +PASS Document interface: attribute readyState +PASS Document interface: attribute title +PASS Document interface: attribute dir +PASS Document interface: attribute body +PASS Document interface: attribute head +PASS Document interface: attribute images +PASS Document interface: attribute embeds +PASS Document interface: attribute plugins +PASS Document interface: attribute links +PASS Document interface: attribute forms +PASS Document interface: attribute scripts +PASS Document interface: operation getElementsByName(DOMString) +PASS Document interface: attribute currentScript +PASS Document interface: operation open(optional DOMString, optional DOMString) +PASS Document interface: operation open(USVString, DOMString, DOMString) +PASS Document interface: operation close() +PASS Document interface: operation write(DOMString...) +PASS Document interface: operation writeln(DOMString...) +PASS Document interface: attribute defaultView +PASS Document interface: operation hasFocus() +PASS Document interface: attribute designMode +PASS Document interface: operation execCommand(DOMString, optional boolean, optional DOMString) +PASS Document interface: operation queryCommandEnabled(DOMString) +PASS Document interface: operation queryCommandIndeterm(DOMString) +PASS Document interface: operation queryCommandState(DOMString) +PASS Document interface: operation queryCommandSupported(DOMString) +PASS Document interface: operation queryCommandValue(DOMString) +PASS Document interface: attribute onreadystatechange +PASS Document interface: attribute fgColor +PASS Document interface: attribute linkColor +PASS Document interface: attribute vlinkColor +PASS Document interface: attribute alinkColor +PASS Document interface: attribute bgColor +PASS Document interface: attribute anchors +PASS Document interface: attribute applets +PASS Document interface: operation clear() +PASS Document interface: operation captureEvents() +PASS Document interface: operation releaseEvents() +PASS Document interface: attribute all +PASS Document interface: attribute onabort +PASS Document interface: attribute onauxclick +PASS Document interface: attribute onblur +PASS Document interface: attribute oncancel +PASS Document interface: attribute oncanplay +PASS Document interface: attribute oncanplaythrough +PASS Document interface: attribute onchange +PASS Document interface: attribute onclick +PASS Document interface: attribute onclose +PASS Document interface: attribute oncontextmenu +PASS Document interface: attribute oncuechange +PASS Document interface: attribute ondblclick +PASS Document interface: attribute ondrag +PASS Document interface: attribute ondragend +PASS Document interface: attribute ondragenter +PASS Document interface: attribute ondragleave +PASS Document interface: attribute ondragover +PASS Document interface: attribute ondragstart +PASS Document interface: attribute ondrop +PASS Document interface: attribute ondurationchange +PASS Document interface: attribute onemptied +PASS Document interface: attribute onended +PASS Document interface: attribute onerror +PASS Document interface: attribute onfocus +PASS Document interface: attribute onformdata +PASS Document interface: attribute oninput +PASS Document interface: attribute oninvalid +PASS Document interface: attribute onkeydown +PASS Document interface: attribute onkeypress +PASS Document interface: attribute onkeyup +PASS Document interface: attribute onload +PASS Document interface: attribute onloadeddata +PASS Document interface: attribute onloadedmetadata +PASS Document interface: attribute onloadstart +PASS Document interface: attribute onmousedown +PASS Document interface: attribute onmouseenter +PASS Document interface: attribute onmouseleave +PASS Document interface: attribute onmousemove +PASS Document interface: attribute onmouseout +PASS Document interface: attribute onmouseover +PASS Document interface: attribute onmouseup +PASS Document interface: attribute onpause +PASS Document interface: attribute onplay +PASS Document interface: attribute onplaying +PASS Document interface: attribute onprogress +PASS Document interface: attribute onratechange +PASS Document interface: attribute onreset +PASS Document interface: attribute onresize +PASS Document interface: attribute onscroll +PASS Document interface: attribute onsecuritypolicyviolation +PASS Document interface: attribute onseeked +PASS Document interface: attribute onseeking +PASS Document interface: attribute onselect +FAIL Document interface: attribute onslotchange assert_true: The prototype object must have a property "onslotchange" expected true got false +PASS Document interface: attribute onstalled +PASS Document interface: attribute onsubmit +PASS Document interface: attribute onsuspend +PASS Document interface: attribute ontimeupdate +PASS Document interface: attribute ontoggle +PASS Document interface: attribute onvolumechange +PASS Document interface: attribute onwaiting +PASS Document interface: attribute onwebkitanimationend +PASS Document interface: attribute onwebkitanimationiteration +PASS Document interface: attribute onwebkitanimationstart +PASS Document interface: attribute onwebkittransitionend +PASS Document interface: attribute onwheel +PASS Document interface: attribute oncopy +PASS Document interface: attribute oncut +PASS Document interface: attribute onpaste +PASS Document interface: attribute activeElement +PASS Document interface: iframe.contentDocument must have own property "location" +PASS Document interface: iframe.contentDocument must inherit property "domain" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "referrer" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "cookie" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "readyState" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "title" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "dir" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "body" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "head" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "images" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "embeds" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "plugins" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "links" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "forms" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "scripts" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "getElementsByName(DOMString)" with the proper type +PASS Document interface: calling getElementsByName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "currentScript" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "open(optional DOMString, optional DOMString)" with the proper type +PASS Document interface: calling open(optional DOMString, optional DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "open(USVString, DOMString, DOMString)" with the proper type +PASS Document interface: calling open(USVString, DOMString, DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "close()" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "write(DOMString...)" with the proper type +PASS Document interface: calling write(DOMString...) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "writeln(DOMString...)" with the proper type +PASS Document interface: calling writeln(DOMString...) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "hasFocus()" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "designMode" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, optional boolean, optional DOMString)" with the proper type +PASS Document interface: calling execCommand(DOMString, optional boolean, optional DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandEnabled(DOMString)" with the proper type +PASS Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm(DOMString)" with the proper type +PASS Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandState(DOMString)" with the proper type +PASS Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandSupported(DOMString)" with the proper type +PASS Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "queryCommandValue(DOMString)" with the proper type +PASS Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError +PASS Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "anchors" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "applets" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "clear()" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "captureEvents()" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "releaseEvents()" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "all" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onabort" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onblur" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onchange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onclick" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onclose" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onended" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onerror" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onformdata" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oninput" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onload" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onpause" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onplay" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onreset" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onresize" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onselect" with the proper type +FAIL Document interface: iframe.contentDocument must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain +PASS Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwebkitanimationend" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwebkitanimationiteration" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwebkitanimationstart" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwebkittransitionend" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onwheel" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "oncut" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type +PASS Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type +PASS Document interface: new Document() must have own property "location" +PASS Document interface: new Document() must inherit property "domain" with the proper type +PASS Document interface: new Document() must inherit property "referrer" with the proper type +PASS Document interface: new Document() must inherit property "cookie" with the proper type +PASS Document interface: new Document() must inherit property "lastModified" with the proper type +PASS Document interface: new Document() must inherit property "readyState" with the proper type +PASS Document interface: new Document() must inherit property "title" with the proper type +PASS Document interface: new Document() must inherit property "dir" with the proper type +PASS Document interface: new Document() must inherit property "body" with the proper type +PASS Document interface: new Document() must inherit property "head" with the proper type +PASS Document interface: new Document() must inherit property "images" with the proper type +PASS Document interface: new Document() must inherit property "embeds" with the proper type +PASS Document interface: new Document() must inherit property "plugins" with the proper type +PASS Document interface: new Document() must inherit property "links" with the proper type +PASS Document interface: new Document() must inherit property "forms" with the proper type +PASS Document interface: new Document() must inherit property "scripts" with the proper type +PASS Document interface: new Document() must inherit property "getElementsByName(DOMString)" with the proper type +PASS Document interface: calling getElementsByName(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "currentScript" with the proper type +PASS Document interface: new Document() must inherit property "open(optional DOMString, optional DOMString)" with the proper type +PASS Document interface: calling open(optional DOMString, optional DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "open(USVString, DOMString, DOMString)" with the proper type +PASS Document interface: calling open(USVString, DOMString, DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "close()" with the proper type +PASS Document interface: new Document() must inherit property "write(DOMString...)" with the proper type +PASS Document interface: calling write(DOMString...) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "writeln(DOMString...)" with the proper type +PASS Document interface: calling writeln(DOMString...) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "defaultView" with the proper type +PASS Document interface: new Document() must inherit property "hasFocus()" with the proper type +PASS Document interface: new Document() must inherit property "designMode" with the proper type +PASS Document interface: new Document() must inherit property "execCommand(DOMString, optional boolean, optional DOMString)" with the proper type +PASS Document interface: calling execCommand(DOMString, optional boolean, optional DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type +PASS Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type +PASS Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type +PASS Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type +PASS Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type +PASS Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError +PASS Document interface: new Document() must inherit property "onreadystatechange" with the proper type +PASS Document interface: new Document() must inherit property "fgColor" with the proper type +PASS Document interface: new Document() must inherit property "linkColor" with the proper type +PASS Document interface: new Document() must inherit property "vlinkColor" with the proper type +PASS Document interface: new Document() must inherit property "alinkColor" with the proper type +PASS Document interface: new Document() must inherit property "bgColor" with the proper type +PASS Document interface: new Document() must inherit property "anchors" with the proper type +PASS Document interface: new Document() must inherit property "applets" with the proper type +PASS Document interface: new Document() must inherit property "clear()" with the proper type +PASS Document interface: new Document() must inherit property "captureEvents()" with the proper type +PASS Document interface: new Document() must inherit property "releaseEvents()" with the proper type +PASS Document interface: new Document() must inherit property "all" with the proper type +PASS Document interface: new Document() must inherit property "onabort" with the proper type +PASS Document interface: new Document() must inherit property "onauxclick" with the proper type +PASS Document interface: new Document() must inherit property "onblur" with the proper type +PASS Document interface: new Document() must inherit property "oncancel" with the proper type +PASS Document interface: new Document() must inherit property "oncanplay" with the proper type +PASS Document interface: new Document() must inherit property "oncanplaythrough" with the proper type +PASS Document interface: new Document() must inherit property "onchange" with the proper type +PASS Document interface: new Document() must inherit property "onclick" with the proper type +PASS Document interface: new Document() must inherit property "onclose" with the proper type +PASS Document interface: new Document() must inherit property "oncontextmenu" with the proper type +PASS Document interface: new Document() must inherit property "oncuechange" with the proper type +PASS Document interface: new Document() must inherit property "ondblclick" with the proper type +PASS Document interface: new Document() must inherit property "ondrag" with the proper type +PASS Document interface: new Document() must inherit property "ondragend" with the proper type +PASS Document interface: new Document() must inherit property "ondragenter" with the proper type +PASS Document interface: new Document() must inherit property "ondragleave" with the proper type +PASS Document interface: new Document() must inherit property "ondragover" with the proper type +PASS Document interface: new Document() must inherit property "ondragstart" with the proper type +PASS Document interface: new Document() must inherit property "ondrop" with the proper type +PASS Document interface: new Document() must inherit property "ondurationchange" with the proper type +PASS Document interface: new Document() must inherit property "onemptied" with the proper type +PASS Document interface: new Document() must inherit property "onended" with the proper type +PASS Document interface: new Document() must inherit property "onerror" with the proper type +PASS Document interface: new Document() must inherit property "onfocus" with the proper type +PASS Document interface: new Document() must inherit property "onformdata" with the proper type +PASS Document interface: new Document() must inherit property "oninput" with the proper type +PASS Document interface: new Document() must inherit property "oninvalid" with the proper type +PASS Document interface: new Document() must inherit property "onkeydown" with the proper type +PASS Document interface: new Document() must inherit property "onkeypress" with the proper type +PASS Document interface: new Document() must inherit property "onkeyup" with the proper type +PASS Document interface: new Document() must inherit property "onload" with the proper type +PASS Document interface: new Document() must inherit property "onloadeddata" with the proper type +PASS Document interface: new Document() must inherit property "onloadedmetadata" with the proper type +PASS Document interface: new Document() must inherit property "onloadstart" with the proper type +PASS Document interface: new Document() must inherit property "onmousedown" with the proper type +PASS Document interface: new Document() must inherit property "onmouseenter" with the proper type +PASS Document interface: new Document() must inherit property "onmouseleave" with the proper type +PASS Document interface: new Document() must inherit property "onmousemove" with the proper type +PASS Document interface: new Document() must inherit property "onmouseout" with the proper type +PASS Document interface: new Document() must inherit property "onmouseover" with the proper type +PASS Document interface: new Document() must inherit property "onmouseup" with the proper type +PASS Document interface: new Document() must inherit property "onpause" with the proper type +PASS Document interface: new Document() must inherit property "onplay" with the proper type +PASS Document interface: new Document() must inherit property "onplaying" with the proper type +PASS Document interface: new Document() must inherit property "onprogress" with the proper type +PASS Document interface: new Document() must inherit property "onratechange" with the proper type +PASS Document interface: new Document() must inherit property "onreset" with the proper type +PASS Document interface: new Document() must inherit property "onresize" with the proper type +PASS Document interface: new Document() must inherit property "onscroll" with the proper type +PASS Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type +PASS Document interface: new Document() must inherit property "onseeked" with the proper type +PASS Document interface: new Document() must inherit property "onseeking" with the proper type +PASS Document interface: new Document() must inherit property "onselect" with the proper type +FAIL Document interface: new Document() must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" not found in prototype chain +PASS Document interface: new Document() must inherit property "onstalled" with the proper type +PASS Document interface: new Document() must inherit property "onsubmit" with the proper type +PASS Document interface: new Document() must inherit property "onsuspend" with the proper type +PASS Document interface: new Document() must inherit property "ontimeupdate" with the proper type +PASS Document interface: new Document() must inherit property "ontoggle" with the proper type +PASS Document interface: new Document() must inherit property "onvolumechange" with the proper type +PASS Document interface: new Document() must inherit property "onwaiting" with the proper type +PASS Document interface: new Document() must inherit property "onwebkitanimationend" with the proper type +PASS Document interface: new Document() must inherit property "onwebkitanimationiteration" with the proper type +PASS Document interface: new Document() must inherit property "onwebkitanimationstart" with the proper type +PASS Document interface: new Document() must inherit property "onwebkittransitionend" with the proper type +PASS Document interface: new Document() must inherit property "onwheel" with the proper type +PASS Document interface: new Document() must inherit property "oncopy" with the proper type +PASS Document interface: new Document() must inherit property "oncut" with the proper type +PASS Document interface: new Document() must inherit property "onpaste" with the proper type +PASS Document interface: new Document() must inherit property "activeElement" with the proper type +PASS Document interface: documentWithHandlers must have own property "location" +PASS Document interface: documentWithHandlers must inherit property "domain" with the proper type +PASS Document interface: documentWithHandlers must inherit property "referrer" with the proper type +PASS Document interface: documentWithHandlers must inherit property "cookie" with the proper type +PASS Document interface: documentWithHandlers must inherit property "lastModified" with the proper type +PASS Document interface: documentWithHandlers must inherit property "readyState" with the proper type +PASS Document interface: documentWithHandlers must inherit property "title" with the proper type +PASS Document interface: documentWithHandlers must inherit property "dir" with the proper type +PASS Document interface: documentWithHandlers must inherit property "body" with the proper type +PASS Document interface: documentWithHandlers must inherit property "head" with the proper type +PASS Document interface: documentWithHandlers must inherit property "images" with the proper type +PASS Document interface: documentWithHandlers must inherit property "embeds" with the proper type +PASS Document interface: documentWithHandlers must inherit property "plugins" with the proper type +PASS Document interface: documentWithHandlers must inherit property "links" with the proper type +PASS Document interface: documentWithHandlers must inherit property "forms" with the proper type +PASS Document interface: documentWithHandlers must inherit property "scripts" with the proper type +PASS Document interface: documentWithHandlers must inherit property "getElementsByName(DOMString)" with the proper type +PASS Document interface: calling getElementsByName(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "currentScript" with the proper type +PASS Document interface: documentWithHandlers must inherit property "open(optional DOMString, optional DOMString)" with the proper type +PASS Document interface: calling open(optional DOMString, optional DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "open(USVString, DOMString, DOMString)" with the proper type +PASS Document interface: calling open(USVString, DOMString, DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "close()" with the proper type +PASS Document interface: documentWithHandlers must inherit property "write(DOMString...)" with the proper type +PASS Document interface: calling write(DOMString...) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "writeln(DOMString...)" with the proper type +PASS Document interface: calling writeln(DOMString...) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "defaultView" with the proper type +PASS Document interface: documentWithHandlers must inherit property "hasFocus()" with the proper type +PASS Document interface: documentWithHandlers must inherit property "designMode" with the proper type +PASS Document interface: documentWithHandlers must inherit property "execCommand(DOMString, optional boolean, optional DOMString)" with the proper type +PASS Document interface: calling execCommand(DOMString, optional boolean, optional DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "queryCommandEnabled(DOMString)" with the proper type +PASS Document interface: calling queryCommandEnabled(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "queryCommandIndeterm(DOMString)" with the proper type +PASS Document interface: calling queryCommandIndeterm(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "queryCommandState(DOMString)" with the proper type +PASS Document interface: calling queryCommandState(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "queryCommandSupported(DOMString)" with the proper type +PASS Document interface: calling queryCommandSupported(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "queryCommandValue(DOMString)" with the proper type +PASS Document interface: calling queryCommandValue(DOMString) on documentWithHandlers with too few arguments must throw TypeError +PASS Document interface: documentWithHandlers must inherit property "onreadystatechange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "fgColor" with the proper type +PASS Document interface: documentWithHandlers must inherit property "linkColor" with the proper type +PASS Document interface: documentWithHandlers must inherit property "vlinkColor" with the proper type +PASS Document interface: documentWithHandlers must inherit property "alinkColor" with the proper type +PASS Document interface: documentWithHandlers must inherit property "bgColor" with the proper type +PASS Document interface: documentWithHandlers must inherit property "anchors" with the proper type +PASS Document interface: documentWithHandlers must inherit property "applets" with the proper type +PASS Document interface: documentWithHandlers must inherit property "clear()" with the proper type +PASS Document interface: documentWithHandlers must inherit property "captureEvents()" with the proper type +PASS Document interface: documentWithHandlers must inherit property "releaseEvents()" with the proper type +PASS Document interface: documentWithHandlers must inherit property "all" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onabort" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onauxclick" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onblur" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncancel" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncanplay" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncanplaythrough" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onchange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onclick" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onclose" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncontextmenu" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncuechange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondblclick" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondrag" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondragend" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondragenter" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondragleave" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondragover" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondragstart" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondrop" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ondurationchange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onemptied" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onended" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onerror" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onfocus" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onformdata" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oninput" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oninvalid" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onkeydown" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onkeypress" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onkeyup" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onload" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onloadeddata" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onloadedmetadata" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onloadstart" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmousedown" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmouseenter" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmouseleave" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmousemove" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmouseout" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmouseover" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onmouseup" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onpause" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onplay" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onplaying" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onprogress" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onratechange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onreset" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onresize" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onscroll" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onsecuritypolicyviolation" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onseeked" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onseeking" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onselect" with the proper type +FAIL Document interface: documentWithHandlers must inherit property "onslotchange" with the proper type assert_inherits: property "onslotchange" found on object expected in prototype chain +PASS Document interface: documentWithHandlers must inherit property "onstalled" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onsubmit" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onsuspend" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ontimeupdate" with the proper type +PASS Document interface: documentWithHandlers must inherit property "ontoggle" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onvolumechange" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwaiting" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwebkitanimationend" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwebkitanimationiteration" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwebkitanimationstart" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwebkittransitionend" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onwheel" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncopy" with the proper type +PASS Document interface: documentWithHandlers must inherit property "oncut" with the proper type +PASS Document interface: documentWithHandlers must inherit property "onpaste" with the proper type +PASS Document interface: documentWithHandlers must inherit property "activeElement" with the proper type +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.worker-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.worker-expected.txt new file mode 100644 index 0000000..7bcd13ef --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/html/dom/idlharness.worker-expected.txt
@@ -0,0 +1,808 @@ +This is a testharness.js-based test. +Found 804 tests; 796 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Document: original interface defined +PASS Partial interface Document: member names are unique +PASS Partial interface mixin DocumentOrShadowRoot: original interface mixin defined +PASS Partial interface mixin DocumentOrShadowRoot: member names are unique +PASS Partial interface mixin NavigatorID: original interface mixin defined +PASS Partial interface mixin NavigatorID: member names are unique +PASS Partial interface HTMLAnchorElement: original interface defined +PASS Partial interface HTMLAnchorElement: member names are unique +PASS Partial interface HTMLAreaElement: original interface defined +PASS Partial interface HTMLAreaElement: member names are unique +PASS Partial interface HTMLBodyElement: original interface defined +PASS Partial interface HTMLBodyElement: member names are unique +PASS Partial interface HTMLBRElement: original interface defined +PASS Partial interface HTMLBRElement: member names are unique +PASS Partial interface HTMLTableCaptionElement: original interface defined +PASS Partial interface HTMLTableCaptionElement: member names are unique +PASS Partial interface HTMLTableColElement: original interface defined +PASS Partial interface HTMLTableColElement: member names are unique +PASS Partial interface HTMLDivElement: original interface defined +PASS Partial interface HTMLDivElement: member names are unique +PASS Partial interface HTMLDListElement: original interface defined +PASS Partial interface HTMLDListElement: member names are unique +PASS Partial interface HTMLEmbedElement: original interface defined +PASS Partial interface HTMLEmbedElement: member names are unique +PASS Partial interface HTMLHeadingElement: original interface defined +PASS Partial interface HTMLHeadingElement: member names are unique +PASS Partial interface HTMLHRElement: original interface defined +PASS Partial interface HTMLHRElement: member names are unique +PASS Partial interface HTMLHtmlElement: original interface defined +PASS Partial interface HTMLHtmlElement: member names are unique +PASS Partial interface HTMLIFrameElement: original interface defined +PASS Partial interface HTMLIFrameElement: member names are unique +PASS Partial interface HTMLImageElement: original interface defined +PASS Partial interface HTMLImageElement: member names are unique +PASS Partial interface HTMLInputElement: original interface defined +PASS Partial interface HTMLInputElement: member names are unique +PASS Partial interface HTMLLegendElement: original interface defined +PASS Partial interface HTMLLegendElement: member names are unique +PASS Partial interface HTMLLIElement: original interface defined +PASS Partial interface HTMLLIElement: member names are unique +PASS Partial interface HTMLLinkElement: original interface defined +PASS Partial interface HTMLLinkElement: member names are unique +PASS Partial interface HTMLMenuElement: original interface defined +PASS Partial interface HTMLMenuElement: member names are unique +PASS Partial interface HTMLMetaElement: original interface defined +PASS Partial interface HTMLMetaElement: member names are unique +PASS Partial interface HTMLObjectElement: original interface defined +PASS Partial interface HTMLObjectElement: member names are unique +PASS Partial interface HTMLOListElement: original interface defined +PASS Partial interface HTMLOListElement: member names are unique +PASS Partial interface HTMLParagraphElement: original interface defined +PASS Partial interface HTMLParagraphElement: member names are unique +PASS Partial interface HTMLParamElement: original interface defined +PASS Partial interface HTMLParamElement: member names are unique +PASS Partial interface HTMLPreElement: original interface defined +PASS Partial interface HTMLPreElement: member names are unique +PASS Partial interface HTMLStyleElement: original interface defined +PASS Partial interface HTMLStyleElement: member names are unique +PASS Partial interface HTMLScriptElement: original interface defined +PASS Partial interface HTMLScriptElement: member names are unique +PASS Partial interface HTMLTableElement: original interface defined +PASS Partial interface HTMLTableElement: member names are unique +PASS Partial interface HTMLTableSectionElement: original interface defined +PASS Partial interface HTMLTableSectionElement: member names are unique +PASS Partial interface HTMLTableCellElement: original interface defined +PASS Partial interface HTMLTableCellElement: member names are unique +PASS Partial interface HTMLTableRowElement: original interface defined +PASS Partial interface HTMLTableRowElement: member names are unique +PASS Partial interface HTMLUListElement: original interface defined +PASS Partial interface HTMLUListElement: member names are unique +PASS Partial interface Document[2]: original interface defined +PASS Partial interface Document[2]: member names are unique +PASS Partial interface Window: original interface defined +PASS Partial interface Window: member names are unique +PASS Partial interface UIEvent: member names are unique +PASS Document includes GlobalEventHandlers: member names are unique +PASS Document includes DocumentAndElementEventHandlers: member names are unique +PASS Document includes NonElementParentNode: member names are unique +PASS Document includes DocumentOrShadowRoot: member names are unique +PASS Document includes ParentNode: member names are unique +PASS Document includes XPathEvaluatorBase: member names are unique +PASS HTMLElement includes GlobalEventHandlers: member names are unique +PASS HTMLElement includes DocumentAndElementEventHandlers: member names are unique +PASS HTMLElement includes ElementContentEditable: member names are unique +PASS HTMLElement includes HTMLOrSVGElement: member names are unique +PASS HTMLElement includes ElementCSSInlineStyle: member names are unique +PASS HTMLLinkElement includes LinkStyle: member names are unique +PASS HTMLStyleElement includes LinkStyle: member names are unique +PASS HTMLBodyElement includes WindowEventHandlers: member names are unique +PASS HTMLAnchorElement includes HTMLHyperlinkElementUtils: member names are unique +PASS HTMLAreaElement includes HTMLHyperlinkElementUtils: member names are unique +PASS CanvasRenderingContext2D includes CanvasState: member names are unique +PASS CanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS CanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS CanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS CanvasRenderingContext2D includes CanvasRect: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS CanvasRenderingContext2D includes CanvasUserInterface: member names are unique +PASS CanvasRenderingContext2D includes CanvasText: member names are unique +PASS CanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS CanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS CanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS CanvasRenderingContext2D includes CanvasPath: member names are unique +PASS Path2D includes CanvasPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasState: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTransform: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasCompositing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageSmoothing: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFillStrokeStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasShadowStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasFilters: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasRect: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawPath: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasText: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasDrawImage: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasImageData: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles: member names are unique +PASS OffscreenCanvasRenderingContext2D includes CanvasPath: member names are unique +PASS ElementInternals includes ARIAMixin: member names are unique +PASS Window includes GlobalEventHandlers: member names are unique +PASS Window includes WindowEventHandlers: member names are unique +PASS Window includes WindowOrWorkerGlobalScope: member names are unique +PASS Window includes AnimationFrameProvider: member names are unique +PASS Window includes WindowSessionStorage: member names are unique +PASS Window includes WindowLocalStorage: member names are unique +PASS WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique +PASS Navigator includes NavigatorID: member names are unique +PASS Navigator includes NavigatorLanguage: member names are unique +PASS Navigator includes NavigatorOnLine: member names are unique +PASS Navigator includes NavigatorContentUtils: member names are unique +PASS Navigator includes NavigatorCookies: member names are unique +PASS Navigator includes NavigatorPlugins: member names are unique +PASS Navigator includes NavigatorConcurrentHardware: member names are unique +PASS DedicatedWorkerGlobalScope includes AnimationFrameProvider: member names are unique +PASS Worker includes AbstractWorker: member names are unique +PASS SharedWorker includes AbstractWorker: member names are unique +PASS WorkerNavigator includes NavigatorID: member names are unique +PASS WorkerNavigator includes NavigatorLanguage: member names are unique +PASS WorkerNavigator includes NavigatorOnLine: member names are unique +PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique +PASS HTMLFrameSetElement includes WindowEventHandlers: member names are unique +PASS Element includes ARIAMixin: member names are unique +PASS Element includes ParentNode: member names are unique +PASS Element includes NonDocumentTypeChildNode: member names are unique +PASS Element includes ChildNode: member names are unique +PASS Element includes Slottable: member names are unique +PASS DocumentFragment includes NonElementParentNode: member names are unique +PASS DocumentFragment includes ParentNode: member names are unique +PASS ShadowRoot includes DocumentOrShadowRoot: member names are unique +PASS HTMLAllCollection interface: existence and properties of interface object +PASS HTMLFormControlsCollection interface: existence and properties of interface object +PASS RadioNodeList interface: existence and properties of interface object +PASS HTMLOptionsCollection interface: existence and properties of interface object +PASS DOMStringList interface: existence and properties of interface object +PASS DOMStringList interface object length +PASS DOMStringList interface object name +PASS DOMStringList interface: existence and properties of interface prototype object +PASS DOMStringList interface: existence and properties of interface prototype object's "constructor" property +PASS DOMStringList interface: existence and properties of interface prototype object's @@unscopables property +PASS DOMStringList interface: attribute length +PASS DOMStringList interface: operation item(unsigned long) +PASS DOMStringList interface: operation contains(DOMString) +PASS HTMLElement interface: existence and properties of interface object +PASS HTMLUnknownElement interface: existence and properties of interface object +PASS DOMStringMap interface: existence and properties of interface object +PASS HTMLHtmlElement interface: existence and properties of interface object +PASS HTMLHeadElement interface: existence and properties of interface object +PASS HTMLTitleElement interface: existence and properties of interface object +PASS HTMLBaseElement interface: existence and properties of interface object +PASS HTMLLinkElement interface: existence and properties of interface object +PASS HTMLMetaElement interface: existence and properties of interface object +PASS HTMLStyleElement interface: existence and properties of interface object +PASS HTMLBodyElement interface: existence and properties of interface object +PASS HTMLHeadingElement interface: existence and properties of interface object +PASS HTMLParagraphElement interface: existence and properties of interface object +PASS HTMLHRElement interface: existence and properties of interface object +PASS HTMLPreElement interface: existence and properties of interface object +PASS HTMLQuoteElement interface: existence and properties of interface object +PASS HTMLOListElement interface: existence and properties of interface object +PASS HTMLUListElement interface: existence and properties of interface object +PASS HTMLMenuElement interface: existence and properties of interface object +PASS HTMLLIElement interface: existence and properties of interface object +PASS HTMLDListElement interface: existence and properties of interface object +PASS HTMLDivElement interface: existence and properties of interface object +PASS HTMLAnchorElement interface: existence and properties of interface object +PASS HTMLDataElement interface: existence and properties of interface object +PASS HTMLTimeElement interface: existence and properties of interface object +PASS HTMLSpanElement interface: existence and properties of interface object +PASS HTMLBRElement interface: existence and properties of interface object +PASS HTMLModElement interface: existence and properties of interface object +PASS HTMLPictureElement interface: existence and properties of interface object +PASS HTMLSourceElement interface: existence and properties of interface object +PASS HTMLImageElement interface: existence and properties of interface object +PASS HTMLIFrameElement interface: existence and properties of interface object +PASS HTMLEmbedElement interface: existence and properties of interface object +PASS HTMLObjectElement interface: existence and properties of interface object +PASS HTMLParamElement interface: existence and properties of interface object +PASS HTMLVideoElement interface: existence and properties of interface object +PASS HTMLAudioElement interface: existence and properties of interface object +PASS HTMLTrackElement interface: existence and properties of interface object +PASS HTMLMediaElement interface: existence and properties of interface object +PASS MediaError interface: existence and properties of interface object +PASS AudioTrackList interface: existence and properties of interface object +PASS AudioTrack interface: existence and properties of interface object +PASS VideoTrackList interface: existence and properties of interface object +PASS VideoTrack interface: existence and properties of interface object +PASS TextTrackList interface: existence and properties of interface object +PASS TextTrack interface: existence and properties of interface object +PASS TextTrackCueList interface: existence and properties of interface object +PASS TextTrackCue interface: existence and properties of interface object +PASS TimeRanges interface: existence and properties of interface object +PASS TrackEvent interface: existence and properties of interface object +PASS HTMLMapElement interface: existence and properties of interface object +PASS HTMLAreaElement interface: existence and properties of interface object +PASS HTMLTableElement interface: existence and properties of interface object +PASS HTMLTableCaptionElement interface: existence and properties of interface object +PASS HTMLTableColElement interface: existence and properties of interface object +PASS HTMLTableSectionElement interface: existence and properties of interface object +PASS HTMLTableRowElement interface: existence and properties of interface object +PASS HTMLTableCellElement interface: existence and properties of interface object +PASS HTMLFormElement interface: existence and properties of interface object +PASS HTMLLabelElement interface: existence and properties of interface object +PASS HTMLInputElement interface: existence and properties of interface object +PASS HTMLButtonElement interface: existence and properties of interface object +PASS HTMLSelectElement interface: existence and properties of interface object +PASS HTMLDataListElement interface: existence and properties of interface object +PASS HTMLOptGroupElement interface: existence and properties of interface object +PASS HTMLOptionElement interface: existence and properties of interface object +PASS HTMLTextAreaElement interface: existence and properties of interface object +PASS HTMLOutputElement interface: existence and properties of interface object +PASS HTMLProgressElement interface: existence and properties of interface object +PASS HTMLMeterElement interface: existence and properties of interface object +PASS HTMLFieldSetElement interface: existence and properties of interface object +PASS HTMLLegendElement interface: existence and properties of interface object +PASS ValidityState interface: existence and properties of interface object +PASS SubmitEvent interface: existence and properties of interface object +PASS FormDataEvent interface: existence and properties of interface object +PASS HTMLDetailsElement interface: existence and properties of interface object +PASS HTMLDialogElement interface: existence and properties of interface object +PASS HTMLScriptElement interface: existence and properties of interface object +PASS HTMLTemplateElement interface: existence and properties of interface object +PASS HTMLSlotElement interface: existence and properties of interface object +PASS HTMLCanvasElement interface: existence and properties of interface object +PASS CanvasRenderingContext2D interface: existence and properties of interface object +PASS CanvasGradient interface: existence and properties of interface object +PASS CanvasGradient interface object length +PASS CanvasGradient interface object name +PASS CanvasGradient interface: existence and properties of interface prototype object +PASS CanvasGradient interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasGradient interface: existence and properties of interface prototype object's @@unscopables property +PASS CanvasGradient interface: operation addColorStop(double, DOMString) +PASS CanvasPattern interface: existence and properties of interface object +PASS CanvasPattern interface object length +PASS CanvasPattern interface object name +PASS CanvasPattern interface: existence and properties of interface prototype object +PASS CanvasPattern interface: existence and properties of interface prototype object's "constructor" property +PASS CanvasPattern interface: existence and properties of interface prototype object's @@unscopables property +PASS CanvasPattern interface: operation setTransform(optional DOMMatrix2DInit) +PASS TextMetrics interface: existence and properties of interface object +PASS TextMetrics interface object length +PASS TextMetrics interface object name +PASS TextMetrics interface: existence and properties of interface prototype object +PASS TextMetrics interface: existence and properties of interface prototype object's "constructor" property +PASS TextMetrics interface: existence and properties of interface prototype object's @@unscopables property +PASS TextMetrics interface: attribute width +PASS TextMetrics interface: attribute actualBoundingBoxLeft +PASS TextMetrics interface: attribute actualBoundingBoxRight +PASS TextMetrics interface: attribute fontBoundingBoxAscent +PASS TextMetrics interface: attribute fontBoundingBoxDescent +PASS TextMetrics interface: attribute actualBoundingBoxAscent +PASS TextMetrics interface: attribute actualBoundingBoxDescent +PASS TextMetrics interface: attribute emHeightAscent +PASS TextMetrics interface: attribute emHeightDescent +FAIL TextMetrics interface: attribute hangingBaseline assert_true: The prototype object must have a property "hangingBaseline" expected true got false +FAIL TextMetrics interface: attribute alphabeticBaseline assert_true: The prototype object must have a property "alphabeticBaseline" expected true got false +FAIL TextMetrics interface: attribute ideographicBaseline assert_true: The prototype object must have a property "ideographicBaseline" expected true got false +PASS ImageData interface: existence and properties of interface object +PASS ImageData interface object length +PASS ImageData interface object name +PASS ImageData interface: existence and properties of interface prototype object +PASS ImageData interface: existence and properties of interface prototype object's "constructor" property +PASS ImageData interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageData interface: attribute width +PASS ImageData interface: attribute height +PASS ImageData interface: attribute data +PASS Path2D interface: existence and properties of interface object +PASS Path2D interface object length +PASS Path2D interface object name +PASS Path2D interface: existence and properties of interface prototype object +PASS Path2D interface: existence and properties of interface prototype object's "constructor" property +PASS Path2D interface: existence and properties of interface prototype object's @@unscopables property +PASS Path2D interface: operation addPath(Path2D, optional DOMMatrix2DInit) +PASS Path2D interface: operation closePath() +PASS Path2D interface: operation moveTo(unrestricted double, unrestricted double) +PASS Path2D interface: operation lineTo(unrestricted double, unrestricted double) +PASS Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS ImageBitmapRenderingContext interface: existence and properties of interface object +PASS ImageBitmapRenderingContext interface object length +PASS ImageBitmapRenderingContext interface object name +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property +PASS ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageBitmapRenderingContext interface: attribute canvas +PASS ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap?) +PASS OffscreenCanvas interface: existence and properties of interface object +PASS OffscreenCanvas interface object length +PASS OffscreenCanvas interface object name +PASS OffscreenCanvas interface: existence and properties of interface prototype object +PASS OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property +PASS OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property +PASS OffscreenCanvas interface: attribute width +PASS OffscreenCanvas interface: attribute height +PASS OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, optional any) +PASS OffscreenCanvas interface: operation transferToImageBitmap() +PASS OffscreenCanvas interface: operation convertToBlob(optional ImageEncodeOptions) +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface object +PASS OffscreenCanvasRenderingContext2D interface object length +PASS OffscreenCanvasRenderingContext2D interface object name +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property +PASS OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property +PASS OffscreenCanvasRenderingContext2D interface: operation commit() +PASS OffscreenCanvasRenderingContext2D interface: attribute canvas +PASS OffscreenCanvasRenderingContext2D interface: operation save() +PASS OffscreenCanvasRenderingContext2D interface: operation restore() +PASS OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation getTransform() +PASS OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit) +PASS OffscreenCanvasRenderingContext2D interface: operation resetTransform() +PASS OffscreenCanvasRenderingContext2D interface: attribute globalAlpha +PASS OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation +PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled +PASS OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality +PASS OffscreenCanvasRenderingContext2D interface: attribute strokeStyle +PASS OffscreenCanvasRenderingContext2D interface: attribute fillStyle +PASS OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double) +PASS OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double) +PASS OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString) +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowBlur +PASS OffscreenCanvasRenderingContext2D interface: attribute shadowColor +PASS OffscreenCanvasRenderingContext2D interface: attribute filter +PASS OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation beginPath() +PASS OffscreenCanvasRenderingContext2D interface: operation fill(optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation stroke() +PASS OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D) +PASS OffscreenCanvasRenderingContext2D interface: operation clip(optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, optional unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation measureText(DOMString) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData) +PASS OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long) +PASS OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long) +PASS OffscreenCanvasRenderingContext2D interface: attribute lineWidth +PASS OffscreenCanvasRenderingContext2D interface: attribute lineCap +PASS OffscreenCanvasRenderingContext2D interface: attribute lineJoin +PASS OffscreenCanvasRenderingContext2D interface: attribute miterLimit +PASS OffscreenCanvasRenderingContext2D interface: operation setLineDash(sequence<unrestricted double>) +PASS OffscreenCanvasRenderingContext2D interface: operation getLineDash() +PASS OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset +PASS OffscreenCanvasRenderingContext2D interface: attribute font +PASS OffscreenCanvasRenderingContext2D interface: attribute textAlign +PASS OffscreenCanvasRenderingContext2D interface: attribute textBaseline +PASS OffscreenCanvasRenderingContext2D interface: attribute direction +PASS OffscreenCanvasRenderingContext2D interface: operation closePath() +PASS OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double) +PASS OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, optional boolean) +PASS CustomElementRegistry interface: existence and properties of interface object +PASS ElementInternals interface: existence and properties of interface object +PASS DataTransfer interface: existence and properties of interface object +PASS DataTransferItemList interface: existence and properties of interface object +PASS DataTransferItem interface: existence and properties of interface object +PASS DragEvent interface: existence and properties of interface object +PASS Window interface: existence and properties of interface object +PASS BarProp interface: existence and properties of interface object +PASS History interface: existence and properties of interface object +PASS Location interface: existence and properties of interface object +PASS PopStateEvent interface: existence and properties of interface object +PASS HashChangeEvent interface: existence and properties of interface object +PASS PageTransitionEvent interface: existence and properties of interface object +PASS BeforeUnloadEvent interface: existence and properties of interface object +PASS ApplicationCache interface: existence and properties of interface object +PASS ErrorEvent interface: existence and properties of interface object +PASS ErrorEvent interface object length +PASS ErrorEvent interface object name +PASS ErrorEvent interface: existence and properties of interface prototype object +PASS ErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS ErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS ErrorEvent interface: attribute message +PASS ErrorEvent interface: attribute filename +PASS ErrorEvent interface: attribute lineno +PASS ErrorEvent interface: attribute colno +PASS ErrorEvent interface: attribute error +PASS PromiseRejectionEvent interface: existence and properties of interface object +PASS PromiseRejectionEvent interface object length +PASS PromiseRejectionEvent interface object name +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property +PASS PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS PromiseRejectionEvent interface: attribute promise +PASS PromiseRejectionEvent interface: attribute reason +PASS DOMParser interface: existence and properties of interface object +PASS Navigator interface: existence and properties of interface object +PASS PluginArray interface: existence and properties of interface object +PASS MimeTypeArray interface: existence and properties of interface object +PASS Plugin interface: existence and properties of interface object +PASS MimeType interface: existence and properties of interface object +PASS ImageBitmap interface: existence and properties of interface object +PASS ImageBitmap interface object length +PASS ImageBitmap interface object name +PASS ImageBitmap interface: existence and properties of interface prototype object +PASS ImageBitmap interface: existence and properties of interface prototype object's "constructor" property +PASS ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property +PASS ImageBitmap interface: attribute width +PASS ImageBitmap interface: attribute height +PASS ImageBitmap interface: operation close() +PASS MessageEvent interface: existence and properties of interface object +PASS MessageEvent interface object length +PASS MessageEvent interface object name +PASS MessageEvent interface: existence and properties of interface prototype object +PASS MessageEvent interface: existence and properties of interface prototype object's "constructor" property +PASS MessageEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS MessageEvent interface: attribute data +PASS MessageEvent interface: attribute origin +PASS MessageEvent interface: attribute lastEventId +PASS MessageEvent interface: attribute source +PASS MessageEvent interface: attribute ports +PASS MessageEvent interface: operation initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>) +PASS MessageEvent must be primary interface of new MessageEvent("message", { data: 5 }) +PASS Stringification of new MessageEvent("message", { data: 5 }) +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "data" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "origin" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "lastEventId" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type +PASS MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>)" with the proper type +PASS MessageEvent interface: calling initMessageEvent(DOMString, optional boolean, optional boolean, optional any, optional USVString, optional DOMString, optional MessageEventSource?, optional sequence<MessagePort>) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError +PASS EventSource interface: existence and properties of interface object +PASS EventSource interface object length +PASS EventSource interface object name +PASS EventSource interface: existence and properties of interface prototype object +PASS EventSource interface: existence and properties of interface prototype object's "constructor" property +PASS EventSource interface: existence and properties of interface prototype object's @@unscopables property +PASS EventSource interface: attribute url +PASS EventSource interface: attribute withCredentials +PASS EventSource interface: constant CONNECTING on interface object +PASS EventSource interface: constant CONNECTING on interface prototype object +PASS EventSource interface: constant OPEN on interface object +PASS EventSource interface: constant OPEN on interface prototype object +PASS EventSource interface: constant CLOSED on interface object +PASS EventSource interface: constant CLOSED on interface prototype object +PASS EventSource interface: attribute readyState +PASS EventSource interface: attribute onopen +PASS EventSource interface: attribute onmessage +PASS EventSource interface: attribute onerror +PASS EventSource interface: operation close() +PASS EventSource must be primary interface of new EventSource("http://invalid") +PASS Stringification of new EventSource("http://invalid") +PASS EventSource interface: new EventSource("http://invalid") must inherit property "url" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "withCredentials" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "CONNECTING" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "OPEN" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "CLOSED" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "readyState" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onopen" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onmessage" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "onerror" with the proper type +PASS EventSource interface: new EventSource("http://invalid") must inherit property "close()" with the proper type +PASS WebSocket interface: existence and properties of interface object +PASS WebSocket interface object length +PASS WebSocket interface object name +PASS WebSocket interface: existence and properties of interface prototype object +PASS WebSocket interface: existence and properties of interface prototype object's "constructor" property +PASS WebSocket interface: existence and properties of interface prototype object's @@unscopables property +PASS WebSocket interface: attribute url +PASS WebSocket interface: constant CONNECTING on interface object +PASS WebSocket interface: constant CONNECTING on interface prototype object +PASS WebSocket interface: constant OPEN on interface object +PASS WebSocket interface: constant OPEN on interface prototype object +PASS WebSocket interface: constant CLOSING on interface object +PASS WebSocket interface: constant CLOSING on interface prototype object +PASS WebSocket interface: constant CLOSED on interface object +PASS WebSocket interface: constant CLOSED on interface prototype object +PASS WebSocket interface: attribute readyState +PASS WebSocket interface: attribute bufferedAmount +PASS WebSocket interface: attribute onopen +PASS WebSocket interface: attribute onerror +PASS WebSocket interface: attribute onclose +PASS WebSocket interface: attribute extensions +PASS WebSocket interface: attribute protocol +PASS WebSocket interface: operation close(optional unsigned short, optional USVString) +PASS WebSocket interface: attribute onmessage +PASS WebSocket interface: attribute binaryType +PASS WebSocket interface: operation send(USVString) +PASS WebSocket interface: operation send(Blob) +PASS WebSocket interface: operation send(ArrayBuffer) +PASS WebSocket interface: operation send(ArrayBufferView) +PASS WebSocket must be primary interface of new WebSocket("ws://invalid") +PASS Stringification of new WebSocket("ws://invalid") +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "url" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "CONNECTING" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "OPEN" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "CLOSING" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "CLOSED" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "readyState" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "bufferedAmount" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "onopen" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "onerror" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "onclose" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "extensions" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "protocol" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "close(optional unsigned short, optional USVString)" with the proper type +PASS WebSocket interface: calling close(optional unsigned short, optional USVString) on new WebSocket("ws://invalid") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "onmessage" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "binaryType" with the proper type +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "send(USVString)" with the proper type +PASS WebSocket interface: calling send(USVString) on new WebSocket("ws://invalid") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "send(Blob)" with the proper type +PASS WebSocket interface: calling send(Blob) on new WebSocket("ws://invalid") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "send(ArrayBuffer)" with the proper type +PASS WebSocket interface: calling send(ArrayBuffer) on new WebSocket("ws://invalid") with too few arguments must throw TypeError +PASS WebSocket interface: new WebSocket("ws://invalid") must inherit property "send(ArrayBufferView)" with the proper type +PASS WebSocket interface: calling send(ArrayBufferView) on new WebSocket("ws://invalid") with too few arguments must throw TypeError +PASS CloseEvent interface: existence and properties of interface object +PASS CloseEvent interface object length +PASS CloseEvent interface object name +PASS CloseEvent interface: existence and properties of interface prototype object +PASS CloseEvent interface: existence and properties of interface prototype object's "constructor" property +PASS CloseEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS CloseEvent interface: attribute wasClean +PASS CloseEvent interface: attribute code +PASS CloseEvent interface: attribute reason +PASS CloseEvent must be primary interface of new CloseEvent("close") +PASS Stringification of new CloseEvent("close") +PASS CloseEvent interface: new CloseEvent("close") must inherit property "wasClean" with the proper type +PASS CloseEvent interface: new CloseEvent("close") must inherit property "code" with the proper type +PASS CloseEvent interface: new CloseEvent("close") must inherit property "reason" with the proper type +PASS MessageChannel interface: existence and properties of interface object +PASS MessageChannel interface object length +PASS MessageChannel interface object name +PASS MessageChannel interface: existence and properties of interface prototype object +PASS MessageChannel interface: existence and properties of interface prototype object's "constructor" property +PASS MessageChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS MessageChannel interface: attribute port1 +PASS MessageChannel interface: attribute port2 +PASS MessagePort interface: existence and properties of interface object +PASS MessagePort interface object length +PASS MessagePort interface object name +PASS MessagePort interface: existence and properties of interface prototype object +PASS MessagePort interface: existence and properties of interface prototype object's "constructor" property +PASS MessagePort interface: existence and properties of interface prototype object's @@unscopables property +PASS MessagePort interface: operation postMessage(any, sequence<object>) +PASS MessagePort interface: operation postMessage(any, optional PostMessageOptions) +PASS MessagePort interface: operation start() +PASS MessagePort interface: operation close() +PASS MessagePort interface: attribute onmessage +PASS MessagePort interface: attribute onmessageerror +PASS BroadcastChannel interface: existence and properties of interface object +PASS BroadcastChannel interface object length +PASS BroadcastChannel interface object name +PASS BroadcastChannel interface: existence and properties of interface prototype object +PASS BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property +PASS BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS BroadcastChannel interface: attribute name +PASS BroadcastChannel interface: operation postMessage(any) +PASS BroadcastChannel interface: operation close() +PASS BroadcastChannel interface: attribute onmessage +PASS BroadcastChannel interface: attribute onmessageerror +PASS WorkerGlobalScope interface: existence and properties of interface object +PASS WorkerGlobalScope interface object length +PASS WorkerGlobalScope interface object name +PASS WorkerGlobalScope interface: existence and properties of interface prototype object +PASS WorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property +PASS WorkerGlobalScope interface: existence and properties of interface prototype object's @@unscopables property +PASS WorkerGlobalScope interface: attribute self +PASS WorkerGlobalScope interface: attribute location +PASS WorkerGlobalScope interface: attribute navigator +PASS WorkerGlobalScope interface: operation importScripts(USVString...) +PASS WorkerGlobalScope interface: attribute onerror +PASS WorkerGlobalScope interface: attribute onlanguagechange +FAIL WorkerGlobalScope interface: attribute onoffline assert_true: The prototype object must have a property "onoffline" expected true got false +FAIL WorkerGlobalScope interface: attribute ononline assert_true: The prototype object must have a property "ononline" expected true got false +PASS WorkerGlobalScope interface: attribute onrejectionhandled +PASS WorkerGlobalScope interface: attribute onunhandledrejection +PASS WorkerGlobalScope interface: attribute origin +PASS WorkerGlobalScope interface: attribute isSecureContext +PASS WorkerGlobalScope interface: attribute crossOriginIsolated +PASS WorkerGlobalScope interface: operation btoa(DOMString) +PASS WorkerGlobalScope interface: operation atob(DOMString) +PASS WorkerGlobalScope interface: operation setTimeout(TimerHandler, optional long, any...) +PASS WorkerGlobalScope interface: operation clearTimeout(optional long) +PASS WorkerGlobalScope interface: operation setInterval(TimerHandler, optional long, any...) +PASS WorkerGlobalScope interface: operation clearInterval(optional long) +PASS WorkerGlobalScope interface: operation queueMicrotask(VoidFunction) +PASS WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) +PASS WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface object +PASS DedicatedWorkerGlobalScope interface object length +PASS DedicatedWorkerGlobalScope interface object name +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property +PASS DedicatedWorkerGlobalScope interface: existence and properties of interface prototype object's @@unscopables property +PASS DedicatedWorkerGlobalScope interface: attribute name +PASS DedicatedWorkerGlobalScope interface: operation postMessage(any, sequence<object>) +PASS DedicatedWorkerGlobalScope interface: operation postMessage(any, optional PostMessageOptions) +PASS DedicatedWorkerGlobalScope interface: operation close() +PASS DedicatedWorkerGlobalScope interface: attribute onmessage +PASS DedicatedWorkerGlobalScope interface: attribute onmessageerror +PASS DedicatedWorkerGlobalScope interface: operation requestAnimationFrame(FrameRequestCallback) +PASS DedicatedWorkerGlobalScope interface: operation cancelAnimationFrame(unsigned long) +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw +PASS DedicatedWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true +PASS DedicatedWorkerGlobalScope must be primary interface of self +PASS Stringification of self +PASS DedicatedWorkerGlobalScope interface: self must inherit property "name" with the proper type +PASS DedicatedWorkerGlobalScope interface: self must inherit property "postMessage(any, sequence<object>)" with the proper type +PASS DedicatedWorkerGlobalScope interface: calling postMessage(any, sequence<object>) on self with too few arguments must throw TypeError +PASS DedicatedWorkerGlobalScope interface: self must inherit property "postMessage(any, optional PostMessageOptions)" with the proper type +PASS DedicatedWorkerGlobalScope interface: calling postMessage(any, optional PostMessageOptions) on self with too few arguments must throw TypeError +PASS DedicatedWorkerGlobalScope interface: self must inherit property "close()" with the proper type +PASS DedicatedWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type +PASS DedicatedWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type +PASS DedicatedWorkerGlobalScope interface: self must inherit property "requestAnimationFrame(FrameRequestCallback)" with the proper type +PASS DedicatedWorkerGlobalScope interface: calling requestAnimationFrame(FrameRequestCallback) on self with too few arguments must throw TypeError +PASS DedicatedWorkerGlobalScope interface: self must inherit property "cancelAnimationFrame(unsigned long)" with the proper type +PASS DedicatedWorkerGlobalScope interface: calling cancelAnimationFrame(unsigned long) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "self" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "location" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "navigator" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "importScripts(USVString...)" with the proper type +PASS WorkerGlobalScope interface: calling importScripts(USVString...) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "onerror" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type +FAIL WorkerGlobalScope interface: self must inherit property "onoffline" with the proper type assert_inherits: property "onoffline" not found in prototype chain +FAIL WorkerGlobalScope interface: self must inherit property "ononline" with the proper type assert_inherits: property "ononline" not found in prototype chain +PASS WorkerGlobalScope interface: self must inherit property "onrejectionhandled" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "origin" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "isSecureContext" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "crossOriginIsolated" with the proper type +PASS WorkerGlobalScope interface: self must inherit property "btoa(DOMString)" with the proper type +PASS WorkerGlobalScope interface: calling btoa(DOMString) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "atob(DOMString)" with the proper type +PASS WorkerGlobalScope interface: calling atob(DOMString) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "setTimeout(TimerHandler, optional long, any...)" with the proper type +PASS WorkerGlobalScope interface: calling setTimeout(TimerHandler, optional long, any...) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "clearTimeout(optional long)" with the proper type +PASS WorkerGlobalScope interface: calling clearTimeout(optional long) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "setInterval(TimerHandler, optional long, any...)" with the proper type +PASS WorkerGlobalScope interface: calling setInterval(TimerHandler, optional long, any...) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "clearInterval(optional long)" with the proper type +PASS WorkerGlobalScope interface: calling clearInterval(optional long) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "queueMicrotask(VoidFunction)" with the proper type +PASS WorkerGlobalScope interface: calling queueMicrotask(VoidFunction) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)" with the proper type +PASS WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) on self with too few arguments must throw TypeError +PASS WorkerGlobalScope interface: self must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)" with the proper type +PASS WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) on self with too few arguments must throw TypeError +PASS SharedWorkerGlobalScope interface: existence and properties of interface object +PASS Worker interface: existence and properties of interface object +PASS Worker interface object length +PASS Worker interface object name +PASS Worker interface: existence and properties of interface prototype object +PASS Worker interface: existence and properties of interface prototype object's "constructor" property +PASS Worker interface: existence and properties of interface prototype object's @@unscopables property +PASS Worker interface: operation terminate() +PASS Worker interface: operation postMessage(any, sequence<object>) +PASS Worker interface: operation postMessage(any, optional PostMessageOptions) +PASS Worker interface: attribute onmessage +FAIL Worker interface: attribute onmessageerror assert_true: The prototype object must have a property "onmessageerror" expected true got false +PASS Worker interface: attribute onerror +PASS SharedWorker interface: existence and properties of interface object +PASS WorkerNavigator interface: existence and properties of interface object +PASS WorkerNavigator interface object length +PASS WorkerNavigator interface object name +PASS WorkerNavigator interface: existence and properties of interface prototype object +PASS WorkerNavigator interface: existence and properties of interface prototype object's "constructor" property +PASS WorkerNavigator interface: existence and properties of interface prototype object's @@unscopables property +PASS WorkerNavigator interface: attribute appCodeName +PASS WorkerNavigator interface: attribute appName +PASS WorkerNavigator interface: attribute appVersion +PASS WorkerNavigator interface: attribute platform +PASS WorkerNavigator interface: attribute product +PASS WorkerNavigator interface: member productSub +PASS WorkerNavigator interface: attribute userAgent +PASS WorkerNavigator interface: member vendor +PASS WorkerNavigator interface: member vendorSub +PASS WorkerNavigator interface: member taintEnabled +PASS WorkerNavigator interface: member oscpu +PASS WorkerNavigator interface: attribute language +PASS WorkerNavigator interface: attribute languages +PASS WorkerNavigator interface: attribute onLine +PASS WorkerNavigator interface: attribute hardwareConcurrency +PASS WorkerNavigator must be primary interface of self.navigator +PASS Stringification of self.navigator +PASS WorkerNavigator interface: self.navigator must inherit property "appCodeName" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "appName" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "appVersion" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "platform" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "product" with the proper type +PASS WorkerNavigator interface: self.navigator must not have property "productSub" +PASS WorkerNavigator interface: self.navigator must inherit property "userAgent" with the proper type +PASS WorkerNavigator interface: self.navigator must not have property "vendor" +PASS WorkerNavigator interface: self.navigator must not have property "vendorSub" +PASS WorkerNavigator interface: self.navigator must not have property "taintEnabled" +PASS WorkerNavigator interface: self.navigator must not have property "oscpu" +PASS WorkerNavigator interface: self.navigator must inherit property "language" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "languages" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "onLine" with the proper type +PASS WorkerNavigator interface: self.navigator must inherit property "hardwareConcurrency" with the proper type +PASS WorkerLocation interface: existence and properties of interface object +PASS WorkerLocation interface object length +PASS WorkerLocation interface object name +PASS WorkerLocation interface: existence and properties of interface prototype object +PASS WorkerLocation interface: existence and properties of interface prototype object's "constructor" property +PASS WorkerLocation interface: existence and properties of interface prototype object's @@unscopables property +PASS WorkerLocation interface: attribute href +PASS WorkerLocation interface: stringifier +PASS WorkerLocation interface: attribute origin +PASS WorkerLocation interface: attribute protocol +PASS WorkerLocation interface: attribute host +PASS WorkerLocation interface: attribute hostname +PASS WorkerLocation interface: attribute port +PASS WorkerLocation interface: attribute pathname +PASS WorkerLocation interface: attribute search +PASS WorkerLocation interface: attribute hash +PASS WorkerLocation must be primary interface of self.location +PASS Stringification of self.location +PASS WorkerLocation interface: self.location must inherit property "href" with the proper type +PASS WorkerLocation interface: self.location must inherit property "origin" with the proper type +PASS WorkerLocation interface: self.location must inherit property "protocol" with the proper type +PASS WorkerLocation interface: self.location must inherit property "host" with the proper type +PASS WorkerLocation interface: self.location must inherit property "hostname" with the proper type +PASS WorkerLocation interface: self.location must inherit property "port" with the proper type +PASS WorkerLocation interface: self.location must inherit property "pathname" with the proper type +PASS WorkerLocation interface: self.location must inherit property "search" with the proper type +PASS WorkerLocation interface: self.location must inherit property "hash" with the proper type +PASS WorkletGlobalScope interface: existence and properties of interface object +PASS Worklet interface: existence and properties of interface object +PASS Storage interface: existence and properties of interface object +PASS StorageEvent interface: existence and properties of interface object +PASS HTMLMarqueeElement interface: existence and properties of interface object +PASS HTMLFrameSetElement interface: existence and properties of interface object +PASS HTMLFrameElement interface: existence and properties of interface object +PASS HTMLDirectoryElement interface: existence and properties of interface object +PASS HTMLFontElement interface: existence and properties of interface object +PASS External interface: existence and properties of interface object +PASS NodeList interface: existence and properties of interface object +PASS HTMLCollection interface: existence and properties of interface object +PASS Node interface: existence and properties of interface object +PASS Document interface: existence and properties of interface object +PASS DocumentFragment interface: existence and properties of interface object +PASS ShadowRoot interface: existence and properties of interface object +PASS Element interface: existence and properties of interface object +PASS DOMTokenList interface: existence and properties of interface object +PASS UIEvent interface: existence and properties of interface object +PASS MouseEvent interface: existence and properties of interface object +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/webrtc/idlharness.https.window-expected.txt new file mode 100644 index 0000000..222565c --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -0,0 +1,508 @@ +This is a testharness.js-based test. +Found 496 tests; 480 PASS, 16 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS idl_test setup +PASS idl_test validation +PASS Test driver for asyncInitCertificate +PASS Test driver for asyncInitTransports +PASS Test driver for asyncInitMediaStreamTrack +PASS Partial dictionary RTCOfferOptions: original dictionary defined +PASS Partial dictionary RTCOfferOptions: member names are unique +PASS Partial interface RTCPeerConnection: original interface defined +PASS Partial interface RTCPeerConnection: member names are unique +PASS Partial interface RTCPeerConnection[2]: original interface defined +PASS Partial interface RTCPeerConnection[2]: member names are unique +PASS Partial interface RTCPeerConnection[3]: original interface defined +PASS Partial interface RTCPeerConnection[3]: member names are unique +PASS Partial interface RTCRtpSender: original interface defined +PASS Partial interface RTCRtpSender: member names are unique +PASS Partial interface RTCPeerConnection[4]: original interface defined +PASS Partial interface RTCPeerConnection[4]: member names are unique +PASS RTCPeerConnection interface: existence and properties of interface object +PASS RTCPeerConnection interface object length +PASS RTCPeerConnection interface object name +PASS RTCPeerConnection interface: existence and properties of interface prototype object +PASS RTCPeerConnection interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnection interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnection interface: operation createOffer(optional RTCOfferOptions) +PASS RTCPeerConnection interface: operation createAnswer(optional RTCAnswerOptions) +PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit) +PASS RTCPeerConnection interface: attribute localDescription +PASS RTCPeerConnection interface: attribute currentLocalDescription +PASS RTCPeerConnection interface: attribute pendingLocalDescription +PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit) +PASS RTCPeerConnection interface: attribute remoteDescription +PASS RTCPeerConnection interface: attribute currentRemoteDescription +PASS RTCPeerConnection interface: attribute pendingRemoteDescription +FAIL RTCPeerConnection interface: operation addIceCandidate(optional RTCIceCandidateInit) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: attribute signalingState +PASS RTCPeerConnection interface: attribute iceGatheringState +PASS RTCPeerConnection interface: attribute iceConnectionState +PASS RTCPeerConnection interface: attribute connectionState +PASS RTCPeerConnection interface: attribute canTrickleIceCandidates +PASS RTCPeerConnection interface: operation restartIce() +PASS RTCPeerConnection interface: operation getConfiguration() +FAIL RTCPeerConnection interface: operation setConfiguration(optional RTCConfiguration) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: operation close() +PASS RTCPeerConnection interface: attribute onnegotiationneeded +PASS RTCPeerConnection interface: attribute onicecandidate +PASS RTCPeerConnection interface: attribute onicecandidateerror +PASS RTCPeerConnection interface: attribute onsignalingstatechange +PASS RTCPeerConnection interface: attribute oniceconnectionstatechange +PASS RTCPeerConnection interface: attribute onicegatheringstatechange +PASS RTCPeerConnection interface: attribute onconnectionstatechange +PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) +PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: operation generateCertificate(AlgorithmIdentifier) +PASS RTCPeerConnection interface: operation getSenders() +PASS RTCPeerConnection interface: operation getReceivers() +PASS RTCPeerConnection interface: operation getTransceivers() +PASS RTCPeerConnection interface: operation addTrack(MediaStreamTrack, MediaStream...) +PASS RTCPeerConnection interface: operation removeTrack(RTCRtpSender) +PASS RTCPeerConnection interface: operation addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit) +PASS RTCPeerConnection interface: attribute ontrack +PASS RTCPeerConnection interface: attribute sctp +PASS RTCPeerConnection interface: operation createDataChannel(USVString, optional RTCDataChannelInit) +PASS RTCPeerConnection interface: attribute ondatachannel +PASS RTCPeerConnection interface: operation getStats(optional MediaStreamTrack?) +PASS RTCPeerConnection must be primary interface of new RTCPeerConnection() +PASS Stringification of new RTCPeerConnection() +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(optional RTCOfferOptions)" with the proper type +PASS RTCPeerConnection interface: calling createOffer(optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(optional RTCAnswerOptions)" with the proper type +PASS RTCPeerConnection interface: calling createAnswer(optional RTCAnswerOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "localDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentLocalDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingLocalDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit)" with the proper type +PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "remoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentRemoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingRemoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(optional RTCIceCandidateInit)" with the proper type +PASS RTCPeerConnection interface: calling addIceCandidate(optional RTCIceCandidateInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "signalingState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceGatheringState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceConnectionState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "connectionState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "canTrickleIceCandidates" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "restartIce()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getConfiguration()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setConfiguration(optional RTCConfiguration)" with the proper type +PASS RTCPeerConnection interface: calling setConfiguration(optional RTCConfiguration) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions)" with the proper type +PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "generateCertificate(AlgorithmIdentifier)" with the proper type +PASS RTCPeerConnection interface: calling generateCertificate(AlgorithmIdentifier) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getSenders()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getReceivers()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getTransceivers()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTrack(MediaStreamTrack, MediaStream...)" with the proper type +PASS RTCPeerConnection interface: calling addTrack(MediaStreamTrack, MediaStream...) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "removeTrack(RTCRtpSender)" with the proper type +PASS RTCPeerConnection interface: calling removeTrack(RTCRtpSender) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit)" with the proper type +PASS RTCPeerConnection interface: calling addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ontrack" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createDataChannel(USVString, optional RTCDataChannelInit)" with the proper type +PASS RTCPeerConnection interface: calling createDataChannel(USVString, optional RTCDataChannelInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ondatachannel" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getStats(optional MediaStreamTrack?)" with the proper type +PASS RTCPeerConnection interface: calling getStats(optional MediaStreamTrack?) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCSessionDescription interface: existence and properties of interface object +FAIL RTCSessionDescription interface object length assert_equals: wrong value for RTCSessionDescription.length expected 1 but got 0 +PASS RTCSessionDescription interface object name +PASS RTCSessionDescription interface: existence and properties of interface prototype object +PASS RTCSessionDescription interface: existence and properties of interface prototype object's "constructor" property +PASS RTCSessionDescription interface: existence and properties of interface prototype object's @@unscopables property +FAIL RTCSessionDescription interface: attribute type assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set type() { [native code] }" +FAIL RTCSessionDescription interface: attribute sdp assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdp() { [native code] }" +PASS RTCSessionDescription interface: operation toJSON() +PASS RTCSessionDescription must be primary interface of new RTCSessionDescription({ type: 'offer' }) +PASS Stringification of new RTCSessionDescription({ type: 'offer' }) +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "type" with the proper type +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "sdp" with the proper type +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "toJSON()" with the proper type +PASS RTCSessionDescription interface: default toJSON operation on new RTCSessionDescription({ type: 'offer' }) +PASS RTCIceCandidate interface: existence and properties of interface object +PASS RTCIceCandidate interface object length +PASS RTCIceCandidate interface object name +PASS RTCIceCandidate interface: existence and properties of interface prototype object +PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property +PASS RTCIceCandidate interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCIceCandidate interface: attribute candidate +PASS RTCIceCandidate interface: attribute sdpMid +PASS RTCIceCandidate interface: attribute sdpMLineIndex +PASS RTCIceCandidate interface: attribute foundation +PASS RTCIceCandidate interface: attribute component +PASS RTCIceCandidate interface: attribute priority +PASS RTCIceCandidate interface: attribute address +PASS RTCIceCandidate interface: attribute protocol +PASS RTCIceCandidate interface: attribute port +PASS RTCIceCandidate interface: attribute type +PASS RTCIceCandidate interface: attribute tcpType +PASS RTCIceCandidate interface: attribute relatedAddress +PASS RTCIceCandidate interface: attribute relatedPort +PASS RTCIceCandidate interface: attribute usernameFragment +PASS RTCIceCandidate interface: operation toJSON() +PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 }) +PASS Stringification of new RTCIceCandidate({ sdpMid: 1 }) +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type +PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 }) +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object +PASS RTCPeerConnectionIceEvent interface object length +PASS RTCPeerConnectionIceEvent interface object name +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnectionIceEvent interface: attribute candidate +FAIL RTCPeerConnectionIceEvent interface: attribute url assert_true: The prototype object must have a property "url" expected true got false +PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectionIceEvent('ice') +PASS Stringification of new RTCPeerConnectionIceEvent('ice') +PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type +FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object +PASS RTCPeerConnectionIceErrorEvent interface object length +PASS RTCPeerConnectionIceErrorEvent interface object name +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnectionIceErrorEvent interface: attribute address +PASS RTCPeerConnectionIceErrorEvent interface: attribute port +PASS RTCPeerConnectionIceErrorEvent interface: attribute url +PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode +PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText +PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); +PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "address" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "port" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "url" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "errorCode" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "errorText" with the proper type +PASS RTCCertificate interface: existence and properties of interface object +PASS RTCCertificate interface object length +PASS RTCCertificate interface object name +PASS RTCCertificate interface: existence and properties of interface prototype object +PASS RTCCertificate interface: existence and properties of interface prototype object's "constructor" property +PASS RTCCertificate interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCCertificate interface: attribute expires +PASS RTCCertificate interface: operation getFingerprints() +PASS RTCCertificate must be primary interface of idlTestObjects.certificate +PASS Stringification of idlTestObjects.certificate +PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "expires" with the proper type +PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getFingerprints()" with the proper type +PASS RTCRtpSender interface: existence and properties of interface object +PASS RTCRtpSender interface object length +PASS RTCRtpSender interface object name +PASS RTCRtpSender interface: existence and properties of interface prototype object +PASS RTCRtpSender interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpSender interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpSender interface: attribute track +PASS RTCRtpSender interface: attribute transport +PASS RTCRtpSender interface: operation getCapabilities(DOMString) +PASS RTCRtpSender interface: operation setParameters(RTCRtpSendParameters) +PASS RTCRtpSender interface: operation getParameters() +PASS RTCRtpSender interface: operation replaceTrack(MediaStreamTrack?) +PASS RTCRtpSender interface: operation setStreams(MediaStream...) +PASS RTCRtpSender interface: operation getStats() +PASS RTCRtpSender interface: attribute dtmf +PASS RTCRtpSender must be primary interface of new RTCPeerConnection().addTransceiver('audio').sender +PASS Stringification of new RTCPeerConnection().addTransceiver('audio').sender +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "track" with the proper type +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "transport" with the proper type +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getCapabilities(DOMString)" with the proper type +PASS RTCRtpSender interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setParameters(RTCRtpSendParameters)" with the proper type +PASS RTCRtpSender interface: calling setParameters(RTCRtpSendParameters) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getParameters()" with the proper type +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "replaceTrack(MediaStreamTrack?)" with the proper type +PASS RTCRtpSender interface: calling replaceTrack(MediaStreamTrack?) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setStreams(MediaStream...)" with the proper type +PASS RTCRtpSender interface: calling setStreams(MediaStream...) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getStats()" with the proper type +PASS RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "dtmf" with the proper type +PASS RTCRtpReceiver interface: existence and properties of interface object +PASS RTCRtpReceiver interface object length +PASS RTCRtpReceiver interface object name +PASS RTCRtpReceiver interface: existence and properties of interface prototype object +PASS RTCRtpReceiver interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpReceiver interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpReceiver interface: attribute track +PASS RTCRtpReceiver interface: attribute transport +PASS RTCRtpReceiver interface: operation getCapabilities(DOMString) +PASS RTCRtpReceiver interface: operation getParameters() +PASS RTCRtpReceiver interface: operation getContributingSources() +PASS RTCRtpReceiver interface: operation getSynchronizationSources() +PASS RTCRtpReceiver interface: operation getStats() +PASS RTCRtpReceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio').receiver +PASS Stringification of new RTCPeerConnection().addTransceiver('audio').receiver +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "track" with the proper type +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "transport" with the proper type +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getCapabilities(DOMString)" with the proper type +PASS RTCRtpReceiver interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').receiver with too few arguments must throw TypeError +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getParameters()" with the proper type +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getContributingSources()" with the proper type +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getSynchronizationSources()" with the proper type +PASS RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getStats()" with the proper type +PASS RTCRtpTransceiver interface: existence and properties of interface object +PASS RTCRtpTransceiver interface object length +PASS RTCRtpTransceiver interface object name +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpTransceiver interface: attribute mid +PASS RTCRtpTransceiver interface: attribute sender +PASS RTCRtpTransceiver interface: attribute receiver +PASS RTCRtpTransceiver interface: attribute direction +PASS RTCRtpTransceiver interface: attribute currentDirection +PASS RTCRtpTransceiver interface: operation stop() +PASS RTCRtpTransceiver interface: operation setCodecPreferences(sequence<RTCRtpCodecCapability>) +PASS RTCRtpTransceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio') +PASS Stringification of new RTCPeerConnection().addTransceiver('audio') +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "mid" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "sender" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "receiver" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "direction" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "currentDirection" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "stop()" with the proper type +PASS RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "setCodecPreferences(sequence<RTCRtpCodecCapability>)" with the proper type +PASS RTCRtpTransceiver interface: calling setCodecPreferences(sequence<RTCRtpCodecCapability>) on new RTCPeerConnection().addTransceiver('audio') with too few arguments must throw TypeError +PASS RTCDtlsTransport interface: existence and properties of interface object +PASS RTCDtlsTransport interface object length +PASS RTCDtlsTransport interface object name +PASS RTCDtlsTransport interface: existence and properties of interface prototype object +PASS RTCDtlsTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDtlsTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDtlsTransport interface: attribute iceTransport +PASS RTCDtlsTransport interface: attribute state +PASS RTCDtlsTransport interface: operation getRemoteCertificates() +PASS RTCDtlsTransport interface: attribute onstatechange +PASS RTCDtlsTransport interface: attribute onerror +PASS RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport +PASS Stringification of idlTestObjects.dtlsTransport +PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type +PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type +PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type +PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type +PASS RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type +FAIL RTCIceTransport interface: existence and properties of interface object assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() { + new interface_object(); + }" did not throw +PASS RTCIceTransport interface object length +PASS RTCIceTransport interface object name +PASS RTCIceTransport interface: existence and properties of interface prototype object +PASS RTCIceTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCIceTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCIceTransport interface: attribute role +FAIL RTCIceTransport interface: attribute component assert_true: The prototype object must have a property "component" expected true got false +PASS RTCIceTransport interface: attribute state +PASS RTCIceTransport interface: attribute gatheringState +PASS RTCIceTransport interface: operation getLocalCandidates() +PASS RTCIceTransport interface: operation getRemoteCandidates() +PASS RTCIceTransport interface: operation getSelectedCandidatePair() +PASS RTCIceTransport interface: operation getLocalParameters() +PASS RTCIceTransport interface: operation getRemoteParameters() +PASS RTCIceTransport interface: attribute onstatechange +PASS RTCIceTransport interface: attribute ongatheringstatechange +PASS RTCIceTransport interface: attribute onselectedcandidatepairchange +PASS RTCIceTransport must be primary interface of idlTestObjects.iceTransport +PASS Stringification of idlTestObjects.iceTransport +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_equals: expected "string" but got "object" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_inherits: property "component" not found in prototype chain +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type +PASS RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type +PASS RTCTrackEvent interface: existence and properties of interface object +PASS RTCTrackEvent interface object length +PASS RTCTrackEvent interface object name +PASS RTCTrackEvent interface: existence and properties of interface prototype object +PASS RTCTrackEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCTrackEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCTrackEvent interface: attribute receiver +PASS RTCTrackEvent interface: attribute track +PASS RTCTrackEvent interface: attribute streams +PASS RTCTrackEvent interface: attribute transceiver +PASS RTCTrackEvent must be primary interface of initTrackEvent() +PASS Stringification of initTrackEvent() +PASS RTCTrackEvent interface: initTrackEvent() must inherit property "receiver" with the proper type +PASS RTCTrackEvent interface: initTrackEvent() must inherit property "track" with the proper type +PASS RTCTrackEvent interface: initTrackEvent() must inherit property "streams" with the proper type +PASS RTCTrackEvent interface: initTrackEvent() must inherit property "transceiver" with the proper type +PASS RTCSctpTransport interface: existence and properties of interface object +PASS RTCSctpTransport interface object length +PASS RTCSctpTransport interface object name +PASS RTCSctpTransport interface: existence and properties of interface prototype object +PASS RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCSctpTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCSctpTransport interface: attribute transport +PASS RTCSctpTransport interface: attribute state +PASS RTCSctpTransport interface: attribute maxMessageSize +PASS RTCSctpTransport interface: attribute maxChannels +PASS RTCSctpTransport interface: attribute onstatechange +PASS RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport +PASS Stringification of idlTestObjects.sctpTransport +PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type +PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type +PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type +PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type +PASS RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type +PASS RTCDataChannel interface: existence and properties of interface object +PASS RTCDataChannel interface object length +PASS RTCDataChannel interface object name +PASS RTCDataChannel interface: existence and properties of interface prototype object +PASS RTCDataChannel interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDataChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDataChannel interface: attribute label +PASS RTCDataChannel interface: attribute ordered +PASS RTCDataChannel interface: attribute maxPacketLifeTime +PASS RTCDataChannel interface: attribute maxRetransmits +PASS RTCDataChannel interface: attribute protocol +PASS RTCDataChannel interface: attribute negotiated +PASS RTCDataChannel interface: attribute id +PASS RTCDataChannel interface: attribute readyState +PASS RTCDataChannel interface: attribute bufferedAmount +PASS RTCDataChannel interface: attribute bufferedAmountLowThreshold +PASS RTCDataChannel interface: attribute onopen +PASS RTCDataChannel interface: attribute onbufferedamountlow +PASS RTCDataChannel interface: attribute onerror +PASS RTCDataChannel interface: attribute onclosing +PASS RTCDataChannel interface: attribute onclose +PASS RTCDataChannel interface: operation close() +PASS RTCDataChannel interface: attribute onmessage +PASS RTCDataChannel interface: attribute binaryType +PASS RTCDataChannel interface: operation send(USVString) +PASS RTCDataChannel interface: operation send(Blob) +PASS RTCDataChannel interface: operation send(ArrayBuffer) +PASS RTCDataChannel interface: operation send(ArrayBufferView) +PASS RTCDataChannel must be primary interface of new RTCPeerConnection().createDataChannel('') +PASS Stringification of new RTCPeerConnection().createDataChannel('') +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "label" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "ordered" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxPacketLifeTime" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxRetransmits" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "protocol" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "negotiated" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "id" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "readyState" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmount" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmountLowThreshold" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onopen" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onbufferedamountlow" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onerror" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclose" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "close()" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onmessage" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "binaryType" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(USVString)" with the proper type +PASS RTCDataChannel interface: calling send(USVString) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(Blob)" with the proper type +PASS RTCDataChannel interface: calling send(Blob) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBuffer)" with the proper type +PASS RTCDataChannel interface: calling send(ArrayBuffer) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBufferView)" with the proper type +PASS RTCDataChannel interface: calling send(ArrayBufferView) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannelEvent interface: existence and properties of interface object +PASS RTCDataChannelEvent interface object length +PASS RTCDataChannelEvent interface object name +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDataChannelEvent interface: attribute channel +PASS RTCDataChannelEvent must be primary interface of new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) +PASS Stringification of new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) +PASS RTCDataChannelEvent interface: new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) must inherit property "channel" with the proper type +PASS RTCDTMFSender interface: existence and properties of interface object +PASS RTCDTMFSender interface object length +PASS RTCDTMFSender interface object name +PASS RTCDTMFSender interface: existence and properties of interface prototype object +PASS RTCDTMFSender interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDTMFSender interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDTMFSender interface: operation insertDTMF(DOMString, optional unsigned long, optional unsigned long) +PASS RTCDTMFSender interface: attribute ontonechange +PASS RTCDTMFSender interface: attribute canInsertDTMF +PASS RTCDTMFSender interface: attribute toneBuffer +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface object +FAIL RTCDTMFToneChangeEvent interface object length assert_equals: wrong value for RTCDTMFToneChangeEvent.length expected 1 but got 2 +PASS RTCDTMFToneChangeEvent interface object name +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDTMFToneChangeEvent interface: attribute tone +PASS RTCStatsReport interface: existence and properties of interface object +PASS RTCStatsReport interface object length +PASS RTCStatsReport interface object name +PASS RTCStatsReport interface: existence and properties of interface prototype object +PASS RTCStatsReport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCStatsReport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCError interface: existence and properties of interface object +PASS RTCError interface object length +PASS RTCError interface object name +PASS RTCError interface: existence and properties of interface prototype object +PASS RTCError interface: existence and properties of interface prototype object's "constructor" property +PASS RTCError interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCError interface: attribute errorDetail +PASS RTCError interface: attribute sdpLineNumber +PASS RTCError interface: attribute sctpCauseCode +PASS RTCError interface: attribute receivedAlert +PASS RTCError interface: attribute sentAlert +PASS RTCErrorEvent interface: existence and properties of interface object +PASS RTCErrorEvent interface object length +PASS RTCErrorEvent interface object name +PASS RTCErrorEvent interface: existence and properties of interface prototype object +PASS RTCErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCErrorEvent interface: attribute error +FAIL RTCErrorEvent must be primary interface of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +FAIL Stringification of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +FAIL RTCErrorEvent interface: new RTCErrorEvent('error') must inherit property "error" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt new file mode 100644 index 0000000..a343612 --- /dev/null +++ b/third_party/blink/web_tests/platform/mac-mac-arm11.0/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -0,0 +1,508 @@ +This is a testharness.js-based test. +Found 496 tests; 412 PASS, 84 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS idl_test setup +PASS idl_test validation +PASS Test driver for asyncInitCertificate +FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: Error: assert_true: Expect pc.sctp to be instance of RTCSctpTransport expected true got false Reached unreachable code +PASS Test driver for asyncInitMediaStreamTrack +PASS Partial dictionary RTCOfferOptions: original dictionary defined +PASS Partial dictionary RTCOfferOptions: member names are unique +PASS Partial interface RTCPeerConnection: original interface defined +PASS Partial interface RTCPeerConnection: member names are unique +PASS Partial interface RTCPeerConnection[2]: original interface defined +PASS Partial interface RTCPeerConnection[2]: member names are unique +PASS Partial interface RTCPeerConnection[3]: original interface defined +PASS Partial interface RTCPeerConnection[3]: member names are unique +PASS Partial interface RTCRtpSender: original interface defined +PASS Partial interface RTCRtpSender: member names are unique +PASS Partial interface RTCPeerConnection[4]: original interface defined +PASS Partial interface RTCPeerConnection[4]: member names are unique +PASS RTCPeerConnection interface: existence and properties of interface object +PASS RTCPeerConnection interface object length +PASS RTCPeerConnection interface object name +PASS RTCPeerConnection interface: existence and properties of interface prototype object +PASS RTCPeerConnection interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnection interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnection interface: operation createOffer(optional RTCOfferOptions) +PASS RTCPeerConnection interface: operation createAnswer(optional RTCAnswerOptions) +PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit) +PASS RTCPeerConnection interface: attribute localDescription +PASS RTCPeerConnection interface: attribute currentLocalDescription +PASS RTCPeerConnection interface: attribute pendingLocalDescription +PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit) +PASS RTCPeerConnection interface: attribute remoteDescription +PASS RTCPeerConnection interface: attribute currentRemoteDescription +PASS RTCPeerConnection interface: attribute pendingRemoteDescription +FAIL RTCPeerConnection interface: operation addIceCandidate(optional RTCIceCandidateInit) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: attribute signalingState +PASS RTCPeerConnection interface: attribute iceGatheringState +PASS RTCPeerConnection interface: attribute iceConnectionState +PASS RTCPeerConnection interface: attribute connectionState +PASS RTCPeerConnection interface: attribute canTrickleIceCandidates +PASS RTCPeerConnection interface: operation restartIce() +PASS RTCPeerConnection interface: operation getConfiguration() +FAIL RTCPeerConnection interface: operation setConfiguration(optional RTCConfiguration) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: operation close() +PASS RTCPeerConnection interface: attribute onnegotiationneeded +PASS RTCPeerConnection interface: attribute onicecandidate +PASS RTCPeerConnection interface: attribute onicecandidateerror +PASS RTCPeerConnection interface: attribute onsignalingstatechange +PASS RTCPeerConnection interface: attribute oniceconnectionstatechange +PASS RTCPeerConnection interface: attribute onicegatheringstatechange +PASS RTCPeerConnection interface: attribute onconnectionstatechange +PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) +PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1 +PASS RTCPeerConnection interface: operation generateCertificate(AlgorithmIdentifier) +PASS RTCPeerConnection interface: operation getSenders() +PASS RTCPeerConnection interface: operation getReceivers() +PASS RTCPeerConnection interface: operation getTransceivers() +PASS RTCPeerConnection interface: operation addTrack(MediaStreamTrack, MediaStream...) +PASS RTCPeerConnection interface: operation removeTrack(RTCRtpSender) +PASS RTCPeerConnection interface: operation addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit) +PASS RTCPeerConnection interface: attribute ontrack +PASS RTCPeerConnection interface: attribute sctp +PASS RTCPeerConnection interface: operation createDataChannel(USVString, optional RTCDataChannelInit) +PASS RTCPeerConnection interface: attribute ondatachannel +PASS RTCPeerConnection interface: operation getStats(optional MediaStreamTrack?) +PASS RTCPeerConnection must be primary interface of new RTCPeerConnection() +PASS Stringification of new RTCPeerConnection() +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(optional RTCOfferOptions)" with the proper type +PASS RTCPeerConnection interface: calling createOffer(optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(optional RTCAnswerOptions)" with the proper type +PASS RTCPeerConnection interface: calling createAnswer(optional RTCAnswerOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "localDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentLocalDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingLocalDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit)" with the proper type +PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "remoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "currentRemoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "pendingRemoteDescription" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(optional RTCIceCandidateInit)" with the proper type +PASS RTCPeerConnection interface: calling addIceCandidate(optional RTCIceCandidateInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "signalingState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceGatheringState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "iceConnectionState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "connectionState" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "canTrickleIceCandidates" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "restartIce()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getConfiguration()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setConfiguration(optional RTCConfiguration)" with the proper type +PASS RTCPeerConnection interface: calling setConfiguration(optional RTCConfiguration) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions)" with the proper type +PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "generateCertificate(AlgorithmIdentifier)" with the proper type +PASS RTCPeerConnection interface: calling generateCertificate(AlgorithmIdentifier) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getSenders()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getReceivers()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getTransceivers()" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTrack(MediaStreamTrack, MediaStream...)" with the proper type +PASS RTCPeerConnection interface: calling addTrack(MediaStreamTrack, MediaStream...) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "removeTrack(RTCRtpSender)" with the proper type +PASS RTCPeerConnection interface: calling removeTrack(RTCRtpSender) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit)" with the proper type +PASS RTCPeerConnection interface: calling addTransceiver((MediaStreamTrack or DOMString), optional RTCRtpTransceiverInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ontrack" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "sctp" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createDataChannel(USVString, optional RTCDataChannelInit)" with the proper type +PASS RTCPeerConnection interface: calling createDataChannel(USVString, optional RTCDataChannelInit) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "ondatachannel" with the proper type +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "getStats(optional MediaStreamTrack?)" with the proper type +PASS RTCPeerConnection interface: calling getStats(optional MediaStreamTrack?) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCSessionDescription interface: existence and properties of interface object +FAIL RTCSessionDescription interface object length assert_equals: wrong value for RTCSessionDescription.length expected 1 but got 0 +PASS RTCSessionDescription interface object name +PASS RTCSessionDescription interface: existence and properties of interface prototype object +PASS RTCSessionDescription interface: existence and properties of interface prototype object's "constructor" property +PASS RTCSessionDescription interface: existence and properties of interface prototype object's @@unscopables property +FAIL RTCSessionDescription interface: attribute type assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set type() { [native code] }" +FAIL RTCSessionDescription interface: attribute sdp assert_equals: setter must be undefined for readonly attributes expected (undefined) undefined but got (function) function "function set sdp() { [native code] }" +PASS RTCSessionDescription interface: operation toJSON() +PASS RTCSessionDescription must be primary interface of new RTCSessionDescription({ type: 'offer' }) +PASS Stringification of new RTCSessionDescription({ type: 'offer' }) +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "type" with the proper type +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "sdp" with the proper type +PASS RTCSessionDescription interface: new RTCSessionDescription({ type: 'offer' }) must inherit property "toJSON()" with the proper type +PASS RTCSessionDescription interface: default toJSON operation on new RTCSessionDescription({ type: 'offer' }) +PASS RTCIceCandidate interface: existence and properties of interface object +PASS RTCIceCandidate interface object length +PASS RTCIceCandidate interface object name +PASS RTCIceCandidate interface: existence and properties of interface prototype object +PASS RTCIceCandidate interface: existence and properties of interface prototype object's "constructor" property +PASS RTCIceCandidate interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCIceCandidate interface: attribute candidate +PASS RTCIceCandidate interface: attribute sdpMid +PASS RTCIceCandidate interface: attribute sdpMLineIndex +PASS RTCIceCandidate interface: attribute foundation +PASS RTCIceCandidate interface: attribute component +PASS RTCIceCandidate interface: attribute priority +PASS RTCIceCandidate interface: attribute address +PASS RTCIceCandidate interface: attribute protocol +PASS RTCIceCandidate interface: attribute port +PASS RTCIceCandidate interface: attribute type +PASS RTCIceCandidate interface: attribute tcpType +PASS RTCIceCandidate interface: attribute relatedAddress +PASS RTCIceCandidate interface: attribute relatedPort +PASS RTCIceCandidate interface: attribute usernameFragment +PASS RTCIceCandidate interface: operation toJSON() +PASS RTCIceCandidate must be primary interface of new RTCIceCandidate({ sdpMid: 1 }) +PASS Stringification of new RTCIceCandidate({ sdpMid: 1 }) +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "candidate" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMid" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "sdpMLineIndex" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "foundation" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "component" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "priority" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "address" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "protocol" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "port" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "type" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "tcpType" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedAddress" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "relatedPort" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "usernameFragment" with the proper type +PASS RTCIceCandidate interface: new RTCIceCandidate({ sdpMid: 1 }) must inherit property "toJSON()" with the proper type +PASS RTCIceCandidate interface: toJSON operation on new RTCIceCandidate({ sdpMid: 1 }) +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface object +PASS RTCPeerConnectionIceEvent interface object length +PASS RTCPeerConnectionIceEvent interface object name +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnectionIceEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnectionIceEvent interface: attribute candidate +FAIL RTCPeerConnectionIceEvent interface: attribute url assert_true: The prototype object must have a property "url" expected true got false +PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectionIceEvent('ice') +PASS Stringification of new RTCPeerConnectionIceEvent('ice') +PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type +FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object +PASS RTCPeerConnectionIceErrorEvent interface object length +PASS RTCPeerConnectionIceErrorEvent interface object name +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCPeerConnectionIceErrorEvent interface: attribute address +PASS RTCPeerConnectionIceErrorEvent interface: attribute port +PASS RTCPeerConnectionIceErrorEvent interface: attribute url +PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode +PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText +PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); +PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "address" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "port" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "url" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "errorCode" with the proper type +PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { port: 0, errorCode: 701 }); must inherit property "errorText" with the proper type +PASS RTCCertificate interface: existence and properties of interface object +PASS RTCCertificate interface object length +PASS RTCCertificate interface object name +PASS RTCCertificate interface: existence and properties of interface prototype object +PASS RTCCertificate interface: existence and properties of interface prototype object's "constructor" property +PASS RTCCertificate interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCCertificate interface: attribute expires +PASS RTCCertificate interface: operation getFingerprints() +PASS RTCCertificate must be primary interface of idlTestObjects.certificate +PASS Stringification of idlTestObjects.certificate +PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "expires" with the proper type +PASS RTCCertificate interface: idlTestObjects.certificate must inherit property "getFingerprints()" with the proper type +PASS RTCRtpSender interface: existence and properties of interface object +PASS RTCRtpSender interface object length +PASS RTCRtpSender interface object name +PASS RTCRtpSender interface: existence and properties of interface prototype object +PASS RTCRtpSender interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpSender interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpSender interface: attribute track +PASS RTCRtpSender interface: attribute transport +PASS RTCRtpSender interface: operation getCapabilities(DOMString) +PASS RTCRtpSender interface: operation setParameters(RTCRtpSendParameters) +PASS RTCRtpSender interface: operation getParameters() +PASS RTCRtpSender interface: operation replaceTrack(MediaStreamTrack?) +PASS RTCRtpSender interface: operation setStreams(MediaStream...) +PASS RTCRtpSender interface: operation getStats() +PASS RTCRtpSender interface: attribute dtmf +FAIL RTCRtpSender must be primary interface of new RTCPeerConnection().addTransceiver('audio').sender assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL Stringification of new RTCPeerConnection().addTransceiver('audio').sender assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "transport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getCapabilities(DOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setParameters(RTCRtpSendParameters)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: calling setParameters(RTCRtpSendParameters) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getParameters()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "replaceTrack(MediaStreamTrack?)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: calling replaceTrack(MediaStreamTrack?) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "setStreams(MediaStream...)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: calling setStreams(MediaStream...) on new RTCPeerConnection().addTransceiver('audio').sender with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpSender interface: new RTCPeerConnection().addTransceiver('audio').sender must inherit property "dtmf" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +PASS RTCRtpReceiver interface: existence and properties of interface object +PASS RTCRtpReceiver interface object length +PASS RTCRtpReceiver interface object name +PASS RTCRtpReceiver interface: existence and properties of interface prototype object +PASS RTCRtpReceiver interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpReceiver interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpReceiver interface: attribute track +PASS RTCRtpReceiver interface: attribute transport +PASS RTCRtpReceiver interface: operation getCapabilities(DOMString) +PASS RTCRtpReceiver interface: operation getParameters() +PASS RTCRtpReceiver interface: operation getContributingSources() +PASS RTCRtpReceiver interface: operation getSynchronizationSources() +PASS RTCRtpReceiver interface: operation getStats() +FAIL RTCRtpReceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio').receiver assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL Stringification of new RTCPeerConnection().addTransceiver('audio').receiver assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "transport" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getCapabilities(DOMString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: calling getCapabilities(DOMString) on new RTCPeerConnection().addTransceiver('audio').receiver with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getParameters()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getContributingSources()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getSynchronizationSources()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpReceiver interface: new RTCPeerConnection().addTransceiver('audio').receiver must inherit property "getStats()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +PASS RTCRtpTransceiver interface: existence and properties of interface object +PASS RTCRtpTransceiver interface object length +PASS RTCRtpTransceiver interface object name +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's "constructor" property +PASS RTCRtpTransceiver interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCRtpTransceiver interface: attribute mid +PASS RTCRtpTransceiver interface: attribute sender +PASS RTCRtpTransceiver interface: attribute receiver +PASS RTCRtpTransceiver interface: attribute direction +PASS RTCRtpTransceiver interface: attribute currentDirection +PASS RTCRtpTransceiver interface: operation stop() +PASS RTCRtpTransceiver interface: operation setCodecPreferences(sequence<RTCRtpCodecCapability>) +FAIL RTCRtpTransceiver must be primary interface of new RTCPeerConnection().addTransceiver('audio') assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL Stringification of new RTCPeerConnection().addTransceiver('audio') assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "mid" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "sender" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "receiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "direction" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "currentDirection" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "stop()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: new RTCPeerConnection().addTransceiver('audio') must inherit property "setCodecPreferences(sequence<RTCRtpCodecCapability>)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCRtpTransceiver interface: calling setCodecPreferences(sequence<RTCRtpCodecCapability>) on new RTCPeerConnection().addTransceiver('audio') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +PASS RTCDtlsTransport interface: existence and properties of interface object +PASS RTCDtlsTransport interface object length +PASS RTCDtlsTransport interface object name +PASS RTCDtlsTransport interface: existence and properties of interface prototype object +PASS RTCDtlsTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDtlsTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDtlsTransport interface: attribute iceTransport +PASS RTCDtlsTransport interface: attribute state +PASS RTCDtlsTransport interface: operation getRemoteCertificates() +PASS RTCDtlsTransport interface: attribute onstatechange +PASS RTCDtlsTransport interface: attribute onerror +FAIL RTCDtlsTransport must be primary interface of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL Stringification of idlTestObjects.dtlsTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "iceTransport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "getRemoteCertificates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCDtlsTransport interface: idlTestObjects.dtlsTransport must inherit property "onerror" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: existence and properties of interface object assert_throws_js: interface object didn't throw TypeError when called as a constructor function "function() { + new interface_object(); + }" did not throw +PASS RTCIceTransport interface object length +PASS RTCIceTransport interface object name +PASS RTCIceTransport interface: existence and properties of interface prototype object +PASS RTCIceTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCIceTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCIceTransport interface: attribute role +FAIL RTCIceTransport interface: attribute component assert_true: The prototype object must have a property "component" expected true got false +PASS RTCIceTransport interface: attribute state +PASS RTCIceTransport interface: attribute gatheringState +PASS RTCIceTransport interface: operation getLocalCandidates() +PASS RTCIceTransport interface: operation getRemoteCandidates() +PASS RTCIceTransport interface: operation getSelectedCandidatePair() +PASS RTCIceTransport interface: operation getLocalParameters() +PASS RTCIceTransport interface: operation getRemoteParameters() +PASS RTCIceTransport interface: attribute onstatechange +PASS RTCIceTransport interface: attribute ongatheringstatechange +PASS RTCIceTransport interface: attribute onselectedcandidatepairchange +FAIL RTCIceTransport must be primary interface of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL Stringification of idlTestObjects.iceTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "role" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "component" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "gatheringState" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteCandidates()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getSelectedCandidatePair()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getLocalParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "getRemoteParameters()" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "ongatheringstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCIceTransport interface: idlTestObjects.iceTransport must inherit property "onselectedcandidatepairchange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +PASS RTCTrackEvent interface: existence and properties of interface object +PASS RTCTrackEvent interface object length +PASS RTCTrackEvent interface object name +PASS RTCTrackEvent interface: existence and properties of interface prototype object +PASS RTCTrackEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCTrackEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCTrackEvent interface: attribute receiver +PASS RTCTrackEvent interface: attribute track +PASS RTCTrackEvent interface: attribute streams +PASS RTCTrackEvent interface: attribute transceiver +FAIL RTCTrackEvent must be primary interface of initTrackEvent() assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL Stringification of initTrackEvent() assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "receiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "track" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "streams" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +FAIL RTCTrackEvent interface: initTrackEvent() must inherit property "transceiver" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "InvalidStateError: Failed to execute 'addTransceiver' on 'RTCPeerConnection': This operation is only supported in 'unified-plan'." +PASS RTCSctpTransport interface: existence and properties of interface object +PASS RTCSctpTransport interface object length +PASS RTCSctpTransport interface object name +PASS RTCSctpTransport interface: existence and properties of interface prototype object +PASS RTCSctpTransport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCSctpTransport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCSctpTransport interface: attribute transport +PASS RTCSctpTransport interface: attribute state +PASS RTCSctpTransport interface: attribute maxMessageSize +PASS RTCSctpTransport interface: attribute maxChannels +PASS RTCSctpTransport interface: attribute onstatechange +FAIL RTCSctpTransport must be primary interface of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL Stringification of idlTestObjects.sctpTransport assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "transport" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "state" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxMessageSize" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "maxChannels" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +FAIL RTCSctpTransport interface: idlTestObjects.sctpTransport must inherit property "onstatechange" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" +PASS RTCDataChannel interface: existence and properties of interface object +PASS RTCDataChannel interface object length +PASS RTCDataChannel interface object name +PASS RTCDataChannel interface: existence and properties of interface prototype object +PASS RTCDataChannel interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDataChannel interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDataChannel interface: attribute label +PASS RTCDataChannel interface: attribute ordered +PASS RTCDataChannel interface: attribute maxPacketLifeTime +PASS RTCDataChannel interface: attribute maxRetransmits +PASS RTCDataChannel interface: attribute protocol +PASS RTCDataChannel interface: attribute negotiated +PASS RTCDataChannel interface: attribute id +PASS RTCDataChannel interface: attribute readyState +PASS RTCDataChannel interface: attribute bufferedAmount +PASS RTCDataChannel interface: attribute bufferedAmountLowThreshold +PASS RTCDataChannel interface: attribute onopen +PASS RTCDataChannel interface: attribute onbufferedamountlow +PASS RTCDataChannel interface: attribute onerror +PASS RTCDataChannel interface: attribute onclosing +PASS RTCDataChannel interface: attribute onclose +PASS RTCDataChannel interface: operation close() +PASS RTCDataChannel interface: attribute onmessage +PASS RTCDataChannel interface: attribute binaryType +PASS RTCDataChannel interface: operation send(USVString) +PASS RTCDataChannel interface: operation send(Blob) +PASS RTCDataChannel interface: operation send(ArrayBuffer) +PASS RTCDataChannel interface: operation send(ArrayBufferView) +PASS RTCDataChannel must be primary interface of new RTCPeerConnection().createDataChannel('') +PASS Stringification of new RTCPeerConnection().createDataChannel('') +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "label" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "ordered" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxPacketLifeTime" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "maxRetransmits" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "protocol" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "negotiated" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "id" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "readyState" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmount" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "bufferedAmountLowThreshold" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onopen" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onbufferedamountlow" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onerror" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclosing" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onclose" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "close()" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "onmessage" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "binaryType" with the proper type +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(USVString)" with the proper type +PASS RTCDataChannel interface: calling send(USVString) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(Blob)" with the proper type +PASS RTCDataChannel interface: calling send(Blob) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBuffer)" with the proper type +PASS RTCDataChannel interface: calling send(ArrayBuffer) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannel interface: new RTCPeerConnection().createDataChannel('') must inherit property "send(ArrayBufferView)" with the proper type +PASS RTCDataChannel interface: calling send(ArrayBufferView) on new RTCPeerConnection().createDataChannel('') with too few arguments must throw TypeError +PASS RTCDataChannelEvent interface: existence and properties of interface object +PASS RTCDataChannelEvent interface object length +PASS RTCDataChannelEvent interface object name +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDataChannelEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDataChannelEvent interface: attribute channel +PASS RTCDataChannelEvent must be primary interface of new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) +PASS Stringification of new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) +PASS RTCDataChannelEvent interface: new RTCDataChannelEvent('channel', { + channel: new RTCPeerConnection().createDataChannel('') + }) must inherit property "channel" with the proper type +PASS RTCDTMFSender interface: existence and properties of interface object +PASS RTCDTMFSender interface object length +PASS RTCDTMFSender interface object name +PASS RTCDTMFSender interface: existence and properties of interface prototype object +PASS RTCDTMFSender interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDTMFSender interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDTMFSender interface: operation insertDTMF(DOMString, optional unsigned long, optional unsigned long) +PASS RTCDTMFSender interface: attribute ontonechange +PASS RTCDTMFSender interface: attribute canInsertDTMF +PASS RTCDTMFSender interface: attribute toneBuffer +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface object +FAIL RTCDTMFToneChangeEvent interface object length assert_equals: wrong value for RTCDTMFToneChangeEvent.length expected 1 but got 2 +PASS RTCDTMFToneChangeEvent interface object name +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCDTMFToneChangeEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCDTMFToneChangeEvent interface: attribute tone +PASS RTCStatsReport interface: existence and properties of interface object +PASS RTCStatsReport interface object length +PASS RTCStatsReport interface object name +PASS RTCStatsReport interface: existence and properties of interface prototype object +PASS RTCStatsReport interface: existence and properties of interface prototype object's "constructor" property +PASS RTCStatsReport interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCError interface: existence and properties of interface object +PASS RTCError interface object length +PASS RTCError interface object name +PASS RTCError interface: existence and properties of interface prototype object +PASS RTCError interface: existence and properties of interface prototype object's "constructor" property +PASS RTCError interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCError interface: attribute errorDetail +PASS RTCError interface: attribute sdpLineNumber +PASS RTCError interface: attribute sctpCauseCode +PASS RTCError interface: attribute receivedAlert +PASS RTCError interface: attribute sentAlert +PASS RTCErrorEvent interface: existence and properties of interface object +PASS RTCErrorEvent interface object length +PASS RTCErrorEvent interface object name +PASS RTCErrorEvent interface: existence and properties of interface prototype object +PASS RTCErrorEvent interface: existence and properties of interface prototype object's "constructor" property +PASS RTCErrorEvent interface: existence and properties of interface prototype object's @@unscopables property +PASS RTCErrorEvent interface: attribute error +FAIL RTCErrorEvent must be primary interface of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +FAIL Stringification of new RTCErrorEvent('error') assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +FAIL RTCErrorEvent interface: new RTCErrorEvent('error') must inherit property "error" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: Failed to construct 'RTCErrorEvent': 2 arguments required, but only 1 present." +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..7e27b9c --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png b/third_party/blink/web_tests/platform/mac/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png new file mode 100644 index 0000000..4d276b2a --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..c6f54fb --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/win/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..fc9b8b2c --- /dev/null +++ b/third_party/blink/web_tests/platform/win/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png b/third_party/blink/web_tests/platform/win/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png new file mode 100644 index 0000000..7c45faac --- /dev/null +++ b/third_party/blink/web_tests/platform/win/external/wpt/html/browsers/browsing-the-web/unloading-documents/beforeunload-sticky-activation-manual-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png b/third_party/blink/web_tests/platform/win/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png new file mode 100644 index 0000000..ee57a05 --- /dev/null +++ b/third_party/blink/web_tests/platform/win/virtual/layout_ng_block_frag/external/wpt/css/css-multicol/moz-multicol3-column-balancing-break-inside-avoid-1-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/exotic-color-space/images/jpeg-with-non-interleaved-dc-channels-expected.png b/third_party/blink/web_tests/virtual/exotic-color-space/images/jpeg-with-non-interleaved-dc-channels-expected.png index 65b7cb58..5fe7fde 100644 --- a/third_party/blink/web_tests/virtual/exotic-color-space/images/jpeg-with-non-interleaved-dc-channels-expected.png +++ b/third_party/blink/web_tests/virtual/exotic-color-space/images/jpeg-with-non-interleaved-dc-channels-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.serviceworker-expected.txt b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.serviceworker-expected.txt new file mode 100644 index 0000000..93337d2 --- /dev/null +++ b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.serviceworker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Performance: original interface defined +PASS Partial interface Performance: member names are unique +FAIL Performance interface: operation measureMemory() assert_own_property: interface prototype object missing non-static operation expected property "measureMemory" missing +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.sharedworker-expected.txt b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.sharedworker-expected.txt new file mode 100644 index 0000000..93337d2 --- /dev/null +++ b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.sharedworker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Performance: original interface defined +PASS Partial interface Performance: member names are unique +FAIL Performance interface: operation measureMemory() assert_own_property: interface prototype object missing non-static operation expected property "measureMemory" missing +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.worker-expected.txt b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.worker-expected.txt new file mode 100644 index 0000000..93337d2 --- /dev/null +++ b/third_party/blink/web_tests/virtual/force-eager/external/wpt/measure-memory/idlharness.tentative.any.worker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS idl_test setup +PASS idl_test validation +PASS Partial interface Performance: original interface defined +PASS Partial interface Performance: member names are unique +FAIL Performance interface: operation measureMemory() assert_own_property: interface prototype object missing non-static operation expected property "measureMemory" missing +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt new file mode 100644 index 0000000..9bce732 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/json-module-service-worker-test.https.tentative-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS Javascript importing JSON Module should load within the context of a service worker +PASS JSON Modules should load within the context of a service worker +PASS JSON Module dynamic import should not load within the context of a service worker +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative-expected.txt new file mode 100644 index 0000000..3b8e5b0 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/module.tentative-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +PASS JSON modules +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt new file mode 100644 index 0000000..3dd4020 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS Non-object: null +PASS Non-object: true +PASS Non-object: false +PASS Non-object: string +PASS Non-object: array +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker-expected.txt new file mode 100644 index 0000000..3dd4020 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.sharedworker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS Non-object: null +PASS Non-object: true +PASS Non-object: false +PASS Non-object: string +PASS Non-object: array +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt new file mode 100644 index 0000000..3dd4020 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS Non-object: null +PASS Non-object: true +PASS Non-object: false +PASS Non-object: string +PASS Non-object: array +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative-expected.txt new file mode 100644 index 0000000..4ff8dd8 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/utf8.tentative-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS utf-8 +PASS shift-jis +PASS windows-1252 +PASS utf-7 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative-expected.txt b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative-expected.txt new file mode 100644 index 0000000..84f67c4 --- /dev/null +++ b/third_party/blink/web_tests/virtual/module-top-level-await/external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.tentative-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +PASS text/json +PASS application/json +FAIL text/html+json assert_unreached: [object Event] Reached unreachable code +FAIL image/svg+json assert_unreached: [object Event] Reached unreachable code +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt index a343612..5a8c559 100644 --- a/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt +++ b/third_party/blink/web_tests/virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window-expected.txt
@@ -51,7 +51,7 @@ PASS RTCPeerConnection interface: attribute onicegatheringstatechange PASS RTCPeerConnection interface: attribute onconnectionstatechange PASS RTCPeerConnection interface: operation createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) -PASS RTCPeerConnection interface: operation setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) +PASS RTCPeerConnection interface: operation setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) PASS RTCPeerConnection interface: operation createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) PASS RTCPeerConnection interface: operation setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) FAIL RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidateInit, VoidFunction, RTCPeerConnectionErrorCallback) assert_equals: property has wrong .length expected 0 but got 1 @@ -104,8 +104,8 @@ PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onconnectionstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions)" with the proper type PASS RTCPeerConnection interface: calling createOffer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback, optional RTCOfferOptions) on new RTCPeerConnection() with too few arguments must throw TypeError -PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type -PASS RTCPeerConnection interface: calling setLocalDescription(optional RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError +PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type +PASS RTCPeerConnection interface: calling setLocalDescription(RTCLocalSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback)" with the proper type PASS RTCPeerConnection interface: calling createAnswer(RTCSessionDescriptionCallback, RTCPeerConnectionErrorCallback) on new RTCPeerConnection() with too few arguments must throw TypeError PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "setRemoteDescription(RTCSessionDescriptionInit, VoidFunction, RTCPeerConnectionErrorCallback)" with the proper type
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt deleted file mode 100644 index c6b53d2..0000000 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.tentative-expected.txt +++ /dev/null
@@ -1,110 +0,0 @@ -This is a testharness.js-based test. -Found 106 tests; 103 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS SanitizerAPI sanitize function without argument should throw an error. -PASS SanitizerAPI sanitize function for null. -PASS SanitizerAPI with config: string, sanitize from string function for string -PASS SanitizerAPI with config: html fragment, sanitize from string function for html fragment -PASS SanitizerAPI with config: broken html, sanitize from string function for broken html -PASS SanitizerAPI with config: empty object, sanitize from string function for empty object -PASS SanitizerAPI with config: number, sanitize from string function for number -PASS SanitizerAPI with config: zeros, sanitize from string function for zeros -PASS SanitizerAPI with config: arithmetic, sanitize from string function for arithmetic -PASS SanitizerAPI with config: empty string, sanitize from string function for empty string -PASS SanitizerAPI with config: undefined, sanitize from string function for undefined -PASS SanitizerAPI with config: document, sanitize from string function for document -PASS SanitizerAPI with config: html without close tag, sanitize from string function for html without close tag -PASS SanitizerAPI with config: scripts for default configs, sanitize from string function for scripts for default configs -PASS SanitizerAPI with config: onclick scripts, sanitize from string function for onclick scripts -PASS SanitizerAPI with config: invalid config_input, sanitize from string function for invalid config_input -PASS SanitizerAPI with config: empty dropElements list, sanitize from string function for empty dropElements list -PASS SanitizerAPI with config: test html without close tag with dropElements list ['div'], sanitize from string function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI with config: test script with ["script"] as dropElements list, sanitize from string function for test script with ["script"] as dropElements list -PASS SanitizerAPI with config: dropElements list ["test", "i"]}, sanitize from string function for dropElements list ["test", "i"]} -PASS SanitizerAPI with config: dropElements list ["I", "AM"]}, sanitize from string function for dropElements list ["I", "AM"]} -PASS SanitizerAPI with config: dropElements list ["am", "p"]}, sanitize from string function for dropElements list ["am", "p"]} -PASS SanitizerAPI with config: dropElements list with invalid values}, sanitize from string function for dropElements list with invalid values} -PASS SanitizerAPI with config: blockElements list with invalid values}, sanitize from string function for blockElements list with invalid values} -PASS SanitizerAPI with config: allowElements list ["p"]., sanitize from string function for allowElements list ["p"]. -PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitize from string function for allowElements list has no influence to dropElements. -PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitize from string function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitize from string function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitize from string function for empty dropAttributes list with id attribute -PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitize from string function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitize from string function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitize from string function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitize from string function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitize from string function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitize from string function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitize from string function for allowAttributes list has no influence to dropAttributes -PASS SanitizerAPI with config: string, sanitize from document function for string -PASS SanitizerAPI with config: html fragment, sanitize from document function for html fragment -PASS SanitizerAPI with config: broken html, sanitize from document function for broken html -PASS SanitizerAPI with config: empty object, sanitize from document function for empty object -PASS SanitizerAPI with config: number, sanitize from document function for number -PASS SanitizerAPI with config: zeros, sanitize from document function for zeros -PASS SanitizerAPI with config: arithmetic, sanitize from document function for arithmetic -PASS SanitizerAPI with config: empty string, sanitize from document function for empty string -PASS SanitizerAPI with config: undefined, sanitize from document function for undefined -PASS SanitizerAPI with config: document, sanitize from document function for document -PASS SanitizerAPI with config: html without close tag, sanitize from document function for html without close tag -PASS SanitizerAPI with config: scripts for default configs, sanitize from document function for scripts for default configs -PASS SanitizerAPI with config: onclick scripts, sanitize from document function for onclick scripts -PASS SanitizerAPI with config: invalid config_input, sanitize from document function for invalid config_input -PASS SanitizerAPI with config: empty dropElements list, sanitize from document function for empty dropElements list -PASS SanitizerAPI with config: test html without close tag with dropElements list ['div'], sanitize from document function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI with config: test script with ["script"] as dropElements list, sanitize from document function for test script with ["script"] as dropElements list -PASS SanitizerAPI with config: dropElements list ["test", "i"]}, sanitize from document function for dropElements list ["test", "i"]} -PASS SanitizerAPI with config: dropElements list ["I", "AM"]}, sanitize from document function for dropElements list ["I", "AM"]} -PASS SanitizerAPI with config: dropElements list ["am", "p"]}, sanitize from document function for dropElements list ["am", "p"]} -PASS SanitizerAPI with config: dropElements list with invalid values}, sanitize from document function for dropElements list with invalid values} -PASS SanitizerAPI with config: blockElements list with invalid values}, sanitize from document function for blockElements list with invalid values} -PASS SanitizerAPI with config: allowElements list ["p"]., sanitize from document function for allowElements list ["p"]. -PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitize from document function for allowElements list has no influence to dropElements. -PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitize from document function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitize from document function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitize from document function for empty dropAttributes list with id attribute -PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitize from document function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitize from document function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitize from document function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitize from document function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitize from document function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitize from document function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitize from document function for allowAttributes list has no influence to dropAttributes -PASS SanitizerAPI with config: string, sanitize from document fragment function for string -PASS SanitizerAPI with config: html fragment, sanitize from document fragment function for html fragment -PASS SanitizerAPI with config: broken html, sanitize from document fragment function for broken html -PASS SanitizerAPI with config: empty object, sanitize from document fragment function for empty object -PASS SanitizerAPI with config: number, sanitize from document fragment function for number -PASS SanitizerAPI with config: zeros, sanitize from document fragment function for zeros -PASS SanitizerAPI with config: arithmetic, sanitize from document fragment function for arithmetic -PASS SanitizerAPI with config: empty string, sanitize from document fragment function for empty string -PASS SanitizerAPI with config: undefined, sanitize from document fragment function for undefined -PASS SanitizerAPI with config: document, sanitize from document fragment function for document -PASS SanitizerAPI with config: html without close tag, sanitize from document fragment function for html without close tag -PASS SanitizerAPI with config: scripts for default configs, sanitize from document fragment function for scripts for default configs -PASS SanitizerAPI with config: onclick scripts, sanitize from document fragment function for onclick scripts -PASS SanitizerAPI with config: invalid config_input, sanitize from document fragment function for invalid config_input -PASS SanitizerAPI with config: empty dropElements list, sanitize from document fragment function for empty dropElements list -PASS SanitizerAPI with config: test html without close tag with dropElements list ['div'], sanitize from document fragment function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI with config: test script with ["script"] as dropElements list, sanitize from document fragment function for test script with ["script"] as dropElements list -PASS SanitizerAPI with config: dropElements list ["test", "i"]}, sanitize from document fragment function for dropElements list ["test", "i"]} -PASS SanitizerAPI with config: dropElements list ["I", "AM"]}, sanitize from document fragment function for dropElements list ["I", "AM"]} -PASS SanitizerAPI with config: dropElements list ["am", "p"]}, sanitize from document fragment function for dropElements list ["am", "p"]} -PASS SanitizerAPI with config: dropElements list with invalid values}, sanitize from document fragment function for dropElements list with invalid values} -PASS SanitizerAPI with config: blockElements list with invalid values}, sanitize from document fragment function for blockElements list with invalid values} -PASS SanitizerAPI with config: allowElements list ["p"]., sanitize from document fragment function for allowElements list ["p"]. -PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitize from document fragment function for allowElements list has no influence to dropElements. -PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitize from document fragment function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitize from document fragment function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitize from document fragment function for empty dropAttributes list with id attribute -PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitize from document fragment function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitize from document fragment function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitize from document fragment function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitize from document fragment function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitize from document fragment function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitize from document fragment function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitize from document fragment function for allowAttributes list has no influence to dropAttributes -PASS SanitizerAPI sanitize from TrustedHTML. -PASS SanitizerAPI sanitize from string with default policy. -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt deleted file mode 100644 index 9cecc41..0000000 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeToString.tentative-expected.txt +++ /dev/null
@@ -1,108 +0,0 @@ -This is a testharness.js-based test. -Found 104 tests; 101 PASS, 3 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS SanitizerAPI sanitize function without argument should throw an error. -PASS SanitizerAPI sanitizeToString function for null. -PASS SanitizerAPI config: string, sanitizeToString from string function for string -PASS SanitizerAPI config: html fragment, sanitizeToString from string function for html fragment -PASS SanitizerAPI config: broken html, sanitizeToString from string function for broken html -PASS SanitizerAPI config: empty object, sanitizeToString from string function for empty object -PASS SanitizerAPI config: number, sanitizeToString from string function for number -PASS SanitizerAPI config: zeros, sanitizeToString from string function for zeros -PASS SanitizerAPI config: arithmetic, sanitizeToString from string function for arithmetic -PASS SanitizerAPI config: empty string, sanitizeToString from string function for empty string -PASS SanitizerAPI config: undefined, sanitizeToString from string function for undefined -PASS SanitizerAPI config: document, sanitizeToString from string function for document -PASS SanitizerAPI config: html without close tag, sanitizeToString from string function for html without close tag -PASS SanitizerAPI config: scripts for default configs, sanitizeToString from string function for scripts for default configs -PASS SanitizerAPI config: onclick scripts, sanitizeToString from string function for onclick scripts -PASS SanitizerAPI config: invalid config_input, sanitizeToString from string function for invalid config_input -PASS SanitizerAPI config: empty dropElements list, sanitizeToString from string function for empty dropElements list -PASS SanitizerAPI config: test html without close tag with dropElements list ['div'], sanitizeToString from string function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI config: test script with ["script"] as dropElements list, sanitizeToString from string function for test script with ["script"] as dropElements list -PASS SanitizerAPI config: dropElements list ["test", "i"]}, sanitizeToString from string function for dropElements list ["test", "i"]} -PASS SanitizerAPI config: dropElements list ["I", "AM"]}, sanitizeToString from string function for dropElements list ["I", "AM"]} -PASS SanitizerAPI config: dropElements list ["am", "p"]}, sanitizeToString from string function for dropElements list ["am", "p"]} -PASS SanitizerAPI config: dropElements list with invalid values}, sanitizeToString from string function for dropElements list with invalid values} -PASS SanitizerAPI config: blockElements list with invalid values}, sanitizeToString from string function for blockElements list with invalid values} -PASS SanitizerAPI config: allowElements list ["p"]., sanitizeToString from string function for allowElements list ["p"]. -PASS SanitizerAPI config: allowElements list has no influence to dropElements., sanitizeToString from string function for allowElements list has no influence to dropElements. -PASS SanitizerAPI config: dropAttributes list {"style": ["p"]} with style attribute, sanitizeToString from string function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI config: dropAttributes list {"*": ["a"]} with style attribute, sanitizeToString from string function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI config: empty dropAttributes list with id attribute, sanitizeToString from string function for empty dropAttributes list with id attribute -PASS SanitizerAPI config: dropAttributes list {"id": ["*"]} with id attribute, sanitizeToString from string function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI config: dropAttributes list {"ID": ["*"]} with id attribute, sanitizeToString from string function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitizeToString from string function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI config: allowAttributes list {"id": ["div"]} with id attribute, sanitizeToString from string function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitizeToString from string function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI config: allowAttributes list {"*": ["a"]} with style attribute, sanitizeToString from string function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI config: allowAttributes list has no influence to dropAttributes, sanitizeToString from string function for allowAttributes list has no influence to dropAttributes -PASS SanitizerAPI with config: string, sanitizeToString from document function for string -PASS SanitizerAPI with config: html fragment, sanitizeToString from document function for html fragment -PASS SanitizerAPI with config: broken html, sanitizeToString from document function for broken html -PASS SanitizerAPI with config: empty object, sanitizeToString from document function for empty object -PASS SanitizerAPI with config: number, sanitizeToString from document function for number -PASS SanitizerAPI with config: zeros, sanitizeToString from document function for zeros -PASS SanitizerAPI with config: arithmetic, sanitizeToString from document function for arithmetic -PASS SanitizerAPI with config: empty string, sanitizeToString from document function for empty string -PASS SanitizerAPI with config: undefined, sanitizeToString from document function for undefined -PASS SanitizerAPI with config: document, sanitizeToString from document function for document -PASS SanitizerAPI with config: html without close tag, sanitizeToString from document function for html without close tag -PASS SanitizerAPI with config: scripts for default configs, sanitizeToString from document function for scripts for default configs -PASS SanitizerAPI with config: onclick scripts, sanitizeToString from document function for onclick scripts -PASS SanitizerAPI with config: invalid config_input, sanitizeToString from document function for invalid config_input -PASS SanitizerAPI with config: empty dropElements list, sanitizeToString from document function for empty dropElements list -PASS SanitizerAPI with config: test html without close tag with dropElements list ['div'], sanitizeToString from document function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI with config: test script with ["script"] as dropElements list, sanitizeToString from document function for test script with ["script"] as dropElements list -PASS SanitizerAPI with config: dropElements list ["test", "i"]}, sanitizeToString from document function for dropElements list ["test", "i"]} -PASS SanitizerAPI with config: dropElements list ["I", "AM"]}, sanitizeToString from document function for dropElements list ["I", "AM"]} -PASS SanitizerAPI with config: dropElements list ["am", "p"]}, sanitizeToString from document function for dropElements list ["am", "p"]} -PASS SanitizerAPI with config: dropElements list with invalid values}, sanitizeToString from document function for dropElements list with invalid values} -PASS SanitizerAPI with config: blockElements list with invalid values}, sanitizeToString from document function for blockElements list with invalid values} -PASS SanitizerAPI with config: allowElements list ["p"]., sanitizeToString from document function for allowElements list ["p"]. -PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitizeToString from document function for allowElements list has no influence to dropElements. -PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitizeToString from document function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitizeToString from document function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitizeToString from document function for empty dropAttributes list with id attribute -PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitizeToString from document function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitizeToString from document function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitizeToString from document function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitizeToString from document function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitizeToString from document function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitizeToString from document function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitizeToString from document function for allowAttributes list has no influence to dropAttributes -PASS SanitizerAPI with config: string, sanitizeToString from document fragment function for string -PASS SanitizerAPI with config: html fragment, sanitizeToString from document fragment function for html fragment -PASS SanitizerAPI with config: broken html, sanitizeToString from document fragment function for broken html -PASS SanitizerAPI with config: empty object, sanitizeToString from document fragment function for empty object -PASS SanitizerAPI with config: number, sanitizeToString from document fragment function for number -PASS SanitizerAPI with config: zeros, sanitizeToString from document fragment function for zeros -PASS SanitizerAPI with config: arithmetic, sanitizeToString from document fragment function for arithmetic -PASS SanitizerAPI with config: empty string, sanitizeToString from document fragment function for empty string -PASS SanitizerAPI with config: undefined, sanitizeToString from document fragment function for undefined -PASS SanitizerAPI with config: document, sanitizeToString from document fragment function for document -PASS SanitizerAPI with config: html without close tag, sanitizeToString from document fragment function for html without close tag -PASS SanitizerAPI with config: scripts for default configs, sanitizeToString from document fragment function for scripts for default configs -PASS SanitizerAPI with config: onclick scripts, sanitizeToString from document fragment function for onclick scripts -PASS SanitizerAPI with config: invalid config_input, sanitizeToString from document fragment function for invalid config_input -PASS SanitizerAPI with config: empty dropElements list, sanitizeToString from document fragment function for empty dropElements list -PASS SanitizerAPI with config: test html without close tag with dropElements list ['div'], sanitizeToString from document fragment function for test html without close tag with dropElements list ['div'] -PASS SanitizerAPI with config: test script with ["script"] as dropElements list, sanitizeToString from document fragment function for test script with ["script"] as dropElements list -PASS SanitizerAPI with config: dropElements list ["test", "i"]}, sanitizeToString from document fragment function for dropElements list ["test", "i"]} -PASS SanitizerAPI with config: dropElements list ["I", "AM"]}, sanitizeToString from document fragment function for dropElements list ["I", "AM"]} -PASS SanitizerAPI with config: dropElements list ["am", "p"]}, sanitizeToString from document fragment function for dropElements list ["am", "p"]} -PASS SanitizerAPI with config: dropElements list with invalid values}, sanitizeToString from document fragment function for dropElements list with invalid values} -PASS SanitizerAPI with config: blockElements list with invalid values}, sanitizeToString from document fragment function for blockElements list with invalid values} -PASS SanitizerAPI with config: allowElements list ["p"]., sanitizeToString from document fragment function for allowElements list ["p"]. -PASS SanitizerAPI with config: allowElements list has no influence to dropElements., sanitizeToString from document fragment function for allowElements list has no influence to dropElements. -PASS SanitizerAPI with config: dropAttributes list {"style": ["p"]} with style attribute, sanitizeToString from document fragment function for dropAttributes list {"style": ["p"]} with style attribute -PASS SanitizerAPI with config: dropAttributes list {"*": ["a"]} with style attribute, sanitizeToString from document fragment function for dropAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: empty dropAttributes list with id attribute, sanitizeToString from document fragment function for empty dropAttributes list with id attribute -PASS SanitizerAPI with config: dropAttributes list {"id": ["*"]} with id attribute, sanitizeToString from document fragment function for dropAttributes list {"id": ["*"]} with id attribute -PASS SanitizerAPI with config: dropAttributes list {"ID": ["*"]} with id attribute, sanitizeToString from document fragment function for dropAttributes list {"ID": ["*"]} with id attribute -FAIL SanitizerAPI with config: dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access., sanitizeToString from document fragment function for dropAttributes list {"data-attribute-with-dashes": ["*"]} with dom dataset js access. assert_equals: expected "<p id=\"p\">Click.</p><script></script>" but got "<p id=\"p\">Click.</p>" -PASS SanitizerAPI with config: allowAttributes list {"id": ["div"]} with id attribute, sanitizeToString from document fragment function for allowAttributes list {"id": ["div"]} with id attribute -PASS SanitizerAPI with config: allowAttributes list {"id": ["*"]} with id attribute and onclick scripts, sanitizeToString from document fragment function for allowAttributes list {"id": ["*"]} with id attribute and onclick scripts -PASS SanitizerAPI with config: allowAttributes list {"*": ["a"]} with style attribute, sanitizeToString from document fragment function for allowAttributes list {"*": ["a"]} with style attribute -PASS SanitizerAPI with config: allowAttributes list has no influence to dropAttributes, sanitizeToString from document fragment function for allowAttributes list has no influence to dropAttributes -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js index 90b5c605..5315cf3a 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js
@@ -15,6 +15,7 @@ {config_input: {test: 123}, value: "test", result: "test", message: "invalid config_input"}, {config_input: {dropElements: []}, value: "test", result: "test", message: "empty dropElements list"}, {config_input: {dropElements: ["div"]}, value: "<div>test</div><c>bla", result: "<c>bla</c>", message: "test html without close tag with dropElements list ['div']"}, + {config_input: {dropElements: ["customElement"]}, value: "<customElement>test</customElement>bla", result: "bla", message: "test custom element with dropElements list ['div']"}, {config_input: {dropElements: ["script"]}, value: "<script>alert('i am a test')<\/script>", result: "", message: "test script with [\"script\"] as dropElements list"}, {config_input: {dropElements: ["test", "i"]}, value: "<div>balabala<i>test</i></div><test>t</test>", result: "<div>balabala</div>", message: "dropElements list [\"test\", \"i\"]}"}, {config_input: {dropElements: ["I", "AM"]}, value: "<div>balabala<am>test</am></div>", result: "<div>balabala</div>", message: "dropElements list [\"I\", \"AM\"]}"}, @@ -28,7 +29,7 @@ {config_input: {dropAttributes: {}}, value: "<p id='test'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "empty dropAttributes list with id attribute"}, {config_input: {dropAttributes: {"id": ["*"]}}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list {\"id\": [\"*\"]} with id attribute"}, {config_input: {dropAttributes: {"ID": ["*"]}}, value: "<p id='test'>Click.</p>", result: "<p>Click.</p>", message: "dropAttributes list {\"ID\": [\"*\"]} with id attribute"}, - {config_input: {dropAttributes: {"data-attribute-with-dashes": ["*"]}}, value: "<p id='p' data-attribute-with-dashes='123'>Click.</p><script>document.getElementById('p').dataset.attributeWithDashes=123;</script>", result: "<p id=\"p\">Click.</p><script></script>", message: "dropAttributes list {\"data-attribute-with-dashes\": [\"*\"]} with dom dataset js access."}, + {config_input: {dropAttributes: {"data-attribute-with-dashes": ["*"]}}, value: "<p id='p' data-attribute-with-dashes='123'>Click.</p><script>document.getElementById('p').dataset.attributeWithDashes=123;</script>", result: "<p id=\"p\">Click.</p>", message: "dropAttributes list {\"data-attribute-with-dashes\": [\"*\"]} with dom dataset js access."}, {config_input: {allowAttributes: {"id": ["div"]}}, value: "<p id='p'>P</p><div id='div'>DIV</div>", result: "<p>P</p><div id=\"div\">DIV</div>", message: "allowAttributes list {\"id\": [\"div\"]} with id attribute"}, {config_input: {allowAttributes: {"id": ["*"]}}, value: "<p id='test' onclick='a= 123'>Click.</p>", result: "<p id=\"test\">Click.</p>", message: "allowAttributes list {\"id\": [\"*\"]} with id attribute and onclick scripts"}, {config_input: {allowAttributes: {"*": ["a"]}}, value: "<a id='a' style='color: black'>Click.</a><div style='color: white'>div</div>", result: "<a id=\"a\" style=\"color: black\">Click.</a><div>div</div>", message: "allowAttributes list {\"*\": [\"a\"]} with style attribute"},
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js index 54e4c58..d7c2896f 100644 --- a/third_party/closure_compiler/externs/accessibility_private.js +++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -191,20 +191,6 @@ /** * @enum {string} */ -chrome.accessibilityPrivate.SelectToSpeakPanelAction = { - PREVIOUS_PARAGRAPH: 'previousParagraph', - PREVIOUS_SENTENCE: 'previousSentence', - PAUSE: 'pause', - RESUME: 'resume', - NEXT_SENTENCE: 'nextSentence', - NEXT_PARAGRAPH: 'nextParagraph', - EXIT: 'exit', - CHANGESPEED: 'changeSpeed', -}; - -/** - * @enum {string} - */ chrome.accessibilityPrivate.FocusType = { GLOW: 'glow', SOLID: 'solid', @@ -239,6 +225,20 @@ }; /** + * @enum {string} + */ +chrome.accessibilityPrivate.SelectToSpeakPanelAction = { + PREVIOUS_PARAGRAPH: 'previousParagraph', + PREVIOUS_SENTENCE: 'previousSentence', + PAUSE: 'pause', + RESUME: 'resume', + NEXT_SENTENCE: 'nextSentence', + NEXT_PARAGRAPH: 'nextParagraph', + EXIT: 'exit', + CHANGE_SPEED: 'changeSpeed', +}; + +/** * Called to translate localeCodeToTranslate into human-readable string in the * locale specified by displayLocaleCode * @param {string} localeCodeToTranslate @@ -335,10 +335,11 @@ chrome.accessibilityPrivate.sendSyntheticKeyEvent = function(keyEvent) {}; /** - * Enables or disables mouse events in ChromeVox. - * @param {boolean} enabled True if ChromeVox should receive mouse events. + * Enables or disables mouse events in accessibility extensions + * @param {boolean} enabled True if accessibility component extensions should + * receive mouse events. */ -chrome.accessibilityPrivate.enableChromeVoxMouseEvents = function(enabled) {}; +chrome.accessibilityPrivate.enableMouseEvents = function(enabled) {}; /** * Sends a fabricated mouse event. @@ -414,11 +415,10 @@ * @param {!chrome.accessibilityPrivate.ScreenRect=} anchor A rectangle * indicating the bounds of the object the panel should be displayed next * to. - * @param {boolean=} isPaused Whether Select-to-speak playback is paused. - * @param {number=} speed Current reading speed. + * @param {boolean=} isPaused True if Select-to-speak playback is paused. + * @param {number=} speed Current reading speed (TTS speech rate). */ -chrome.accessibilityPrivate.updateSelectToSpeakPanel = function( - show, anchor, isPaused, speed) {}; +chrome.accessibilityPrivate.updateSelectToSpeakPanel = function(show, anchor, isPaused, speed) {}; /** * Fired whenever ChromeVox should output introduction. @@ -455,7 +455,7 @@ chrome.accessibilityPrivate.onSelectToSpeakStateChangeRequested; /** - * Fired when an action is performed on the Select-to-speak panel. + * Fired when an action is performed in the Select-to-speak panel. * @type {!ChromeEvent} */ chrome.accessibilityPrivate.onSelectToSpeakPanelAction;
diff --git a/third_party/protobuf/BUILD.gn b/third_party/protobuf/BUILD.gn index 64add5c..a916f19e 100644 --- a/third_party/protobuf/BUILD.gn +++ b/third_party/protobuf/BUILD.gn
@@ -217,14 +217,6 @@ } } -source_set("delimited_mesage_util") { - sources = [ - "src/google/protobuf/util/delimited_message_util.cc", - "src/google/protobuf/util/delimited_message_util.h", - ] - deps = [ ":protobuf_lite" ] -} - # This is the full, heavy protobuf lib that's needed for c++ .protos that don't # specify the LITE_RUNTIME option. The protocol compiler itself (protoc) falls # into that category. Do not use in Chrome code.
diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium index ec90f30e..4cc54da 100644 --- a/third_party/protobuf/README.chromium +++ b/third_party/protobuf/README.chromium
@@ -79,9 +79,4 @@ - 0022-Allow-deprecated-fields.patch - Allows depreacated fields to be used without extra C++ compiler warnings. - -- 0023-fix-delimited-message-parsing.patch - - Fixes a bug in delimited message parsing and serialization, as fixed in - protobuf commit with hash bd9a7104e11740e4bcfbde46c190c2d908ef331a + Allows depreacated fields to be used without extra C++ compiler warnings. \ No newline at end of file
diff --git a/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch b/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch deleted file mode 100644 index 808d476..0000000 --- a/third_party/protobuf/patches/0023-fix-delimited-message-parsing.patch +++ /dev/null
@@ -1,63 +0,0 @@ -diff --git a/src/google/protobuf/util/delimited_message_util.cc b/src/google/protobuf/util/delimited_message_util.cc -index 425dc2cfdff8..80cab309be3d 100644 ---- a/src/google/protobuf/util/delimited_message_util.cc -+++ b/src/google/protobuf/util/delimited_message_util.cc -@@ -74,12 +74,18 @@ bool ParseDelimitedFromCodedStream(MessageLite* message, - return false; - } - -+ // Get the position after any size bytes have been read (and only the message -+ // itself remains). -+ int position_after_size = input->CurrentPosition(); -+ - // Tell the stream not to read beyond that size. - io::CodedInputStream::Limit limit = input->PushLimit(size); - - // Parse the message. - if (!message->MergeFromCodedStream(input)) return false; - if (!input->ConsumedEntireMessage()) return false; -+ if (input->CurrentPosition() - position_after_size != static_cast<int>(size)) -+ return false; - - // Release the limit. - input->PopLimit(limit); -diff --git a/src/google/protobuf/util/delimited_message_util_test.cc b/src/google/protobuf/util/delimited_message_util_test.cc -index 9ed67784ee1c..9483a646e738 100644 ---- a/src/google/protobuf/util/delimited_message_util_test.cc -+++ b/src/google/protobuf/util/delimited_message_util_test.cc -@@ -82,6 +82,35 @@ TEST(DelimitedMessageUtilTest, DelimitedMessages) { - } - } - -+TEST(DelimitedMessageUtilTest, FailsAtEndOfStream) { -+ std::stringstream full_stream; -+ std::stringstream partial_stream; -+ -+ { -+ protobuf_unittest::ForeignMessage message; -+ message.set_c(42); -+ message.set_d(24); -+ EXPECT_TRUE(SerializeDelimitedToOstream(message, &full_stream)); -+ -+ std::string full_output = full_stream.str(); -+ ASSERT_GT(full_output.size(), size_t{2}); -+ ASSERT_EQ(full_output[0], 4); -+ -+ partial_stream << full_output[0] << full_output[1] << full_output[2]; -+ } -+ -+ { -+ bool clean_eof; -+ io::IstreamInputStream zstream(&partial_stream); -+ -+ protobuf_unittest::ForeignMessage message; -+ clean_eof = true; -+ EXPECT_FALSE(ParseDelimitedFromZeroCopyStream(&message, -+ &zstream, &clean_eof)); -+ EXPECT_FALSE(clean_eof); -+ } -+} -+ - } // namespace util - } // namespace protobuf - } // namespace google
diff --git a/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc b/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc index 80cab309..425dc2cf 100644 --- a/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc +++ b/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc
@@ -74,18 +74,12 @@ return false; } - // Get the position after any size bytes have been read (and only the message - // itself remains). - int position_after_size = input->CurrentPosition(); - // Tell the stream not to read beyond that size. io::CodedInputStream::Limit limit = input->PushLimit(size); // Parse the message. if (!message->MergeFromCodedStream(input)) return false; if (!input->ConsumedEntireMessage()) return false; - if (input->CurrentPosition() - position_after_size != static_cast<int>(size)) - return false; // Release the limit. input->PopLimit(limit);
diff --git a/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc b/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc index 9483a64..9ed6778 100644 --- a/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc +++ b/third_party/protobuf/src/google/protobuf/util/delimited_message_util_test.cc
@@ -82,35 +82,6 @@ } } -TEST(DelimitedMessageUtilTest, FailsAtEndOfStream) { - std::stringstream full_stream; - std::stringstream partial_stream; - - { - protobuf_unittest::ForeignMessage message; - message.set_c(42); - message.set_d(24); - EXPECT_TRUE(SerializeDelimitedToOstream(message, &full_stream)); - - std::string full_output = full_stream.str(); - ASSERT_GT(full_output.size(), size_t{2}); - ASSERT_EQ(full_output[0], 4); - - partial_stream << full_output[0] << full_output[1] << full_output[2]; - } - - { - bool clean_eof; - io::IstreamInputStream zstream(&partial_stream); - - protobuf_unittest::ForeignMessage message; - clean_eof = true; - EXPECT_FALSE(ParseDelimitedFromZeroCopyStream(&message, - &zstream, &clean_eof)); - EXPECT_FALSE(clean_eof); - } -} - } // namespace util } // namespace protobuf } // namespace google
diff --git a/third_party/r8/README.chromium b/third_party/r8/README.chromium index a45efd0..bb1f250 100644 --- a/third_party/r8/README.chromium +++ b/third_party/r8/README.chromium
@@ -63,3 +63,13 @@ Update instructions for desugar_jdk_libs.json: * Find desugar.json as described above and copy to desugar_jdk_libs.json. * Remove all mentions of ConcurrentHashMap (and remove any trailing commas if necessary). + +How to file bugs against R8: +* Copy & paste the failing ninja command (starts with proguard.py), and add --dump-inputs. +* File bug at go/r8bug +* Things to include (use discretion if some are not relevant): + * src revision bug reproduces at + * Repro steps (gn gen & autoninja commands) + * Prefer enable_chrome_android_internal=false + * The r8inputs.zip from --dump-inputs + * Any relevant dexdump analysis
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index f6cc4305..bfcdcba 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -10981,26 +10981,46 @@ <int value="-2014954614" label="so"/> <int value="-2005166181" label="ja-Latn"/> <int value="-1999171202" label="lv"/> + <int value="-1998337622" label="es-CL"/> <int value="-1994870905" label="lt"/> + <int value="-1986814580" label="om"/> + <int value="-1920649864" label="an"/> <int value="-1898669966" label="zh-CN"/> + <int value="-1872667487" label="rm"/> <int value="-1855113037" label="vi"/> <int value="-1828586117" label="de"/> <int value="-1823968882" label="zh"/> + <int value="-1797669833" label="it-IT"/> <int value="-1791051166" label="ha"/> + <int value="-1787999070" label="wa"/> + <int value="-1776903256" label="es-ES"/> + <int value="-1767491741" label="es-HN"/> <int value="-1760672594" label="mr"/> + <int value="-1741747229" label="es-419"/> <int value="-1735828230" label="zh-TW"/> + <int value="-1734070684" label="en-NZ"/> <int value="-1696927720" label="la"/> <int value="-1690250140" label="ja"/> + <int value="-1683177340" label="qu"/> + <int value="-1662603770" label="es-VE"/> + <int value="-1625830957" label="ln"/> + <int value="-1612285087" label="en-ZA"/> <int value="-1566592213" label="hi-Latn"/> + <int value="-1558307126" label="es-CO"/> <int value="-1532548885" label="pa"/> <int value="-1515310228" label="ps"/> <int value="-1453785110" label="rw"/> + <int value="-1452189651" label="es-CR"/> + <int value="-1346992143" label="nn"/> <int value="-1284862637" label="ru"/> <int value="-1273588087" label="kn"/> + <int value="-1242903543" label="es-UY"/> <int value="-1211529228" label="gd"/> <int value="-1159958698" label="tl"/> + <int value="-1136256351" label="zh-HK"/> <int value="-1117024738" label="zh-Latn"/> <int value="-1100371650" label="sn"/> + <int value="-1086322569" label="es-AR"/> <int value="-1052948093" label="jw"/> <int value="-1048980531" label="ur"/> <int value="-1042449480" label="cy"/> @@ -11009,14 +11029,18 @@ <int value="-1010619188" label="ru-Latn"/> <int value="-1000295094" label="no"/> <int value="-950444864" label="tk"/> + <int value="-926982267" label="de-AT"/> <int value="-887258309" label="hu"/> + <int value="-873154203" label="en-CA"/> <int value="-862298602" label="st"/> <int value="-851607677" label="sm"/> <int value="-838275151" label="xh"/> <int value="-812926878" label="ug"/> + <int value="-780984386" label="fr-CA"/> <int value="-750267977" label="bg"/> <int value="-742603342" label="ca"/> <int value="-740941224" label="ku"/> + <int value="-739605699" label="de-LI"/> <int value="-734032818" label="km"/> <int value="-717751759" label="lb"/> <int value="-659007214" label="el"/> @@ -11025,15 +11049,22 @@ <int value="-644560085" label="su"/> <int value="-598481752" label="et"/> <int value="-548175087" label="tt"/> + <int value="-450972170" label="oc"/> <int value="-442590807" label="sd"/> <int value="-441493751" label="el-Latn"/> + <int value="-439564761" label="he"/> + <int value="-433923634" label="en-US"/> + <int value="-429718906" label="sh"/> <int value="-426630965" label="ga"/> <int value="-415677801" label="it"/> <int value="-403118581" label="sw"/> + <int value="-371077109" label="fr-FR"/> <int value="-349113427" label="am"/> <int value="-342591258" label="sq"/> + <int value="-302282167" label="ti"/> <int value="-226066958" label="bg-Latn"/> <int value="-219674420" label="ta"/> + <int value="-183664425" label="pt-PT"/> <int value="-181870943" label="bn"/> <int value="-110306666" label="sr"/> <int value="-78164291" label="kk"/> @@ -11047,6 +11078,7 @@ <int value="124739394" label="lo"/> <int value="132594104" label="be"/> <int value="134866094" label="ka"/> + <int value="142304335" label="gn"/> <int value="142313505" label="ro"/> <int value="145030010" label="gu"/> <int value="162326141" label="sl"/> @@ -11060,37 +11092,57 @@ <int value="522435458" label="hr"/> <int value="526531379" label="ml"/> <int value="538270200" label="uk"/> + <int value="549800655" label="de-CH"/> + <int value="584710092" label="nb"/> <int value="596295208" label="bs"/> <int value="632444664" label="yue-HK"/> <int value="673577439" label="cs"/> + <int value="720107264" label="es-PE"/> <int value="729519028" label="or"/> <int value="796588925" label="yo"/> <int value="804120371" label="jv"/> <int value="873647701" label="th"/> <int value="910795716" label="ne"/> + <int value="911100675" label="de-DE"/> <int value="925733725" label="ms"/> + <int value="1062172280" label="en-IN"/> <int value="1092864716" label="ht"/> <int value="1110169461" label="hmn"/> <int value="1119752109" label="te"/> <int value="1140816756" label="ar"/> + <int value="1152813109" label="to"/> <int value="1166708194" label="is"/> + <int value="1196096274" label="es-US"/> + <int value="1199169847" label="en-AU"/> <int value="1214473765" label="unknown"/> + <int value="1228519432" label="fo"/> + <int value="1282439493" label="es-MX"/> <int value="1311313702" label="pt"/> <int value="1312638242" label="pl"/> <int value="1437205305" label="uz"/> <int value="1482920614" label="yi"/> <int value="1483760478" label="tg"/> <int value="1552733612" label="da"/> + <int value="1628170778" label="pt-BR"/> <int value="1638257274" label="sk"/> <int value="1670494558" label="ko"/> <int value="1704087523" label="ky"/> <int value="1704315002" label="fr"/> + <int value="1708437566" label="it-CH"/> <int value="1717583602" label="co"/> + <int value="1724977738" label="ia"/> <int value="1754979806" label="fy"/> <int value="1853848431" label="tr"/> + <int value="1884922344" label="ckb"/> + <int value="1921155040" label="br"/> + <int value="1988450082" label="tw"/> <int value="2039992295" label="ig"/> + <int value="2077417554" label="fr-CH"/> + <int value="2078974161" label="ast"/> <int value="2087142539" label="mn"/> + <int value="2094171128" label="mo"/> <int value="2119087611" label="nl"/> + <int value="2147270293" label="en-GB"/> </enum> <enum name="ClearBrowsingDataTab"> @@ -17272,6 +17324,8 @@ <int value="103" label="Crostini Recovery Dialog"/> <int value="104" label="Parent Permission ChromeOS"/> <int value="105" label="Signin Reauth Dialog"/> + <int value="106" + label="Confirmation Box for getCurrentBrowsingContextMedia API"/> </enum> <enum name="DialogOriginRelationship"> @@ -22718,6 +22772,7 @@ <int value="806" label="BasicAuthOverHttpEnabled"/> <int value="807" label="SystemFeaturesDisableMode"/> <int value="808" label="IntegratedWebAuthenticationAllowed"/> + <int value="809" label="ClearBrowsingDataOnExitList"/> </enum> <enum name="EnterprisePolicyDeviceIdValidity"> @@ -25287,7 +25342,7 @@ <int value="1282" label="AUTOTESTPRIVATE_RUNCROSTINIUNINSTALLER"/> <int value="1283" label="AUTOTESTPRIVATE_TAKESCREENSHOT"/> <int value="1284" label="ACCESSIBILITY_PRIVATE_TOGGLEDICTATION"/> - <int value="1285" label="ACCESSIBILITY_PRIVATE_ENABLECHROMEVOXMOUSEEVENTS"/> + <int value="1285" label="ACCESSIBILITY_PRIVATE_ENABLEMOUSEEVENTS"/> <int value="1286" label="ACCESSIBILITY_PRIVATE_SENDSYNTHETICMOUSEEVENT"/> <int value="1287" label="FILEMANAGERPRIVATE_DETECTCHARACTERENCODING"/> <int value="1288" label="FILEMANAGERPRIVATEINTERNAL_GETLINUXPACKAGEINFO"/> @@ -39001,6 +39056,16 @@ <int value="4" label="Authorized when Chrome is in use"/> </enum> +<enum name="IOSMainThreadFreezeDetectionNotRunningAfterReportBlock"> + <int value="0" label="After Breakpad Ref"> + Freeze detection stopped after obtaining the breakpad lock. + </int> + <int value="1" label="After FileManager UTE move"> + Freeze detection stopped after moving the hang report out of the Breakpad + directory and into the |UTE| directory. + </int> +</enum> + <enum name="IOSMenuAction"> <int value="0" label="Open in New Tab"/> <int value="1" label="Open in New Incognito Tab"/> @@ -49787,6 +49852,11 @@ <int value="1" label="Completed Setup"/> </enum> +<enum name="MultiDeviceNearbyMessageAction"> + <int value="0" label="Message Sent"/> + <int value="1" label="Message Received"/> +</enum> + <enum name="MultiDeviceSetupNotification"> <int value="0" label="New user, potential host exists"/> <int value="1" label="Existing user, host switched"/> @@ -58244,6 +58314,11 @@ <int value="9" label="PhoneConnecting"/> </enum> +<enum name="PhoneHubTetherConnectionResult"> + <int value="0" label="Started a tether connection attempt"/> + <int value="1" label="Attempt was successful"/> +</enum> + <enum name="PhoneNumberRegexVariantResult"> <obsolete> Removed in M82 as the experiment has been stopped.
diff --git a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml index cde6379..854ae67 100644 --- a/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml +++ b/tools/metrics/histograms/histograms_xml/histogram_suffixes_list.xml
@@ -6578,6 +6578,24 @@ <affected-histogram name="FileBrowser.CrostiniSharedPaths.Depth"/> </histogram_suffixes> +<histogram_suffixes name="FileOperations" separator="."> + <suffix name="DeleteFile.NonRecursive" label=""/> + <suffix name="DeleteFile.Recursive" label=""/> + <affected-histogram name="Windows.FilesystemError"/> + <affected-histogram name="Windows.PostOperationState"/> +</histogram_suffixes> + +<histogram_suffixes name="FindInPageRequestEndState" separator="."> + <suffix name="Aborted" + label="The request got aborted before it went through every text in the + document."/> + <suffix name="Finished" + label="The request finished going through every text in the document."/> + <affected-histogram name="WebCore.FindInPage.NumberOfTasksPerRequest"/> + <affected-histogram name="WebCore.FindInPage.RequestDuration"/> + <affected-histogram name="WebCore.FindInPage.TotalTaskDuration"/> +</histogram_suffixes> + <histogram_suffixes name="FirstDownload" separator="."> <obsolete> Removed 2020-10. @@ -7901,6 +7919,15 @@ <affected-histogram name="InProductHelp.ShouldTriggerHelpUI"/> </histogram_suffixes> +<histogram_suffixes name="IPProtocolType" separator="_"> + <suffix name="TCP" label=""/> + <suffix name="UDP" label=""/> + <affected-histogram name="WebRTC.PeerConnection.CandidatePairType"/> + <affected-histogram name="WebRTC.SystemMaxConsecutiveBytesDelayed"/> + <affected-histogram name="WebRTC.SystemPercentPacketsDelayed"/> + <affected-histogram name="WebRTC.SystemSendPacketDuration"/> +</histogram_suffixes> + <histogram_suffixes name="IPv6_Probe" separator="_"> <suffix name="IPv6_probe_done" label="with IPv6 probed for and possibly disabled"/> @@ -9398,6 +9425,16 @@ <affected-histogram name="NativeFileSystemAPI.WritePermissionRequestOutcome"/> </histogram_suffixes> +<histogram_suffixes name="NatType" separator="."> + <suffix name="NoNAT" label=""/> + <suffix name="NonSymNAT" label=""/> + <suffix name="SymNAT" label=""/> + <suffix name="UnknownNAT" label=""/> + <affected-histogram name="WebRTC.Stun.BatchSuccessPercent"/> + <affected-histogram name="WebRTC.Stun.ResponseLatency"/> + <affected-histogram name="WebRTC.Stun.SuccessPercent"/> +</histogram_suffixes> + <histogram_suffixes name="NavigationCharacteristic" separator="_"> <suffix name="ExistingRenderer_BeforeUnloadDiscounted" label="Navigation reused an existing renderer process. Time spent in @@ -16260,6 +16297,24 @@ name="Scheduler.Experimental.Renderer.TotalTime.Wall.MainThread"/> </histogram_suffixes> +<histogram_suffixes name="ScreenshareLayerStats" separator="."> + <suffix name="FrameRate" + label="Frames per second sent, in fps. The value is reported when a + stream is removed and is calculated as the total number of + frames in this layer, divided by the duration of the call."/> + <suffix name="Qp" + label="Average quantizer (qp) of frames sent. The value is reported + when a stream is removed and is calculated, for this layer, as + the sum of all qp values divided the number of frames."/> + <suffix name="TargetBitrate" + label="Average target bitrate in kbps. The value is reported when a + stream is removed and is calculated as the sum of all target + bitrates for this layer (sampled after frame has been encoded) + divided by the total number of frames for this layer."/> + <affected-histogram name="WebRTC.Video.Screenshare.Layer0"/> + <affected-histogram name="WebRTC.Video.Screenshare.Layer1"/> +</histogram_suffixes> + <histogram_suffixes name="ScrollSourceDevice" separator="."> <suffix name="Touch" label="Touch"/> <suffix name="Wheel" label="Wheel"/> @@ -19369,6 +19424,15 @@ <affected-histogram name="VRSessionVideoTime"/> </histogram_suffixes> +<histogram_suffixes name="WebApkDistributorType" separator="."> + <suffix name="Browser" label="Installed by Chrome"/> + <suffix name="DevicePolicy" label="Installed by device policy"/> + <suffix name="Other" label="Installed by other sources"/> + <affected-histogram name="WebApk.Session.TotalDuration2"/> + <affected-histogram name="WebApk.ShellApkVersion2"/> + <affected-histogram name="WebApk.Uninstall"/> +</histogram_suffixes> + <histogram_suffixes name="WebApkType" separator="."> <suffix name="BrowserApk" label="Installed by Chrome"/> <suffix name="UnboundApk" label="Not installed by Chrome"/> @@ -19558,6 +19622,14 @@ <affected-histogram name="Media.UnderflowDuration2"/> </histogram_suffixes> +<histogram_suffixes name="WebRTCEchoCancellerEstimate" separator="."> + <suffix name="Max" label="The maximum over the time interval"/> + <suffix name="Min" label="The minimum over the time interval"/> + <suffix name="Value" label="The last estimated value of the time interval"/> + <affected-histogram name="WebRTC.Audio.EchoCanceller.Erl"/> + <affected-histogram name="WebRTC.Audio.EchoCanceller.Erle"/> +</histogram_suffixes> + <histogram_suffixes name="WebRTCEchoCancellerStatisticType" separator="."> <suffix name="Average" label="The average over the time interval"/> <suffix name="Max" label="The maximum over the time interval"/> @@ -19572,6 +19644,50 @@ <affected-histogram name="WebRTC.Audio.EchoCanceller.SuppressorGainBand1"/> </histogram_suffixes> +<histogram_suffixes name="WebRTCMediaType" separator="."> + <suffix name="Audio" label="Audio"/> + <suffix name="Data" label="Data"/> + <suffix name="Video" label="Video"/> + <affected-histogram name="WebRTC.PeerConnection.SrtpCryptoSuite"/> + <affected-histogram name="WebRTC.PeerConnection.SslCipherSuite"/> +</histogram_suffixes> + +<histogram_suffixes name="WebRTCVideoExperimentGroupId" separator="."> + <owner>ilnik@chromium.org</owner> + <owner>webrtc-video@google.com</owner> + <suffix name="ExperimentGroup0" label=""/> + <suffix name="ExperimentGroup1" label=""/> + <suffix name="ExperimentGroup2" label=""/> + <suffix name="ExperimentGroup3" label=""/> + <suffix name="ExperimentGroup4" label=""/> + <suffix name="S0" label=""/> + <suffix name="S1" label=""/> + <suffix name="S2" label=""/> + <affected-histogram name="WebRTC.Video.Decoded.Vp8.Qp"/> + <affected-histogram name="WebRTC.Video.EndToEndDelayInMs"/> + <affected-histogram name="WebRTC.Video.EndToEndDelayMaxInMs"/> + <affected-histogram name="WebRTC.Video.InterframeDelay95PercentileInMs"/> + <affected-histogram name="WebRTC.Video.InterframeDelayInMs"/> + <affected-histogram name="WebRTC.Video.InterframeDelayMaxInMs"/> + <affected-histogram name="WebRTC.Video.KeyFramesReceivedInPermille"/> + <affected-histogram name="WebRTC.Video.MediaBitrateReceivedInKbps"/> + <affected-histogram name="WebRTC.Video.ReceivedHeightInPixels"/> + <affected-histogram name="WebRTC.Video.ReceivedWidthInPixels"/> + <affected-histogram name="WebRTC.Video.Screenshare.Decoded.Vp8.Qp"/> + <affected-histogram name="WebRTC.Video.Screenshare.EndToEndDelayInMs"/> + <affected-histogram name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs"/> + <affected-histogram + name="WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs"/> + <affected-histogram name="WebRTC.Video.Screenshare.InterframeDelayInMs"/> + <affected-histogram name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs"/> + <affected-histogram + name="WebRTC.Video.Screenshare.KeyFramesReceivedInPermille"/> + <affected-histogram + name="WebRTC.Video.Screenshare.MediaBitrateReceivedInKbps"/> + <affected-histogram name="WebRTC.Video.Screenshare.ReceivedHeightInPixels"/> + <affected-histogram name="WebRTC.Video.Screenshare.ReceivedWidthInPixels"/> +</histogram_suffixes> + <histogram_suffixes name="WebSocketErrorCodesVariants" separator="_"> <suffix name="Localhost" label=""/> <suffix name="NotLocalhost" label=""/>
diff --git a/tools/metrics/histograms/histograms_xml/history/histograms.xml b/tools/metrics/histograms/histograms_xml/history/histograms.xml index ed523e2..b27b2b1 100644 --- a/tools/metrics/histograms/histograms_xml/history/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/history/histograms.xml
@@ -37,6 +37,16 @@ </summary> </histogram> +<histogram name="History.BrowsingDataLifetime.Duration.BrowserShutdownDeletion" + units="ms" expires_after="2021-11-01"> + <owner>ydago@chromium.org</owner> + <owner>dullweber@chromium.org</owner> + <summary> + The time that passed while performing a browsing data deletion using the + ClearBrowsingDataOnExitList policy. The deletion will be for all time. + </summary> +</histogram> + <histogram name="History.BrowsingDataLifetime.Duration.Scheduled{DeletionType}Deletion" units="ms" expires_after="2021-11-01"> @@ -53,6 +63,13 @@ </token> </histogram> +<histogram name="History.BrowsingDataLifetime.State.BrowserShutdownDeletion" + enum="BooleanStartedCompleted" expires_after="2021-11-01"> + <owner>ydago@chromium.org</owner> + <owner>dullweber@chromium.org</owner> + <summary>The states in which a deletion on shutdown went through.</summary> +</histogram> + <histogram name="History.BrowsingDataLifetime.State.Scheduled{DeletionType}Deletion" enum="BooleanStartedCompleted" expires_after="2021-11-01">
diff --git a/tools/metrics/histograms/histograms_xml/ios/histograms.xml b/tools/metrics/histograms/histograms_xml/ios/histograms.xml index 569f4a2..279995f8 100644 --- a/tools/metrics/histograms/histograms_xml/ios/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/ios/histograms.xml
@@ -423,6 +423,17 @@ </summary> </histogram> +<histogram name="IOS.MainThreadFreezeDetection.NotRunningAfterReport" + enum="IOSMainThreadFreezeDetectionNotRunningAfterReportBlock" + expires_after="2021-07-01"> + <owner>justincohen@chromium.org</owner> + <owner>olivierrobin@chromium.org</owner> + <summary> + Recorded when the main thread recovers immediately after a freeze report was + generated. + </summary> +</histogram> + <histogram name="IOS.MainThreadFreezeDetection.RecoveredAfter" units="ms" expires_after="2021-11-12"> <owner>eugenebut@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/multi_device/histograms.xml b/tools/metrics/histograms/histograms_xml/multi_device/histograms.xml index bf8bec7..49289f16 100644 --- a/tools/metrics/histograms/histograms_xml/multi_device/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/multi_device/histograms.xml
@@ -248,6 +248,17 @@ </summary> </histogram> +<histogram name="MultiDevice.SecureChannel.Nearby.MessageAction" + enum="MultiDeviceNearbyMessageAction" expires_after="2021-11-30"> + <owner>khorimoto@chromium.org</owner> + <owner>better-together-dev@google.com</owner> + <summary> + Measures the completion of SecureChannel messages transfers via the Nearby + Connections library. Emitted when the Nearby Connections library either + sends or receives a message. + </summary> +</histogram> + <histogram name="MultiDevice.SecureChannel.Nearby.SendMessageResult" enum="BooleanSuccess" expires_after="2021-11-30"> <owner>khorimoto@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/phonehub/histograms.xml b/tools/metrics/histograms/histograms_xml/phonehub/histograms.xml index bc4b438a..32d90b4 100644 --- a/tools/metrics/histograms/histograms_xml/phonehub/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/phonehub/histograms.xml
@@ -171,6 +171,16 @@ </summary> </histogram> +<histogram name="PhoneHub.TaskCompletion.TetherConnection.Result" + enum="PhoneHubTetherConnectionResult" expires_after="2021-12-01"> + <owner>khorimoto@chromium.org</owner> + <owner>phonehub-dev@google.com</owner> + <summary> + Logs the result of attempting a tether connection to measure the connection + success rate. + </summary> +</histogram> + <histogram name="PhoneHub.Usage.SentMessageTypeCount" enum="PhoneHubMessageType" expires_after="M98"> <owner>khorimoto@chromium.org</owner>
diff --git a/tools/metrics/histograms/histograms_xml/renderer/histograms.xml b/tools/metrics/histograms/histograms_xml/renderer/histograms.xml index 1ec4dc7e..18f2838 100644 --- a/tools/metrics/histograms/histograms_xml/renderer/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/renderer/histograms.xml
@@ -211,7 +211,7 @@ </histogram> <histogram name="RendererScheduler.RendererMainThreadLoad5" units="%" - expires_after="M85"> + expires_after="M95"> <owner>altimin@chromium.org</owner> <summary> Renderer main thread load (percentage of time spent in tasks), reported in @@ -372,7 +372,7 @@ </histogram> <histogram name="RendererScheduler.TaskDurationPerTaskType2" - enum="RendererSchedulerTaskType" expires_after="M85"> + enum="RendererSchedulerTaskType" expires_after="M95"> <owner>altimin@chromium.org</owner> <owner>hajimehoshi@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml b/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml index a72e061..8c5bbf7 100644 --- a/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/web_apk/histograms.xml
@@ -21,12 +21,6 @@ <histograms> -<variants name="WebApkDistributorType"> - <variant name=".Browser" summary="Installed by Chrome"/> - <variant name=".DevicePolicy" summary="Installed by device policy"/> - <variant name=".Other" summary="Installed by other sources"/> -</variants> - <histogram name="WebApk.Install.AvailableSpace.Fail" units="MB" expires_after="2021-02-01"> <owner>hartmanng@chromium.org</owner> @@ -172,22 +166,19 @@ </summary> </histogram> -<histogram name="WebApk.Session.TotalDuration2{WebApkDistributorType}" - units="ms" expires_after="2021-05-16"> +<histogram name="WebApk.Session.TotalDuration2" units="ms" + expires_after="2021-05-16"> <owner>hartmanng@chromium.org</owner> <owner> src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS </owner> <summary> The length of a WebAPK session (launch/foregrounding to backgrounding) in - milliseconds. {WebApkDistributorType} + milliseconds. </summary> - <token key="WebApkDistributorType" variants="WebApkDistributorType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebApk.ShellApkVersion2{WebApkDistributorType}" units="units" +<histogram base="true" name="WebApk.ShellApkVersion2" units="units" expires_after="2021-04-04"> <owner>hartmanng@chromium.org</owner> <owner> @@ -196,15 +187,7 @@ <summary> Records WebAPK "Shell APK version" when the WebAPK is launched. The "Shell APK version" is documented in shell_apk_version.gni - {WebApkDistributorType} </summary> - <token key="WebApkDistributorType" variants="WebApkDistributorType"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> <histogram name="WebApk.Startup.Cold.NewStyle.ShellLaunchToSplashscreenVisible" @@ -257,22 +240,13 @@ </summary> </histogram> -<histogram name="WebApk.Uninstall{WebApkDistributorType}" enum="BooleanHit" +<histogram base="true" name="WebApk.Uninstall" enum="BooleanHit" expires_after="2021-06-06"> <owner>hartmanng@chromium.org</owner> <owner> src/chrome/android/java/src/org/chromium/chrome/browser/webapps/OWNERS </owner> - <summary> - Records that a WebAPK was uninstalled. {WebApkDistributorType} - </summary> - <token key="WebApkDistributorType" variants="WebApkDistributorType"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> + <summary>Records that a WebAPK was uninstalled.</summary> </histogram> <histogram name="WebApk.Update.GooglePlayUpdateResult"
diff --git a/tools/metrics/histograms/histograms_xml/web_core/histograms.xml b/tools/metrics/histograms/histograms_xml/web_core/histograms.xml index ae19ba10..ad0af26 100644 --- a/tools/metrics/histograms/histograms_xml/web_core/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/web_core/histograms.xml
@@ -21,14 +21,6 @@ <histograms> -<variants name="FindInPageRequestEndState"> - <variant name=".Aborted" - summary="The request got aborted before it went through every text in - the document."/> - <variant name=".Finished" - summary="The request finished going through every text in the document."/> -</variants> - <histogram name="WebCore.DistillabilityUs" units="microseconds" expires_after="2021-04-04"> <owner>wychen@chromium.org</owner> @@ -66,42 +58,27 @@ </summary> </histogram> -<histogram - name="WebCore.FindInPage.NumberOfTasksPerRequest{FindInPageRequestEndState}" +<histogram base="true" name="WebCore.FindInPage.NumberOfTasksPerRequest" units="tasks" expires_after="2021-04-04"> <owner>rakina@chromium.org</owner> <owner>altimin@chromium.org</owner> <summary> Records the number of find-in-page tasks executed for a find-in-page request. Emitted when a find-in-page request is finished (it went through - the whole document) or when it got aborted. {FindInPageRequestEndState} + the whole document) or when it got aborted. </summary> - <token key="FindInPageRequestEndState" variants="FindInPageRequestEndState"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> -<histogram name="WebCore.FindInPage.RequestDuration{FindInPageRequestEndState}" - units="ms" expires_after="2021-04-04"> +<histogram base="true" name="WebCore.FindInPage.RequestDuration" units="ms" + expires_after="2021-04-04"> <owner>rakina@chromium.org</owner> <owner>altimin@chromium.org</owner> <summary> Records how long one find-in-page request (consisting multiple tasks) took from the request start until the last find-in-page task for the request finished. Emitted when a find-in-page request is finished (it went through - the whole document) or when it got aborted. {FindInPageRequestEndState} + the whole document) or when it got aborted. </summary> - <token key="FindInPageRequestEndState" variants="FindInPageRequestEndState"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> <histogram name="WebCore.FindInPage.TaskDuration" units="ms" @@ -114,9 +91,8 @@ </summary> </histogram> -<histogram - name="WebCore.FindInPage.TotalTaskDuration{FindInPageRequestEndState}" - units="ms" expires_after="2021-04-04"> +<histogram base="true" name="WebCore.FindInPage.TotalTaskDuration" units="ms" + expires_after="2021-04-04"> <owner>rakina@chromium.org</owner> <owner>altimin@chromium.org</owner> <summary> @@ -124,15 +100,7 @@ find-in-page request. Nothe that this does not include the time spent in between tasks. Emitted when a find-in-page request is finished (it went through the whole document) or when it got aborted. - {FindInPageRequestEndState} </summary> - <token key="FindInPageRequestEndState" variants="FindInPageRequestEndState"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> <histogram name="WebCore.Framebust.ClickThroughPosition"
diff --git a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml index c1d103c..795b46ea 100644 --- a/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/web_rtc/histograms.xml
@@ -21,82 +21,6 @@ <histograms> -<variants name="IPProtocolType"> - <variant name="_TCP" summary=""/> - <variant name="_UDP" summary=""/> -</variants> - -<variants name="NatType"> - <variant name=".NoNAT" summary=""/> - <variant name=".NonSymNAT" summary=""/> - <variant name=".SymNAT" summary=""/> - <variant name=".UnknownNAT" summary=""/> -</variants> - -<variants name="ScreenshareLayerStats"> - <variant name=".FrameRate" - summary="Frames per second sent, in fps. The value is reported when a - stream is removed and is calculated as the total number of - frames in this layer, divided by the duration of the call."/> - <variant name=".Qp" - summary="Average quantizer (qp) of frames sent. The value is reported - when a stream is removed and is calculated, for this layer, as - the sum of all qp values divided the number of frames."/> - <variant name=".TargetBitrate" - summary="Average target bitrate in kbps. The value is reported when a - stream is removed and is calculated as the sum of all target - bitrates for this layer (sampled after frame has been encoded) - divided by the total number of frames for this layer."/> -</variants> - -<variants name="WebRTCEchoCancellerEstimate"> - <variant name=".Max" summary="The maximum over the time interval"/> - <variant name=".Min" summary="The minimum over the time interval"/> - <variant name=".Value" - summary="The last estimated value of the time interval"/> -</variants> - -<variants name="WebRTCMediaType"> - <variant name=".Audio" summary="Audio"/> - <variant name=".Data" summary="Data"/> - <variant name=".Video" summary="Video"/> -</variants> - -<variants name="WebRTCVideoExperimentGroupId"> - <variant name=".ExperimentGroup0" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".ExperimentGroup1" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".ExperimentGroup2" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".ExperimentGroup3" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".ExperimentGroup4" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".S0" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".S1" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> - <variant name=".S2" summary=""> - <owner>ilnik@chromium.org</owner> - <owner>webrtc-video@google.com</owner> - </variant> -</variants> - <histogram name="WebRTC.AecFilterHasDivergence" units="%" expires_after="M85"> <owner>grunell@chromium.org</owner> <owner>minyue@chromium.org</owner> @@ -499,6 +423,17 @@ </summary> </histogram> +<histogram name="WebRTC.Audio.EchoCanceller.Erl" units="dB (shifted)" + expires_after="2021-10-19"> + <owner>gustaf@chromium.org</owner> + <owner>peah@chromium.org</owner> + <summary> + This histogram logs the echo return loss achieved by the WebRTC echo + canceller as described in ITU G.168. When the echo canceller is being used, + one value is logged every 10 seconds per ongoing WebRTC call. + </summary> +</histogram> + <histogram name="WebRTC.Audio.EchoCanceller.ErlBand0" units="dB (shifted)" expires_after="2020-12-01"> <obsolete> @@ -527,6 +462,17 @@ </summary> </histogram> +<histogram name="WebRTC.Audio.EchoCanceller.Erle" units="dB" + expires_after="2021-10-19"> + <owner>gustaf@chromium.org</owner> + <owner>peah@chromium.org</owner> + <summary> + This histogram logs the echo return loss enhancement achieved by the WebRTC + echo canceller as described in ITU G.168. When the echo canceller is being + used, one value is logged every 10 seconds per ongoing WebRTC call. + </summary> +</histogram> + <histogram name="WebRTC.Audio.EchoCanceller.ErleBand0" units="dB (shifted)" expires_after="2020-12-01"> <obsolete> @@ -555,38 +501,6 @@ </summary> </histogram> -<histogram name="WebRTC.Audio.EchoCanceller.Erle{WebRTCEchoCancellerEstimate}" - units="dB" expires_after="2021-10-19"> - <owner>gustaf@chromium.org</owner> - <owner>peah@chromium.org</owner> - <summary> - This histogram logs the echo return loss enhancement achieved by the WebRTC - echo canceller as described in ITU G.168. When the echo canceller is being - used, one value is logged every 10 seconds per ongoing WebRTC call. - {WebRTCEchoCancellerEstimate} - </summary> - <token key="WebRTCEchoCancellerEstimate" - variants="WebRTCEchoCancellerEstimate"> - <variant name=""/> - </token> -</histogram> - -<histogram name="WebRTC.Audio.EchoCanceller.Erl{WebRTCEchoCancellerEstimate}" - units="dB (shifted)" expires_after="2021-10-19"> - <owner>gustaf@chromium.org</owner> - <owner>peah@chromium.org</owner> - <summary> - This histogram logs the echo return loss achieved by the WebRTC echo - canceller as described in ITU G.168. When the echo canceller is being used, - one value is logged every 10 seconds per ongoing WebRTC call. - {WebRTCEchoCancellerEstimate} - </summary> - <token key="WebRTCEchoCancellerEstimate" - variants="WebRTCEchoCancellerEstimate"> - <variant name=""/> - </token> -</histogram> - <histogram name="WebRTC.Audio.EchoCanceller.FilterDelay" units="Blocks" expires_after="2021-10-19"> <owner>peah@chromium.org</owner> @@ -1188,17 +1102,14 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.CandidatePairType{IPProtocolType}" +<histogram name="WebRTC.PeerConnection.CandidatePairType" enum="IceCandidatePairTypes" expires_after="2020-04-05"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> Counters of various ICE Endpoint types. These values are logged for the - first selected candidate pair of a PeerConnection. {IPProtocolType} + first selected candidate pair of a PeerConnection. </summary> - <token key="IPProtocolType" variants="IPProtocolType"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.PeerConnection.ConnectionState" @@ -1513,17 +1424,14 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.SrtpCryptoSuite{WebRTCMediaType}" +<histogram name="WebRTC.PeerConnection.SrtpCryptoSuite" enum="DTLS_SRTPCryptoSuite" expires_after="M81"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> Counters on the type of SRTP crypto suites used by WebRTC. This is collected - whenever the transport signals the OnCompleted event. {WebRTCMediaType} + whenever the transport signals the OnCompleted event. </summary> - <token key="WebRTCMediaType" variants="WebRTCMediaType"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.PeerConnection.SrtpUnprotectError" enum="SrtpErrorCode" @@ -1537,17 +1445,14 @@ </summary> </histogram> -<histogram name="WebRTC.PeerConnection.SslCipherSuite{WebRTCMediaType}" - enum="SSLCipherSuite" expires_after="M81"> +<histogram name="WebRTC.PeerConnection.SslCipherSuite" enum="SSLCipherSuite" + expires_after="M81"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> Counters on the type of SSL cipher suites used by WebRTC. This is collected - whenever the transport signals the OnCompleted event. {WebRTCMediaType} + whenever the transport signals the OnCompleted event. </summary> - <token key="WebRTCMediaType" variants="WebRTCMediaType"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.PeerConnection.ThermalState" enum="ThermalState" @@ -1646,8 +1551,7 @@ </summary> </histogram> -<histogram name="WebRTC.Stun.BatchSuccessPercent{NatType}" units="%" - expires_after="M85"> +<histogram name="WebRTC.Stun.BatchSuccessPercent" units="%" expires_after="M85"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> @@ -1656,72 +1560,54 @@ various intervals between requests. Only the first instance of renderers will conduct the trial and log this result. The STUN binding requests are grouped into multiple batches and the success rate is calculated for an - individual batch. {NatType} + individual batch. </summary> - <token key="NatType" variants="NatType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.Stun.ResponseLatency{NatType}" units="ms" - expires_after="M85"> +<histogram name="WebRTC.Stun.ResponseLatency" units="ms" expires_after="M85"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> For clients using a shared source port per STUN binding request, average RTT for requests which received a response with various intervals between requests. Only the first instance of renderers will conduct the trial and - log this result. {NatType} + log this result. </summary> - <token key="NatType" variants="NatType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.Stun.SuccessPercent{NatType}" units="%" - expires_after="M85"> +<histogram name="WebRTC.Stun.SuccessPercent" units="%" expires_after="M85"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> For clients using a shared source port per STUN binding request, success rate for requests which received a response with various intervals between requests. Only the first instance of renderers will conduct the trial and - log this result. {NatType} + log this result. </summary> - <token key="NatType" variants="NatType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.SystemMaxConsecutiveBytesDelayed{IPProtocolType}" - units="units" expires_after="M81"> +<histogram name="WebRTC.SystemMaxConsecutiveBytesDelayed" units="units" + expires_after="M81"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> The maximum of consecutive delayed bytes caused by EWOULDBLOCKs from system. This happens when system can't send any packet synchronously at that moment. - {IPProtocolType} </summary> - <token key="IPProtocolType" variants="IPProtocolType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.SystemPercentPacketsDelayed{IPProtocolType}" units="%" +<histogram name="WebRTC.SystemPercentPacketsDelayed" units="%" expires_after="M81"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> <summary> The percentage of packets delayed due to ERR_IO_PENDING from system in a WebRTC socket. This happens when system can't send any packet synchronously - at that moment. {IPProtocolType} + at that moment. </summary> - <token key="IPProtocolType" variants="IPProtocolType"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.SystemSendPacketDuration{IPProtocolType}" units="ms" +<histogram name="WebRTC.SystemSendPacketDuration" units="ms" expires_after="M81"> <owner>qingsi@google.com</owner> <owner>jeroendb@google.com</owner> @@ -1731,11 +1617,7 @@ EWOULDBLOCK from system) as well as the time system takes to finish the asynchronous send. For UDP, it's the time from P2PSocketHostUdp::Send to P2PSocketHostUdp::HandleSendResult. Tcp part is to be implemented. - {IPProtocolType} </summary> - <token key="IPProtocolType" variants="IPProtocolType"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.UnreliableDataChannelMessageSize" units="bytes" @@ -1882,19 +1764,15 @@ </summary> </histogram> -<histogram name="WebRTC.Video.Decoded.Vp8.Qp{WebRTCVideoExperimentGroupId}" - units="qp value" expires_after="never"> +<histogram name="WebRTC.Video.Decoded.Vp8.Qp" units="qp value" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> The average QP (quantizer value) per frame for a received VP8 video stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.DecodedFramesPerSecond" units="fps" @@ -2080,36 +1958,27 @@ </summary> </histogram> -<histogram name="WebRTC.Video.EndToEndDelayInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.EndToEndDelayInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> The average end-to-end delay per frame for a received video stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.EndToEndDelayMaxInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.EndToEndDelayMaxInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The maximum end-to-end delay per frame for a received video stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.FecBitrateReceivedInKbps" units="kbps" @@ -2248,53 +2117,38 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.InterframeDelay95PercentileInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.InterframeDelay95PercentileInMs" units="ms" + expires_after="never"> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The 95th percentile of interframe delay for a received video stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.InterframeDelayInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.InterframeDelayInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The average interframe delay for a received video stream. Recorded when a - stream is removed. {WebRTCVideoExperimentGroupId} + stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.InterframeDelayMaxInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.InterframeDelayMaxInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The maximum interframe delay for a received video stream. Recorded when a - stream is removed. {WebRTCVideoExperimentGroupId} + stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.JitterBufferDelayInMs" units="ms" @@ -2308,20 +2162,15 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.KeyFramesReceivedInPermille{WebRTCVideoExperimentGroupId}" - units="permille" expires_after="never"> +<histogram name="WebRTC.Video.KeyFramesReceivedInPermille" units="permille" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> Permille of frames that are key frames for a received video stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.KeyFramesSentInPermille" units="permille" @@ -2359,21 +2208,16 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.MediaBitrateReceivedInKbps{WebRTCVideoExperimentGroupId}" - units="kbps" expires_after="never"> +<histogram name="WebRTC.Video.MediaBitrateReceivedInKbps" units="kbps" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> The number of received media payload bits per second for a received video stream. Recorded when a stream is removed. The total number of bytes is - divided by the time the video stream exists. {WebRTCVideoExperimentGroupId} + divided by the time the video stream exists. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.MediaBitrateSentInKbps" units="kbps" @@ -2549,20 +2393,15 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.ReceivedHeightInPixels{WebRTCVideoExperimentGroupId}" - units="pixels" expires_after="never"> +<histogram name="WebRTC.Video.ReceivedHeightInPixels" units="pixels" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> The average received height per frame for a received video stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.ReceivedPacketsLostInPercent" units="%" @@ -2576,20 +2415,15 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.ReceivedWidthInPixels{WebRTCVideoExperimentGroupId}" - units="pixels" expires_after="never"> +<histogram name="WebRTC.Video.ReceivedWidthInPixels" units="pixels" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>asapersson@chromium.org</owner> <summary> The average received width per frame for a received video stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.ReceiveStreamLifetimeInSeconds" units="seconds" @@ -2735,21 +2569,16 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.Decoded.Vp8.Qp{WebRTCVideoExperimentGroupId}" - units="qp value" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.Decoded.Vp8.Qp" units="qp value" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The average QP (quantizer value) per frame for a received VP8 screenshare - stream. Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + stream. Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.DroppedFrames.Capturer" @@ -2811,38 +2640,28 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.EndToEndDelayInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.EndToEndDelayInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The average end-to-end delay per frame for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The maximum end-to-end delay per frame for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.FecBitrateSentInKbps" units="kbps" @@ -2927,8 +2746,7 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs{WebRTCVideoExperimentGroupId}" +<histogram name="WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs" units="ms" expires_after="never"> <!-- expires-never: WebRTC health metric. --> @@ -2936,50 +2754,35 @@ <owner>webrtc-video@google.com</owner> <summary> The 95th percentile of interframe delay for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.Screenshare.InterframeDelayInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.InterframeDelayInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The average interframe delay for a received screenshare stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs{WebRTCVideoExperimentGroupId}" - units="ms" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs" units="ms" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The maximum interframe delay for a received screenshare stream. Recorded - when a stream is removed. {WebRTCVideoExperimentGroupId} + when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> -<histogram - name="WebRTC.Video.Screenshare.KeyFramesReceivedInPermille{WebRTCVideoExperimentGroupId}" +<histogram name="WebRTC.Video.Screenshare.KeyFramesReceivedInPermille" units="permille" expires_after="never"> <!-- expires-never: WebRTC health metric. --> @@ -2987,12 +2790,8 @@ <owner>webrtc-video@google.com</owner> <summary> Permille of frames that are key frames for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.KeyFramesSentInPermille" @@ -3006,32 +2805,24 @@ </summary> </histogram> -<histogram name="WebRTC.Video.Screenshare.Layer0{ScreenshareLayerStats}" - units="units" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.Layer0" units="units" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>sprang@chromium.org</owner> <summary> Stats for the lower layer (TL0) of a screenshare stream in conference mode. - {ScreenshareLayerStats} </summary> - <token key="ScreenshareLayerStats" variants="ScreenshareLayerStats"> - <variant name=""/> - </token> </histogram> -<histogram name="WebRTC.Video.Screenshare.Layer1{ScreenshareLayerStats}" - units="units" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.Layer1" units="units" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>sprang@chromium.org</owner> <summary> Stats for the higher layer (TL1) of a screenshare stream in conference mode. - {ScreenshareLayerStats} </summary> - <token key="ScreenshareLayerStats" variants="ScreenshareLayerStats"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.MeanFreezeDurationMs" units="ms" @@ -3058,8 +2849,7 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.MediaBitrateReceivedInKbps{WebRTCVideoExperimentGroupId}" +<histogram name="WebRTC.Video.Screenshare.MediaBitrateReceivedInKbps" units="kbps" expires_after="never"> <!-- expires-never: WebRTC health metric. --> @@ -3069,12 +2859,7 @@ The number of received media payload bits per second for a received screenshare stream. Recorded when a stream is removed. The total number of bytes is divided by the time the video stream exists. - {WebRTCVideoExperimentGroupId} </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.MediaBitrateSentInKbps" units="kbps" @@ -3160,8 +2945,7 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.ReceivedHeightInPixels{WebRTCVideoExperimentGroupId}" +<histogram name="WebRTC.Video.Screenshare.ReceivedHeightInPixels" units="pixels" expires_after="never"> <!-- expires-never: WebRTC health metric. --> @@ -3169,12 +2953,8 @@ <owner>webrtc-video@google.com</owner> <summary> The average received height per frame for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.ReceivedPacketsLostInPercent" @@ -3189,21 +2969,16 @@ </summary> </histogram> -<histogram - name="WebRTC.Video.Screenshare.ReceivedWidthInPixels{WebRTCVideoExperimentGroupId}" - units="pixels" expires_after="never"> +<histogram name="WebRTC.Video.Screenshare.ReceivedWidthInPixels" units="pixels" + expires_after="never"> <!-- expires-never: WebRTC health metric. --> <owner>ilnik@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> The average received width per frame for a received screenshare stream. - Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + Recorded when a stream is removed. </summary> - <token key="WebRTCVideoExperimentGroupId" - variants="WebRTCVideoExperimentGroupId"> - <variant name=""/> - </token> </histogram> <histogram name="WebRTC.Video.Screenshare.ReceiveStreamLifetimeInSeconds"
diff --git a/tools/metrics/histograms/histograms_xml/windows/histograms.xml b/tools/metrics/histograms/histograms_xml/windows/histograms.xml index a81fefc..d3edc879 100644 --- a/tools/metrics/histograms/histograms_xml/windows/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/windows/histograms.xml
@@ -21,11 +21,6 @@ <histograms> -<variants name="FileOperations"> - <variant name=".DeleteFile.NonRecursive" summary=""/> - <variant name=".DeleteFile.Recursive" summary=""/> -</variants> - <histogram name="Windows.ApplockerRunning" enum="Boolean" expires_after="M83"> <owner>forshaw@chromium.org</owner> <owner>wfh@chromium.org</owner> @@ -69,20 +64,13 @@ </summary> </histogram> -<histogram name="Windows.FilesystemError{FileOperations}" - enum="WinGetLastError" expires_after="M81"> +<histogram base="true" name="Windows.FilesystemError" enum="WinGetLastError" + expires_after="M81"> <owner>grt@chromium.org</owner> <summary> The Windows error code relating to a failed attempt to operate on a file or - a directory. {FileOperations} + a directory. </summary> - <token key="FileOperations" variants="FileOperations"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> <histogram name="Windows.GetVersionExVersion" enum="WindowsVersion" @@ -293,20 +281,12 @@ </summary> </histogram> -<histogram name="Windows.PostOperationState{FileOperations}" +<histogram base="true" name="Windows.PostOperationState" enum="PostOperationState" expires_after="M81"> <owner>grt@chromium.org</owner> <summary> The state of an item in the filesystem following an operation on it. - {FileOperations} </summary> - <token key="FileOperations" variants="FileOperations"> - <variant name=""> - <obsolete> - Base histogram. Use suffixes of this histogram instead. - </obsolete> - </variant> - </token> </histogram> <histogram name="Windows.ProcessorFamily" enum="ProcessorFamily"
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv index fc170d4..a21304c8 100644 --- a/tools/perf/benchmark.csv +++ b/tools/perf/benchmark.csv
@@ -71,4 +71,4 @@ v8.browsing_mobile-future,"mythria@chromium.org, tmrts@chromium.org",Blink>JavaScript,,"2018,2019,2020,emerging_market,health_check,images,infinite_scroll,international,javascript_heavy" v8.runtime_stats.top_25,"mythria@chromium.org, ulan@chromium.org",Blink>JavaScript,,"cold,hot,warm" views_perftests,tapted@chromium.org,Internals>Views,, -webrtc,"qiangchen@chromium.org, mbonadei@chromium.org, phoglund@chromium.org",Blink>WebRTC,http://bit.ly/webrtc-benchmark,"datachannel,getusermedia,pauseplay,smoothness,stress,videoConstraints" +webrtc,"qiangchen@chromium.org, mbonadei@chromium.org",Blink>WebRTC,http://bit.ly/webrtc-benchmark,"datachannel,getusermedia,pauseplay,smoothness,stress,videoConstraints"
diff --git a/tools/perf/benchmarks/webrtc.py b/tools/perf/benchmarks/webrtc.py index de1e3fc..fca5ad3c 100644 --- a/tools/perf/benchmarks/webrtc.py +++ b/tools/perf/benchmarks/webrtc.py
@@ -10,8 +10,7 @@ @benchmark.Info(emails=['qiangchen@chromium.org', # For smoothness metrics - 'mbonadei@chromium.org', - 'phoglund@chromium.org'], + 'mbonadei@chromium.org'], component='Blink>WebRTC', documentation_url='http://bit.ly/webrtc-benchmark') class WebrtcPerfBenchmark(press._PressBenchmark): # pylint: disable=protected-access
diff --git a/tools/perf/core/bot_platforms.py b/tools/perf/core/bot_platforms.py index 10ce287..4e9865ce 100644 --- a/tools/perf/core/bot_platforms.py +++ b/tools/perf/core/bot_platforms.py
@@ -342,6 +342,11 @@ _performance_browser_tests(190), _views_perftests(), ]) +_MAC_M1_MINI_2020_BENCHMARK_CONFIGS = PerfSuite([ + 'loading.desktop', +]).Abridge([ + 'loading.desktop', +]) _WIN_10_BENCHMARK_CONFIGS = PerfSuite(OFFICIAL_BENCHMARK_CONFIGS).Remove([ 'blink_perf.display_locking', @@ -480,6 +485,8 @@ 8, 'mac', executables=_MAC_ARM_DTK_EXECUTABLE_CONFIGS) +MAC_M1_MINI_2020 = PerfPlatform('mac-m1_mini_2020-perf', 'Mac M1 Mini 2020', + _MAC_M1_MINI_2020_BENCHMARK_CONFIGS, 2, 'mac') # Win WIN_10_LOW_END = PerfPlatform(
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py index 5b681e9..a7b21ecd 100755 --- a/tools/perf/core/perf_data_generator.py +++ b/tools/perf/core/perf_data_generator.py
@@ -665,6 +665,25 @@ 'mac', 'dimension': { 'cpu': 'arm', + 'mac_model': 'ADP3,2', + 'os': 'Mac', + 'pool': 'chrome.tests.perf', + }, + }, + 'mac-m1_mini_2020-perf': { + 'tests': [ + { + 'isolate': 'performance_test_suite', + 'extra_args': [ + '--assert-gpu-compositing', + ], + }, + ], + 'platform': + 'mac', + 'dimension': { + 'cpu': 'arm', + 'mac_model': 'Macmini9,1', 'os': 'Mac', 'pool': 'chrome.tests.perf', },
diff --git a/tools/perf/core/perf_json_config_validator.py b/tools/perf/core/perf_json_config_validator.py index 2e215f0..3c1496c 100644 --- a/tools/perf/core/perf_json_config_validator.py +++ b/tools/perf/core/perf_json_config_validator.py
@@ -11,7 +11,7 @@ _VALID_SWARMING_DIMENSIONS = { 'gpu', 'device_ids', 'os', 'pool', 'perf_tests', 'perf_tests_with_args', - 'cpu', 'device_os', 'device_type', 'device_os_flavor', 'id', + 'cpu', 'device_os', 'device_type', 'device_os_flavor', 'id', 'mac_model', 'synthetic_product_name' } _DEFAULT_VALID_PERF_POOLS = {
diff --git a/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json b/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json new file mode 100644 index 0000000..90843ed7 --- /dev/null +++ b/tools/perf/core/shard_maps/mac-m1_mini_2020-perf_map.json
@@ -0,0 +1,27 @@ +{ + "0": { + "benchmarks": { + "loading.desktop": { + "end": 5, + "abridged": true + } + } + }, + "1": { + "benchmarks": { + "loading.desktop": { + "begin": 5, + "abridged": true + } + } + }, + "extra_infos": { + "num_stories": 10, + "predicted_min_shard_time": 50, + "predicted_min_shard_index": 0, + "predicted_max_shard_time": 50, + "predicted_max_shard_index": 0, + "shard #0": 50, + "shard #1": 50 + } +} \ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json b/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/tools/perf/core/shard_maps/timing_data/mac-m1_mini_2020-perf_timing.json
@@ -0,0 +1 @@ +[] \ No newline at end of file
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb index 7585a67..d2f16112 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_bn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_bn.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linux ব্যবহার করে ইনস্টল করুন</translation> <translation id="2225536596944493418">আপনি কি <ph name="NUMBER_OF_ITEMS" />টি আইটেম মুছে ফেলার ব্যাপারে নিশ্চিত?</translation> <translation id="2230062665678605299">"<ph name="FOLDER_NAME" /> " ফোল্ডার তৈরী করতে ব্যর্থ৷<ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">ট্র্যাশ থেকে ফিরিয়ে আনুন</translation> <translation id="2275059641601412272">সরানো হয়েছে</translation> <translation id="2288278176040912387">রেকর্ড প্লেয়ার</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" />টি ফাইল খোলা হচ্ছে।</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb index 5334356..277406e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_eu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_eu.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Instalatu Linux-ekin</translation> <translation id="2225536596944493418">Ziur <ph name="NUMBER_OF_ITEMS" /> elementu ezabatu nahi dituzula?</translation> <translation id="2230062665678605299">Ezin izan da sortu "<ph name="FOLDER_NAME" />" fitxategia. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Leheneratu zaborrontzitik</translation> <translation id="2275059641601412272">Mugitu da.</translation> <translation id="2288278176040912387">Disko-jogailua</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> fitxategi irekitzen.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb index 8d519a74..82ce4bd 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fa.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fa.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">نصب با Linux</translation> <translation id="2225536596944493418">مطمئنید میخواهید <ph name="NUMBER_OF_ITEMS" /> مورد را حذف کنید؟</translation> <translation id="2230062665678605299">پوشه «<ph name="FOLDER_NAME" />» را نمیتوان ایجاد کرد.<ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">بازیابی از حذفشدهها</translation> <translation id="2275059641601412272">منتقل شد.</translation> <translation id="2288278176040912387">ضبط صوت</translation> <translation id="2291538123825441971">درحال باز کردن <ph name="NUMBER_OF_FILES" /> فایل.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb index d21a326..fb2c2cd 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_fr-CA.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Installer avec Linux</translation> <translation id="2225536596944493418">Voulez-vous vraiment supprimer <ph name="NUMBER_OF_ITEMS" /> éléments?</translation> <translation id="2230062665678605299">Impossible de créer le dossier « <ph name="FOLDER_NAME" /> ». <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Restaurer à partir de la corbeille</translation> <translation id="2275059641601412272">Déplacé.</translation> <translation id="2288278176040912387">Tourne-disque</translation> <translation id="2291538123825441971">Ouverture de <ph name="NUMBER_OF_FILES" /> fichiers en cours…</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb index b53538c..ca8f8e38 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_gl.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_gl.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Instalar con Linux</translation> <translation id="2225536596944493418">Seguro que queres eliminar <ph name="NUMBER_OF_ITEMS" /> elementos?</translation> <translation id="2230062665678605299">Non se puido crear o cartafol "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Restaurar desde a papeleira</translation> <translation id="2275059641601412272">Moveuse.</translation> <translation id="2288278176040912387">Tocadiscos</translation> <translation id="2291538123825441971">Abrindo <ph name="NUMBER_OF_FILES" /> ficheiros.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb index 481143b..495cdd6 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_hy.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_hy.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Տեղադրել Լինուքսի միջոցով</translation> <translation id="2225536596944493418">Իսկապե՞ս ուզում եք ջնջել <ph name="NUMBER_OF_ITEMS" /> տարրերը։</translation> <translation id="2230062665678605299">Հնարավոր չէ ստեղծել «<ph name="FOLDER_NAME" />» պանակը: <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Վերականգնել աղբարկղից</translation> <translation id="2275059641601412272">Տեղափոխվեց։</translation> <translation id="2288278176040912387">Գրամոֆոն</translation> <translation id="2291538123825441971">Բացվում է <ph name="NUMBER_OF_FILES" /> ֆայլ։</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_is.xtb b/ui/chromeos/translations/ui_chromeos_strings_is.xtb index c7c8c29d..15fff4f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_is.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_is.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Setja upp með Linux</translation> <translation id="2225536596944493418">Ertu viss um að þú viljir eyða <ph name="NUMBER_OF_ITEMS" /> atriðum?</translation> <translation id="2230062665678605299">Ekki er hægt að búa til möppuna „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Endurheimta úr rusli</translation> <translation id="2275059641601412272">Flutt.</translation> <translation id="2288278176040912387">Grammófónn</translation> <translation id="2291538123825441971">Opnar <ph name="NUMBER_OF_FILES" /> skrár.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_it.xtb b/ui/chromeos/translations/ui_chromeos_strings_it.xtb index ae362bb7..9d6dbfc 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_it.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_it.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Installa con Linux</translation> <translation id="2225536596944493418">Vuoi eliminare <ph name="NUMBER_OF_ITEMS" /> elementi?</translation> <translation id="2230062665678605299">Impossibile creare la cartella "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Ripristina dal cestino</translation> <translation id="2275059641601412272">Spostato.</translation> <translation id="2288278176040912387">Giradischi</translation> <translation id="2291538123825441971">Apertura di file <ph name="NUMBER_OF_FILES" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb index ee2a41e..55e6aa9 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kk.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linux арқылы ойнату</translation> <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> элементті жойғыңыз келе ме?</translation> <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" қалтасын жасау мүмкін емес. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Себеттен шығару</translation> <translation id="2275059641601412272">Жылжытылған.</translation> <translation id="2288278176040912387">Пластина ойнатқыш</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> файл ашылуда.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb index 738701ce..1e1232bc 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
@@ -113,6 +113,7 @@ <translation id="2208919847696382164">Linux ಸಹಾಯದಿಂದ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ</translation> <translation id="2225536596944493418">ನೀವು ಖಂಡಿತವಾಗಿಯೂ <ph name="NUMBER_OF_ITEMS" /> ಐಟಂಗಳನ್ನು ಅಳಿಸಲು ಬಯಸುವಿರಾ?</translation> <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" ಫೋಲ್ಡರ್ ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">ಅನುಪಯುಕ್ತದಿಂದ ಮರುಸ್ಥಾಪಿಸಿ</translation> <translation id="2275059641601412272">ಸರಿಸಲಾಗಿದೆ.</translation> <translation id="2288278176040912387">ರೆಕಾರ್ಡ್ ಪ್ಲೇಯರ್</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> ಫೈಲ್ಗಳನ್ನು ತೆರೆಯಲಾಗುತ್ತಿದೆ.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb index bee2e15..2be7034f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linux менен орнотуу</translation> <translation id="2225536596944493418">Чын эле <ph name="NUMBER_OF_ITEMS" /> нерсени жок кылгыңыз келеби?</translation> <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" папкасын түзүү мүмкүн болбой жатат. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Таштандылар кутусунан калыбына келтирүү</translation> <translation id="2275059641601412272">Жылдырылды.</translation> <translation id="2288278176040912387">Жазууну ойноткуч</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> файл ачылууда.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb index a4435b6..622d8ab 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mn.xtb
@@ -55,7 +55,7 @@ <translation id="1547964879613821194">Канадын Англи хэл</translation> <translation id="1556189134700913550">Бүгдэд хамааруулах</translation> <translation id="1561842594491319104">Chrome төхөөрөмжүүд</translation> -<translation id="1572585716423026576">Ханын зураг болгох</translation> +<translation id="1572585716423026576">Дэлгэцийн зураг болгох</translation> <translation id="1576937952766665062">Бенгал галиг</translation> <translation id="1589128298353575783"><ph name="NUMBER_OF_PB" /> ПБ</translation> <translation id="1620510694547887537">Камер</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_si.xtb b/ui/chromeos/translations/ui_chromeos_strings_si.xtb index 15b6f37..a7ac684e 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_si.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_si.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linux සමග ස්ථාපනය කරන්න</translation> <translation id="2225536596944493418">ඔබට අයිතම <ph name="NUMBER_OF_ITEMS" /> මැකීමට අවශ්ය බව ඔබට තහවුරුද?</translation> <translation id="2230062665678605299">මෙම ෆෝල්ඩරය සෑදීමට නොහැක "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">කුණු කූඩය වෙතින් ප්රතිස්ථාපනය කරන්න</translation> <translation id="2275059641601412272">ගෙන යන ලදී.</translation> <translation id="2288278176040912387">තැටි වාදකය</translation> <translation id="2291538123825441971">ගොනු <ph name="NUMBER_OF_FILES" />ක් විවෘත කිරීම.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb index 28620c5..e4f2919 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sk.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sk.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Inštalovať pomocou systému Linux</translation> <translation id="2225536596944493418">Naozaj chcete odstrániť príslušné položky (<ph name="NUMBER_OF_ITEMS" />)?</translation> <translation id="2230062665678605299">Priečinok <ph name="FOLDER_NAME" /> sa nepodarilo vytvoriť. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Obnoviť z koša</translation> <translation id="2275059641601412272">Presunuté.</translation> <translation id="2288278176040912387">Gramofón</translation> <translation id="2291538123825441971">Otvárajú sa súbory (<ph name="NUMBER_OF_FILES" />).</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb index f4f5a5ca..ba38d3a 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sq.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sq.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Instalo me Linux</translation> <translation id="2225536596944493418">Je i sigurt që dëshiron të fshish <ph name="NUMBER_OF_ITEMS" /> artikuj?</translation> <translation id="2230062665678605299">Nuk mundi ta krijonte dosjen "<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Restauroje nga koshi</translation> <translation id="2275059641601412272">Zhvendosur.</translation> <translation id="2288278176040912387">Gramafoni</translation> <translation id="2291538123825441971">Po hapen <ph name="NUMBER_OF_FILES" /> skedarë.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb index 03e7063..c15ec61d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Installera med Linux</translation> <translation id="2225536596944493418">Vill du ta bort <ph name="NUMBER_OF_ITEMS" /> objekt?</translation> <translation id="2230062665678605299">Det går inte att skapa mappen <ph name="FOLDER_NAME" />. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Återställ från papperskorgen</translation> <translation id="2275059641601412272">Flyttad.</translation> <translation id="2288278176040912387">Skivspelare</translation> <translation id="2291538123825441971">Öppnar <ph name="NUMBER_OF_FILES" /> filer.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb index 0d1dcff..a830671 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linuxతో ఇన్స్టాల్ చేయండి</translation> <translation id="2225536596944493418">మీరు <ph name="NUMBER_OF_ITEMS" /> అంశాలను ఖచ్చితంగా తొలగించాలనుకుంటున్నారా?</translation> <translation id="2230062665678605299">"<ph name="FOLDER_NAME" />" ఫోల్డర్ను సృష్టించడం సాధ్యపడలేదు. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">ట్రాష్ నుండి రీస్టోర్ చేయండి</translation> <translation id="2275059641601412272">తరలించబడింది.</translation> <translation id="2288278176040912387">రికార్డ్ ప్లేయర్</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> ఫైల్లను తెరుస్తోంది.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb index f43a662..65eab8d 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Linux bilan oʻrnatish</translation> <translation id="2225536596944493418"><ph name="NUMBER_OF_ITEMS" /> ta element oʻchirib tashlansinmi?</translation> <translation id="2230062665678605299">“<ph name="FOLDER_NAME" />” jildini yaratib bo‘lmadi. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Chiqitdondan tiklash</translation> <translation id="2275059641601412272">Boshqa joyga olindi.</translation> <translation id="2288278176040912387">Patefon</translation> <translation id="2291538123825441971"><ph name="NUMBER_OF_FILES" /> ta fayl ochilmoqda.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb index 36ca5d7..8874739f 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_zu.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_zu.xtb
@@ -117,6 +117,7 @@ <translation id="2208919847696382164">Faka nge-Linux</translation> <translation id="2225536596944493418">Ingabe ufuna ukususa izinto ze-<ph name="NUMBER_OF_ITEMS" />?</translation> <translation id="2230062665678605299">Ayikwazi ukudala ifolda le-"<ph name="FOLDER_NAME" />". <ph name="ERROR_MESSAGE" /></translation> +<translation id="2251368349685848079">Buyisela kusukela kudoti</translation> <translation id="2275059641601412272">Kuhanjisiwe.</translation> <translation id="2288278176040912387">Isidlali serekhodi</translation> <translation id="2291538123825441971">Ukuvula amafayela e-<ph name="NUMBER_OF_FILES" />.</translation>
diff --git a/ui/gfx/render_text.cc b/ui/gfx/render_text.cc index 6e661b2d..35ef455 100644 --- a/ui/gfx/render_text.cc +++ b/ui/gfx/render_text.cc
@@ -583,6 +583,9 @@ } void RenderText::SetWordWrapBehavior(WordWrapBehavior behavior) { + // TODO(1150235): ELIDE_LONG_WORDS is not supported. + DCHECK_NE(behavior, ELIDE_LONG_WORDS); + if (word_wrap_behavior_ != behavior) { word_wrap_behavior_ = behavior; if (multiline_) {
diff --git a/ui/gfx/render_text_api_fuzzer.cc b/ui/gfx/render_text_api_fuzzer.cc index aea6d52..8d39dfc2 100644 --- a/ui/gfx/render_text_api_fuzzer.cc +++ b/ui/gfx/render_text_api_fuzzer.cc
@@ -148,14 +148,13 @@ } gfx::WordWrapBehavior ConsumeWordWrap(FuzzedDataProvider* fdp) { - switch (fdp->ConsumeIntegralInRange(0, 4)) { + // TODO(1150235): ELIDE_LONG_WORDS is not supported. + switch (fdp->ConsumeIntegralInRange(0, 3)) { case 0: return gfx::IGNORE_LONG_WORDS; case 1: return gfx::TRUNCATE_LONG_WORDS; case 2: - return gfx::ELIDE_LONG_WORDS; - case 3: return gfx::WRAP_LONG_WORDS; default: return gfx::IGNORE_LONG_WORDS;
diff --git a/ui/views/view.cc b/ui/views/view.cc index 61991cf..3f143eb4 100644 --- a/ui/views/view.cc +++ b/ui/views/view.cc
@@ -11,6 +11,7 @@ #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/adapters.h" +#include "base/debug/alias.h" #include "base/feature_list.h" #include "base/i18n/rtl.h" #include "base/macros.h" @@ -191,8 +192,19 @@ } View::~View() { + // Line number history to see the path through this function prior to a + // mysterious crash (https://crbug.com/1152152). + constexpr size_t kNumEntries = 16; + int line_number_trace[kNumEntries] = {}; + base::debug::Alias(&line_number_trace[0]); + size_t next_line_entry = 0; + base::debug::Alias(&next_line_entry); + void* vtable = nullptr; + base::debug::Alias(&vtable); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; if (parent_) parent_->RemoveChildView(this); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; // This view should have been removed from the focus list by now. DCHECK_EQ(next_focusable_view_, nullptr); @@ -204,34 +216,48 @@ // layout managers access child view properties, this would result in a // use-after-free error. layout_manager_.reset(); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; { internal::ScopedChildrenLock lock(this); for (auto* child : children_) { + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; child->parent_ = nullptr; + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; // Since all children are removed here, it is safe to set // |child|'s focus list pointers to null and expect any references // to |child| will be removed subsequently. child->next_focusable_view_ = nullptr; child->previous_focusable_view_ = nullptr; + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; - if (!child->owned_by_client_) + if (!child->owned_by_client_) { + // Extract the vtable pointer to allow post-mortem identification of the + // object type. + if (child) + vtable = reinterpret_cast<void**>(child)[0]; delete child; + } + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; } } + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; for (ViewObserver& observer : observers_) observer.OnViewIsDeleting(this); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; for (ui::Layer* layer_beneath : layers_beneath_) layer_beneath->RemoveObserver(this); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; // Clearing properties explicitly here lets us guarantee that properties // outlive |this| (at least the View part of |this|). This is intentionally // called at the end so observers can examine properties inside // OnViewIsDeleting(), for instance. ClearProperties(); + line_number_trace[(next_line_entry++) % kNumEntries] = __LINE__; } // Tree operations -------------------------------------------------------------
diff --git a/ui/webui/resources/cr_components/BUILD.gn b/ui/webui/resources/cr_components/BUILD.gn index 607d5cb6..a1b05e2 100644 --- a/ui/webui/resources/cr_components/BUILD.gn +++ b/ui/webui/resources/cr_components/BUILD.gn
@@ -104,6 +104,7 @@ "chromeos/cellular_setup/esim_flow_ui.m.js", "chromeos/cellular_setup/final_page.m.js", "chromeos/cellular_setup/mojo_interface_provider.m.js", + "chromeos/cellular_setup/esim_manager_utils.m.js", "chromeos/cellular_setup/profile_discovery_list_item.m.js", "chromeos/cellular_setup/profile_discovery_list_page.m.js", "chromeos/cellular_setup/provisioning_page.m.js", @@ -114,6 +115,8 @@ "chromeos/cellular_setup/webview_post_util.m.js", "chromeos/network_health/network_diagnostics.m.js", "chromeos/network_health/network_diagnostics_mojo.m.js", + "chromeos/network_health/network_diagnostics_types.m.js", + "chromeos/network_health/routine_group.m.js", "chromeos/network/cr_policy_network_behavior_mojo.m.js", "chromeos/network/cr_policy_network_indicator_mojo.m.js", "chromeos/network/mojo_interface_provider.m.js", @@ -217,6 +220,8 @@ "chromeos/cellular_setup/final_page.js", "chromeos/cellular_setup/mojo_interface_provider.html", "chromeos/cellular_setup/mojo_interface_provider.js", + "chromeos/cellular_setup/esim_manager_utils.html", + "chromeos/cellular_setup/esim_manager_utils.js", "chromeos/cellular_setup/profile_discovery_list_item.html", "chromeos/cellular_setup/profile_discovery_list_item.js", "chromeos/cellular_setup/profile_discovery_list_page.html", @@ -265,8 +270,12 @@ "chromeos/network_health/network_diagnostics.js", "chromeos/network_health/network_diagnostics_mojo.html", "chromeos/network_health/network_diagnostics_mojo.js", + "chromeos/network_health/network_diagnostics_types.html", + "chromeos/network_health/network_diagnostics_types.js", "chromeos/network_health/network_health_summary.html", "chromeos/network_health/network_health_summary.js", + "chromeos/network_health/routine_group.html", + "chromeos/network_health/routine_group.js", "chromeos/network/mojo_interface_provider.html", "chromeos/network/mojo_interface_provider.js", "chromeos/network/network_icon.html",
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn index 4b14ea0..137e3f89 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/BUILD.gn
@@ -17,6 +17,7 @@ ":cellular_setup", ":cellular_setup_delegate", ":cellular_types", + ":esim_manager_utils", ":final_page", ":mojo_interface_provider", ":profile_discovery_list_item", @@ -109,6 +110,7 @@ deps = [ ":activation_code_page", ":cellular_setup_delegate", + ":esim_manager_utils", ":mojo_interface_provider", ":profile_discovery_list_item", ":profile_discovery_list_page", @@ -160,6 +162,10 @@ ] } +js_library("esim_manager_utils") { + deps = [ ":mojo_interface_provider" ] +} + # Polymer3 files js_type_check("closure_compile_module") { @@ -172,6 +178,7 @@ ":cellular_setup_delegate.m", ":cellular_types.m", ":esim_flow_ui.m", + ":esim_manager_utils.m", ":final_page.m", ":mojo_interface_provider.m", ":profile_discovery_list_item.m", @@ -239,6 +246,12 @@ extra_deps = [ ":modulize" ] } +js_library("esim_manager_utils.m") { + sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.m.js" ] + deps = [ ":mojo_interface_provider.m" ] + extra_deps = [ ":modulize" ] +} + js_library("webview_post_util.m") { sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/cellular_setup/webview_post_util.m.js" ] deps = [] @@ -325,6 +338,7 @@ ":activation_code_page.m", ":cellular_setup_delegate.m", ":cellular_types.m", + ":esim_manager_utils.m", ":final_page.m", ":mojo_interface_provider.m", ":profile_discovery_list_item.m", @@ -487,6 +501,7 @@ "cellular_types.js", "cellular_setup_delegate.js", "mojo_interface_provider.js", + "esim_manager_utils.js", "subflow_behavior.js", "webview_post_util.js", ]
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.html b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.html index 1dadc56..f6f0cbc 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.html +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.html
@@ -1,6 +1,7 @@ <link rel="import" href="../../../html/polymer.html"> <link rel="import" href="../../../html/i18n_behavior.html"> <link rel="import" href="mojo_interface_provider.html"> +<link rel="import" href="esim_manager_utils.html"> <link rel="import" href="subflow_behavior.html"> <link rel="import" href="cellular_types.html"> <link rel="import" href="cellular_setup_delegate.html">
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js index c41219c4..71f8b81 100644 --- a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_flow_ui.js
@@ -117,23 +117,22 @@ /** @private */ fetchProfiles_() { + let euicc; this.eSimManagerRemote_.getAvailableEuiccs() .then(response => { // TODO(crbug.com/1093185) User should have at least 1 EUICC or // we shouldn't have gotten to this flow. Add check for this in // cellular_setup. - this.euicc_ = response.euiccs[0]; - return this.euicc_.requestPendingProfiles(); + euicc = response.euiccs[0]; + this.euicc_ = euicc; + return euicc.requestPendingProfiles(); }) .then(response => { if (response.result === chromeos.cellularSetup.mojom.ESimOperationResult.kFailure) { console.error('Error requesting pending profiles: ' + response); } - return this.euicc_.getProfileList(); - }) - .then(response => { - return this.filterForPendingProfiles_(response.profiles); + return cellular_setup.getPendingESimProfiles(euicc); }) .then(profiles => { this.pendingProfiles_ = profiles; @@ -156,28 +155,6 @@ /** * @private - * @param {!Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>} profiles - * @return {!Promise<Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>>} - */ - filterForPendingProfiles_(profiles) { - const profilePromises = profiles.map(profile => { - return profile.getProperties().then(response => { - if (response.properties.state !== - chromeos.cellularSetup.mojom.ProfileState.kPending) { - return null; - } - return profile; - }); - }); - return Promise.all(profilePromises).then(profiles => { - return profiles.filter(profile => { - return profile !== null; - }); - }); - }, - - /** - * @private * @param {{result: chromeos.cellularSetup.mojom.ProfileInstallResult}} * response */
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html new file mode 100644 index 0000000..8ae13b63 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html
@@ -0,0 +1,2 @@ +<link rel="import" href="mojo_interface_provider.html"> +<script src="esim_manager_utils.js"></script> \ No newline at end of file
diff --git a/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js new file mode 100644 index 0000000..dd328d0 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.js
@@ -0,0 +1,47 @@ +// Copyright 2020 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. + +// clang-format off +// #import {getESimManagerRemote} from 'chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js'; +// clang-format on + +cr.define('cellular_setup', function() { + /** + * Fetches the EUICC's eSIM profiles with status 'Pending'. + * @param {!chromeos.cellularSetup.mojom.EuiccRemote} euicc + * @return {!Promise<Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>>} + */ + /* #export */ function getPendingESimProfiles(euicc) { + return euicc.getProfileList().then(response => { + return filterForPendingProfiles_(response.profiles); + }); + } + + /** + * @private + * @param {!Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>} profiles + * @return {!Promise<Array<!chromeos.cellularSetup.mojom.ESimProfileRemote>>} + */ + function filterForPendingProfiles_(profiles) { + const profilePromises = profiles.map(profile => { + return profile.getProperties().then(response => { + if (response.properties.state !== + chromeos.cellularSetup.mojom.ProfileState.kPending) { + return null; + } + return profile; + }); + }); + return Promise.all(profilePromises).then(profiles => { + return profiles.filter(profile => { + return profile !== null; + }); + }); + } + + // #cr_define_end + return { + getPendingESimProfiles, + }; +});
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn b/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn index a326dc5..18d4cbf3 100644 --- a/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn +++ b/ui/webui/resources/cr_components/chromeos/network_health/BUILD.gn
@@ -13,7 +13,10 @@ js_type_check("closure_compile") { deps = [ ":network_diagnostics", + ":network_diagnostics_mojo", + ":network_diagnostics_types", ":network_health_summary", + ":routine_group", ] } @@ -22,7 +25,9 @@ deps = [ ":network_diagnostics.m", ":network_diagnostics_mojo.m", + ":network_diagnostics_types.m", ":network_health_summary.m", + ":routine_group.m", ] } @@ -38,6 +43,9 @@ js_library("network_diagnostics") { deps = [ + ":network_diagnostics_mojo", + ":network_diagnostics_types", + ":routine_group", "//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile", "//ui/webui/resources/js:i18n_behavior", ] @@ -50,6 +58,17 @@ ] } +js_library("network_diagnostics_types") { + deps = [ ":network_diagnostics_mojo" ] +} + +js_library("routine_group") { + deps = [ + ":network_diagnostics_types", + "//ui/webui/resources/js:i18n_behavior", + ] +} + js_library("network_health_summary.m") { sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.m.js" ] deps = [ @@ -65,6 +84,8 @@ sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.m.js" ] deps = [ ":network_diagnostics_mojo.m", + ":network_diagnostics_types.m", + ":routine_group.m", "//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/js:i18n_behavior.m", @@ -74,10 +95,27 @@ js_library("network_diagnostics_mojo.m") { sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_mojo.m.js" ] - deps = [ "//chrome/browser/ui/webui/settings/chromeos/search:mojo_bindings_js_library_for_compile" ] + deps = [ "//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile" ] extra_deps = [ ":modulize" ] } +js_library("network_diagnostics_types.m") { + sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.m.js" ] + deps = [ ":network_diagnostics_mojo.m" ] + extra_deps = [ ":modulize" ] +} + +js_library("routine_group.m") { + sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/routine_group.m.js" ] + deps = [ + ":network_diagnostics_mojo.m", + ":network_diagnostics_types.m", + "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", + "//ui/webui/resources/js:i18n_behavior.m", + ] + extra_deps = [ ":routine_group_module" ] +} + # polymer_modulizer for converting Polymer2 to Polymer3 polymer_modulizer("network_health_summary") { @@ -90,10 +128,21 @@ js_file = "network_diagnostics.js" html_file = "network_diagnostics.html" html_type = "dom-module" + auto_imports = [ "ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.html|Routine,RoutineResponse,RoutineGroup,RoutineType" ] +} + +polymer_modulizer("routine_group") { + js_file = "routine_group.js" + html_file = "routine_group.html" + html_type = "dom-module" + auto_imports = [ "ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.html|Icons,Routine,RoutineResponse" ] } js_modulizer("modulize") { - input_files = [ "network_diagnostics_mojo.js" ] + input_files = [ + "network_diagnostics_mojo.js", + "network_diagnostics_types.js", + ] } group("polymer3_elements") { @@ -101,5 +150,6 @@ ":modulize", ":network_diagnostics_module", ":network_health_summary_module", + ":routine_group_module", ] }
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html index 7bb4a3c..bf35f93 100644 --- a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html +++ b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.html
@@ -1,49 +1,28 @@ <link rel="import" href="../../../html/polymer.html"> -<link rel="import" href="chrome://resources/cr_components/chromeos/network_health/network_diagnostics_mojo.html"> -<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html"> <link rel="import" href="../../../cr_elements/cr_button/cr_button.html"> <link rel="import" href="../../../html/i18n_behavior.html"> +<link rel="import" href="network_diagnostics_mojo.html"> +<link rel="import" href="network_diagnostics_types.html"> +<link rel="import" href="routine_group.html"> <dom-module id="network-diagnostics"> <template> - <style> - .routine-container { - align-items: center; - border: 2px solid rgb(175, 175, 175); - display: flex; - height: 30px; - margin: 10px; - padding: 5px; - } - - .routine-icon { - height: 25px; - padding-inline-end: 10px; - width: auto; - } - - .routine-name { - flex: 1; - font-size: 1rem; - } - </style> - <template is="dom-repeat" items="[[routines_]]" as="routine"> - <div class="routine-container" aria-label="[[i18n(routine.name)]]" - aria-description="[[routine.ariaDescription]]"> - <img class="routine-icon" src="[[getRoutineIcon_(routine.result)]]"> - <div aria-hidden="true" class="routine-name"> - [[i18n(routine.name)]] - </div> - <div aria-hidden="true" hidden="[[!routine.resultMsg]]"> - [[routine.resultMsg]] - </div> - - <template is="dom-if" if="[[routine.running]]"> - <paper-spinner-lite active></paper-spinner-lite> - </template> - </div> - </template> + <routine-group name="[[i18n('NetworkDiagnosticsConnectionGroup')]]" + routines="[[getRoutineGroup_(routines_.*, RoutineGroup_.CONNECTION)]]"> + </routine-group> + <routine-group name="[[i18n('NetworkDiagnosticsWifiGroup')]]" + routines="[[getRoutineGroup_(routines_.*, RoutineGroup_.WIFI)]]"> + </routine-group> + <routine-group name="[[i18n('NetworkDiagnosticsGatewayGroup')]]" + routines="[[getRoutineGroup_(routines_.*, RoutineGroup_.GATEWAY)]]"> + </routine-group> + <routine-group name="[[i18n('NetworkDiagnosticsFirewallGroup')]]" + routines="[[getRoutineGroup_(routines_.*, RoutineGroup_.FIREWALL)]]"> + </routine-group> + <routine-group name="[[i18n('NetworkDiagnosticsDnsGroup')]]" + routines="[[getRoutineGroup_(routines_.*, RoutineGroup_.DNS)]]"> + </routine-group> </template> <script src="network_diagnostics.js"></script> </dom-module>
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js index 1bc363c..48b8992 100644 --- a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js +++ b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.js
@@ -1,4 +1,3 @@ - // Copyright 2020 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. @@ -11,57 +10,19 @@ const diagnosticsMojom = chromeos.networkDiagnostics.mojom; /** - * A routine response from the Network Diagnostics mojo service. - * @typedef {{ - * verdict: chromeos.networkDiagnostics.mojom.RoutineVerdict, - * }} - * RoutineResponse can optionally have a `problems` field, which is an array of - * enums relevant to the routine run. Unfortunately the closure compiler cannot - * handle optional object fields. - */ -let RoutineResponse; - -/** - * A network diagnostics routine. Holds descriptive information about the - * routine, and it's transient state. - * @typedef {{ - * name: string, - * type: !RoutineType, - * running: boolean, - * resultMsg: string, - * result: ?RoutineResponse, - * }} - */ -let Routine; - -/** - * Definition for all Network diagnostic routine types. This enum is intended - * to be used as an index in an array of routines. - * @enum {number} - */ -const RoutineType = { - LAN_CONNECTIVITY: 0, - SIGNAL_STRENGTH: 1, - GATEWAY_PING: 2, - SECURE_WIFI: 3, - DNS_RESOLVER: 4, - DNS_LATENCY: 5, - DNS_RESOLUTION: 6, - HTTP_FIREWALL: 7, - HTTPS_FIREWALL: 8, - HTTPS_LATENCY: 9, -}; - -/** * Helper function to create a routine object. * @param {string} name * @param {!RoutineType} type + * @param {!RoutineGroup} group + * @param {!function()} func * @return {!Routine} Routine object */ -function createRoutine(name, type) { +function createRoutine(name, type, group, func) { return { name: name, type: type, + group: group, + func: func, running: false, resultMsg: '', result: null, @@ -84,30 +45,103 @@ routines_: { type: Array, value: function() { + const routineGroups = [ + { + group: RoutineGroup.CONNECTION, + routines: [ + { + name: 'NetworkDiagnosticsLanConnectivity', + type: RoutineType.LAN_CONNECTIVITY, + func: () => this.networkDiagnostics_.lanConnectivity(), + }, + ] + }, + { + group: RoutineGroup.WIFI, + routines: [ + { + name: 'NetworkDiagnosticsSignalStrength', + type: RoutineType.SIGNAL_STRENGTH, + func: () => this.networkDiagnostics_.signalStrength(), + }, + { + name: 'NetworkDiagnosticsHasSecureWiFiConnection', + type: RoutineType.SECURE_WIFI, + func: () => this.networkDiagnostics_.hasSecureWiFiConnection(), + }, + ] + }, + { + group: RoutineGroup.GATEWAY, + routines: [ + { + name: 'NetworkDiagnosticsGatewayCanBePinged', + type: RoutineType.GATEWAY_PING, + func: () => this.networkDiagnostics_.gatewayCanBePinged(), + }, + ] + }, + { + group: RoutineGroup.FIREWALL, + routines: [ + { + name: 'NetworkDiagnosticsHttpFirewall', + type: RoutineType.HTTP_FIREWALL, + func: () => this.networkDiagnostics_.httpFirewall(), + }, + { + name: 'NetworkDiagnosticsHttpsFirewall', + type: RoutineType.HTTPS_FIREWALL, + func: () => this.networkDiagnostics_.httpsFirewall(), + }, + { + name: 'NetworkDiagnosticsHttpsLatency', + type: RoutineType.HTTPS_LATENCY, + func: () => this.networkDiagnostics_.httpsLatency(), + }, + ] + }, + { + group: RoutineGroup.DNS, + routines: [ + { + name: 'NetworkDiagnosticsDnsResolverPresent', + type: RoutineType.DNS_RESOLVER, + func: () => this.networkDiagnostics_.dnsResolverPresent(), + }, + { + name: 'NetworkDiagnosticsDnsLatency', + type: RoutineType.DNS_LATENCY, + func: () => this.networkDiagnostics_.dnsLatency(), + }, + { + name: 'NetworkDiagnosticsDnsResolution', + type: RoutineType.DNS_RESOLUTION, + func: () => this.networkDiagnostics_.dnsResolution(), + }, + ] + }, + ]; const routines = []; - routines[RoutineType.LAN_CONNECTIVITY] = createRoutine( - 'NetworkDiagnosticsLanConnectivity', RoutineType.LAN_CONNECTIVITY); - routines[RoutineType.SIGNAL_STRENGTH] = createRoutine( - 'NetworkDiagnosticsSignalStrength', RoutineType.SIGNAL_STRENGTH); - routines[RoutineType.GATEWAY_PING] = createRoutine( - 'NetworkDiagnosticsGatewayCanBePinged', RoutineType.GATEWAY_PING); - routines[RoutineType.SECURE_WIFI] = createRoutine( - 'NetworkDiagnosticsHasSecureWiFiConnection', - RoutineType.SECURE_WIFI); - routines[RoutineType.DNS_RESOLVER] = createRoutine( - 'NetworkDiagnosticsDnsResolverPresent', RoutineType.DNS_RESOLVER); - routines[RoutineType.DNS_LATENCY] = createRoutine( - 'NetworkDiagnosticsDnsLatency', RoutineType.DNS_LATENCY); - routines[RoutineType.DNS_RESOLUTION] = createRoutine( - 'NetworkDiagnosticsDnsResolution', RoutineType.DNS_RESOLUTION); - routines[RoutineType.HTTP_FIREWALL] = createRoutine( - 'NetworkDiagnosticsHttpFirewall', RoutineType.HTTP_FIREWALL); - routines[RoutineType.HTTPS_FIREWALL] = createRoutine( - 'NetworkDiagnosticsHttpsFirewall', RoutineType.HTTPS_FIREWALL); - routines[RoutineType.HTTPS_LATENCY] = createRoutine( - 'NetworkDiagnosticsHttpsLatency', RoutineType.HTTPS_LATENCY); + + for (const group of routineGroups) { + for (const routine of group.routines) { + routines[routine.type] = createRoutine( + routine.name, routine.type, group.group, routine.func); + } + } + return routines; } + }, + + /** + * Enum of Routine Groups + * @private {Object} + */ + RoutineGroup_: { + type: Object, + value: RoutineGroup, } }, @@ -160,6 +194,17 @@ }, /** + * Runs all supported network diagnostics routines. + * @param {!PolymerDeepPropertyChange} routines + * @param {Number} group + * @return {!Array<!Routine>} + * @private + */ + getRoutineGroup_(routines, group) { + return routines.base.filter(r => r.group === group); + }, + + /** * @param {!Event} event * @private */ @@ -179,48 +224,8 @@ `routines_.${type}.ariaDescription`, this.i18n('NetworkDiagnosticsRunning')); - switch (type) { - case RoutineType.LAN_CONNECTIVITY: - this.networkDiagnostics_.lanConnectivity().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.SIGNAL_STRENGTH: - this.networkDiagnostics_.signalStrength().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.GATEWAY_PING: - this.networkDiagnostics_.gatewayCanBePinged().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.SECURE_WIFI: - this.networkDiagnostics_.hasSecureWiFiConnection().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.DNS_RESOLVER: - this.networkDiagnostics_.dnsResolverPresent().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.DNS_LATENCY: - this.networkDiagnostics_.dnsLatency().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.DNS_RESOLUTION: - this.networkDiagnostics_.dnsResolution().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.HTTP_FIREWALL: - this.networkDiagnostics_.httpFirewall().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.HTTPS_FIREWALL: - this.networkDiagnostics_.httpsFirewall().then( - result => this.evaluateRoutine_(type, result)); - break; - case RoutineType.HTTPS_LATENCY: - this.networkDiagnostics_.httpsLatency().then( - result => this.evaluateRoutine_(type, result)); - break; - } + this.routines_[type].func().then( + result => this.evaluateRoutine_(type, result)); }, /** @@ -239,29 +244,6 @@ }, /** - * Helper function to get the icon for a routine based on the result. - * @param {RoutineResponse} result - * @return {string} - * @private - */ - getRoutineIcon_(result) { - if (!result) { - return 'test_not_run.png'; - } - - switch (result.verdict) { - case diagnosticsMojom.RoutineVerdict.kNoProblem: - return 'test_passed.png'; - case diagnosticsMojom.RoutineVerdict.kProblem: - return 'test_failed.png'; - case diagnosticsMojom.RoutineVerdict.kNotRun: - return 'test_canceled.png'; - } - - return ''; - }, - - /** * Helper function to generate the routine result string. * @param {Routine} routine * @return {string}
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.html b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.html new file mode 100644 index 0000000..d8434fc4 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.html
@@ -0,0 +1,3 @@ +<link rel="import" href="network_diagnostics_mojo.html"> + +<script src="network_diagnostics_types.js"></script>
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.js b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.js new file mode 100644 index 0000000..3b1d1fb --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics_types.js
@@ -0,0 +1,75 @@ +// Copyright 2020 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. + +// clang-format off +// #import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js'; +// #import 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_diagnostics.mojom-lite.js'; +// clang-format on + +/** + * @fileoverview + * This file contains shared types for the network diagnostics components. + */ + +/** + * A routine response from the Network Diagnostics mojo service. + * @typedef {{ + * verdict: chromeos.networkDiagnostics.mojom.RoutineVerdict, + * }} + * RoutineResponse can optionally have a `problems` field, which is an array of + * enums relevant to the routine run. Unfortunately the closure compiler cannot + * handle optional object fields. + */ +/* #export */ let RoutineResponse; + +/** + * A network diagnostics routine. Holds descriptive information about the + * routine, and it's transient state. + * @typedef {{ + * name: string, + * type: !RoutineType, + * group: !RoutineGroup, + * func: function(), + * running: boolean, + * resultMsg: string, + * result: ?RoutineResponse, + * }} + */ +/* #export */ let Routine; + +/** + * Definition for all Network diagnostic routine types. This enum is intended + * to be used as an index in an array of routines. + * @enum {number} + */ +/* #export */ const RoutineType = { + LAN_CONNECTIVITY: 0, + SIGNAL_STRENGTH: 1, + GATEWAY_PING: 2, + SECURE_WIFI: 3, + DNS_RESOLVER: 4, + DNS_LATENCY: 5, + DNS_RESOLUTION: 6, + HTTP_FIREWALL: 7, + HTTPS_FIREWALL: 8, + HTTPS_LATENCY: 9, +}; + +/** + * Definition for different groups of network routines. + * @enum {number} + */ +/* #export */ const RoutineGroup = { + CONNECTION: 0, + WIFI: 1, + GATEWAY: 2, + FIREWALL: 3, + DNS: 4, +}; + +/* #export */ const Icons = { + TEST_FAILED: 'test_failed.png', + TEST_NOT_RUN: 'test_not_run.png', + TEST_PASSED: 'test_passed.png' +};
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/routine_group.html b/ui/webui/resources/cr_components/chromeos/network_health/routine_group.html new file mode 100644 index 0000000..8a7fbac --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/network_health/routine_group.html
@@ -0,0 +1,77 @@ +<link rel="import" href="../../../html/i18n_behavior.html"> +<link rel="import" href="../../../html/polymer.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html"> +<link rel="import" href="network_diagnostics_mojo.html"> +<link rel="import" href="network_diagnostics_types.html"> + +<dom-module id="routine-group"> + <template> + <style> + .group-container { + border: 1.5px solid rgb(175, 175, 175); + border-radius: 10px; + cursor: pointer; + margin: 10px; + padding: 5px; + } + + .routine-container { + align-items: center; + display: flex; + height: 20px; + margin: 5px; + padding: 5px; + } + + .routine-icon { + height: 25px; + width: auto; + } + + .group-name { + flex: 1; + font-size: 1rem; + } + + .routine-name { + flex: 1; + font-size: 0.8rem; + padding-inline-start: 10px; + } + + .group-header { + align-items: center; + display: flex; + min-height: 30px; + } + </style> + + <div class="group-container" on-click="onGroupClick_"> + <div class="group-header"> + <div class="group-name">[[name]]</div> + <template is="dom-if" if="[[running]]"> + <paper-spinner-lite active></paper-spinner-lite> + </template> + <img class="routine-icon" hidden="[[!showGroupIcon]]" + src="[[getGroupIcon_(routines.*)]]"> + </div> + <template is="dom-if" if="[[expanded]]"> + <template is="dom-repeat" items="[[routines]]" as="routine" + mutable-data> + <div class="routine-container" aria-label="[[i18n(routine.name)]]" + aria-description="[[routine.ariaDescription]]"> + <img class="routine-icon" src="[[getRoutineIcon_(routine.result)]]"> + <div aria-hidden="true" class="routine-name"> + [[i18n(routine.name)]] + </div> + <div aria-hidden="true" hidden="[[!routine.resultMsg]]"> + [[routine.resultMsg]] + </div> + </div> + </template> + </template> + </div> + + </template> + <script src="routine_group.js"></script> +</dom-module>
diff --git a/ui/webui/resources/cr_components/chromeos/network_health/routine_group.js b/ui/webui/resources/cr_components/chromeos/network_health/routine_group.js new file mode 100644 index 0000000..13fafcb6 --- /dev/null +++ b/ui/webui/resources/cr_components/chromeos/network_health/routine_group.js
@@ -0,0 +1,160 @@ +// Copyright 2020 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. + +/** + * @fileoverview Polymer element for a group of diagnostic routines. + */ + +Polymer({ + is: 'routine-group', + + behaviors: [ + I18nBehavior, + ], + + properties: { + /** + * List of routines to display in the group. + * @private {!Array<!Routine>} + */ + routines: { + type: Array, + value: [], + }, + + /** + * Localized name for the group of routines. + * @private {String} + */ + name: { + type: String, + value: '', + }, + + /** + * Boolean flag if any routines in the group are running. + * @private {Boolean} + */ + running: { + type: Boolean, + computed: 'routinesRunning_(routines.*)', + }, + + /** + * Boolean flag if the routine group is expanded. + * @private {Boolean} + */ + expanded: { + type: Boolean, + value: false, + }, + + /** + * Boolean flag if icon representing the group result should be shown. + * @private {Boolean} + */ + showGroupIcon: { + type: Boolean, + computed: 'showGroupIcon_(running, expanded)', + }, + }, + + /** + * Helper function to get the icon for a group of routines based on all of + * their results. + * @param {!PolymerDeepPropertyChange} routines + * @return {string} + * @private + */ + getGroupIcon_(routines) { + // Assume that all tests are complete and passing until proven otherwise. + let complete = true; + let failed = false; + + for (const routine of /** @type {!Array<!Routine>} */ (routines.base)) { + if (!routine.result) { + complete = false; + continue; + } + + switch (routine.result.verdict) { + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kNoProblem: + continue; + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kProblem: + failed = true; + break; + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kNotRun: + complete = false; + break; + } + } + + if (failed) { + return Icons.TEST_FAILED; + } + if (!complete) { + return Icons.TEST_NOT_RUN; + } + + return Icons.TEST_PASSED; + }, + + /** + * Determine if the group routine icon should be showing. + * @param {boolean} running + * @param {boolean} expanded + * @return {boolean} + * @private + */ + showGroupIcon_(running, expanded) { + return !running && !expanded; + }, + + /** + * Helper function to get the icon for a routine based on the result. + * @param {!RoutineResponse} result + * @return {string} + * @private + */ + getRoutineIcon_(result) { + if (!result) { + return Icons.TEST_NOT_RUN; + } + + switch (result.verdict) { + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kNoProblem: + return Icons.TEST_PASSED; + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kProblem: + return Icons.TEST_FAILED; + case chromeos.networkDiagnostics.mojom.RoutineVerdict.kNotRun: + return Icons.TEST_NOT_RUN; + } + + return Icons.TEST_NOT_RUN; + }, + + /** + * Determine if any routines in the group are running. + * @param {!PolymerDeepPropertyChange} routines + * @return {boolean} + * @private + */ + routinesRunning_(routines) { + for (const routine of /** @type {!Array<!Routine>} */ (routines.base)) { + if (routine.running) { + return true; + } + } + return false; + }, + + /** + * Helper function to toggle the expanded properties when the routine group + * is clicked. + * @private + */ + onGroupClick_() { + this.set('expanded', !this.expanded); + }, +});
diff --git a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni index b051c4b..cdacaea 100644 --- a/ui/webui/resources/cr_components/chromeos/os_cr_components.gni +++ b/ui/webui/resources/cr_components/chromeos/os_cr_components.gni
@@ -19,6 +19,7 @@ "cellular_setup.setCellularSetupRemoteForTesting|setCellularSetupRemoteForTesting", "cellular_setup.getESimManagerRemote|getESimManagerRemote", "cellular_setup.setESimManagerRemoteForTesting|setESimManagerRemoteForTesting", + "cellular_setup.getPendingESimProfiles|getPendingESimProfiles", "cellular_setup.CellularSetupDelegate|CellularSetupDelegate", "network_config.MojoInterfaceProvider|MojoInterfaceProvider", "network_config.MojoInterfaceProviderImpl|MojoInterfaceProviderImpl", @@ -33,6 +34,7 @@ "ui/webui/resources/cr_components/chromeos/cellular_setup/cellular_setup_delegate.html|CellularSetupDelegate", "ui/webui/resources/cr_components/chromeos/cellular_setup/subflow_behavior.html|SubflowBehavior", "ui/webui/resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.html|setCellularSetupRemoteForTesting,getCellularSetupRemote,setESimManagerRemoteForTesting,getESimManagerRemote", + "ui/webui/resources/cr_components/chromeos/cellular_setup/esim_manager_utils.html|getPendingESimProfiles", "ui/webui/resources/cr_components/chromeos/network/cr_policy_network_behavior_mojo.html|CrPolicyNetworkBehaviorMojo", "ui/webui/resources/cr_components/chromeos/network/onc_mojo.html|OncMojo", "ui/webui/resources/cr_components/chromeos/network/network_config_element_behavior.html|NetworkConfigElementBehavior",
diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn index 5a5cb5e..0b412fb 100644 --- a/weblayer/BUILD.gn +++ b/weblayer/BUILD.gn
@@ -225,6 +225,8 @@ "browser/no_state_prefetch/prerender_utils.h", "browser/page_load_metrics_initialize.cc", "browser/page_load_metrics_initialize.h", + "browser/page_load_metrics_observer_impl.cc", + "browser/page_load_metrics_observer_impl.h", "browser/page_specific_content_settings_delegate.cc", "browser/page_specific_content_settings_delegate.h", "browser/password_manager_driver_factory.cc", @@ -269,8 +271,6 @@ "browser/translate_client_impl.h", "browser/translate_ranker_factory.cc", "browser/translate_ranker_factory.h", - "browser/ukm_page_load_metrics_observer.cc", - "browser/ukm_page_load_metrics_observer.h", "browser/url_bar/autocomplete_scheme_classifier_impl.cc", "browser/url_bar/autocomplete_scheme_classifier_impl.h", "browser/url_bar/page_info_delegate_impl.cc",
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java index e617f48..33133f3 100644 --- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java +++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/NavigationTest.java
@@ -15,6 +15,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.os.SystemClock; import android.support.test.InstrumentationRegistry; import android.webkit.WebResourceResponse; @@ -193,6 +194,25 @@ } } + public static class FirstContentfulPaintCallbackHelper extends CallbackHelper { + private long mNavigationStartMillis; + private long mFirstContentfulPaintMs; + + public void notifyCalled(long navigationStartMillis, long firstContentfulPaintMs) { + mNavigationStartMillis = navigationStartMillis; + mFirstContentfulPaintMs = firstContentfulPaintMs; + notifyCalled(); + } + + public long getNavigationStartMillis() { + return mNavigationStartMillis; + } + + public long getFirstContentfulPaintMs() { + return mFirstContentfulPaintMs; + } + } + public NavigationCallbackHelper onStartedCallback = new NavigationCallbackHelper(); public NavigationCallbackHelper onRedirectedCallback = new NavigationCallbackHelper(); public NavigationCallbackHelper onReadyToCommitCallback = new NavigationCallbackHelper(); @@ -203,6 +223,8 @@ public NavigationCallbackValueRecorder loadProgressChangedCallback = new NavigationCallbackValueRecorder(); public CallbackHelper onFirstContentfulPaintCallback = new CallbackHelper(); + public FirstContentfulPaintCallbackHelper onFirstContentfulPaint2Callback = + new FirstContentfulPaintCallbackHelper(); public UriCallbackHelper onOldPageNoLongerRenderedCallback = new UriCallbackHelper(); @Override @@ -236,6 +258,13 @@ } @Override + public void onFirstContentfulPaint( + long navigationStartMillis, long firstContentfulPaintMs) { + onFirstContentfulPaint2Callback.notifyCalled( + navigationStartMillis, firstContentfulPaintMs); + } + + @Override public void onOldPageNoLongerRendered(Uri newNavigationUri) { onOldPageNoLongerRenderedCallback.notifyCalled(newNavigationUri); } @@ -1209,4 +1238,29 @@ mCallback.onFailedCallback.assertCalledWith( curFailedCount, STREAM_URL, LoadError.CONNECTIVITY_ERROR); } + + @MinWebLayerVersion(89) + @Test + @SmallTest + public void testOnFirstContentfulPaintTiming() throws Exception { + long activityStartTimeMs = SystemClock.uptimeMillis(); + + TestWebServer testServer = TestWebServer.start(); + InstrumentationActivity activity = mActivityTestRule.launchShellWithUrl(null); + setNavigationCallback(activity); + String url = testServer.setResponse("/ok.html", "<html>ok</html>", null); + + int count = mCallback.onFirstContentfulPaint2Callback.getCallCount(); + mActivityTestRule.navigateAndWait(url); + mCallback.onFirstContentfulPaint2Callback.waitForCallback(count); + + long navigationStart = mCallback.onFirstContentfulPaint2Callback.getNavigationStartMillis(); + long current = SystemClock.uptimeMillis(); + Assert.assertTrue(navigationStart <= current); + Assert.assertTrue(navigationStart >= activityStartTimeMs); + + long firstContentfulPaint = + mCallback.onFirstContentfulPaint2Callback.getFirstContentfulPaintMs(); + Assert.assertTrue(firstContentfulPaint <= (current - navigationStart)); + } }
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java index 705cd25..74b77e9 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/NavigationControllerImpl.java
@@ -5,8 +5,10 @@ package org.chromium.weblayer_private; import android.os.RemoteException; +import android.os.SystemClock; import android.webkit.WebResourceResponse; +import org.chromium.base.TimeUtilsJni; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; @@ -28,6 +30,10 @@ private long mNativeNavigationController; private INavigationControllerClient mNavigationControllerClient; + // Conversion between native TimeTicks and SystemClock.uptimeMillis(). + private long mNativeTickOffsetUs; + private boolean mNativeTickOffsetUsComputed; + public NavigationControllerImpl(TabImpl tab, INavigationControllerClient client) { mTab = tab; mNavigationControllerClient = client; @@ -221,6 +227,27 @@ } @CalledByNative + private void onFirstContentfulPaint2( + long navigationStartTick, long firstContentfulPaintDurationMs) throws RemoteException { + if (WebLayerFactoryImpl.getClientMajorVersion() < 89) return; + + // See logic in CustomTabsConnection.java that this was based on. + if (!mNativeTickOffsetUsComputed) { + // Compute offset from time ticks to uptimeMillis. + mNativeTickOffsetUsComputed = true; + long nativeNowUs = TimeUtilsJni.get().getTimeTicksNowUs(); + long javaNowUs = SystemClock.uptimeMillis() * 1000; + mNativeTickOffsetUs = nativeNowUs - javaNowUs; + } + // SystemClock.uptimeMillis() is used here as it (as of June 2017) uses the same system call + // as all the native side of Chrome, that is clock_gettime(CLOCK_MONOTONIC). Meaning that + // the offset relative to navigationStart is to be compared with a + // SystemClock.uptimeMillis() value. + mNavigationControllerClient.onFirstContentfulPaint2( + (navigationStartTick - mNativeTickOffsetUs) / 1000, firstContentfulPaintDurationMs); + } + + @CalledByNative private void onOldPageNoLongerRendered(String uri) throws RemoteException { if (WebLayerFactoryImpl.getClientMajorVersion() < 85) return; mNavigationControllerClient.onOldPageNoLongerRendered(uri);
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl index 73432f8b..3f5673b7 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl +++ b/weblayer/browser/java/org/chromium/weblayer_private/interfaces/INavigationControllerClient.aidl
@@ -33,4 +33,7 @@ // Added in M85. void onOldPageNoLongerRendered(in String uri) = 9; + + // Added in M89. + void onFirstContentfulPaint2(long navigationStartMs, long firstContentfulPaintDurationMs) = 10; }
diff --git a/weblayer/browser/navigation_controller_impl.cc b/weblayer/browser/navigation_controller_impl.cc index 800cb57..0655443 100644 --- a/weblayer/browser/navigation_controller_impl.cc +++ b/weblayer/browser/navigation_controller_impl.cc
@@ -154,6 +154,23 @@ return nullptr; } +void NavigationControllerImpl::OnFirstContentfulPaint( + const base::TimeTicks& navigation_start, + const base::TimeDelta& first_contentful_paint) { +#if defined(OS_ANDROID) + TRACE_EVENT0("weblayer", + "Java_NavigationControllerImpl_onFirstContentfulPaint2"); + int64_t first_contentful_paint_ms = first_contentful_paint.InMilliseconds(); + Java_NavigationControllerImpl_onFirstContentfulPaint2( + AttachCurrentThread(), java_controller_, + (navigation_start - base::TimeTicks()).InMicroseconds(), + first_contentful_paint_ms); +#endif + + for (auto& observer : observers_) + observer.OnFirstContentfulPaint(navigation_start, first_contentful_paint); +} + #if defined(OS_ANDROID) void NavigationControllerImpl::SetNavigationControllerImpl( JNIEnv* env,
diff --git a/weblayer/browser/navigation_controller_impl.h b/weblayer/browser/navigation_controller_impl.h index 5b6d5ebf..dacba80 100644 --- a/weblayer/browser/navigation_controller_impl.h +++ b/weblayer/browser/navigation_controller_impl.h
@@ -48,6 +48,13 @@ // Returns the NavigationImpl for |navigation_id|, or null if there isn't one. NavigationImpl* GetNavigationImplFromId(int64_t navigation_id); + // Called when the first contentful paint page load metric is available. + // |navigation_start| is the navigation start time. + // |first_contentful_paint_ms| is the duration to first contentful paint from + // navigation start. + void OnFirstContentfulPaint(const base::TimeTicks& navigation_start, + const base::TimeDelta& first_contentful_paint); + #if defined(OS_ANDROID) void SetNavigationControllerImpl( JNIEnv* env,
diff --git a/weblayer/browser/page_load_metrics_initialize.cc b/weblayer/browser/page_load_metrics_initialize.cc index 740b83fd..a2d19f4 100644 --- a/weblayer/browser/page_load_metrics_initialize.cc +++ b/weblayer/browser/page_load_metrics_initialize.cc
@@ -10,7 +10,7 @@ #include "components/page_load_metrics/browser/page_load_metrics_observer.h" #include "components/page_load_metrics/browser/page_load_tracker.h" #include "weblayer/browser/no_state_prefetch/prerender_utils.h" -#include "weblayer/browser/ukm_page_load_metrics_observer.h" +#include "weblayer/browser/page_load_metrics_observer_impl.h" namespace weblayer { @@ -39,10 +39,7 @@ // page_load_metrics::PageLoadMetricsEmbedderBase: void RegisterEmbedderObservers( page_load_metrics::PageLoadTracker* tracker) override { - std::unique_ptr<page_load_metrics::PageLoadMetricsObserver> ukm_observer = - UkmPageLoadMetricsObserver::CreateIfNeeded(); - if (ukm_observer) - tracker->AddObserver(std::move(ukm_observer)); + tracker->AddObserver(std::make_unique<PageLoadMetricsObserverImpl>()); if (g_callback_for_testing) (*g_callback_for_testing).Run(tracker);
diff --git a/weblayer/browser/page_load_metrics_observer_impl.cc b/weblayer/browser/page_load_metrics_observer_impl.cc new file mode 100644 index 0000000..468ecfc --- /dev/null +++ b/weblayer/browser/page_load_metrics_observer_impl.cc
@@ -0,0 +1,54 @@ +// Copyright 2020 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 "weblayer/browser/page_load_metrics_observer_impl.h" + +#include "base/time/time.h" +#include "build/build_config.h" +#include "components/no_state_prefetch/browser/prerender_manager.h" +#include "components/no_state_prefetch/browser/prerender_util.h" +#include "content/public/browser/navigation_handle.h" +#include "content/public/browser/web_contents.h" +#include "services/metrics/public/cpp/ukm_recorder.h" +#include "weblayer/browser/navigation_controller_impl.h" +#include "weblayer/browser/no_state_prefetch/prerender_manager_factory.h" +#include "weblayer/browser/tab_impl.h" + +namespace weblayer { + +PageLoadMetricsObserverImpl::ObservePolicy +PageLoadMetricsObserverImpl::OnCommit( + content::NavigationHandle* navigation_handle, + ukm::SourceId source_id) { +#if defined(OS_ANDROID) + if (!ukm::UkmRecorder::Get()) + return CONTINUE_OBSERVING; + + // If URL-Keyed-Metrics (UKM) is enabled in the system, this is used to + // populate it with top-level page-load metrics. + prerender::PrerenderManager* const prerender_manager = + PrerenderManagerFactory::GetForBrowserContext( + navigation_handle->GetWebContents()->GetBrowserContext()); + if (!prerender_manager) + return CONTINUE_OBSERVING; + prerender::RecordNoStatePrefetchMetrics(navigation_handle, source_id, + prerender_manager); +#endif + return CONTINUE_OBSERVING; +} + +void PageLoadMetricsObserverImpl::OnFirstContentfulPaintInPage( + const page_load_metrics::mojom::PageLoadTiming& timing) { + auto* tab = TabImpl::FromWebContents(GetDelegate().GetWebContents()); + if (!tab) + return; + + auto* nav_controller = + static_cast<NavigationControllerImpl*>(tab->GetNavigationController()); + nav_controller->OnFirstContentfulPaint( + GetDelegate().GetNavigationStart(), + *timing.paint_timing->first_contentful_paint); +} + +} // namespace weblayer
diff --git a/weblayer/browser/page_load_metrics_observer_impl.h b/weblayer/browser/page_load_metrics_observer_impl.h new file mode 100644 index 0000000..5cbdd278 --- /dev/null +++ b/weblayer/browser/page_load_metrics_observer_impl.h
@@ -0,0 +1,27 @@ +// Copyright 2020 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 WEBLAYER_BROWSER_PAGE_LOAD_METRICS_OBSERVER_IMPL_H_ +#define WEBLAYER_BROWSER_PAGE_LOAD_METRICS_OBSERVER_IMPL_H_ + +#include "components/page_load_metrics/browser/page_load_metrics_observer.h" + +namespace weblayer { + +class PageLoadMetricsObserverImpl + : public page_load_metrics::PageLoadMetricsObserver { + public: + PageLoadMetricsObserverImpl() = default; + ~PageLoadMetricsObserverImpl() override = default; + + // page_load_metrics::PageLoadMetricsObserver implementation: + ObservePolicy OnCommit(content::NavigationHandle* navigation_handle, + ukm::SourceId source_id) override; + void OnFirstContentfulPaintInPage( + const page_load_metrics::mojom::PageLoadTiming& timing) override; +}; + +} // namespace weblayer + +#endif // WEBLAYER_BROWSER_PAGE_LOAD_METRICS_OBSERVER_IMPL_H_
diff --git a/weblayer/browser/ukm_page_load_metrics_observer.cc b/weblayer/browser/ukm_page_load_metrics_observer.cc deleted file mode 100644 index 433c16ab..0000000 --- a/weblayer/browser/ukm_page_load_metrics_observer.cc +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright 2020 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 "weblayer/browser/ukm_page_load_metrics_observer.h" - -#include "build/build_config.h" -#include "components/no_state_prefetch/browser/prerender_manager.h" -#include "components/no_state_prefetch/browser/prerender_util.h" -#include "content/public/browser/navigation_handle.h" -#include "content/public/browser/web_contents.h" -#include "services/metrics/public/cpp/ukm_recorder.h" -#include "weblayer/browser/no_state_prefetch/prerender_manager_factory.h" - -namespace weblayer { - -// static -std::unique_ptr<page_load_metrics::PageLoadMetricsObserver> -UkmPageLoadMetricsObserver::CreateIfNeeded() { - if (!ukm::UkmRecorder::Get()) { - return nullptr; - } - return std::make_unique<UkmPageLoadMetricsObserver>(); -} - -UkmPageLoadMetricsObserver::ObservePolicy UkmPageLoadMetricsObserver::OnCommit( - content::NavigationHandle* navigation_handle, - ukm::SourceId source_id) { -#if defined(OS_ANDROID) - prerender::PrerenderManager* const prerender_manager = - PrerenderManagerFactory::GetForBrowserContext( - navigation_handle->GetWebContents()->GetBrowserContext()); - if (!prerender_manager) - return CONTINUE_OBSERVING; - prerender::RecordNoStatePrefetchMetrics(navigation_handle, source_id, - prerender_manager); -#endif - return CONTINUE_OBSERVING; -} - -} // namespace weblayer
diff --git a/weblayer/browser/ukm_page_load_metrics_observer.h b/weblayer/browser/ukm_page_load_metrics_observer.h deleted file mode 100644 index 30e17b3..0000000 --- a/weblayer/browser/ukm_page_load_metrics_observer.h +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright 2020 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 WEBLAYER_BROWSER_UKM_PAGE_LOAD_METRICS_OBSERVER_H_ -#define WEBLAYER_BROWSER_UKM_PAGE_LOAD_METRICS_OBSERVER_H_ - -#include "components/page_load_metrics/browser/page_load_metrics_observer.h" - -namespace content { -class NavigationHandle; -} - -namespace weblayer { - -// If URL-Keyed-Metrics (UKM) is enabled in the system, this is used to -// populate it with top-level page-load metrics. -class UkmPageLoadMetricsObserver - : public page_load_metrics::PageLoadMetricsObserver { - public: - // Returns a UkmPageLoadMetricsObserver, or nullptr if it is not needed. - static std::unique_ptr<page_load_metrics::PageLoadMetricsObserver> - CreateIfNeeded(); - - UkmPageLoadMetricsObserver() = default; - ~UkmPageLoadMetricsObserver() override = default; - - // page_load_metrics::PageLoadMetricsObserver implementation: - ObservePolicy OnCommit(content::NavigationHandle* navigation_handle, - ukm::SourceId source_id) override; -}; - -} // namespace weblayer - -#endif // WEBLAYER_BROWSER_UKM_PAGE_LOAD_METRICS_OBSERVER_H_
diff --git a/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java b/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java index 3b85def..139a055 100644 --- a/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java +++ b/weblayer/public/java/org/chromium/weblayer/NavigationCallback.java
@@ -116,6 +116,19 @@ public void onFirstContentfulPaint() {} /** + * Similar to onFirstContentfulPaint but contains timing information from the renderer process + * to better align with the Navigation Timing API. + * + * @param navigationStartMs the absolute navigation start time in milliseconds since boot, + * not counting time spent in deep sleep. This comes from SystemClock.uptimeMillis(). + * @param firstContentfulPaintDurationMs the number of milliseconds to first contentful paint + * from navigation start. + * @since 89 + */ + public void onFirstContentfulPaint( + long navigationStartMs, long firstContentfulPaintDurationMs) {} + + /** * Called after each navigation to indicate that the old page is no longer * being rendered. Note this is not ordered with respect to onFirstContentfulPaint. * @param newNavigationUri Uri of the new navigation.
diff --git a/weblayer/public/java/org/chromium/weblayer/NavigationController.java b/weblayer/public/java/org/chromium/weblayer/NavigationController.java index b007e6e..5ab528b 100644 --- a/weblayer/public/java/org/chromium/weblayer/NavigationController.java +++ b/weblayer/public/java/org/chromium/weblayer/NavigationController.java
@@ -379,6 +379,15 @@ } @Override + public void onFirstContentfulPaint2( + long navigationStartMs, long firstContentfulPaintDurationMs) { + StrictModeWorkaround.apply(); + for (NavigationCallback callback : mCallbacks) { + callback.onFirstContentfulPaint(navigationStartMs, firstContentfulPaintDurationMs); + } + } + + @Override public void onOldPageNoLongerRendered(String uri) { StrictModeWorkaround.apply(); for (NavigationCallback callback : mCallbacks) {
diff --git a/weblayer/public/navigation_observer.h b/weblayer/public/navigation_observer.h index 86567cb5..90e513e 100644 --- a/weblayer/public/navigation_observer.h +++ b/weblayer/public/navigation_observer.h
@@ -7,6 +7,11 @@ class GURL; +namespace base { +class TimeDelta; +class TimeTicks; +} // namespace base + namespace weblayer { class Navigation; @@ -98,6 +103,15 @@ // first paint after a non-empty layout has finished. virtual void OnFirstContentfulPaint() {} + // Similar to OnFirstContentfulPaint but contains timing information from the + // renderer process to better align with the Navigation Timing API. + // |navigation_start| is the navigation start time. + // |first_contentful_paint| is the duration to first contentful paint from + // navigation start. + virtual void OnFirstContentfulPaint( + const base::TimeTicks& navigation_start, + const base::TimeDelta& first_contentful_paint) {} + // Called after each navigation to indicate that the old page is no longer // being rendered. Note this is not ordered with respect to // OnFirstContentfulPaint.