.
+Status RespondForClickableLocation(const std::string& function,
+ std::unique_ptr
* result) {
+ if (function.find("elem.tagName") != std::string::npos) {
+ *result = std::make_unique("div");
+ } else if (function ==
+ webdriver::atoms::asString(webdriver::atoms::IS_DISPLAYED)) {
+ *result = std::make_unique(true);
+ } else if (function == webdriver::atoms::asString(
+ webdriver::atoms::GET_LOCATION_IN_VIEW)) {
+ base::DictValue dict;
+ dict.Set("x", 5.0);
+ dict.Set("y", 5.0);
+ *result = std::make_unique(std::move(dict));
+ } else if (function == webdriver::atoms::asString(
+ webdriver::atoms::IS_ELEMENT_CLICKABLE)) {
+ base::DictValue dict;
+ dict.Set("clickable", true);
+ *result = std::make_unique(std::move(dict));
+ } else {
+ base::DictValue dict;
+ dict.Set("left", 0.0);
+ dict.Set("top", 0.0);
+ dict.Set("width", 10.0);
+ dict.Set("height", 10.0);
+ *result = std::make_unique(std::move(dict));
+ }
+ return Status(kOk);
+}
+
+class ChildContainerWebView;
+
+// A child target whose owning entry is dropped during the first script call
+// made against it unless the caller has obtained a holder. This mirrors what
+// happens to an out-of-process iframe target whose detach is observed while
+// CallFunctionWithTimeout is running and only that inner holder had locked it.
+class DetachingChildWebView : public StubWebView {
+ public:
+ explicit DetachingChildWebView(ChildContainerWebView* parent)
+ : StubWebView("child"), parent_(parent) {}
+ ~DetachingChildWebView() override = default;
+
+ std::unique_ptr GetHolder() override;
+
+ Status CallFunction(const std::string& frame,
+ const std::string& function,
+ const base::ListValue& args,
+ std::unique_ptr* result) override;
+
+ private:
+ class Holder : public WebViewHolder {
+ public:
+ explicit Holder(int* count) : count_(count) { ++*count_; }
+ ~Holder() override { --*count_; }
+
+ private:
+ raw_ptr count_;
+ };
+
+ raw_ptr parent_;
+ int hold_count_ = 0;
+ bool detach_handled_ = false;
+};
+
+// Page-level WebView that owns a child target and exposes it via
+// FindContainerForFrame, the way FrameTracker does for an OOPIF.
+class ChildContainerWebView : public StubWebView {
+ public:
+ ChildContainerWebView() : StubWebView("page") {
+ child_ = std::make_unique(this);
+ }
+ ~ChildContainerWebView() override = default;
+
+ Status CallFunction(const std::string& frame,
+ const std::string& function,
+ const base::ListValue& args,
+ std::unique_ptr* result) override {
+ return RespondForClickableLocation(function, result);
+ }
+
+ WebView* FindContainerForFrame(const std::string& frame_id) override {
+ return child_.get();
+ }
+
+ void DropChild() {
+ child_dropped_ = true;
+ child_.reset();
+ }
+
+ bool child_dropped() const { return child_dropped_; }
+
+ private:
+ std::unique_ptr child_;
+ bool child_dropped_ = false;
+};
+
+std::unique_ptr DetachingChildWebView::GetHolder() {
+ return std::make_unique(&hold_count_);
+}
+
+Status DetachingChildWebView::CallFunction(
+ const std::string& frame,
+ const std::string& function,
+ const base::ListValue& args,
+ std::unique_ptr* result) {
+ Status status = RespondForClickableLocation(function, result);
+ if (detach_handled_) {
+ return status;
+ }
+ detach_handled_ = true;
+ if (hold_count_ == 0) {
+ // No outer holder kept this view alive, so the deferred deletion runs as
+ // soon as the inner holder goes out of scope. |this| is freed; do not
+ // touch members past this point.
+ parent_.ExtractAsDangling()->DropChild();
+ }
+ return status;
+}
+
+} // namespace
+
+// While clicking an element inside an out-of-process iframe, the containing
+// child target may detach mid-command. ExecuteClickElement must keep that
+// target alive for as long as it holds a raw pointer to it; otherwise the
+// remaining script calls and DispatchMouseEvents would run against a freed
+// object.
+TEST(ElementCommandsTest, ExecuteClickElementSurvivesContainingTargetDetach) {
+ ChildContainerWebView webview;
+ std::unique_ptr result_value;
+ Status status = CallElementCommand(ExecuteClickElement, &webview,
+ "3247f4d1-ce70-49e9-9a99-bdc7591e032f",
+ base::DictValue(), true, &result_value);
+ EXPECT_TRUE(status.IsOk()) << status.message();
+ EXPECT_FALSE(webview.child_dropped())
+ << "The containing child target was destroyed while ExecuteClickElement "
+ "still held a raw pointer to it.";
+}
diff -Nru chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server.cc chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server.cc
--- chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server.cc 2026-07-07 17:43:50.000000000 +0000
@@ -60,8 +60,9 @@
LOG(ERROR) << "GetCanonicalHostName Error hostname: " << hostname;
}
for (p = info; p != nullptr; p = p->ai_next) {
- if (p->ai_canonname != hostname)
+ if (p->ai_canonname && p->ai_canonname != hostname) {
canonical_host_names->emplace_back(p->ai_canonname);
+ }
}
if (canonical_host_names->empty())
@@ -71,6 +72,10 @@
return;
}
+} // namespace
+
+namespace internal {
+
bool HostIsSafeToServe(GURL host_url,
std::string host_header_value,
const std::vector& whitelisted_ips,
@@ -82,7 +87,11 @@
// Allow any host origin in case of `allowed-origins` contains `*`.
return true;
}
- if (allowed_origin == host) {
+ GURL allowed_origin_url(allowed_origin);
+ std::string_view allowed_host = allowed_origin_url.has_scheme()
+ ? allowed_origin_url.host()
+ : allowed_origin;
+ if (allowed_host == host) {
// Allow host from `allowed-origins`.
return true;
}
@@ -162,11 +171,24 @@
}
} else {
if (is_origin_set && !is_origin_local) {
- // Check against allowed list where empty allowed list is special case to
- // allow all. Disallow any other non-local origin.
- bool allow_all = whitelisted_ips.empty();
- if (!allow_all) {
- LOG(ERROR) << "Rejecting request with origin set: "
+ bool origin_is_allowed = false;
+ for (const std::string& allowed_origin : allowed_origins) {
+ if (allowed_origin == kAnyHostPattern) {
+ origin_is_allowed = true;
+ break;
+ }
+ GURL allowed_origin_url(allowed_origin);
+ std::string_view allowed_host = allowed_origin_url.has_scheme()
+ ? allowed_origin_url.host()
+ : allowed_origin;
+ if (allowed_host == origin_url.host()) {
+ origin_is_allowed = true;
+ break;
+ }
+ }
+ if (!origin_is_allowed &&
+ (!allowed_origins.empty() || !whitelisted_ips.empty())) {
+ LOG(ERROR) << "Rejecting request with unauthorized origin: "
<< origin_header_value;
return false;
}
@@ -181,7 +203,7 @@
return true;
}
-} // namespace
+} // namespace internal
HttpServer::HttpServer(const std::string& url_base,
const std::vector& whitelisted_ips,
@@ -224,8 +246,8 @@
void HttpServer::OnHttpRequest(int connection_id,
const net::HttpServerRequestInfo& info) {
- if (!RequestIsSafeToServe(info, allow_remote_, whitelisted_ips_,
- allowed_origins_)) {
+ if (!internal::RequestIsSafeToServe(info, allow_remote_, whitelisted_ips_,
+ allowed_origins_)) {
server_->Send(connection_id, net::HTTP_FORBIDDEN,
"The request was rejected by the server (e.g. unauthorized "
"IP, or invalid Host/Origin header).",
@@ -242,8 +264,8 @@
void HttpServer::OnWebSocketRequest(int connection_id,
const net::HttpServerRequestInfo& info) {
- if (!RequestIsSafeToServe(info, allow_remote_, whitelisted_ips_,
- allowed_origins_)) {
+ if (!internal::RequestIsSafeToServe(info, allow_remote_, whitelisted_ips_,
+ allowed_origins_)) {
server_->Send(connection_id, net::HTTP_FORBIDDEN,
"The request was rejected by the server (e.g. unauthorized "
"IP, or invalid Host/Origin header).",
diff -Nru chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server.h chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server.h
--- chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server.h 2026-07-07 17:43:50.000000000 +0000
@@ -8,12 +8,14 @@
#include "base/json/json_reader.h"
#include "base/task/single_thread_task_runner.h"
#include "chrome/test/chromedriver/server/http_handler.h"
+#include "net/base/ip_address.h"
#include "net/base/url_util.h"
#include "net/server/http_server.h"
#include "net/server/http_server_request_info.h"
#include "net/server/http_server_response_info.h"
#include "net/socket/tcp_server_socket.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
+#include "url/gurl.h"
typedef base::RepeatingCallback
@@ -94,4 +96,18 @@
base::WeakPtrFactory weak_factory_{this}; // Should be last.
};
+namespace internal {
+
+bool HostIsSafeToServe(GURL host_url,
+ std::string host_header_value,
+ const std::vector& whitelisted_ips,
+ const std::vector& allowed_origins);
+
+bool RequestIsSafeToServe(const net::HttpServerRequestInfo& info,
+ bool allow_remote,
+ const std::vector& whitelisted_ips,
+ const std::vector& allowed_origins);
+
+} // namespace internal
+
#endif // CHROME_TEST_CHROMEDRIVER_SERVER_HTTP_SERVER_H_
diff -Nru chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server_unittest.cc chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server_unittest.cc
--- chromium-150.0.7871.100/chrome/test/chromedriver/server/http_server_unittest.cc 1970-01-01 00:00:00.000000000 +0000
+++ chromium-150.0.7871.114/chrome/test/chromedriver/server/http_server_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -0,0 +1,174 @@
+// Copyright 2026 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/test/chromedriver/server/http_server.h"
+
+#include
+#include
+
+#include "net/base/ip_address.h"
+#include "net/base/ip_endpoint.h"
+#include "net/server/http_server_request_info.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+TEST(HttpServerTest, RequestIsSafeToServe_LocalOnly) {
+ net::HttpServerRequestInfo request;
+ request.peer = net::IPEndPoint(net::IPAddress::IPv4Localhost(), 12345);
+
+ std::vector whitelisted_ips;
+ std::vector allowed_origins;
+
+ // Local request (no Origin/Host) -> Allowed.
+ EXPECT_TRUE(internal::RequestIsSafeToServe(request, /*allow_remote=*/false,
+ whitelisted_ips, allowed_origins));
+
+ // Local Origin/Host -> Allowed.
+ request.headers["origin"] = "http://localhost:8000";
+ request.headers["host"] = "127.0.0.1:9515";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(request, /*allow_remote=*/false,
+ whitelisted_ips, allowed_origins));
+
+ // Non-local Origin -> Rejected.
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/false, whitelisted_ips, allowed_origins));
+
+ // Non-local Host -> Rejected.
+ request.headers["origin"] = "http://localhost:8000";
+ request.headers["host"] = "evil.com";
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/false, whitelisted_ips, allowed_origins));
+}
+
+TEST(HttpServerTest, RequestIsSafeToServe_AllowRemote_IPAddressAllowlist) {
+ std::vector whitelisted_ips = {
+ net::IPAddress::IPv4Localhost(), net::IPAddress(192, 168, 0, 1)};
+ std::vector allowed_origins;
+
+ // Request from whitelisted IP -> Allowed.
+ net::HttpServerRequestInfo request;
+ request.peer = net::IPEndPoint(net::IPAddress(192, 168, 0, 1), 12345);
+ EXPECT_TRUE(internal::RequestIsSafeToServe(request, /*allow_remote=*/true,
+ whitelisted_ips, allowed_origins));
+
+ // Request from non-whitelisted IP -> Rejected.
+ request.peer = net::IPEndPoint(net::IPAddress(192, 168, 0, 2), 12345);
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+}
+
+TEST(HttpServerTest, RequestIsSafeToServe_AllowRemote_OriginValidation) {
+ net::HttpServerRequestInfo request;
+ request.peer = net::IPEndPoint(net::IPAddress(192, 168, 0, 1), 12345);
+ request.headers["host"] = "localhost:9515";
+
+ // 1. allowed_origins is empty, whitelisted_ips is empty (allow all remote).
+ {
+ std::vector whitelisted_ips;
+ std::vector allowed_origins;
+
+ // Local origin -> Allowed.
+ request.headers["origin"] = "http://localhost:8000";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Non-local origin -> Allowed (default when no origin list and no IP list).
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+ }
+
+ // 2. allowed_origins is empty, whitelisted_ips is NOT empty.
+ {
+ std::vector whitelisted_ips = {
+ net::IPAddress::IPv4Localhost(), net::IPAddress(192, 168, 0, 1)};
+ std::vector allowed_origins;
+
+ // Local origin -> Allowed.
+ request.headers["origin"] = "http://localhost:8000";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Non-local origin -> Rejected (since allowed_origins is empty but
+ // whitelisted_ips is not).
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+ }
+
+ // 3. allowed_origins is NOT empty, whitelisted_ips is empty (e.g.
+ // --allowed-origins=ci.example.com --allowed-ips=).
+ {
+ std::vector whitelisted_ips;
+ std::vector allowed_origins = {"ci.example.com"};
+
+ // Local origin -> Allowed.
+ request.headers["origin"] = "http://localhost:8000";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Allowlisted origin -> Allowed.
+ request.headers["origin"] = "http://ci.example.com";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Allowlisted origin with different scheme -> Allowed.
+ request.headers["origin"] = "https://ci.example.com";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Non-allowlisted origin -> Rejected.
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+ }
+
+ // 4. allowed_origins contains URL-style origin, whitelisted_ips is empty.
+ {
+ std::vector whitelisted_ips;
+ std::vector allowed_origins = {"http://ci.example.com"};
+
+ // Allowlisted origin -> Allowed.
+ request.headers["origin"] = "http://ci.example.com";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+
+ // Non-allowlisted origin -> Rejected.
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_FALSE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+ }
+
+ // 5. allowed_origins contains wildcard "*", whitelisted_ips is empty.
+ {
+ std::vector whitelisted_ips;
+ std::vector allowed_origins = {"*"};
+
+ // Any non-local origin -> Allowed.
+ request.headers["origin"] = "http://evil.com";
+ EXPECT_TRUE(internal::RequestIsSafeToServe(
+ request, /*allow_remote=*/true, whitelisted_ips, allowed_origins));
+ }
+}
+
+TEST(HttpServerTest, HostIsSafeToServe_HostValidation) {
+ std::vector whitelisted_ips;
+ std::vector allowed_origins = {"ci.example.com"};
+
+ // Safe remote host in allowed_origins -> Allowed.
+ EXPECT_TRUE(internal::HostIsSafeToServe(GURL("http://ci.example.com"),
+ "ci.example.com", whitelisted_ips,
+ allowed_origins));
+
+ // Host in allowed_origins (URL format) -> Allowed.
+ std::vector allowed_origins_url = {"http://ci.example.com"};
+ EXPECT_TRUE(internal::HostIsSafeToServe(GURL("http://ci.example.com"),
+ "ci.example.com", whitelisted_ips,
+ allowed_origins_url));
+
+ // Unsafe remote host -> Rejected.
+ EXPECT_FALSE(internal::HostIsSafeToServe(GURL("http://evil.com"), "evil.com",
+ whitelisted_ips, allowed_origins));
+}
diff -Nru chromium-150.0.7871.100/chromeos/CHROMEOS_LKGM chromium-150.0.7871.114/chromeos/CHROMEOS_LKGM
--- chromium-150.0.7871.100/chromeos/CHROMEOS_LKGM 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/CHROMEOS_LKGM 2026-07-07 17:43:50.000000000 +0000
@@ -1 +1 @@
-16700.25.0
\ No newline at end of file
+16700.38.0
\ No newline at end of file
diff -Nru chromium-150.0.7871.100/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.cc chromium-150.0.7871.114/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.cc
--- chromium-150.0.7871.100/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.cc 2026-07-07 17:43:50.000000000 +0000
@@ -194,11 +194,10 @@
widget_, GetAnchorRect(),
base::BindRepeating(&ResizeToggleMenu::ApplyResizeCompatMode,
base::Unretained(this)));
- bubble_widget_ = views::BubbleDialogDelegate::CreateBubble(
- bubble_delegate_.get(),
- base::BindOnce(&ResizeToggleMenu::OnBubbleWidgetClosing,
- weak_ptr_factory_.GetWeakPtr()));
- widget_observation_.Observe(widget_.get());
+ bubble_widget_ =
+ views::BubbleDialogDelegate::CreateBubble(bubble_delegate_.get());
+ widget_observations_.AddObservation(widget_.get());
+ widget_observations_.AddObservation(bubble_widget_.get());
OverlayDialog::Show(widget_->GetNativeWindow(),
base::BindOnce(&ResizeToggleMenu::CloseBubble,
weak_ptr_factory_.GetWeakPtr()),
@@ -210,16 +209,13 @@
CloseBubble();
}
-void ResizeToggleMenu::OnBubbleWidgetClosing(
- views::Widget::ClosedReason reason) {
- if (on_bubble_widget_closing_callback_) {
+void ResizeToggleMenu::OnWidgetClosing(views::Widget* widget) {
+ if (widget == bubble_widget_.get() && on_bubble_widget_closing_callback_) {
std::move(on_bubble_widget_closing_callback_).Run();
}
- bubble_widget_.reset();
-
OverlayDialog::CloseIfAny(widget_->GetNativeWindow());
- widget_observation_.Reset();
+ widget_observations_.RemoveAllObservations();
widget_ = nullptr;
}
@@ -361,7 +357,7 @@
}
bool ResizeToggleMenu::IsBubbleShown() const {
- return bubble_widget_ && !bubble_widget_->IsClosed();
+ return bubble_delegate_ && bubble_delegate_->GetWidget();
}
void ResizeToggleMenu::CloseBubble() {
diff -Nru chromium-150.0.7871.100/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.h chromium-150.0.7871.114/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.h
--- chromium-150.0.7871.100/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/ash/experiences/arc/compat_mode/resize_toggle_menu.h 2026-07-07 17:43:50.000000000 +0000
@@ -77,6 +77,7 @@
~ResizeToggleMenu() override;
// views::WidgetObserver:
+ void OnWidgetClosing(views::Widget* widget) override;
void OnWidgetBoundsChanged(views::Widget* widget,
const gfx::Rect& new_bounds) override;
@@ -88,13 +89,12 @@
bool IsBubbleShown() const;
+ protected:
+ virtual void UpdateSelectedButton();
+
private:
friend class ResizeToggleMenuTest;
- void OnBubbleWidgetClosing(views::Widget::ClosedReason reason);
-
- void UpdateSelectedButton();
-
void ApplyResizeCompatMode(ash::ResizeCompatMode mode);
gfx::Rect GetAnchorRect() const;
@@ -112,8 +112,8 @@
raw_ptr pref_delegate_;
- base::ScopedObservation
- widget_observation_{this};
+ base::ScopedMultiSourceObservation
+ widget_observations_{this};
base::ScopedObservation
window_observation_{this};
diff -Nru chromium-150.0.7871.100/chromeos/profiles/arm.afdo.newest.txt chromium-150.0.7871.114/chromeos/profiles/arm.afdo.newest.txt
--- chromium-150.0.7871.100/chromeos/profiles/arm.afdo.newest.txt 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/profiles/arm.afdo.newest.txt 2026-07-07 17:43:50.000000000 +0000
@@ -1 +1 @@
-chromeos-chrome-arm-none-150-7871.11-1781490276-benchmark-150.0.7871.39-r1-redacted.afdo.xz
+chromeos-chrome-arm-none-150-7871.57-1783303824-benchmark-150.0.7871.96-r1-redacted.afdo.xz
diff -Nru chromium-150.0.7871.100/chromeos/profiles/atom.afdo.newest.txt chromium-150.0.7871.114/chromeos/profiles/atom.afdo.newest.txt
--- chromium-150.0.7871.100/chromeos/profiles/atom.afdo.newest.txt 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/profiles/atom.afdo.newest.txt 2026-07-07 17:43:50.000000000 +0000
@@ -1 +1 @@
-chromeos-chrome-amd64-atom-150-7871.11-1781493795-benchmark-150.0.7871.38-r1-redacted.afdo.xz
+chromeos-chrome-amd64-atom-150-7871.57-1783314180-benchmark-150.0.7871.96-r1-redacted.afdo.xz
diff -Nru chromium-150.0.7871.100/chromeos/profiles/bigcore.afdo.newest.txt chromium-150.0.7871.114/chromeos/profiles/bigcore.afdo.newest.txt
--- chromium-150.0.7871.100/chromeos/profiles/bigcore.afdo.newest.txt 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/profiles/bigcore.afdo.newest.txt 2026-07-07 17:43:50.000000000 +0000
@@ -1 +1 @@
-chromeos-chrome-amd64-bigcore-150-7871.11-1781488583-benchmark-150.0.7871.38-r1-redacted.afdo.xz
+chromeos-chrome-amd64-bigcore-150-7871.57-1783310501-benchmark-150.0.7871.96-r1-redacted.afdo.xz
diff -Nru chromium-150.0.7871.100/chromeos/strings/chromeos_strings_ar.xtb chromium-150.0.7871.114/chromeos/strings/chromeos_strings_ar.xtb
--- chromium-150.0.7871.100/chromeos/strings/chromeos_strings_ar.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/strings/chromeos_strings_ar.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -849,7 +849,7 @@
وصول أحد الوالدين
ليس في "أدوات الدراسة"
ألوان باستيل
-تحديث
+تعديل
معلومات ذات صلة باختيارك
الاقتراحات
قائمة اللغات المتاحة
diff -Nru chromium-150.0.7871.100/chromeos/strings/chromeos_strings_fa.xtb chromium-150.0.7871.114/chromeos/strings/chromeos_strings_fa.xtb
--- chromium-150.0.7871.100/chromeos/strings/chromeos_strings_fa.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/strings/chromeos_strings_fa.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -612,7 +612,7 @@
وقتی این اجازه را میدهید، «ضبطصوت» صداهای ضبطشده را برای موارد زیر تجزیهوتحلیل میکند:
صفحه اصلی
★ ( مرور)
-متصل نیست
+متصل نشده
نام فایل
تنظیم بلندی صدا
جستجوی فایلهای ضبطشده
diff -Nru chromium-150.0.7871.100/chromeos/strings/chromeos_strings_id.xtb chromium-150.0.7871.114/chromeos/strings/chromeos_strings_id.xtb
--- chromium-150.0.7871.100/chromeos/strings/chromeos_strings_id.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/strings/chromeos_strings_id.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -849,7 +849,7 @@
Akses orang tua
Tidak ada di Alat Kelas
warna pastel
-Update
+Perbarui
Info terkait pilihan Anda
Saran
Daftar bahasa yang tersedia
diff -Nru chromium-150.0.7871.100/chromeos/strings/chromeos_strings_or.xtb chromium-150.0.7871.114/chromeos/strings/chromeos_strings_or.xtb
--- chromium-150.0.7871.100/chromeos/strings/chromeos_strings_or.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/strings/chromeos_strings_or.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -450,7 +450,7 @@
AI ପ୍ରମ୍ପ୍ଟକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ
"ଏକ ଧନ୍ୟବାଦ ନୋଟ ଲେଖ" ପରି ଏକ ପ୍ରମ୍ପ୍ଟ ଲେଖନ୍ତୁ
ଟ୍ରପିକାଲ ଆଇଲାଣ୍ଡ
-ଗାଢ଼ା
+ଡାର୍କ
ପରେ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ
ଆପଣଙ୍କ ୟୁଜରନେମ ଏବଂ ପାସୱାର୍ଡ ଲେଖନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କର QR କୋଡ ସ୍କାନ କରନ୍ତୁ
ଚେରି ଫୁଲର ପତ୍ର ଝଡ଼ୁଥିବା ସହ ସମୁଦ୍ର ସମ୍ମୁଖରେ ଆନିମେ ପାଥ
diff -Nru chromium-150.0.7871.100/chromeos/strings/chromeos_strings_vi.xtb chromium-150.0.7871.114/chromeos/strings/chromeos_strings_vi.xtb
--- chromium-150.0.7871.100/chromeos/strings/chromeos_strings_vi.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/chromeos/strings/chromeos_strings_vi.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -689,7 +689,7 @@
Tạo chế độ điều khiển khác
lãng mạn
Ảnh hồ sơ
-Lưu thông tin chi tiết của quá trình kiểm tra
+Lưu chi tiết kiểm tra
Thử nghiệm
Đang tải mô hình tạo tiêu đề và nội dung tóm tắt xuống
WPA2WPA3
diff -Nru chromium-150.0.7871.100/components/autofill/core/browser/payments/virtual_card_enrollment_manager.cc chromium-150.0.7871.114/components/autofill/core/browser/payments/virtual_card_enrollment_manager.cc
--- chromium-150.0.7871.100/components/autofill/core/browser/payments/virtual_card_enrollment_manager.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/autofill/core/browser/payments/virtual_card_enrollment_manager.cc 2026-07-07 17:43:50.000000000 +0000
@@ -347,17 +347,27 @@
state_.virtual_card_enrollment_fields.credit_card.instrument_id()));
}
+ base::WeakPtr weak_this =
+ weak_ptr_factory_.GetWeakPtr();
+ VirtualCardEnrollmentSource source =
+ state_.virtual_card_enrollment_fields.virtual_card_enrollment_source;
+
// Relay the response to the server card editor page. This also destroys the
- // payments delegate if the editor was already closed.
+ // payments delegate if the editor was already closed. Running this callback
+ // may synchronously delete `this`, so no further accesses to `this` are
+ // allowed.
if (virtual_card_enrollment_update_response_callback_.has_value()) {
std::move(virtual_card_enrollment_update_response_callback_.value())
.Run(result);
}
LogUpdateVirtualCardEnrollmentRequestResult(
- state_.virtual_card_enrollment_fields.virtual_card_enrollment_source,
- type, result == PaymentsRpcResult::kSuccess);
- Reset();
+ source, type, result == PaymentsRpcResult::kSuccess);
+
+ // Guard `Reset()` to prevent UAF if the object was deleted synchronously.
+ if (weak_this) {
+ Reset();
+ }
}
void VirtualCardEnrollmentManager::OnVirtualCardEnrollCompleted(
diff -Nru chromium-150.0.7871.100/components/autofill/core/browser/payments/virtual_card_enrollment_manager_unittest.cc chromium-150.0.7871.114/components/autofill/core/browser/payments/virtual_card_enrollment_manager_unittest.cc
--- chromium-150.0.7871.100/components/autofill/core/browser/payments/virtual_card_enrollment_manager_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/autofill/core/browser/payments/virtual_card_enrollment_manager_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -8,6 +8,7 @@
#include "base/functional/callback.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
+#include "base/test/bind.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/mock_callback.h"
#include "base/test/scoped_feature_list.h"
@@ -404,6 +405,47 @@
/*sample=*/false, 1);
}
+// Ensures that if the manager is synchronously destroyed during the enrollment
+// response callback, it does not cause a Use-After-Free.
+TEST_F(VirtualCardEnrollmentManagerTest, Enroll_JniCleanupDuringCallbackNoUaf) {
+ base::HistogramTester histogram_tester;
+
+ // Setup state for Enroll.
+ VirtualCardEnrollmentProcessState* state =
+ virtual_card_enrollment_manager_->GetVirtualCardEnrollmentProcessState();
+ state->vcn_context_token = kTestVcnContextToken;
+ state->virtual_card_enrollment_fields.credit_card = *card_;
+ state->virtual_card_enrollment_fields.virtual_card_enrollment_source =
+ VirtualCardEnrollmentSource::kDownstream;
+
+ payments_data_manager().SetPaymentsCustomerData(
+ std::make_unique(/*customer_id=*/"123456"));
+
+ // Mock the network call to run the callback synchronously.
+ EXPECT_CALL(multiple_request_payments_network_interface(),
+ UpdateVirtualCardEnrollment)
+ .WillOnce(
+ [&](const payments::UpdateVirtualCardEnrollmentRequestDetails& req,
+ base::OnceCallback
+ callback) {
+ std::move(callback).Run(
+ payments::PaymentsAutofillClient::PaymentsRpcResult::kSuccess);
+ return payments::RequestId("11223344");
+ });
+
+ // Call Enroll with a callback that destroys the manager.
+ virtual_card_enrollment_manager_->Enroll(base::BindLambdaForTesting(
+ [&](payments::PaymentsAutofillClient::PaymentsRpcResult result) {
+ virtual_card_enrollment_manager_.reset();
+ }));
+
+ // Verify that the metrics were logged.
+ histogram_tester.ExpectUniqueSample(
+ "Autofill.VirtualCard.Enroll.Result.Downstream",
+ /*sample=*/true, 1);
+}
+
#if !BUILDFLAG(IS_IOS)
TEST_F(VirtualCardEnrollmentManagerTest, StrikeDatabase_BubbleAccepted) {
base::HistogramTester histogram_tester;
diff -Nru chromium-150.0.7871.100/components/browser_apis/ui_controllers/toolbar/toolbar_ui_api_data_model.mojom chromium-150.0.7871.114/components/browser_apis/ui_controllers/toolbar/toolbar_ui_api_data_model.mojom
--- chromium-150.0.7871.100/components/browser_apis/ui_controllers/toolbar/toolbar_ui_api_data_model.mojom 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_apis/ui_controllers/toolbar/toolbar_ui_api_data_model.mojom 2026-07-07 17:43:50.000000000 +0000
@@ -532,4 +532,7 @@
// This is incremented every time a settings change may change the layout
// constants.
int32 layout_constants_version = 0;
+
+ // This is true if we're in touch mode.
+ bool touch_ui = false;
};
diff -Nru chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb
--- chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_my.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -205,7 +205,7 @@
အလိုအလျောက် ပိတ်ထားသည်
အပြင်အဆင် စုစည်းမှု
ဝဘ်ဆိုက်များက အသံ ဖွင့်နိုင်သည်
-‘အဆင့်မြင့်ကာကွယ်ရေး’ ကို ဖွင့်ထားသည်
+‘အဆင့်မြင့်အကာအကွယ်’ ကို ဖွင့်ထားသည်
သတ်မှတ်ဝဘ်ဆိုက်အတွက် ပြင်ပအဖွဲ့အစည်းသို့ လက်မှတ်ထိုးဝင်ခြင်းကို ခွင့်ပြုနိုင်သည်။
အစက် ၃ စက်မီနူးမှတစ်ဆင့် ပင်မစာမျက်နှာကို နောက်မှတည်းဖြတ်နိုင်သည်။
ယခင်ဆလိုက်
@@ -688,7 +688,7 @@
ဖျောက်ထားသည်
ဆိုက် အချက်အလက်များကို ကြည့်ရန်
အတည်ပြုရန်
-Android ဆက်တင်များတွင် ‘အဆင့်မြင့်ကာကွယ်ရေး’ ကို ဖွင့်ထားသရွေ့ ဤဆက်တင် ပွင့်နေပါမည်။
+Android ဆက်တင်များတွင် ‘အဆင့်မြင့်အကာအကွယ်’ ကို ဖွင့်ထားသရွေ့ ဤဆက်တင် ပွင့်နေပါမည်။
ဝဘ်ဆိုက်များအား နှစ်ခုထပ်၍ကြည့်ခြင်းသို့ အလိုအလျောက် ဝင်ခွင့်မပြုပါ
ပါဝင်သောအကြောင်းအရာ
ဖန်သားပြင်အပြည့်မှ ထွက်ရန် ဖန်သားပြင်၏ဘေးဘက်မှ ဖိဆွဲပါ။
@@ -719,7 +719,7 @@
နောက်ပြန်ရစ်ရန်
က သင့်တည်နေရာကို သုံးနိုင်ရန် Android ဆက်တင်များ တွင်လည်း တည်နေရာကို ဖွင့်ပါ။
စက်ပစ္စည်းခွင့်ပြုချက်ကို ရုပ်သိမ်းပါ
-Android ဆက်တင်များတွင် ‘အဆင့်မြင့်ကာကွယ်ရေး’ ဖွင့်ထားသဖြင့် ဤဆက်တင်ကို ပိတ်ထားသည်။
+Android ဆက်တင်များတွင် ‘အဆင့်မြင့်အကာအကွယ်’ ဖွင့်ထားသဖြင့် ဤဆက်တင်ကို ပိတ်ထားသည်။
တဘ်စာမျက်နှာအသစ် အသွင်အပြင်ဆိုင်ရာ အောက်ခြေအပိုဆောင်း စာမျက်နှာကို မြင်ကွင်းတစ်ဝက် ဖွင့်ထားသည်
မှတ်တမ်းဖိုင်ပုံနှိပ်ထုတ်ရန် သို့မဟုတ် သိုလှောင်ခန်းကိရိယာတွင် သိမ်းရန်ကဲ့သို့ ဝန်ဆောင်မှုများအတွက် USB ကိရိယာများသို့ ဝဘ်ဆိုက်များက ချိတ်ဆက်လေ့ရှိသည်
‘’ သည် ဟောင်းနေသည်။ အက်ပ်ကို ပြန်လည်ထည့်သွင်းပါ။
diff -Nru chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb
--- chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_sk.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -303,7 +303,7 @@
Weby môžu žiadať o používanie informácií, ktoré o vás uložili
Sťahovanie dokončené
Weby zvyčajne zobrazujú reklamy, aby mohli poskytovať obsah či služby bez peňažného poplatku. Niektoré weby sú však známe tým, že zobrazujú obťažujúce alebo zavádzajúce reklamy.
-Kopírovať odkaz
+Skopírovať odkaz
/ ?
môže pri prehliadaní používať vaše informácie
Táto stránka
diff -Nru chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb
--- chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_vi.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -210,7 +210,7 @@
Vào trình đơn có biểu tượng 3 dấu chấm để chỉnh sửa trang chủ của bạn sau.
Trang trình bày trước
Đặt làm mặc định
-Xóa tất cả
+Xoá tất cả
Không cho phép các trang web chỉnh sửa tệp hoặc thư mục trên thiết bị
Trình phát video
Hiển thị thông tin
diff -Nru chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb
--- chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_zh-CN.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -708,7 +708,7 @@
别再询问
您可以放大或缩小所访问网站的内容
允许特定网站进行后台同步。
-由贵组织管理
+由您的组织管理
有一个网站正在使用您的摄像头和麦克风
此网站会展示侵扰性或误导性广告
点按即可返回到网站
diff -Nru chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
--- chromium-150.0.7871.100/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -309,7 +309,7 @@
關於本頁
標題
可使用麥克風
-概略
+大概
下一首曲目
網站通常會讀取剪貼簿,以提供保留複製文字的格式等功能
Android 裝置的 RAM 不足,因此不允許將特定網站設為例外。
diff -Nru chromium-150.0.7871.100/components/contextual_search/contextual_search_service.cc chromium-150.0.7871.114/components/contextual_search/contextual_search_service.cc
--- chromium-150.0.7871.100/components/contextual_search/contextual_search_service.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_search/contextual_search_service.cc 2026-07-07 17:43:50.000000000 +0000
@@ -66,9 +66,8 @@
registry->RegisterIntegerPref(
kSearchContentSharingSettings,
static_cast(kSearchContentSharingAllowedDefault));
- registry->RegisterBooleanPref(
- kDriveDisclaimerAccepted, false,
- user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+ registry->RegisterIntegerPref(
+ kDriveConsentState, 0, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
}
// static
diff -Nru chromium-150.0.7871.100/components/contextual_search/input_state_model.cc chromium-150.0.7871.114/components/contextual_search/input_state_model.cc
--- chromium-150.0.7871.100/components/contextual_search/input_state_model.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_search/input_state_model.cc 2026-07-07 17:43:50.000000000 +0000
@@ -225,15 +225,10 @@
for (const auto& model_config : mutable_config.model_configs()) {
state_.allowed_models.push_back(model_config.model());
}
- state_.allowed_input_types.reserve(
- mutable_config.input_type_configs().size());
+ configured_input_types_.reserve(mutable_config.input_type_configs().size());
for (const auto& input_type_config : mutable_config.input_type_configs()) {
if (input_type_config.has_input_type()) {
- if (input_type_config.input_type() == omnibox::INPUT_TYPE_DRIVE &&
- !IsDriveSupported()) {
- continue;
- }
- state_.allowed_input_types.push_back(input_type_config.input_type());
+ configured_input_types_.push_back(input_type_config.input_type());
}
}
state_.tool_configs.reserve(mutable_config.tool_configs_size());
@@ -267,21 +262,7 @@
}
}
- // TODO(crbug.com/479254789): Once `INPUT_TYPE_BROWSER_TAB` is available from
- // server, remove this check.
- auto contains = [&](omnibox::InputType type) {
- return std::find(state_.allowed_input_types.begin(),
- state_.allowed_input_types.end(),
- type) != state_.allowed_input_types.end();
- };
- // Only add browser tab if it does not already exist and both lens and image
- // types are allowed.
- if (!contains(omnibox::INPUT_TYPE_BROWSER_TAB) &&
- contains(omnibox::INPUT_TYPE_LENS_IMAGE) &&
- contains(omnibox::INPUT_TYPE_LENS_FILE)) {
- state_.allowed_input_types.push_back(omnibox::INPUT_TYPE_BROWSER_TAB);
- }
state_.active_tool = omnibox::ToolMode::TOOL_MODE_UNSPECIFIED;
state_.is_canvas_query_submitted = false;
@@ -319,7 +300,10 @@
drive_consent_state_(new_input_state_model.drive_consent_state_) {
state_ = new_input_state_model.state_;
rule_set_ = new_input_state_model.rule_set_;
- pref_service_ = new_input_state_model.pref_service_;
+ configured_input_types_ = new_input_state_model.configured_input_types_;
+ if (new_input_state_model.pref_service_) {
+ SetPrefService(new_input_state_model.pref_service_);
+ }
}
InputStateModel::~InputStateModel() = default;
@@ -361,29 +345,33 @@
notifySubscribers();
}
-void InputStateModel::SetPrefService(const PrefService* pref_service) {
+void InputStateModel::SetPrefService(PrefService* pref_service) {
pref_service_ = pref_service;
- updateDisabledState();
+ pref_change_registrar_.Reset();
+ if (pref_service_) {
+ pref_change_registrar_.Init(pref_service_);
+ pref_change_registrar_.Add(
+ contextual_search::kDriveConsentState,
+ base::BindRepeating(&InputStateModel::OnPrefChanged,
+ base::Unretained(this)));
+ pref_change_registrar_.Add(
+ contextual_search::kSearchContentSharingSettings,
+ base::BindRepeating(&InputStateModel::OnPrefChanged,
+ base::Unretained(this)));
+ OnPrefChanged();
+ } else {
+ updateDisabledState();
+ }
}
-void InputStateModel::SetDriveConsentState(DriveConsentState state) {
- if (drive_consent_state_ == state) {
+void InputStateModel::OnPrefChanged() {
+ if (!pref_service_) {
return;
}
- drive_consent_state_ = state;
+ int pref_value =
+ pref_service_->GetInteger(contextual_search::kDriveConsentState);
+ drive_consent_state_ = static_cast(pref_value);
- auto& allowed_types = state_.allowed_input_types;
- auto it = std::find(allowed_types.begin(), allowed_types.end(),
- omnibox::INPUT_TYPE_DRIVE);
- if (state == DriveConsentState::kConsent) {
- if (it == allowed_types.end() && IsDriveSupported()) {
- state_.allowed_input_types.push_back(omnibox::INPUT_TYPE_DRIVE);
- }
- } else {
- if (it != allowed_types.end()) {
- state_.allowed_input_types.erase(it);
- }
- }
updateDisabledState();
notifySubscribers();
}
@@ -608,7 +596,6 @@
void InputStateModel::UpdateDisabledInputTypes() {
// Disable an input type if:
- // - Enterprise policy disallows content sharing.
// - Input type limit is reached.
// - Total input limit is reached.
// - Incompatible with the active model.
@@ -616,15 +603,6 @@
state_.disabled_input_types.clear();
state_.disabled_input_types.reserve(state_.allowed_input_types.size());
- if (!IsSearchContentSharingEnabled()) {
- std::erase_if(state_.allowed_input_types, [](auto input_type) {
- return input_type == omnibox::InputType::INPUT_TYPE_LENS_IMAGE ||
- input_type == omnibox::InputType::INPUT_TYPE_LENS_FILE ||
- input_type == omnibox::InputType::INPUT_TYPE_BROWSER_TAB ||
- input_type == omnibox::InputType::INPUT_TYPE_DRIVE;
- });
- }
-
const auto current_inputs = GetCurrentInputTypes(session_handle_.get());
// Check max inputs reached.
@@ -680,11 +658,44 @@
}
void InputStateModel::updateDisabledState() {
+ RebuildAllowedInputTypes();
UpdateDisabledTools();
UpdateDisabledModels();
UpdateDisabledInputTypes();
}
+void InputStateModel::RebuildAllowedInputTypes() {
+ state_.allowed_input_types.clear();
+ bool sharing_enabled = IsSearchContentSharingEnabled();
+ for (auto type : configured_input_types_) {
+ if (!sharing_enabled) {
+ if (type == omnibox::InputType::INPUT_TYPE_LENS_IMAGE ||
+ type == omnibox::InputType::INPUT_TYPE_LENS_FILE ||
+ type == omnibox::InputType::INPUT_TYPE_BROWSER_TAB ||
+ type == omnibox::InputType::INPUT_TYPE_DRIVE) {
+ continue;
+ }
+ }
+ if (type == omnibox::InputType::INPUT_TYPE_DRIVE && !IsDriveSupported()) {
+ continue;
+ }
+ state_.allowed_input_types.push_back(type);
+ }
+
+ auto contains = [&](omnibox::InputType type) {
+ return std::find(state_.allowed_input_types.begin(),
+ state_.allowed_input_types.end(),
+ type) != state_.allowed_input_types.end();
+ };
+
+ // Fallback for browser tab if not already present and lens is allowed.
+ if (!contains(omnibox::INPUT_TYPE_BROWSER_TAB) &&
+ contains(omnibox::INPUT_TYPE_LENS_IMAGE) &&
+ contains(omnibox::INPUT_TYPE_LENS_FILE) && sharing_enabled) {
+ state_.allowed_input_types.push_back(omnibox::INPUT_TYPE_BROWSER_TAB);
+ }
+}
+
std::map InputStateModel::GetAdditionalQueryParams() {
std::map additional_params;
if (state_.active_tool != omnibox::ToolMode::TOOL_MODE_UNSPECIFIED) {
diff -Nru chromium-150.0.7871.100/components/contextual_search/input_state_model.h chromium-150.0.7871.114/components/contextual_search/input_state_model.h
--- chromium-150.0.7871.100/components/contextual_search/input_state_model.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_search/input_state_model.h 2026-07-07 17:43:50.000000000 +0000
@@ -13,6 +13,7 @@
#include "base/memory/raw_ref.h"
#include "components/contextual_search/contextual_search_session_handle.h"
#include "components/omnibox/common/input_state.h"
+#include "components/prefs/pref_change_registrar.h"
#include "third_party/omnibox_proto/input_type.pb.h"
#include "third_party/omnibox_proto/model_mode.pb.h"
#include "third_party/omnibox_proto/searchbox_config.pb.h"
@@ -28,6 +29,8 @@
using omnibox::SearchboxConfig;
using omnibox::ToolMode;
+// Enum values are persisted to preferences (as integers). Do not reorder,
+// delete, or reuse values.
enum class DriveConsentState {
kNotReady = 0,
kRestricted = 1,
@@ -85,8 +88,6 @@
void SetPermanentlyDisabledInputTypes(
const std::vector& input_types);
- // Sets the checked Drive consent state.
- void SetDriveConsentState(DriveConsentState state);
// Gets additional query params for the current state.
std::map GetAdditionalQueryParams();
@@ -101,9 +102,16 @@
// Methods for testing.
void set_state_for_testing(const InputState& state) { state_ = state; }
const InputState& get_state_for_testing() { return state_; }
+ bool browser_identity_matches_aim_identity_for_testing() const {
+ return browser_identity_matches_aim_identity_;
+ }
+
+ DriveConsentState drive_consent_state_for_testing() const {
+ return drive_consent_state_;
+ }
// Gets the `PrefService`.
- void SetPrefService(const PrefService* pref_service);
+ void SetPrefService(PrefService* pref_service);
private:
// Notify all subscribers of the current `state_`.
@@ -131,6 +139,14 @@
// Helper to check if the Drive input type is supported.
bool IsDriveSupported() const;
+ // Invoked as a callback by the PrefChangeRegistrar when the observed
+ // user preferences change. Re-reads the current preference values, updates
+ // the model's internal allowed input state, and notifies all subscribers.
+ void OnPrefChanged();
+
+ // Rebuilds allowed input types based on config, sharing, and drive status.
+ void RebuildAllowedInputTypes();
+
// Returns the rule for a given `model`.
const omnibox::ModelRule* GetModelRule(ModelMode model) const;
@@ -143,11 +159,15 @@
session_handle_;
base::RepeatingCallbackList subscribers_;
- raw_ptr pref_service_ = nullptr;
+ raw_ptr pref_service_ = nullptr;
+ PrefChangeRegistrar pref_change_registrar_;
const bool is_off_the_record_;
const bool browser_identity_matches_aim_identity_;
GURL current_url_;
+ // Configured input types from the searchbox configuration.
+ std::vector configured_input_types_;
+
// Stores tools that are permanently disabled by an external trigger and must
// persist through state updates. Persists after Initialize() is called.
std::vector permanently_disabled_tools_;
diff -Nru chromium-150.0.7871.100/components/contextual_search/input_state_model_unittest.cc chromium-150.0.7871.114/components/contextual_search/input_state_model_unittest.cc
--- chromium-150.0.7871.100/components/contextual_search/input_state_model_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_search/input_state_model_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -42,6 +42,8 @@
contextual_search::kSearchContentSharingSettings,
static_cast(
contextual_search::SearchContentSharingSettingsValue::kEnabled));
+ pref_service_.registry()->RegisterIntegerPref(
+ contextual_search::kDriveConsentState, 0);
input_state_model_ = std::make_unique(
session_handle_, config_, active_url_, /*is_off_the_record=*/false,
@@ -50,6 +52,10 @@
}
protected:
+ DriveConsentState GetDriveConsentState(const InputStateModel* model) const {
+ return model->drive_consent_state_for_testing();
+ }
+
TestingPrefServiceSimple pref_service_;
std::unique_ptr input_state_model_;
MockContextualSearchSessionHandle session_handle_;
@@ -77,7 +83,9 @@
session_handle_, config, active_url_, /*is_off_the_record=*/false,
/*browser_identity_matches_aim_identity=*/true);
input_state_model_->SetPrefService(&pref_service_);
- input_state_model_->SetDriveConsentState(DriveConsentState::kConsent);
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kConsent));
const auto& state = input_state_model_->get_state_for_testing();
EXPECT_THAT(state.allowed_input_types,
@@ -723,24 +731,39 @@
}
TEST_F(InputStateModelCompatibilityTest, PolicyDisablesInputs) {
- // 1. Initial Setup: Explicitly allow restricted inputs.
- state_.allowed_input_types = {
- omnibox::InputType::INPUT_TYPE_LENS_IMAGE,
- omnibox::InputType::INPUT_TYPE_LENS_FILE,
- omnibox::InputType::INPUT_TYPE_BROWSER_TAB,
- omnibox::InputType::INPUT_TYPE_DRIVE,
- };
+ base::test::ScopedFeatureList feature_list;
+ feature_list.InitWithFeatures({omnibox::kComposeboxDriveContextMenuOption},
+ {});
+
+ // 1. Initial Setup: Create custom config containing Drive and enable content
+ // sharing & Drive consent.
+ omnibox::SearchboxConfig custom_config = config_;
+ custom_config.add_input_type_configs()->set_input_type(
+ omnibox::InputType::INPUT_TYPE_DRIVE);
+
+ auto local_model = std::make_unique(
+ session_handle_, custom_config, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+ local_model->SetPrefService(&pref_service_);
- // Enable content sharing policy.
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kConsent));
pref_service_.SetInteger(
contextual_search::kSearchContentSharingSettings,
static_cast(
contextual_search::SearchContentSharingSettingsValue::kEnabled));
- input_state_model_->set_state_for_testing(state_);
- input_state_model_->setActiveModel(
- omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
- auto new_state = input_state_model_->get_state_for_testing();
+ InputState local_state = state_;
+ local_state.allowed_input_types = {
+ omnibox::InputType::INPUT_TYPE_LENS_IMAGE,
+ omnibox::InputType::INPUT_TYPE_LENS_FILE,
+ omnibox::InputType::INPUT_TYPE_BROWSER_TAB,
+ omnibox::InputType::INPUT_TYPE_DRIVE,
+ };
+ local_model->set_state_for_testing(local_state);
+ local_model->setActiveModel(omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
+ auto new_state = local_model->get_state_for_testing();
// Verify: Inputs remain allowed and are not disabled.
EXPECT_FALSE(new_state.allowed_input_types.empty());
@@ -753,13 +776,10 @@
contextual_search::SearchContentSharingSettingsValue::kDisabled));
// Trigger update.
- input_state_model_->setActiveModel(
- omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
- new_state = input_state_model_->get_state_for_testing();
+ local_model->setActiveModel(omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
+ new_state = local_model->get_state_for_testing();
// Verify: Restricted inputs are removed from the allowed list entirely.
- // Consequently, the disabled list remains empty as the inputs no longer
- // exist.
EXPECT_TRUE(new_state.allowed_input_types.empty());
EXPECT_TRUE(new_state.disabled_input_types.empty());
@@ -770,18 +790,17 @@
contextual_search::SearchContentSharingSettingsValue::kEnabled));
// Reset the state with the original inputs, as they were erased in step 2.
- state_.allowed_input_types = {
+ local_state.allowed_input_types = {
omnibox::InputType::INPUT_TYPE_LENS_IMAGE,
omnibox::InputType::INPUT_TYPE_LENS_FILE,
omnibox::InputType::INPUT_TYPE_BROWSER_TAB,
omnibox::InputType::INPUT_TYPE_DRIVE,
};
- input_state_model_->set_state_for_testing(state_);
+ local_model->set_state_for_testing(local_state);
// Trigger update.
- input_state_model_->setActiveModel(
- omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
- new_state = input_state_model_->get_state_for_testing();
+ local_model->setActiveModel(omnibox::ModelMode::MODEL_MODE_UNSPECIFIED);
+ new_state = local_model->get_state_for_testing();
// Verify: Inputs are restored and enabled.
EXPECT_THAT(new_state.allowed_input_types,
@@ -1038,6 +1057,8 @@
contextual_search::kSearchContentSharingSettings,
static_cast(
contextual_search::SearchContentSharingSettingsValue::kDisabled));
+ prefs.registry()->RegisterIntegerPref(contextual_search::kDriveConsentState,
+ 0);
omnibox::SearchboxConfig config;
config.add_input_type_configs()->set_input_type(
@@ -1218,31 +1239,151 @@
omnibox::INPUT_TYPE_BROWSER_TAB));
// 2. Set to kConsent, Drive should be allowed.
- input_state_model_->SetDriveConsentState(DriveConsentState::kConsent);
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kConsent));
EXPECT_THAT(input_state_model_->get_state_for_testing().allowed_input_types,
testing::UnorderedElementsAre(
omnibox::INPUT_TYPE_LENS_IMAGE, omnibox::INPUT_TYPE_LENS_FILE,
omnibox::INPUT_TYPE_BROWSER_TAB, omnibox::INPUT_TYPE_DRIVE));
// 3. Set to kNotConsent, Drive should be removed.
- input_state_model_->SetDriveConsentState(DriveConsentState::kNotConsent);
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kNotConsent));
EXPECT_THAT(input_state_model_->get_state_for_testing().allowed_input_types,
testing::UnorderedElementsAre(omnibox::INPUT_TYPE_LENS_IMAGE,
omnibox::INPUT_TYPE_LENS_FILE,
omnibox::INPUT_TYPE_BROWSER_TAB));
// 4. Set back to kConsent, Drive should be allowed again.
- input_state_model_->SetDriveConsentState(DriveConsentState::kConsent);
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kConsent));
EXPECT_THAT(input_state_model_->get_state_for_testing().allowed_input_types,
testing::UnorderedElementsAre(
omnibox::INPUT_TYPE_LENS_IMAGE, omnibox::INPUT_TYPE_LENS_FILE,
omnibox::INPUT_TYPE_BROWSER_TAB, omnibox::INPUT_TYPE_DRIVE));
// 5. Set to kRestricted, Drive should be removed.
- input_state_model_->SetDriveConsentState(DriveConsentState::kRestricted);
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kRestricted));
EXPECT_THAT(input_state_model_->get_state_for_testing().allowed_input_types,
testing::UnorderedElementsAre(omnibox::INPUT_TYPE_LENS_IMAGE,
omnibox::INPUT_TYPE_LENS_FILE,
omnibox::INPUT_TYPE_BROWSER_TAB));
}
+
+TEST_F(InputStateModelTest, SetPrefServiceInitializesConsentState) {
+ // Test Case 1: Initial state is 0 (kNotReady) -> mapped to kNotReady.
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kNotReady));
+ auto model1 = std::make_unique(
+ session_handle_, config_, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+ model1->SetPrefService(&pref_service_);
+ EXPECT_EQ(GetDriveConsentState(model1.get()), DriveConsentState::kNotReady);
+
+ // Test Case 2: State is kConsent -> mapped to kConsent.
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kConsent));
+ auto model2 = std::make_unique(
+ session_handle_, config_, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+ model2->SetPrefService(&pref_service_);
+ EXPECT_EQ(GetDriveConsentState(model2.get()), DriveConsentState::kConsent);
+
+ // Test Case 3: State is kRestricted -> mapped to kRestricted.
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kRestricted));
+ auto model3 = std::make_unique(
+ session_handle_, config_, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+ model3->SetPrefService(&pref_service_);
+ EXPECT_EQ(GetDriveConsentState(model3.get()), DriveConsentState::kRestricted);
+
+ // Test Case 4: State is kNotConsent -> mapped to kNotConsent.
+ pref_service_.SetInteger(contextual_search::kDriveConsentState,
+ static_cast(DriveConsentState::kNotConsent));
+ auto model4 = std::make_unique(
+ session_handle_, config_, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+ model4->SetPrefService(&pref_service_);
+ EXPECT_EQ(GetDriveConsentState(model4.get()), DriveConsentState::kNotConsent);
+}
+
+TEST_F(InputStateModelTest, PrefChangesDynamicallyUpdateInputTypes) {
+ base::test::ScopedFeatureList feature_list;
+ feature_list.InitWithFeatures({omnibox::kComposeboxDriveContextMenuOption},
+ {});
+
+ omnibox::SearchboxConfig config;
+ config.add_input_type_configs()->set_input_type(
+ omnibox::InputType::INPUT_TYPE_LENS_IMAGE);
+ config.add_input_type_configs()->set_input_type(
+ omnibox::InputType::INPUT_TYPE_LENS_FILE);
+ config.add_input_type_configs()->set_input_type(
+ omnibox::InputType::INPUT_TYPE_DRIVE);
+ config.add_input_type_configs()->set_input_type(
+ omnibox::InputType::INPUT_TYPE_BROWSER_TAB);
+
+ auto model = std::make_unique(
+ session_handle_, config, active_url_, /*is_off_the_record=*/false,
+ /*browser_identity_matches_aim_identity=*/true);
+
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kConsent));
+ pref_service_.SetInteger(
+ contextual_search::kSearchContentSharingSettings,
+ static_cast(
+ contextual_search::SearchContentSharingSettingsValue::kEnabled));
+
+ model->SetPrefService(&pref_service_);
+
+ EXPECT_EQ(GetDriveConsentState(model.get()), DriveConsentState::kConsent);
+ EXPECT_THAT(model->get_state_for_testing().allowed_input_types,
+ testing::UnorderedElementsAre(
+ omnibox::INPUT_TYPE_LENS_IMAGE, omnibox::INPUT_TYPE_LENS_FILE,
+ omnibox::INPUT_TYPE_BROWSER_TAB, omnibox::INPUT_TYPE_DRIVE));
+
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kNotConsent));
+
+ EXPECT_EQ(GetDriveConsentState(model.get()), DriveConsentState::kNotConsent);
+ EXPECT_THAT(model->get_state_for_testing().allowed_input_types,
+ testing::UnorderedElementsAre(omnibox::INPUT_TYPE_LENS_IMAGE,
+ omnibox::INPUT_TYPE_LENS_FILE,
+ omnibox::INPUT_TYPE_BROWSER_TAB));
+
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kRestricted));
+
+ EXPECT_EQ(GetDriveConsentState(model.get()), DriveConsentState::kRestricted);
+ EXPECT_THAT(model->get_state_for_testing().allowed_input_types,
+ testing::UnorderedElementsAre(omnibox::INPUT_TYPE_LENS_IMAGE,
+ omnibox::INPUT_TYPE_LENS_FILE,
+ omnibox::INPUT_TYPE_BROWSER_TAB));
+
+ pref_service_.SetInteger(
+ contextual_search::kSearchContentSharingSettings,
+ static_cast(
+ contextual_search::SearchContentSharingSettingsValue::kDisabled));
+
+ EXPECT_TRUE(model->get_state_for_testing().allowed_input_types.empty());
+
+ pref_service_.SetInteger(
+ contextual_search::kDriveConsentState,
+ static_cast(contextual_search::DriveConsentState::kConsent));
+ pref_service_.SetInteger(
+ contextual_search::kSearchContentSharingSettings,
+ static_cast(
+ contextual_search::SearchContentSharingSettingsValue::kEnabled));
+
+ EXPECT_EQ(GetDriveConsentState(model.get()), DriveConsentState::kConsent);
+ EXPECT_THAT(model->get_state_for_testing().allowed_input_types,
+ testing::UnorderedElementsAre(
+ omnibox::INPUT_TYPE_LENS_IMAGE, omnibox::INPUT_TYPE_LENS_FILE,
+ omnibox::INPUT_TYPE_BROWSER_TAB, omnibox::INPUT_TYPE_DRIVE));
+}
+
} // namespace contextual_search
diff -Nru chromium-150.0.7871.100/components/contextual_search/pref_names.h chromium-150.0.7871.114/components/contextual_search/pref_names.h
--- chromium-150.0.7871.100/components/contextual_search/pref_names.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_search/pref_names.h 2026-07-07 17:43:50.000000000 +0000
@@ -20,9 +20,10 @@
inline constexpr char kSearchContentSharingSettings[] =
"contextual_search.search_content_sharing_settings";
-// Boolean that specifies whether the user has accepted the Drive disclaimer.
-inline constexpr char kDriveDisclaimerAccepted[] =
- "contextual_search.drive_disclaimer_accepted";
+// Integer preference caching the user's Drive consent/eligibility status
+// (maps to the DriveConsentState enum).
+inline constexpr char kDriveConsentState[] =
+ "contextual_search.drive_consent_state";
} // namespace contextual_search
diff -Nru chromium-150.0.7871.100/components/contextual_tasks/public/features.cc chromium-150.0.7871.114/components/contextual_tasks/public/features.cc
--- chromium-150.0.7871.100/components/contextual_tasks/public/features.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_tasks/public/features.cc 2026-07-07 17:43:50.000000000 +0000
@@ -145,9 +145,6 @@
BASE_FEATURE(kContextualTasksWindowTracking, base::FEATURE_ENABLED_BY_DEFAULT);
-BASE_FEATURE(kContextualTasksAiUrlAllowedParamsFilter,
- base::FEATURE_ENABLED_BY_DEFAULT);
-
BASE_FEATURE(kContextualTasksUploadChunking, base::FEATURE_DISABLED_BY_DEFAULT);
bool GetIsContextualTasksPdfCitationsEnabled() {
@@ -601,16 +598,6 @@
return kContextualTasksUserAgentSuffix.Get();
}
-const base::FeatureParam kContextualTasksAiUrlAllowedParams{
- &kContextualTasksAiUrlAllowedParamsFilter,
- "contextual-tasks-ai-url-allowed-params",
- "q,sxsrf,ei,iflsig,ved,uact,sclient,udm,fbs,aep,ntc,mstk,aioh,csuir,cs"};
-
-std::vector GetContextualTasksAiUrlAllowedParams() {
- return base::SplitString(kContextualTasksAiUrlAllowedParams.Get(), ",",
- base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
-}
-
bool ShouldLogContextualTasksContextQuality() {
if (!base::FeatureList::IsEnabled(kContextualTasksContextLogging)) {
return false;
diff -Nru chromium-150.0.7871.100/components/contextual_tasks/public/features.h chromium-150.0.7871.114/components/contextual_tasks/public/features.h
--- chromium-150.0.7871.100/components/contextual_tasks/public/features.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/contextual_tasks/public/features.h 2026-07-07 17:43:50.000000000 +0000
@@ -116,10 +116,6 @@
// Enables window tracking for Contextual Tasks.
BASE_DECLARE_FEATURE(kContextualTasksWindowTracking);
-// When enabled, provides a list of query parameters that are required
-// for AI URLs being loaded from the contextual tasks extension API.
-BASE_DECLARE_FEATURE(kContextualTasksAiUrlAllowedParamsFilter);
-
// Enables upload chunking for Contextual Tasks.
BASE_DECLARE_FEATURE(kContextualTasksUploadChunking);
@@ -332,9 +328,6 @@
// Returns the user agent suffix to use for requests.
extern std::string GetContextualTasksUserAgentSuffix();
-// Returns the allowed query parameters for AI URLs.
-extern std::vector GetContextualTasksAiUrlAllowedParams();
-
// Returns the URL parameter name to check for NLM mode.
extern std::string GetContextualTasksNlmUrlParam();
extern bool IsCustomNlmUiEnabled();
diff -Nru chromium-150.0.7871.100/components/cronet/android/api/src/org/chromium/net/ApiVersion.template chromium-150.0.7871.114/components/cronet/android/api/src/org/chromium/net/ApiVersion.template
--- chromium-150.0.7871.100/components/cronet/android/api/src/org/chromium/net/ApiVersion.template 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/cronet/android/api/src/org/chromium/net/ApiVersion.template 2026-07-07 17:43:50.000000000 +0000
@@ -19,7 +19,7 @@
* as this code.
*
* @see org.chromium.net.impl.ImplVersion
- * {@hide as it's only used internally}
+ * @hide
*/
public class ApiVersion {
private static final String CRONET_VERSION = "@MAJOR@.@MINOR@.@BUILD@.@PATCH@";
diff -Nru chromium-150.0.7871.100/components/cronet/gn2bp/templates/Android.extras.bp.template chromium-150.0.7871.114/components/cronet/gn2bp/templates/Android.extras.bp.template
--- chromium-150.0.7871.100/components/cronet/gn2bp/templates/Android.extras.bp.template 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/cronet/gn2bp/templates/Android.extras.bp.template 2026-07-07 17:43:50.000000000 +0000
@@ -171,10 +171,8 @@
"framework-statsd.stubs.module_lib",
"framework-wifi.stubs.module_lib",
"framework-sdkextensions.stubs.module_lib",
- ] + select(release_flag("RELEASE_CONSCRYPT_NSC"), {
- true: ["framework-conscrypt-nsc.stubs"],
- default: ["framework-network-security-config.stubs.module_lib"],
- }),
+ "framework-conscrypt-nsc.stubs",
+ ],
visibility: [
"//external/cronet:__subpackages__",
],
diff -Nru chromium-150.0.7871.100/components/download/public/common/download_features.cc chromium-150.0.7871.114/components/download/public/common/download_features.cc
--- chromium-150.0.7871.100/components/download/public/common/download_features.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/download/public/common/download_features.cc 2026-07-07 17:43:50.000000000 +0000
@@ -38,6 +38,8 @@
BASE_FEATURE(kShowDownloadScanningState, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kDownloadsCompactListView, base::FEATURE_DISABLED_BY_DEFAULT);
+
+BASE_FEATURE(kRemapGenericMimeType, base::FEATURE_ENABLED_BY_DEFAULT);
#endif
BASE_FEATURE(kDownloadNotificationServiceUnifiedAPI,
diff -Nru chromium-150.0.7871.100/components/download/public/common/download_features.h chromium-150.0.7871.114/components/download/public/common/download_features.h
--- chromium-150.0.7871.100/components/download/public/common/download_features.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/download/public/common/download_features.h 2026-07-07 17:43:50.000000000 +0000
@@ -35,6 +35,10 @@
// images and videos on the Android Downloads page, in place of the default
// large preview cards. See crbug.com/505631139.
COMPONENTS_DOWNLOAD_EXPORT BASE_DECLARE_FEATURE(kDownloadsCompactListView);
+
+// Whether to remap generic MIME types (like application/octet-stream) to more
+// specific MIME types deduced from the filename extension on Android.
+COMPONENTS_DOWNLOAD_EXPORT BASE_DECLARE_FEATURE(kRemapGenericMimeType);
#endif
// Whether download notification service uses new unified API based on offline
diff -Nru chromium-150.0.7871.100/components/feature_engagement/public/feature_constants.cc chromium-150.0.7871.114/components/feature_engagement/public/feature_constants.cc
--- chromium-150.0.7871.100/components/feature_engagement/public/feature_constants.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/feature_engagement/public/feature_constants.cc 2026-07-07 17:43:50.000000000 +0000
@@ -178,6 +178,9 @@
BASE_FEATURE(kIPHPasswordSharingFeature,
"IPH_PasswordSharingFeature",
base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kIPHPdfGlicSummarizeFeature,
+ "IPH_PdfGlicSummarizeFeature",
+ base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kIPHPdfInkSignaturesFeature,
"IPH_PdfInkSignatures",
base::FEATURE_ENABLED_BY_DEFAULT);
diff -Nru chromium-150.0.7871.100/components/feature_engagement/public/feature_constants.h chromium-150.0.7871.114/components/feature_engagement/public/feature_constants.h
--- chromium-150.0.7871.100/components/feature_engagement/public/feature_constants.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/feature_engagement/public/feature_constants.h 2026-07-07 17:43:50.000000000 +0000
@@ -111,6 +111,7 @@
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPasswordsWebAppProfileSwitchFeature);
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPasswordManagerShortcutFeature);
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPasswordSharingFeature);
+FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPdfGlicSummarizeFeature);
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPdfInkSignaturesFeature);
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPdfSearchifyFeature);
FEATURE_CONSTANTS_DECLARE_FEATURE(kIPHPerformanceInterventionDialogFeature);
diff -Nru chromium-150.0.7871.100/components/feature_engagement/public/feature_list.cc chromium-150.0.7871.114/components/feature_engagement/public/feature_list.cc
--- chromium-150.0.7871.100/components/feature_engagement/public/feature_list.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/feature_engagement/public/feature_list.cc 2026-07-07 17:43:50.000000000 +0000
@@ -285,6 +285,7 @@
&kIPHPasswordsSavePrimingPromoFeature,
&kIPHPasswordsSaveRecoveryPromoFeature,
&kIPHPasswordsWebAppProfileSwitchFeature,
+ &kIPHPdfGlicSummarizeFeature,
&kIPHPdfInkSignaturesFeature,
&kIPHPdfSearchifyFeature,
&kIPHPerformanceInterventionDialogFeature,
diff -Nru chromium-150.0.7871.100/components/feature_engagement/public/feature_list.h chromium-150.0.7871.114/components/feature_engagement/public/feature_list.h
--- chromium-150.0.7871.100/components/feature_engagement/public/feature_list.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/feature_engagement/public/feature_list.h 2026-07-07 17:43:50.000000000 +0000
@@ -451,6 +451,8 @@
"IPH_PasswordManagerShortcut");
DEFINE_VARIATION_PARAM(kIPHPasswordSharingFeature,
"IPH_PasswordSharingFeature");
+DEFINE_VARIATION_PARAM(kIPHPdfGlicSummarizeFeature,
+ "IPH_PdfGlicSummarizeFeature");
DEFINE_VARIATION_PARAM(kIPHPdfInkSignaturesFeature, "IPH_PdfInkSignatures");
DEFINE_VARIATION_PARAM(kIPHPdfSearchifyFeature, "IPH_PdfSearchifyFeature");
DEFINE_VARIATION_PARAM(kIPHPerformanceInterventionDialogFeature,
@@ -846,6 +848,7 @@
VARIATION_ENTRY(kIPHPasswordsManagementBubbleAfterSaveFeature),
VARIATION_ENTRY(kIPHPasswordsManagementBubbleDuringSigninFeature),
VARIATION_ENTRY(kIPHPasswordsWebAppProfileSwitchFeature),
+ VARIATION_ENTRY(kIPHPdfGlicSummarizeFeature),
VARIATION_ENTRY(kIPHPdfInkSignaturesFeature),
VARIATION_ENTRY(kIPHPdfSearchifyFeature),
VARIATION_ENTRY(kIPHPerformanceInterventionDialogFeature),
diff -Nru chromium-150.0.7871.100/components/omnibox/browser/zero_suggest_provider.cc chromium-150.0.7871.114/components/omnibox/browser/zero_suggest_provider.cc
--- chromium-150.0.7871.100/components/omnibox/browser/zero_suggest_provider.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/omnibox/browser/zero_suggest_provider.cc 2026-07-07 17:43:50.000000000 +0000
@@ -157,13 +157,15 @@
return !has_contextual_input;
}
// Composebox requests can't have contextual inputs and must not have any
- // tools enabled to use stored response.
+ // tools or suggest inventory enabled to use stored response.
if (omnibox::IsNTPComposebox(page_class)) {
return base::FeatureList::IsEnabled(
omnibox::kZeroSuggestPrefetchingForComposebox) &&
!has_contextual_input &&
input_state.active_tool ==
- omnibox::ToolMode::TOOL_MODE_UNSPECIFIED;
+ omnibox::ToolMode::TOOL_MODE_UNSPECIFIED &&
+ input.suggest_inventory() ==
+ omnibox::SuggestInventory::SUGGEST_INVENTORY_DEFAULT;
}
// All other composebox's should not be using cached zps results.
return !(omnibox::IsLensSearchbox(page_class) ||
@@ -640,6 +642,7 @@
search_terms_args.lens_overlay_suggest_inputs =
input.lens_overlay_suggest_inputs();
search_terms_args.input_state = input.input_state();
+ search_terms_args.suggest_inventory = input.suggest_inventory();
AutocompleteInput composebox_input(
input.text(), metrics::OmniboxEventProto::NTP_COMPOSEBOX_PREFETCH,
diff -Nru chromium-150.0.7871.100/components/omnibox/browser/zero_suggest_provider_unittest.cc chromium-150.0.7871.114/components/omnibox/browser/zero_suggest_provider_unittest.cc
--- chromium-150.0.7871.100/components/omnibox/browser/zero_suggest_provider_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/omnibox/browser/zero_suggest_provider_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -157,12 +157,15 @@
metrics::OmniboxFocusType focus_type,
const std::string& page_url,
TemplateURLRef::RequestSource request_source =
- TemplateURLRef::RequestSource::SEARCHBOX) {
+ TemplateURLRef::RequestSource::SEARCHBOX,
+ omnibox::SuggestInventory suggest_inventory =
+ omnibox::SuggestInventory::SUGGEST_INVENTORY_DEFAULT) {
TemplateURLRef::SearchTermsArgs search_terms_args;
search_terms_args.page_classification = page_classification;
search_terms_args.focus_type = focus_type;
search_terms_args.current_page_url = page_url;
search_terms_args.request_source = request_source;
+ search_terms_args.suggest_inventory = suggest_inventory;
TemplateURLService* template_url_service = client_->GetTemplateURLService();
return RemoteSuggestionsService::EndpointUrl(
@@ -2378,6 +2381,59 @@
EXPECT_EQ(json_response,
prefs->GetString(omnibox::kZeroSuggestCachedResults));
EXPECT_EQ(json_response,
+ prefs->GetString(omnibox::kZeroSuggestCachedResultsComposebox));
+}
+
+TEST_F(ZeroSuggestProviderTest, TestComposeboxPrefetchWithSuggestInventory) {
+ EXPECT_CALL(*client_, IsAuthenticated())
+ .WillRepeatedly(testing::Return(true));
+
+ base::test::ScopedFeatureList features;
+ features.InitAndEnableFeature(omnibox::kZeroSuggestPrefetchingForComposebox);
+
+ PrefService* prefs = client_->GetPrefs();
+
+ MockAimEligibilityService aim_service(
+ *client_->GetPrefs(), client_->GetTemplateURLService(), nullptr, nullptr);
+ EXPECT_CALL(aim_service, IsFuseboxEligible())
+ .WillRepeatedly(testing::Return(true));
+ client_->set_aim_eligibility_service(&aim_service);
+
+ // Start a prefetch request with non-default suggest inventory.
+ AutocompleteInput input = ZeroPrefixInputForNTP(/*is_prefetch = */ true);
+ input.set_suggest_inventory(
+ omnibox::SuggestInventory::SUGGEST_INVENTORY_TRAVEL);
+ provider_->StartPrefetch(input);
+ EXPECT_TRUE(provider_->done());
+
+ GURL ntp_suggest_url =
+ GetSuggestURL(metrics::OmniboxEventProto::NTP_ZPS_PREFETCH,
+ metrics::OmniboxFocusType::INTERACTION_FOCUS, "");
+ GURL composebox_suggest_url =
+ GetSuggestURL(metrics::OmniboxEventProto::NTP_COMPOSEBOX_PREFETCH,
+ metrics::OmniboxFocusType::INTERACTION_FOCUS, "",
+ TemplateURLRef::RequestSource::NTP_COMPOSEBOX,
+ omnibox::SuggestInventory::SUGGEST_INVENTORY_TRAVEL);
+
+ EXPECT_TRUE(test_loader_factory()->IsPending(ntp_suggest_url.spec()));
+ EXPECT_TRUE(test_loader_factory()->IsPending(composebox_suggest_url.spec()));
+
+ std::string json_response(
+ R"(["",["search1", "search2", "search3"],)"
+ R"([],[],{"google:suggestrelevance":[602, 601, 600],)"
+ R"("google:verbatimrelevance":1300}])");
+
+ test_loader_factory()->AddResponse(ntp_suggest_url.spec(), json_response);
+ test_loader_factory()->AddResponse(composebox_suggest_url.spec(),
+ json_response);
+
+ EXPECT_TRUE(base::test::RunUntil([&] { return provider_->done(); }));
+
+ // Both NTP cache and Composebox cache should be populated. The composebox
+ // input for prefetching always uses default suggest inventory.
+ EXPECT_EQ(json_response,
+ prefs->GetString(omnibox::kZeroSuggestCachedResults));
+ EXPECT_EQ(json_response,
prefs->GetString(omnibox::kZeroSuggestCachedResultsComposebox));
}
diff -Nru chromium-150.0.7871.100/components/omnibox/common/omnibox_features.cc chromium-150.0.7871.114/components/omnibox/common/omnibox_features.cc
--- chromium-150.0.7871.100/components/omnibox/common/omnibox_features.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/omnibox/common/omnibox_features.cc 2026-07-07 17:43:50.000000000 +0000
@@ -381,6 +381,8 @@
// Whether to enable Google Drive context menu option in the composebox.
BASE_FEATURE(kComposeboxDriveContextMenuOption, DISABLED);
+const base::FeatureParam kComposeboxDriveIdentityFallback{
+ &kComposeboxDriveContextMenuOption, "enable_identity_fallback", true};
// Whether to enable Google Drive context menu option's disclaimer flow in the
// composebox.
diff -Nru chromium-150.0.7871.100/components/omnibox/common/omnibox_features.h chromium-150.0.7871.114/components/omnibox/common/omnibox_features.h
--- chromium-150.0.7871.100/components/omnibox/common/omnibox_features.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/omnibox/common/omnibox_features.h 2026-07-07 17:43:50.000000000 +0000
@@ -168,6 +168,7 @@
// Whether to enable Google Drive context menu option in the composebox.
BASE_DECLARE_FEATURE(kComposeboxDriveContextMenuOption);
+extern const base::FeatureParam kComposeboxDriveIdentityFallback;
// Whether to enable Google Drive context menu option's disclaimer flow in the
// composebox.
diff -Nru chromium-150.0.7871.100/components/password_manager/core/browser/features/password_features.cc chromium-150.0.7871.114/components/password_manager/core/browser/features/password_features.cc
--- chromium-150.0.7871.100/components/password_manager/core/browser/features/password_features.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/password_manager/core/browser/features/password_features.cc 2026-07-07 17:43:50.000000000 +0000
@@ -114,13 +114,7 @@
BASE_FEATURE(kFillOnAccountSelect,
"fill-on-account-select",
-// TODO(504600482): Disable the feature again upon fixing the bug.
-#if BUILDFLAG(IS_LINUX)
- base::FEATURE_ENABLED_BY_DEFAULT
-#else
- base::FEATURE_DISABLED_BY_DEFAULT
-#endif // BUILDFLAG(IS_LINUX)
-);
+ base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kInFlowTrustedVaultKeyRetrievalAndroid,
diff -Nru chromium-150.0.7871.100/components/password_manager/core/browser/password_form_filling_unittest.cc chromium-150.0.7871.114/components/password_manager/core/browser/password_form_filling_unittest.cc
--- chromium-150.0.7871.100/components/password_manager/core/browser/password_form_filling_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/password_manager/core/browser/password_form_filling_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -248,10 +248,9 @@
/*suggestion_banned_fields=*/{});
// On Android, Mac and Win authentication will prevent autofilling credentials
- // on page load. On iOS Reauth is always required. On Linux
- // kFillOnAccountSelect feature is enabled.
+ // on page load. On iOS Reauth is always required.
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || \
- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
+ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS)
EXPECT_EQ(LikelyFormFilling::kFillOnAccountSelect, likely_form_filling);
EXPECT_TRUE(fill_data.wait_for_username);
#else
@@ -340,9 +339,8 @@
if (test_case.current_password_present) {
// On Android, Mac and Win authentication will prevent autofilling
// credentials on page load. On iOS Reauth is always required.
- // On Linux kFillOnAccountSelect feature is enabled.
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) || \
- BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX)
+ BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS)
EXPECT_EQ(LikelyFormFilling::kFillOnAccountSelect, likely_form_filling);
#else
EXPECT_EQ(LikelyFormFilling::kFillOnPageLoad, likely_form_filling);
@@ -535,9 +533,6 @@
}
TEST_F(PasswordFormFillingTest, NoFillOnPageloadForSingleUsernameForm) {
- base::test::ScopedFeatureList feature_list;
- feature_list.InitAndDisableFeature(
- password_manager::features::kFillOnAccountSelect);
base::HistogramTester histogram_tester;
// Remove the password element from the observed form.
observed_form_.password_element_renderer_id = FieldRendererId();
@@ -556,9 +551,6 @@
}
TEST_F(PasswordFormFillingTest, NoFillOnPageLoadWhileActorTaskIsActive) {
- base::test::ScopedFeatureList feature_list;
- feature_list.InitAndDisableFeature(
- password_manager::features::kFillOnAccountSelect);
base::HistogramTester histogram_tester;
std::vector best_matches = {saved_match_};
const std::vector federated_matches = {};
@@ -575,9 +567,6 @@
}
TEST_F(PasswordFormFillingTest, NoFillOnPageLoadWhileChangingPassword) {
- base::test::ScopedFeatureList feature_list;
- feature_list.InitAndDisableFeature(
- password_manager::features::kFillOnAccountSelect);
base::HistogramTester histogram_tester;
std::vector best_matches = {saved_match_};
const std::vector federated_matches = {};
@@ -597,9 +586,6 @@
}
TEST_F(PasswordFormFillingTest, NoFillOnPageLoadForLeakedPassword) {
- base::test::ScopedFeatureList feature_list;
- feature_list.InitAndDisableFeature(
- password_manager::features::kFillOnAccountSelect);
base::HistogramTester histogram_tester;
saved_match_.change_password_url =
GURL("https://example.com/.well-known/change-password/");
diff -Nru chromium-150.0.7871.100/components/password_manager/core/browser/password_form_manager_unittest.cc chromium-150.0.7871.114/components/password_manager/core/browser/password_form_manager_unittest.cc
--- chromium-150.0.7871.100/components/password_manager/core/browser/password_form_manager_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/password_manager/core/browser/password_form_manager_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -772,9 +772,8 @@
EXPECT_EQ(observed_form_.url(), fill_data.url);
// On Android Touch To Fill will prevent autofilling credentials on page load.
- // On iOS bio-metric reauth will prevent autofilling as well. On Linux
- // kFillOnAccountSelect feature is enabled.
-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_LINUX)
+ // On iOS bio-metric reauth will prevent autofilling as well.
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
EXPECT_TRUE(fill_data.wait_for_username);
#else
EXPECT_FALSE(fill_data.wait_for_username);
diff -Nru chromium-150.0.7871.100/components/password_manager/core/browser/password_manager_unittest.cc chromium-150.0.7871.114/components/password_manager/core/browser/password_manager_unittest.cc
--- chromium-150.0.7871.100/components/password_manager/core/browser/password_manager_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/password_manager/core/browser/password_manager_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -3655,8 +3655,7 @@
EXPECT_EQ(android_form.password_value,
form_data.preferred_login.password_value);
// On Android Touch To Fill will prevent autofilling credentials on page load.
- // On Linux kFillOnAccountSelect feature is enabled.
-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
EXPECT_TRUE(form_data.wait_for_username);
#else
EXPECT_FALSE(form_data.wait_for_username);
diff -Nru chromium-150.0.7871.100/components/payments/content/secure_payment_confirmation_controller.cc chromium-150.0.7871.114/components/payments/content/secure_payment_confirmation_controller.cc
--- chromium-150.0.7871.100/components/payments/content/secure_payment_confirmation_controller.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/payments/content/secure_payment_confirmation_controller.cc 2026-07-07 17:43:50.000000000 +0000
@@ -130,7 +130,15 @@
SecurePaymentRequestOutcome::kAccept);
is_dialog_showing_ = false;
+ // CloseDialog() -> Widget::Close() can potentially synchronously trigger
+ // activation observers that destroy the payment window's WebContents.
+ // This self weak pointer guard can prevent potential UAF if controller is
+ // synchronously deleted inside CloseDialog().
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
CloseDialog();
+ if (!weak_this) {
+ return;
+ }
if (!request_) {
return;
@@ -163,7 +171,13 @@
SecurePaymentRequestOutcome::kAnotherWay);
is_dialog_showing_ = false;
+
+ // CloseDialog() can potentially delete `this`. See OnConfirm() above.
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
CloseDialog();
+ if (!weak_this) {
+ return;
+ }
if (!request_) {
return;
@@ -189,7 +203,12 @@
}
is_dialog_showing_ = false;
+ // CloseDialog() can potentially delete `this`. See OnConfirm() above.
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
CloseDialog();
+ if (!weak_this) {
+ return;
+ }
if (!request_) {
return;
@@ -209,7 +228,12 @@
}
is_dialog_showing_ = false;
+ // CloseDialog() can potentially delete `this`. See OnConfirm() above.
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
CloseDialog();
+ if (!weak_this) {
+ return;
+ }
if (!request_) {
return;
diff -Nru chromium-150.0.7871.100/components/permissions/android/translations/permissions_android_strings_my.xtb chromium-150.0.7871.114/components/permissions/android/translations/permissions_android_strings_my.xtb
--- chromium-150.0.7871.100/components/permissions/android/translations/permissions_android_strings_my.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/permissions/android/translations/permissions_android_strings_my.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -27,7 +27,7 @@
မလုပ်တော့
သင်၏တည်နေရာကို ဤဝဘ်ဆိုက်နှင့် မျှဝေရန် က သင့်တည်နေရာသုံးခွင့် လိုအပ်သည်။
Chrome သည် အနီးတစ်ဝိုက်ရှိ စက်များကို ရှာဖွေရန် ခွင့်ပြုချက် လိုအပ်သည်။ ခွင့်ပြုချက်များ အပ်ဒိတ်လုပ်ပါ။
-အမျိုးအမည်မသိ သို့မဟုတ် ပံ့ပိုးမထားသည့် ကိရိယာ ( )
+အမျိုးအမည်မသိ သို့မဟုတ် ပံ့ပိုးမထားသည့် စက် ( )
{N_BARS,plural, =1{လိုင်းဆွဲအားအဆင့်- # ဘား}other{လိုင်းဆွဲအားအဆင့်- # ဘား}}
()
\ No newline at end of file
diff -Nru chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_fetcher.cc chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_fetcher.cc
--- chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_fetcher.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_fetcher.cc 2026-07-07 17:43:50.000000000 +0000
@@ -17,6 +17,7 @@
#include "base/time/time.h"
#include "base/values.h"
#include "components/signin/public/base/oauth_consumer_id.h"
+#include "components/signin/public/base/signin_switches.h"
#include "components/signin/public/identity_manager/access_token_info.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "components/sync/base/data_type.h"
@@ -210,9 +211,13 @@
void AccountPreviewDataFetcher::StartNetworkRequests(
const std::string& access_token) {
+ const bool fetch_previews = base::FeatureList::IsEnabled(
+ switches::kEnableAccountPreviewEntityPreviews);
+
barrier_callback_ = base::BarrierCallback(
- 2, base::BindOnce(&AccountPreviewDataFetcher::OnFetchCompleted,
- weak_ptr_factory_.GetWeakPtr()));
+ fetch_previews ? 2 : 1,
+ base::BindOnce(&AccountPreviewDataFetcher::OnFetchCompleted,
+ weak_ptr_factory_.GetWeakPtr()));
net::NetworkTrafficAnnotationTag traffic_annotation =
net::DefineNetworkTrafficAnnotation("chrome_sync_preview_fetcher", R"(
@@ -265,21 +270,24 @@
base::BindOnce(&AccountPreviewDataFetcher::OnStatsFetchCompleted,
weak_ptr_factory_.GetWeakPtr()));
- // 2. Previews Request
- auto previews_request = std::make_unique();
- previews_request->url = GetPreviewsUrlForChannel(channel_);
- previews_request->method = "GET";
- previews_request->credentials_mode = network::mojom::CredentialsMode::kOmit;
- previews_request->headers.SetHeader(net::HttpRequestHeaders::kAuthorization,
- base::StrCat({"Bearer ", access_token}));
-
- previews_url_loader_ = network::SimpleURLLoader::Create(
- std::move(previews_request), traffic_annotation);
-
- previews_url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
- url_loader_factory_.get(),
- base::BindOnce(&AccountPreviewDataFetcher::OnPreviewsFetchCompleted,
- weak_ptr_factory_.GetWeakPtr()));
+ if (fetch_previews) {
+ // 2. Previews Request
+ auto previews_request = std::make_unique();
+ previews_request->url = GetPreviewsUrlForChannel(channel_);
+ previews_request->method = "GET";
+ previews_request->credentials_mode = network::mojom::CredentialsMode::kOmit;
+ previews_request->headers.SetHeader(
+ net::HttpRequestHeaders::kAuthorization,
+ base::StrCat({"Bearer ", access_token}));
+
+ previews_url_loader_ = network::SimpleURLLoader::Create(
+ std::move(previews_request), traffic_annotation);
+
+ previews_url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
+ url_loader_factory_.get(),
+ base::BindOnce(&AccountPreviewDataFetcher::OnPreviewsFetchCompleted,
+ weak_ptr_factory_.GetWeakPtr()));
+ }
base::UmaHistogramEnumeration(kFetchStateHistogram, FetchState::kRequested);
}
diff -Nru chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_fetcher_unittest.cc chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_fetcher_unittest.cc
--- chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_fetcher_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_fetcher_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -35,15 +35,19 @@
class AccountPreviewDataFetcherTest : public testing::Test {
public:
- AccountPreviewDataFetcherTest() = default;
+ AccountPreviewDataFetcherTest() {
+ feature_list_.InitWithFeatures(
+ {switches::kEnableAccountPreviewData,
+ switches::kEnableAccountPreviewEntityPreviews},
+ {});
+ }
void SetUp() override {
identity_test_env_.SetAutomaticIssueOfAccessTokens(true);
}
protected:
- base::test::ScopedFeatureList feature_list_{
- switches::kEnableAccountPreviewData};
+ base::test::ScopedFeatureList feature_list_;
base::test::TaskEnvironment task_environment_;
network::TestURLLoaderFactory test_url_loader_factory_;
IdentityTestEnvironment identity_test_env_{&test_url_loader_factory_};
@@ -88,6 +92,48 @@
histogram_tester_.ExpectTotalCount(kFetchStateHistogram, 4);
}
+TEST_F(AccountPreviewDataFetcherTest, SuccessWithPreviewsDisabled) {
+ base::test::ScopedFeatureList scoped_feature_list;
+ scoped_feature_list.InitAndDisableFeature(
+ switches::kEnableAccountPreviewEntityPreviews);
+
+ AccountInfo account_info =
+ identity_test_env_.MakeAccountAvailable("user@gmail.com");
+
+ MockSuccessfulStatsFetch(
+ &test_url_loader_factory_,
+ {.bookmark_count = 10, .password_count = 20, .history_count = 30});
+ // We do NOT mock previews fetch.
+
+ base::test::TestFuture>
+ future;
+ auto fetcher = std::make_unique(
+ account_info.gaia, identity_test_env_.identity_manager(),
+ test_url_loader_factory_.GetSafeWeakWrapper(),
+ version_info::Channel::UNKNOWN, future.GetCallback());
+
+ auto [gaia_id, result_data] = future.Take();
+ EXPECT_EQ(account_info.gaia, gaia_id);
+ ASSERT_TRUE(result_data.has_value());
+ EXPECT_EQ(10U, result_data->counts[syncer::BOOKMARKS]);
+ EXPECT_EQ(20U, result_data->counts[syncer::PASSWORDS]);
+ EXPECT_EQ(30U, result_data->counts[syncer::HISTORY]);
+ EXPECT_TRUE(result_data->password_domains.empty());
+
+ // Verify that no previews request was even initiated (0 pending requests).
+ EXPECT_EQ(0, test_url_loader_factory_.NumPending());
+
+ histogram_tester_.ExpectBucketCount(kFetchStateHistogram,
+ FetchState::kRequested, 1);
+ histogram_tester_.ExpectBucketCount(kFetchStateHistogram,
+ FetchState::kStatisticsHasResult, 1);
+ histogram_tester_.ExpectBucketCount(kFetchStateHistogram,
+ FetchState::kEntityPreviewHasResult, 0);
+ histogram_tester_.ExpectBucketCount(kFetchStateHistogram,
+ FetchState::kCompletedWithResults, 1);
+ histogram_tester_.ExpectTotalCount(kFetchStateHistogram, 3);
+}
+
TEST_F(AccountPreviewDataFetcherTest, SuccessEmpty) {
AccountInfo account_info =
identity_test_env_.MakeAccountAvailable("user@gmail.com");
diff -Nru chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_service_impl_unittest.cc chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_service_impl_unittest.cc
--- chromium-150.0.7871.100/components/signin/core/browser/account_preview_data_service_impl_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/core/browser/account_preview_data_service_impl_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -35,7 +35,12 @@
class AccountPreviewDataServiceTest : public testing::Test {
public:
AccountPreviewDataServiceTest()
- : identity_test_env_(&test_url_loader_factory_) {}
+ : identity_test_env_(&test_url_loader_factory_) {
+ feature_list_.InitWithFeatures(
+ {switches::kEnableAccountPreviewData,
+ switches::kEnableAccountPreviewEntityPreviews},
+ {});
+ }
void SetUp() override {
AccountPreviewDataService::RegisterProfilePrefs(prefs_.registry());
@@ -55,8 +60,7 @@
}
protected:
- base::test::ScopedFeatureList feature_list_{
- switches::kEnableAccountPreviewData};
+ base::test::ScopedFeatureList feature_list_;
base::test::TaskEnvironment task_environment_{
base::test::TaskEnvironment::TimeSource::MOCK_TIME};
network::TestURLLoaderFactory test_url_loader_factory_;
diff -Nru chromium-150.0.7871.100/components/signin/public/base/signin_switches.cc chromium-150.0.7871.114/components/signin/public/base/signin_switches.cc
--- chromium-150.0.7871.100/components/signin/public/base/signin_switches.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/public/base/signin_switches.cc 2026-07-07 17:43:50.000000000 +0000
@@ -265,7 +265,14 @@
BASE_FEATURE(kDisableU18FeedbackDesktop, base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+// Enables fetching sync preview data from the server for accounts with refresh
+// tokens.
BASE_FEATURE(kEnableAccountPreviewData, base::FEATURE_DISABLED_BY_DEFAULT);
+// Controls whether fetching entity preview data is enabled (via a specific api
+// method). This flag has no effect if `kEnableAccountPreviewData` is not
+// enabled.
+BASE_FEATURE(kEnableAccountPreviewEntityPreviews,
+ base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_ANDROID)
// Whether activityless sign-in should be used for all entry points.
diff -Nru chromium-150.0.7871.100/components/signin/public/base/signin_switches.h chromium-150.0.7871.114/components/signin/public/base/signin_switches.h
--- chromium-150.0.7871.100/components/signin/public/base/signin_switches.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/public/base/signin_switches.h 2026-07-07 17:43:50.000000000 +0000
@@ -239,6 +239,8 @@
// Enables fetching and storing preview data for signed-in accounts.
COMPONENT_EXPORT(SIGNIN_SWITCHES)
BASE_DECLARE_FEATURE(kEnableAccountPreviewData);
+COMPONENT_EXPORT(SIGNIN_SWITCHES)
+BASE_DECLARE_FEATURE(kEnableAccountPreviewEntityPreviews);
#if BUILDFLAG(IS_ANDROID)
// Whether activityless sign-in should be used for all entry points.
diff -Nru chromium-150.0.7871.100/components/signin/public/identity_manager/account_capabilities_test_mutator.cc chromium-150.0.7871.114/components/signin/public/identity_manager/account_capabilities_test_mutator.cc
--- chromium-150.0.7871.100/components/signin/public/identity_manager/account_capabilities_test_mutator.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/public/identity_manager/account_capabilities_test_mutator.cc 2026-07-07 17:43:50.000000000 +0000
@@ -11,11 +11,16 @@
#include "build/build_config.h"
#include "components/signin/internal/identity_manager/account_capabilities_constants.h"
#include "components/signin/public/base/signin_switches.h"
+#include "components/signin/public/identity_manager/account_info.h"
AccountCapabilitiesTestMutator::AccountCapabilitiesTestMutator(
AccountCapabilities* capabilities)
: capabilities_(capabilities) {}
+AccountCapabilitiesTestMutator::AccountCapabilitiesTestMutator(
+ AccountInfo* account_info)
+ : capabilities_(&account_info->capabilities) {}
+
// static
base::span
AccountCapabilitiesTestMutator::GetSupportedAccountCapabilityNames() {
diff -Nru chromium-150.0.7871.100/components/signin/public/identity_manager/account_capabilities_test_mutator.h chromium-150.0.7871.114/components/signin/public/identity_manager/account_capabilities_test_mutator.h
--- chromium-150.0.7871.100/components/signin/public/identity_manager/account_capabilities_test_mutator.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/public/identity_manager/account_capabilities_test_mutator.h 2026-07-07 17:43:50.000000000 +0000
@@ -12,11 +12,14 @@
#include "build/build_config.h"
#include "components/signin/public/identity_manager/account_capabilities.h"
+struct AccountInfo;
+
// Support class that allows callers to modify internal capability state
// mappings used for tests.
class AccountCapabilitiesTestMutator {
public:
explicit AccountCapabilitiesTestMutator(AccountCapabilities* capabilities);
+ explicit AccountCapabilitiesTestMutator(AccountInfo* account_info);
// Exposes the full list of supported capabilities for tests.
static base::span
diff -Nru chromium-150.0.7871.100/components/signin/public/identity_manager/account_info_unittest.cc chromium-150.0.7871.114/components/signin/public/identity_manager/account_info_unittest.cc
--- chromium-150.0.7871.100/components/signin/public/identity_manager/account_info_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/signin/public/identity_manager/account_info_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -141,7 +141,7 @@
.SetLastAuthenticationAccessPoint(
signin_metrics::AccessPoint::kSettings)
.Build();
- AccountCapabilitiesTestMutator mutator(&other.capabilities);
+ AccountCapabilitiesTestMutator mutator(&other);
mutator.set_can_show_history_sync_opt_ins_without_minor_mode_restrictions(
true);
@@ -192,8 +192,8 @@
.SetHostedDomain("test_domain")
.SetAvatarUrl("test_url")
.Build();
- AccountCapabilitiesTestMutator(&info.capabilities)
- .set_is_subject_to_enterprise_features(true);
+ AccountCapabilitiesTestMutator(&info).set_is_subject_to_enterprise_features(
+ true);
AccountInfo other =
AccountInfo::Builder(GaiaId("test_id"), "test@example.com")
diff -Nru chromium-150.0.7871.100/components/skills/internal/skills_fetcher.cc chromium-150.0.7871.114/components/skills/internal/skills_fetcher.cc
--- chromium-150.0.7871.100/components/skills/internal/skills_fetcher.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/skills/internal/skills_fetcher.cc 2026-07-07 17:43:50.000000000 +0000
@@ -4,6 +4,8 @@
#include "components/skills/internal/skills_fetcher.h"
+#include "base/json/json_reader.h"
+#include "base/values.h"
#include "components/signin/public/base/consent_level.h"
#include "components/signin/public/base/oauth_consumer_id.h"
#include "components/signin/public/identity_manager/identity_manager.h"
@@ -53,6 +55,90 @@
}
})");
+bool ParseSkillsListFromJson(const std::string& json_str,
+ skills::proto::SkillsList* skills_list) {
+ std::optional result = base::JSONReader::ReadDict(
+ json_str, base::JSONParserOptions::JSON_PARSE_RFC);
+ if (!result.has_value()) {
+ return false;
+ }
+ const base::DictValue& root_dict = *result;
+
+ // Parse skills
+ const base::ListValue* skills_val = root_dict.FindList("skills");
+ if (skills_val) {
+ for (const auto& skill_val : *skills_val) {
+ if (!skill_val.is_dict()) {
+ continue;
+ }
+ const base::DictValue& skill_dict = skill_val.GetDict();
+ auto* skill = skills_list->add_skills();
+ if (const std::string* id = skill_dict.FindString("id")) {
+ skill->set_id(*id);
+ }
+ if (const std::string* name = skill_dict.FindString("name")) {
+ skill->set_name(*name);
+ }
+ if (const std::string* category = skill_dict.FindString("category")) {
+ skill->set_category(*category);
+ }
+ if (const std::string* icon = skill_dict.FindString("icon")) {
+ skill->set_icon(*icon);
+ }
+ if (const std::string* prompt = skill_dict.FindString("prompt")) {
+ skill->set_prompt(*prompt);
+ }
+ if (const std::string* description =
+ skill_dict.FindString("description")) {
+ skill->set_description(*description);
+ }
+ if (const std::string* image_url = skill_dict.FindString("imageUrl")) {
+ skill->set_image_url(*image_url);
+ } else if (const std::string* image_url_snake =
+ skill_dict.FindString("image_url")) {
+ skill->set_image_url(*image_url_snake);
+ }
+ if (const std::string* curated_by = skill_dict.FindString("curatedBy")) {
+ skill->set_curated_by(*curated_by);
+ } else if (const std::string* curated_by_snake =
+ skill_dict.FindString("curated_by")) {
+ skill->set_curated_by(*curated_by_snake);
+ }
+ }
+ }
+
+ // Parse topics_info_list
+ const base::ListValue* topics_val = root_dict.FindList("topicsInfoList");
+ if (!topics_val) {
+ topics_val = root_dict.FindList("topics_info_list");
+ }
+ if (topics_val) {
+ for (const auto& topic_val : *topics_val) {
+ if (!topic_val.is_dict()) {
+ continue;
+ }
+ const base::DictValue& topic_dict = topic_val.GetDict();
+ auto* topic = skills_list->add_topics_info_list();
+ if (const std::string* category_name =
+ topic_dict.FindString("categoryName")) {
+ topic->set_category_name(*category_name);
+ } else if (const std::string* category_name_snake =
+ topic_dict.FindString("category_name")) {
+ topic->set_category_name(*category_name_snake);
+ }
+ if (const std::string* display_name =
+ topic_dict.FindString("displayName")) {
+ topic->set_display_name(*display_name);
+ } else if (const std::string* display_name_snake =
+ topic_dict.FindString("display_name")) {
+ topic->set_display_name(*display_name_snake);
+ }
+ }
+ }
+
+ return true;
+}
+
} // namespace
SkillsFetcher::SkillsFetcher(
@@ -104,7 +190,7 @@
}
skills::proto::SkillsList skills_list;
- if (!skills_list.ParseFromString(response->response)) {
+ if (!ParseSkillsListFromJson(response->response, &skills_list)) {
RecordSkillsFetchResult(SkillsFetchResult::kProtoParseFailure);
std::move(callback).Run(nullptr);
return;
diff -Nru chromium-150.0.7871.100/components/skills/internal/skills_fetcher_unittest.cc chromium-150.0.7871.114/components/skills/internal/skills_fetcher_unittest.cc
--- chromium-150.0.7871.100/components/skills/internal/skills_fetcher_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/skills/internal/skills_fetcher_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -33,28 +33,55 @@
base::test::ScopedFeatureList scoped_feature_list_;
};
-TEST_F(SkillsFetcherTest, FetchDiscoverySkills_Success) {
+TEST_F(SkillsFetcherTest, FetchDiscoverySkills_Failure) {
identity_test_env_.MakePrimaryAccountAvailable("test@gmail.com",
signin::ConsentLevel::kSignin);
SkillsFetcher fetcher(test_url_loader_factory_.GetSafeWeakWrapper(),
identity_test_env_.identity_manager());
- skills::proto::SkillsList skills_list;
- skills::proto::Skill* skill = skills_list.add_skills();
- skill->set_id("skill_id");
- skill->set_name("Skill Name");
- skill->set_category("Category");
- skill->set_icon("Icon");
- skill->set_prompt("Prompt");
- skill->set_description("Description");
- skill->set_image_url("ImageUrl");
- skill->set_curated_by("CuratedBy");
+ test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(), "",
+ net::HTTP_NOT_FOUND);
- std::string response_proto = skills_list.SerializeAsString();
+ base::RunLoop run_loop;
+ fetcher.FetchDiscoverySkills(base::BindLambdaForTesting(
+ [&](std::unique_ptr data) {
+ EXPECT_FALSE(data);
+ run_loop.Quit();
+ }));
+
+ identity_test_env_.WaitForAccessTokenRequestIfNecessaryAndRespondWithToken(
+ "token", base::Time::Max());
+
+ run_loop.Run();
+}
+
+TEST_F(SkillsFetcherTest, FetchDiscoverySkills_JsonSuccess) {
+ identity_test_env_.MakePrimaryAccountAvailable("test@gmail.com",
+ signin::ConsentLevel::kSignin);
+
+ SkillsFetcher fetcher(test_url_loader_factory_.GetSafeWeakWrapper(),
+ identity_test_env_.identity_manager());
+
+ std::string response_json = R"({
+ "skills": [{
+ "id": "skill_id",
+ "name": "Skill Name",
+ "category": "Category",
+ "icon": "Icon",
+ "prompt": "Prompt",
+ "description": "Description",
+ "imageUrl": "ImageUrl",
+ "curatedBy": "CuratedBy"
+ }],
+ "topicsInfoList": [{
+ "categoryName": "CategoryName",
+ "displayName": "DisplayName"
+ }]
+ })";
test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(),
- response_proto);
+ response_json);
base::RunLoop run_loop;
fetcher.FetchDiscoverySkills(base::BindLambdaForTesting(
@@ -69,6 +96,10 @@
EXPECT_EQ("Description", data->skills_list[0].description());
EXPECT_EQ("ImageUrl", data->skills_list[0].image_url());
EXPECT_EQ("CuratedBy", data->skills_list[0].curated_by());
+
+ ASSERT_EQ(1u, data->topics_info_list.size());
+ EXPECT_EQ("CategoryName", data->topics_info_list[0].category_name());
+ EXPECT_EQ("DisplayName", data->topics_info_list[0].display_name());
run_loop.Quit();
}));
@@ -78,20 +109,50 @@
run_loop.Run();
}
-TEST_F(SkillsFetcherTest, FetchDiscoverySkills_Failure) {
+TEST_F(SkillsFetcherTest, FetchDiscoverySkills_JsonSuccessSnakeCase) {
identity_test_env_.MakePrimaryAccountAvailable("test@gmail.com",
signin::ConsentLevel::kSignin);
SkillsFetcher fetcher(test_url_loader_factory_.GetSafeWeakWrapper(),
identity_test_env_.identity_manager());
- test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(), "",
- net::HTTP_NOT_FOUND);
+ std::string response_json = R"({
+ "skills": [{
+ "id": "skill_id",
+ "name": "Skill Name",
+ "category": "Category",
+ "icon": "Icon",
+ "prompt": "Prompt",
+ "description": "Description",
+ "image_url": "ImageUrl",
+ "curated_by": "CuratedBy"
+ }],
+ "topics_info_list": [{
+ "category_name": "CategoryName",
+ "display_name": "DisplayName"
+ }]
+ })";
+
+ test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(),
+ response_json);
base::RunLoop run_loop;
fetcher.FetchDiscoverySkills(base::BindLambdaForTesting(
[&](std::unique_ptr data) {
- EXPECT_FALSE(data);
+ ASSERT_TRUE(data);
+ ASSERT_EQ(1u, data->skills_list.size());
+ EXPECT_EQ("skill_id", data->skills_list[0].id());
+ EXPECT_EQ("Skill Name", data->skills_list[0].name());
+ EXPECT_EQ("Category", data->skills_list[0].category());
+ EXPECT_EQ("Icon", data->skills_list[0].icon());
+ EXPECT_EQ("Prompt", data->skills_list[0].prompt());
+ EXPECT_EQ("Description", data->skills_list[0].description());
+ EXPECT_EQ("ImageUrl", data->skills_list[0].image_url());
+ EXPECT_EQ("CuratedBy", data->skills_list[0].curated_by());
+
+ ASSERT_EQ(1u, data->topics_info_list.size());
+ EXPECT_EQ("CategoryName", data->topics_info_list[0].category_name());
+ EXPECT_EQ("DisplayName", data->topics_info_list[0].display_name());
run_loop.Quit();
}));
@@ -101,15 +162,17 @@
run_loop.Run();
}
-TEST_F(SkillsFetcherTest, FetchDiscoverySkills_InvalidProto) {
+TEST_F(SkillsFetcherTest, FetchDiscoverySkills_JsonInvalid) {
identity_test_env_.MakePrimaryAccountAvailable("test@gmail.com",
signin::ConsentLevel::kSignin);
SkillsFetcher fetcher(test_url_loader_factory_.GetSafeWeakWrapper(),
identity_test_env_.identity_manager());
+ std::string response_json = "[]";
+
test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(),
- "invalid proto");
+ response_json);
base::RunLoop run_loop;
fetcher.FetchDiscoverySkills(base::BindLambdaForTesting(
diff -Nru chromium-150.0.7871.100/components/skills/internal/skills_service_impl_unittest.cc chromium-150.0.7871.114/components/skills/internal/skills_service_impl_unittest.cc
--- chromium-150.0.7871.100/components/skills/internal/skills_service_impl_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/skills/internal/skills_service_impl_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -562,12 +562,9 @@
identity_test_env_.MakePrimaryAccountAvailable("test@gmail.com",
signin::ConsentLevel::kSignin);
- skills::proto::SkillsList skills_list;
- skills::proto::Skill* skill = skills_list.add_skills();
- skill->set_name("Service Skill");
-
- test_url_loader_factory_.AddResponse(features::kSkillsServiceApiUrl.Get(),
- skills_list.SerializeAsString());
+ test_url_loader_factory_.AddResponse(
+ features::kSkillsServiceApiUrl.Get(),
+ R"({"skills": [{"name": "Service Skill"}]})");
MockSkillsServiceImpl mock_service(
&pref_service_, &mock_optimization_guide_decider_,
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_af.xtb chromium-150.0.7871.114/components/strings/components_strings_af.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_af.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_af.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Dakwerk
Soekenjins
– Vra
+Geen resultate gekry nie
Dateer paspoort op
Gevegsport
@@ -4707,6 +4708,7 @@
Skep nota
Die administrateur van hierdie toestel het apps vir bykomende funksies geïnstalleer. Apps het toegang tot sommige van jou data.
Konteks van plaaslike omval:
+Vertaal in
Vliegtuigmodus afskakel
Webwerfwebkoekies (aangemelde toestand op onlangs besoekte webwerwe sal bewaar word)
Nie gestel nie.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_am.xtb chromium-150.0.7871.114/components/strings/components_strings_am.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_am.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_am.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
የጣሪያ ሥራ
የፍለጋ ፕሮግራሞች
- ይጠይቁ
+ምንም ውጤቶች አልተገኙም
ፓስፖርትን ያዘምኑ
የትግል ስፖርት
@@ -4707,6 +4708,7 @@
ማስታወሻን ይፍጠሩ
የዚህ መሣሪያ አስተዳዳሪ ለተጨማሪ ተግባራት መተግበሪያዎችን ጭኗል። መተግበሪያዎች የአንዳንድ ውሂብዎ መዳረሻ አላቸው።
የአካባቢያዊ ስንክል አውድ፦
+ወደዚህ መተርጎም
የአውሮፕላን ሁነታን ማጥፋት
የድር ጣቢያ ኩኪዎች (በቅርብ ጊዜ በተጎበኙ ድር ጣቢያዎች ላይ በመለያ የተገባበት ሁኔታ ተጠብቆ ይቆያል)
አልተዋቀረም።
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ar.xtb chromium-150.0.7871.114/components/strings/components_strings_ar.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ar.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ar.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
خدمات تسقيف
محرّكات البحث
- طرح سؤال على
+لم يتم العثور على نتائج.
تعديل بيانات جواز السفر
رياضات قتالية
@@ -2377,7 +2378,7 @@
استخدام الكاميرات
إعادة تشغيل Chromium
البطاقة الافتراضية
-تحديث
+تعديل
اقتراحات البحث
تم تحديد علامة التبويب ""، "" من "". يمكن استخدام السهم المتجه لليمين أو اليسار للتبديل بين علامات التبويب
إدارة كلمات المرور…
@@ -4709,6 +4710,7 @@
إنشاء ملاحظة
ثبَّت مشرف هذا الجهاز تطبيقات للوظائف الإضافية. ويمكن لهذه التطبيقات الوصول إلى بعض بياناتك.
سياق التعطّل على جهاز المستخدِم:
+الترجمة إلى
إيقاف "وضع الطيران"
ملفات تعريف الارتباط الخاصة بالمواقع الإلكترونية (سيتم الاحتفاظ بحالة تسجيل الدخول على المواقع الإلكترونية التي تمت زيارتها مؤخرًا)
لم يتم ضبطها.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_as.xtb chromium-150.0.7871.114/components/strings/components_strings_as.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_as.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_as.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
ছাদৰ কাৰ্য
সন্ধান ইঞ্জিনসমূহ
- সোধক
+কোনো ফলাফল পোৱা নগ’ল
পাছপ’ৰ্ট আপডে’ট কৰক
যুদ্ধ বিষয়ক ক্ৰীড়া
@@ -4702,6 +4703,7 @@
টোকা সৃষ্টি কৰক
এই ডিভাইচটোৰ প্ৰশাসকে অতিৰিক্ত ফাংশ্বনৰ বাবে এপ্লিকেশ্বন ইনষ্টল কৰিছে। এপ্লিকেশ্বনসমূহে আপোনাৰ কিছুমান ডেটা এক্সেছ কৰিব পাৰে।
ল'কেল ক্ৰেশ্বৰ প্ৰসংগ:
+এই ভাষাটোলৈ অনুবাদ কৰক
এয়াৰপ্লেন ম’ড অফ কৰি থকা হৈছে
ৱেবছাইটৰ কুকিসমূহ (শেহতীয়াকৈ চোৱা ৱেবছাইটসমূহত থকা ছাইন ইন হৈ থকা অৱস্থাটো একেই ৰখা হ’ব)
ছেট কৰা হোৱা নাই।
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_az.xtb chromium-150.0.7871.114/components/strings/components_strings_az.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_az.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_az.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
Dam örtüyü
Axtarış Sistemləri
- Soruşun:
+Heç bir nəticə tapılmayıb
Pasportu güncəlləyin
Döyüş idman növləri
@@ -4703,6 +4704,7 @@
Qeyd yaradın
Bu cihazın administratoru əlavə funksiyalar üçün tətbiqlər quraşdırıb. Tətbiqlər müəyyən dataya daxil ola bilər.
Lokal Xəta Konteksti:
+Hədəf dil:
Təyyarə rejimi deaktiv edilir
Veb-sayt kukiləri (yaxın zamanda daxil olduğunuz veb-saytlar üzrə giriş vəziyyəti qorunacaq)
Ayarlanmayıb
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_be.xtb chromium-150.0.7871.114/components/strings/components_strings_be.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_be.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_be.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Дахавыя работы
Пошукавыя сістэмы
- Спытаць
+Нічога не знойдзена
Змяніце пашпартныя даныя
Спартыўныя адзінаборствы
@@ -4707,6 +4708,7 @@
Стварыць нататку
Адміністратар гэтай прылады ўсталяваў праграмы для дадатковых функцый. Праграмы маюць доступ да некаторых вашых даных.
Лакальны ідэнтыфікатар збою:
+Мова перакладу:
Выключыць рэжым палёту
файлы cookie вэб-сайта (даныя пра ўваход на вэб-сайтах, якія наведваліся нядаўна, будуць захоўвацца).
Не зададзена
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_bg.xtb chromium-150.0.7871.114/components/strings/components_strings_bg.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_bg.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_bg.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Покриви
Търсещи машини
– попитайте
+Няма намерени резултати
Актуализиране на паспорта
Бойни спортове
@@ -4708,6 +4709,7 @@
Създаване на бележка
Администраторът на това устройство е инсталирал приложения за допълнителни функции. Приложенията имат достъп до част от данните ви.
Локален контекст за срива:
+Превод на
Изключете самолетния режим.
„Бисквитки“ на уебсайтовете (състоянието на влизане в профила на наскоро посетените уебсайтове ще бъде запазено)
Не е зададено.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_bn.xtb chromium-150.0.7871.114/components/strings/components_strings_bn.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_bn.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_bn.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
ক্ষতিগ্রস্ত ছাদ মেরামত করা
সার্চ ইঞ্জিনসমূহ
- জিজ্ঞাসা করুন
+কোনও ফলাফল পাওয়া যায়নি
পাসপোর্ট সম্পর্কিত তথ্য আপডেট করা
কম্ব্যাট স্পোর্টস
@@ -4708,6 +4709,7 @@
নোট তৈরি করুন
এই ডিভাইসের অ্যাডমিনিস্ট্রেটর অতিরিক্ত ফাংশনের জন্য এক্সটেনশন ইনস্টল করেছেন। এক্সটেনশন আপনার কিছু ডেটা অ্যাক্সেস করেছে।
স্থানীয় স্তরে ক্র্যাশ রিপোর্টের প্রসঙ্গ:
+এই ভাষায় অনুবাদ করুন
বিমান মোড বন্ধ করে দেখুন
ওয়েবসাইটের কুকি (সম্প্রতি ভিজিট করা ওয়েবসাইটের ক্ষেত্রে সাইন-ইন করার স্ট্যাটাস সেভ করা হবে)
সেট করা নেই৷
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_bs.xtb chromium-150.0.7871.114/components/strings/components_strings_bs.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_bs.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_bs.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Pokrivanje krova
Pretraživači
– pitajte funkciju
+Nije pronađen nijedan rezultat
Ažurirajte pasoš
Borilački sportovi
@@ -4708,6 +4709,7 @@
Napravite bilješku
Administrator ovog uređaja je instalirao ekstenzije radi dodatnih funkcija. Ekstenzije imaju pristup samo nekim vašim podacima.
Kontekst lokalnog pada aplikacije:
+Prevedi na
Isključiti način rada u avionu
Kolačići web lokacije (prijava na nedavno posjećene web lokacije će se sačuvati)
Nije postavljeno.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ca.xtb chromium-150.0.7871.114/components/strings/components_strings_ca.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ca.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ca.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Teulats
Motors de cerca
- Pregunta a
+No s'ha trobat cap resultat
Actualitza el passaport
Esports de combat
@@ -4708,6 +4709,7 @@
Crea una nota
L'administrador del dispositiu ha instal·lat aplicacions per obtenir funcions addicionals. Les aplicacions tenen accés a algunes de les teves dades.
Context del bloqueig local:
+Tradueix a
Desactiva el mode d'avió.
Galetes de llocs web (l'estat de sessió iniciada als llocs web que s'han visitat recentment es conservarà)
No s'ha definit.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_cs.xtb chromium-150.0.7871.114/components/strings/components_strings_cs.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_cs.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_cs.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
Pokrývači
Vyhledávače
– Zeptat se
+Nebyly nalezeny žádné výsledky
Aktualizace pasu
Bojové sporty
@@ -4702,6 +4703,7 @@
Vytvořit poznámku
Administrátor tohoto zařízení nainstaloval rozšíření pro dodatečné funkce. Rozšíření mají přístup k některým vašim datům.
Místní kontext selhání:
+Přeložit do jazyka
Vypnout režim Letadlo
Soubory cookie webů (stav přihlášení na nedávno navštívených webech bude zachován)
Nenastaveno.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_cy.xtb chromium-150.0.7871.114/components/strings/components_strings_cy.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_cy.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_cy.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
To
Peiriant chwilio
- Gofyn i
+Ni Chanfuwyd Unrhyw Ganlyniadau
Diweddaru'r pasbort
Chwaraeon Gornest
@@ -4707,6 +4708,7 @@
Creu nodyn
Mae gweinyddwr y ddyfais hon wedi gosod apiau ar gyfer swyddogaethau ychwanegol. Mae gan apiau fynediad at rywfaint o'ch data.
Cyd-destun Toriad Lleol:
+Cyfieithu i
Yn diffodd modd awyrennau
Cwcis gwefan (bydd cyflwr mewngofnodi ar wefannau yr ymwelwyd â nhw'n ddiweddar yn cael ei gadw)
Heb ei osod.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_da.xtb chromium-150.0.7871.114/components/strings/components_strings_da.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_da.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_da.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Tagdækning
Søgemaskiner
– Spørg
+Der blev ikke fundet nogen resultater
Opdater pas
Kampsport
@@ -4541,7 +4542,7 @@
Konvolut Kinesisk nr. 8
{0,plural, =1{Vil du uploade den fortrolige fil?}one{Vil du uploade den fortrolige fil?}other{Vil du uploade de fortrolige filer?}}
Vil du genindlæse websitet?
-Navn på begivenhed
+Hændelsesnavn
Farligt website
Sedaner
Dametøj
@@ -4708,6 +4709,7 @@
Opret note
Administratoren af denne enhed har installeret apps til yderligere funktioner. De pågældende apps har adgang til nogle af dine data.
Lokal nedbrudskontekst:
+Oversæt til
Deaktivere flytilstand
Websitecookies (loginstatus på websites, der er besøgt for nylig, bevares)
Ikke angivet.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_de.xtb chromium-150.0.7871.114/components/strings/components_strings_de.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_de.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_de.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2347,6 +2347,7 @@
Dachdeckerei
Suchmaschinen
– fragen
+Keine Ergebnisse gefunden
Reisepass aktualisieren
Kampfsport
@@ -4706,6 +4707,7 @@
Notiz erstellen
Der Administrator dieses Geräts hat Anwendungen für zusätzliche Funktionen installiert. Diese Anwendungen können auf einige deiner Daten zugreifen.
Kontext für lokalen Absturz:
+Zielsprache
Flugmodus ausschalten
Website-Cookies (angemeldeter Status auf zuletzt besuchten Websites wird beibehalten)
Nicht eingerichtet
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_el.xtb chromium-150.0.7871.114/components/strings/components_strings_el.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_el.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_el.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Στέγες/οροφές
Μηχανές αναζήτησης
- Ερώτηση στο
+Δεν βρέθηκαν αποτελέσματα
Ενημέρωση πληροφοριών διαβατηρίου
Αθλήματα μάχης
@@ -4710,6 +4711,7 @@
Δημιουργία σημείωσης
Ο διαχειριστής αυτής της συσκευής εγκατέστησε εφαρμογές για επιπλέον λειτουργίες. Οι εφαρμογές έχουν πρόσβαση σε κάποια από τα δεδομένα σας.
Περιβάλλον τοπικού σφάλματος:
+Μετάφραση στα
Απενεργοποιήστε τη λειτουργία πτήσης.
Cookie ιστοτόπου (η κατάσταση σύνδεσης στους ιστοτόπους που επισκεφτήκατε πρόσφατα θα διατηρείται)
Δεν έχει οριστεί.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_en-GB.xtb chromium-150.0.7871.114/components/strings/components_strings_en-GB.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_en-GB.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_en-GB.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Roofing
Search engines
– ask
+No results found
Update passport
Combat Sports
@@ -4708,6 +4709,7 @@
Create note
The administrator of this device has installed applications for additional functions. Applications have access to some of your data.
Local crash context:
+Translate to
Turning off aeroplane mode
Website cookies (signed-in state on recently visited websites will be preserved)
Not set.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_es-419.xtb chromium-150.0.7871.114/components/strings/components_strings_es-419.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_es-419.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_es-419.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Tejados
Motores de búsqueda
- Preguntarle a
+No se encontraron resultados
Actualizar el pasaporte
Deportes de combate
@@ -4709,6 +4710,7 @@
Crear nota
El administrador de este dispositivo instaló aplicaciones para funciones adicionales. Las aplicaciones tienen acceso a algunos de tus datos.
Contexto de falla local:
+Traducir al
Desactivar el modo avión
Cookies de sitios web (se conservará el estado de acceso en los sitios web visitados recientemente)
Sin establecer
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_es.xtb chromium-150.0.7871.114/components/strings/components_strings_es.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_es.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_es.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Tejados
Buscadores
- Preguntar a
+No se han encontrado resultados
Actualizar pasaporte
Deportes de contacto
@@ -4708,6 +4709,7 @@
Crear nota
El administrador de este dispositivo ha instalado aplicaciones que aportan funciones adicionales. Las aplicaciones tienen acceso a algunos de tus datos.
Contexto del fallo local:
+Traducir al
Desactivar el modo Avión
Cookies de sitios web (se conservará el estado de sesión iniciada en los sitios web visitados recientemente)
No establecida
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_et.xtb chromium-150.0.7871.114/components/strings/components_strings_et.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_et.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_et.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Katusetööd
Otsingumootorid
– küsige mudelilt
+Ei leitud ühtegi tulemust
Värskenda passi
Võitlussport
@@ -4708,6 +4709,7 @@
Märkme loomine
Seadme administraator on installinud rakendused, mis hõlmavad lisafunktsioone. Rakendustel on juurdepääs teie mõningatele andmetele.
Kohaliku kokkujooksmise kontekst:
+Tõlke sihtkeel
Lülitage lennurežiim välja
Veebisaidi küpsised (säilitatakse hiljuti külastatud veebisaitide sisselogitud olek)
Määramata.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_eu.xtb chromium-150.0.7871.114/components/strings/components_strings_eu.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_eu.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_eu.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
Teilatuen mantentze-lanak
Bilatzaileak
- Galdetu zerbitzuari
+Ez da aurkitu emaitzarik
Eguneratu pasaportea
Borroka-kirolak
@@ -4702,6 +4703,7 @@
Sortu oharra
Gailuaren administratzaileak aplikazio batzuk instalatu ditu, funtzio gehigarriak izan ditzazun. Aplikazioek zure datu batzuk atzi ditzakete.
Gailuko hutsegitearen testuingurua:
+Itzuli hizkuntza honetara:
Hegaldi modua desaktibatu.
Webguneen cookieak (azkenaldian bisitatu dituzun webguneetako saio-hasierak mantenduko dira)
Ez da ezarri.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_fa.xtb chromium-150.0.7871.114/components/strings/components_strings_fa.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_fa.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_fa.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -304,7 +304,7 @@
{NUM_REVIEWS,plural, =0{مشاهده ۰ مرور}=1{مشاهده ۱ مرور}one{مشاهده همه # مرور}other{مشاهده همه # مرور}}
افراد و اجتماع
لباس زیر
-صفحه شرایط خدمات «حالا خرید کنید، بعداً بپردازید». صفحهکلید پنهان است.
+صفحه شرایط خدمات «الآن خریدن، پراخت بعداً». صفحهکلید پنهان است.
آبوهوا
این ایمیل بهطور خودکار درستیسنجی شود؟
کارآیی
@@ -1305,7 +1305,7 @@
اوه، نه!
سفر خانوادگی
دیدن شرایط مزایای کارت
-فهرست صادرکنندگان «حالا خرید کنید، بعداً بپردازید» بسته شده است.
+فهرست صادرکنندگان «الآن خریدن، پراخت بعداً» بسته شده است.
اطلاعات گواهی
ورزشهای سنگین
اطلاعاتتان را در ذخیره کنید تا کارهایی مانند پر کردن فرمها در محصولات Google را سریعتر انجام دهید. در مربوط به میتوانید اطلاعاتتان را مدیریت کنید
@@ -1313,7 +1313,7 @@
معمولاً ازطریق اتصال ایمن به سایتها متصل میشوید، اما این بار Chrome نتوانست از اتصال ایمن استفاده کند. ممکن است مهاجمی درحال تلاش برای استراق سمع یا تغییر اتصال شبکه شما باشد. درباره این هشدار بیشتر بدانید
کاهش قیمت
کاربرد کلید گواهی
-صفحه خطای «حالا خرید کنید، بعداً بپردازید». صفحهکلید پنهان است.
+صفحه خطای «الآن خریدن، پراخت بعداً». صفحهکلید پنهان است.
مدیریت اطلاعات سفر
سرویس وصله
حذف کردن دادههای مرور…
@@ -1329,7 +1329,7 @@
فعالیتتان در وب تحتنظارت است
پایین
شیشه
-صفحه پیشرفت «حالا خرید کنید، بعداً بپردازید» بهصورت نیمه باز شده است.
+صفحه پیشرفت «الآن خریدن، پراخت بعداً» بهصورت نیمه باز شده است.
وقتیکه سازمانتان ذخیرهسازی در «حساب Google» شما را محدود میکند، نمیتوانید زبانهها را همرسانی کنید یا با دیگران مشارکت کنید
«حالت هوشوارهای» با این پیشنهاد باز میشود.
Statement
@@ -1724,7 +1724,7 @@
نحوه تأیید هویتتان را انتخاب کنید
سرپرست شما پیکربندی را بهگونهای انجام داده است که در فضای ذخیرهسازی تحتمدیریت سازمان ذخیره شوند. این فایلها ممکن است پایش و بررسی شوند و وقتی آنها را حذف میکنید نگه داشته شوند.
دکمه ایجاد سایت؛ برای ایجاد سریع سایت جدید در Google Sites، آن را فعال کنید
-برای پنهان کردن گزینههای «حالا خرید کنید، بعداً بپردازید»، به بروید
+برای پنهان کردن گزینههای «پرداخت بعداً»، به بروید
از اثر انگشت برای تکمیل گذرواژهها استفاده میکنید
فروش بلیط رویداد
بازنشانی تأیید شد.
@@ -2020,7 +2020,7 @@
American Express
پاکت چینی شماره ۴
{COUNT,plural, =1{صفحه ۱}one{صفحه {COUNT}}other{صفحه {COUNT}}}
-صفحه پیشرفت «حالا خرید کنید، بعداً بپردازید» بسته شده است.
+صفحه پیشرفت «الآن خریدن، پراخت بعداً» بسته شده است.
{NUM_TABS,plural, =1{۱ برگه}one{# برگه}other{# برگه}}
از اتصال ایمن ازطریق HTTPS پشتیبانی نمیکند
آخرین زبانهها
@@ -2090,7 +2090,7 @@
برای اینکه سابقه مرور را بهروشی قدرتمندتر جستجو کنید، این گزینه را روشن کنید:
فیلم
تحصیل در خارج
-صفحه خطای «حالا خرید کنید، بعداً بپردازید» بهصورت کامل باز شده است.
+صفحه خطای «الآن خریدن، پراخت بعداً» بهصورت کامل باز شده است.
اتصال شما به این سایت کاملاً امن نیست
نه
A4x4
@@ -2345,11 +2345,12 @@
صفحه ترجمه شود؟
مشاهده شماره کارت مجازی
همین الآن ایجاد شد
-یک ارائهدهنده «حالا خرید کنید، بعداً بپردازید» انتخاب کنید
+یک ارائهدهنده «پرداخت بعداً» انتخاب کنید
دکمه «بستن پنجرههای ناشناس»؛ برای بستن همه پنجرهها ناشناسی که درحالحاضر باز هستند، آن را فعال کنید
خدمات سقف
موتورهای جستجو
- از بپرسید
+هیچ نتیجهای یافت نشد
بهروز کردن گذرنامه
ورزشهای رزمی
@@ -2627,7 +2628,7 @@
پاکت (پنبهای)
آخر هفته
بسکتبال
-صفحه خطای «حالا خرید کنید، بعداً بپردازید» بهصورت نیمه باز شده است.
+صفحه خطای «الآن خریدن، پراخت بعداً» بهصورت نیمه باز شده است.
ویرایش کردن کارت شناسایی
نشانی وب نامعتبر است.
فوتبال
@@ -2711,7 +2712,7 @@
خطمشیهای مرورگر اعمالشده در نمایه کاری شما
درهرصورت ضبط شود
ارائهکننده کارت شما میخواهد هویت شما را تأیید کند
-صفحه پیشرفت «حالا خرید کنید، بعداً بپردازید». صفحهکلید پنهان است.
+صفحه پیشرفت «الآن خریدن، پراخت بعداً». صفحهکلید پنهان است.
۴۶۰ × ۳۵۰ میلیمتر
{0,plural, =1{خطمشی سرپرست توصیه نمیکند این فایل را در کپی کنید}one{خطمشی سرپرست توصیه نمیکند این فایل را در کپی کنید}other{خطمشی سرپرست توصیه نمیکند این فایلها را در کپی کنید}}
گروه زبانه «» دیگر دردسترس نیست
@@ -2812,7 +2813,7 @@
قالب نامعتبر است: انتظار میرود فهرستی از الگوها وجود داشته باشد.
-
پشتهساز ۴
-«حالا خرید کنید، بعداً بپردازید» در Google Pay دردسترس است
+«الآن خریدن، پراخت بعداً» در Google Pay دردسترس است
قبلاز انتقال باید بررسی شود
درهرصورت منتقل شود
نشانی وب صفحههایی که بازدید میکنید برای تجزیهوتحلیل به Google Cloud یا اشخاص ثالث ارسال میشود و ممکن است برای سرپرستتان قابلمشاهده باشد. برای مثال، این نشانیها ممکن است برای شناسایی وبسایتهای غیرایمن اسکن شوند یا وبسایتها براساس قوانینی که سرپرست تنظیم میکند فیلتر شوند.
@@ -2864,7 +2865,7 @@
ماشین ابری
نصبهای برنامه وب
دکمه ایجاد یادداشت؛ برای ایجاد سریع یادداشت جدید در Google Keep، آن را فعال کنید
-نشانیها و موارد دیگر
+نشانیها و غیره
نشانی وب این سایت در اینترانت شرکت، سازمان یا محل تحصیل با نشانی وب یک وبسایت خارجی یکسان است.
با سرپرست سیستم تماس بگیرید.
@@ -3276,7 +3277,7 @@
روی کارت درج شده است
بارگیری پیوست
رابطهای Chrome Enterprise
-صفحه پیشرفت «حالا خرید کنید، بعداً بپردازید» بهصورت کامل باز شده است.
+صفحه پیشرفت «الآن خریدن، پراخت بعداً» بهصورت کامل باز شده است.
جزئیات بیشتر
، برای پرسیدن از «حالت هوشوارهای» در «جستجوی Google»، کلید Enter را فشار دهید
پاکت چینی شماره ۲
@@ -4406,7 +4407,7 @@
سایت را ترک میکنید؟
نمایش اطلاعات حساس
بهترین سرعت
-صفحه خطای «حالا خرید کنید، بعداً بپردازید» بسته شد.
+صفحه خطای «الآن خریدن، پراخت بعداً» بسته شد.
هر هدفی
محتوای صفحه تسویهحساب برای ارائه این گزینهها، با Google همرسانی میشود.
تخفیف پیدا شد
@@ -4422,7 +4423,7 @@
بدون کارمزد، با نرخ درصدی سالانه ۰٪ (مشروط به واجدشرایط بودن)
هدف پرداز چاپ
برای ذخیره کردن نماگرفت، به سیستم Microsoft OneDrive وارد شوید
-«حالا خرید کنید، بعداً بپردازید» درحالحاضر دردسترس نیست. دوباره امتحان کنید یا روش پرداخت دیگری را انتخاب کنید.
+«الآن خریدن، پراخت بعداً» درحالحاضر دردسترس نیست. دوباره امتحان کنید یا روش پرداخت دیگری را انتخاب کنید.
– برای نمایش مکاننما، || را فشار دهید
تنظیمات پرداخت
اگر املا صحیح است، «عیبیابی شبکه» را اجرا کنید.
@@ -4439,7 +4440,7 @@
سازمانتان به شما اجازه نمیدهد به سیستم وارد شوید
صنعت هوانوردی
بلیتها، رویدادها، و سایر اطلاعات از صفحههایی که بازدید میکنید — نه فقط اطلاعات فرمهایی که پر میکنید — را ذخیره کنید. سپس میتوانید به مجوزهایتان، مثل بلیتهای رویداد و کارتهای وفاداری، دسترسی سریع داشته باشید. اطلاعات ذخیرهشده شما میتوانند در دستگاههایتان و در همه محصولات Google نشان داده شود.
-صفحه شرایط خدمات «حالا خرید کنید، بعداً بپردازید» بسته شد.
+صفحه شرایط خدمات «الآن خریدن، پراخت بعداً» بسته شد.
نشانی محل کار،
نشانی بهروزرسانی شود؟
جلد
@@ -4477,7 +4478,7 @@
مقدار «» رنگ hex نامعتبر است.
مشاهدهٔ جزئیات
PKCS #1 SHA-384 با رمزگذاری RSA
-فهرست صادرکنندگان «حالا خرید کنید، بعداً بپردازید» موجود برای پرداخت قسطی. صفحهکلید پنهان است.
+فهرست صادرکنندگان «الآن خریدن، پراخت بعداً» موجود برای پرداخت قسطی. صفحهکلید پنهان است.
تعداد درخواستها بیش از حد است
دستگاه خروجی
{TIME_DIMENSION,plural, =0{ دقیقه پیش}=1{ ساعت پیش}one{ روز پیش}other{ روز پیش}}
@@ -4486,7 +4487,7 @@
خودرو شاسیبلند
در حال حاضر نمیتوانید از بازدید کنید زیرا این وبسایت اعتبارنامههای درهمی ارسال کرده است که Chrome نمیتواند پردازش کند. معمولاً خطاهای شبکه و حملهها موقتی هستند، بنابراین احتمالاً این صفحه بعداً کار خواهد کرد.
-فهرست صادرکنندگان «حالا خرید کنید، بعداً بپردازید» موجود برای پرداخت قسطی بهصورت کامل باز شده است.
+فهرست صادرکنندگان «الآن خریدن، پراخت بعداً» موجود برای پرداخت قسطی بهصورت کامل باز شده است.
بههم چسباندن
همرسانی صفحهنمایش با ازسر گرفته شد
سازمانتان استفاده از DevTools را در این صفحه مسدود کرده است
@@ -4709,6 +4710,7 @@
یادداشت ایجاد کنید
سرپرست این دستگاه برنامههایی را برای افزودن عملکردهای بیشتر نصب کرده است. این برنامهها به برخیاز دادههای شما دسترسی دارند.
بافت خرابی محلی:
+ترجمه به
خاموش کردن حالت هواپیما
کوکیهای وبسایت (وضعیت ورود به سیستم در وبسایتهای اخیراً بازدیدشده حفظ خواهد شد)
تنظیم نشده.
@@ -4787,7 +4789,7 @@
تجارت خردهفروشی
موضوعهای مسدودشده
۴۵۰ × ۳۰۰ میلیمتر
-نشانیها و موارد دیگر
+نشانیها و غیره
نمایش جزئیات برنامهنویس
منگنه در پایین سمت چپ
این نشانی از «حساب Google» شما () حذف خواهد شد
@@ -4867,7 +4869,7 @@
راستیآزمایی سرویس گیرنده TLS WWW
تجهیزات ورزشهای آبی
علمی-تخیلی و فانتزی
-صفحه شرایط خدمات «حالا خرید کنید، بعداً بپردازید» بهصورت کامل باز شده است.
+صفحه شرایط خدمات «الآن خریدن، پراخت بعداً» بهصورت کامل باز شده است.
موضوعهای آگهی کمک میکنند سایتها آگهیهای مربوط به شما نشان دهند و درعینحال از سابقه مرور و هویت شما محافظت میکنند. Chrome میتواند براساس سابقه مرور اخیرتان موضوعات موردعلاقه شما را ثبت کند. بعداً سایتی که از آن بازدید میکنید میتواند برای شخصیسازی آگهیهایی که میبینید، موضوعهای مرتبط را از Chrome درخواست کند.
انجمن آنلاین
استفاده از دستگاه
@@ -4960,7 +4962,7 @@
یوگا و پیلاتس
{0,plural, =1{فایل محرمانه منتقل شود؟}one{فایل محرمانه منتقل شود؟}other{فایلهای محرمانه منتقل شود؟}}
کاغذ (سربرگ)
-فهرست صادرکنندگان «حالا خرید کنید، بعداً بپردازید» موجود برای پرداخت قسطی بهصورت نیمه باز شده است.
+فهرست صادرکنندگان «الآن خریدن، پراخت بعداً» موجود برای پرداخت قسطی بهصورت نیمه باز شده است.
A4
دکمه «ترجمه صفحه»؛ برای ترجمه کردن این صفحه بااستفاده از «ترجمه Google»، آن را فعال کنید
موتورسیکلت
@@ -5117,7 +5119,7 @@
حالت هوشوارهای
-
میکروفونها ()
-صفحه شرایط خدمات «حالا خرید کنید، بعداً بپردازید» بهصورت نیمه باز شده است.
+صفحه شرایط خدمات «الآن خریدن، پراخت بعداً» بهصورت نیمه باز شده است.
موتور جستجوی پیشفرضتان به شما امکان میدهد در وب جستجو کنید. میتوانید آن را در تنظیمات تغییر دهید.
برای این کنشها، خطمشی باید روی تنظیم شود:
۳۶ × ۲۴ اینچ
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_fi.xtb chromium-150.0.7871.114/components/strings/components_strings_fi.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_fi.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_fi.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Kattotyöt
Hakukoneet
- Kysy
+Tuloksia ei löytynyt
Päivitä passi
Taistelulajit
@@ -4709,6 +4710,7 @@
Luo muistiinpano
Laitteen järjestelmänvalvoja on asentanut lisätoimintosovelluksia. Sovelluksilla on pääsy osaan datastasi.
Kaatumisen paikallinen konteksti:
+Käännä kielelle
Poista lentokonetila käytöstä.
Verkkosivustojen evästeet (kirjautumistila äskettäin avatuilla verkkosivustoilla säilyy)
Ei määritetty.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_fil.xtb chromium-150.0.7871.114/components/strings/components_strings_fil.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_fil.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_fil.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Pag-aayos ng Bubong
Mga search engine
- Magtanong sa
+Walang Nakitang Resulta
I-update ang passport
Combat Sports
@@ -4708,6 +4709,7 @@
Gumawa ng tala
Nag-install ang administrator ng device na ito ng mga application para sa mga karagdagang function. May access ang mga application sa ilan sa iyong data.
Konteksto ng Lokal na Pag-crash:
+Isalin sa
I-off ang airplane mode
Cookies ng website (papanatilihin ang status na naka-sign in sa mga kamakailang binisitang website)
Hindi nakatakda.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_fr-CA.xtb chromium-150.0.7871.114/components/strings/components_strings_fr-CA.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_fr-CA.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_fr-CA.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Toiture
Moteurs de recherche
– Demander à
+Aucun résultat
Mettez à jour le passeport
Sports de combat
@@ -4707,6 +4708,7 @@
Créer une note
L'administrateur de cet appareil a installé des applications offrant des fonctions supplémentaires. Les applications ont accès à certaines de vos données.
Contexte du plantage local :
+Langue cible
De désactiver le mode Avion
Témoins de sites Web (l'état de connexion sur les sites Web récemment visités sera conservé)
Non configurée.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_fr.xtb chromium-150.0.7871.114/components/strings/components_strings_fr.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_fr.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_fr.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Couverture de toits
Moteurs de recherche
– Demander à
+Aucun résultat trouvé
Mettez à jour le passeport
Sports de combat
@@ -4709,6 +4710,7 @@
Créer une note
L'administrateur de cet appareil a installé des applis permettant d'utiliser des fonctions supplémentaires. Ces applis ont accès à certaines de vos données.
Contexte de plantage local :
+Langue cible
Désactivez le mode Avion.
Cookies de sites Web (l'état connecté sur les sites Web consultés récemment sera préservé)
Non définie
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_gl.xtb chromium-150.0.7871.114/components/strings/components_strings_gl.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_gl.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_gl.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Servizos de tellados
Motores de busca
- Preguntar a
+Non se encontraron resultados
Actualiza o pasaporte
Deportes de contacto
@@ -4707,6 +4708,7 @@
Crear nota
O administrador deste dispositivo instalou aplicacións que ofrecen funcións adicionais. As aplicacións teñen acceso a algúns dos teus datos.
Contexto do fallo local:
+Traducir ao
Desactivar o modo avión
Cookies de sitios web (conservarase o estado de sesión iniciada nos sitios web visitados recentemente)
Sen configurar.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_gu.xtb chromium-150.0.7871.114/components/strings/components_strings_gu.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_gu.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_gu.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
છતને લગતું કામ
શોધ એન્જિન
- ને પૂછો
+કોઈ પરિણામ મળ્યું નથી
પાસપોર્ટની માહિતી અપડેટ કરો
લડાઈની રમતો
@@ -4708,6 +4709,7 @@
નોંધ બનાવો
આ ડિવાઇસના ઍડમિનિસ્ટ્રેટર દ્વારા વધારાના કાર્યો માટે ઍપ્લિકેશન ઇન્સ્ટૉલ કરવામાં આવી છે. ઍપ્લિકેશન તમારા અમુક ડેટાનો ઍક્સેસ ધરાવે છે.
સ્થાનિક ક્રૅશ સંદર્ભ:
+આ ભાષામાં અનુવાદ કરો
એરપ્લેન મોડ બંધ કરીને
વેબસાઇટ કુકી (તાજેતરમાં મુલાકાત લીધેલી વેબસાઇટ પર સાઇન ઇન કર્યાનું સ્ટેટસ જાળવી રાખવામાં આવશે)
સેટ નથી.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_hi.xtb chromium-150.0.7871.114/components/strings/components_strings_hi.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_hi.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_hi.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
छत ठीक करना
सर्च इंजन
- से पूछें
+कोई भी नतीजा नहीं मिला
पासपोर्ट की जानकारी अपडेट करें
कॉम्बैट स्पोर्ट्स
@@ -4708,6 +4709,7 @@
नोट बनाएं
इस डिवाइस के एडमिन ने अन्य फ़ंक्शन के लिए ऐप्लिकेशन इंस्टॉल किए हैं. ऐप्लिकेशन आपका कुछ डेटा ऐक्सेस कर सकते हैं.
स्थानीय खराबी रिपोर्ट से जुड़ी जानकारी:
+इस भाषा में अनुवाद पाएं
हवाई जहाज़ मोड बंद करें
वेबसाइट की कुकी (हाल ही में विज़िट की गई वेबसाइटों पर साइन-इन करने की स्थिति सेव रहेगी)
सेट नहीं है.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_hr.xtb chromium-150.0.7871.114/components/strings/components_strings_hr.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_hr.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_hr.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
Krovopokrivanje
Tražilice
– Pitajte
+Nema rezultata
Ažurirajte putovnicu
Borilački sportovi
@@ -4707,6 +4708,7 @@
Izrada bilješke
Administrator uređaja instalirao je aplikacije za dodatne funkcije. Aplikacije imaju pristup nekim vašim podacima.
Lokalni kontekst rušenja:
+Jezik prijevoda
isključite način rada u zrakoplovu
Kolačići web-lokacije (sačuvat će se prijavljeno stanje na nedavno posjećenim web-lokacijama)
Nije postavljeno.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_hu.xtb chromium-150.0.7871.114/components/strings/components_strings_hu.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_hu.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_hu.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -458,7 +458,7 @@
Figyelmen kívül hagyva, mivel a(z) nincs erre az értékre állítva: .
A(z) webhely állandó jelleggel adatokat szeretne tárolni a helyi számítógépen
2. tálca
-Jelszavak mentése és használata a Google-fiókból
+Címek mentése és használata a Google-fiókból
Böngészés módban átválthat az Űrlapok módra, így a balra/jobbra nyíllal áttekintheti az árváltozásokat a diagramon
Mozgásérzékelők
3. postaláda
@@ -2346,6 +2346,7 @@
Tetőfedés
Keresők
– megkérdezése
+Nincs találat
Útlevél frissítése
Küzdősportok
@@ -4706,6 +4707,7 @@
Jegyzet létrehozása
Az eszköz rendszergazdája alkalmazásokat telepített további funkciók használata céljából. Az alkalmazások hozzáférhetnek az Ön bizonyos adataihoz.
Összeomlás helyi kontextusa:
+Fordítás a következő nyelvre:
Repülős üzemmód kikapcsolása
Webhelycookie-k (a nemrégiben felkeresett webhelyeken való bejelentkezett állapot megmarad)
Nincs beállítva.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_hy.xtb chromium-150.0.7871.114/components/strings/components_strings_hy.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_hy.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_hy.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -831,7 +831,7 @@
Ցույց տալ միացման մանրամասները
կայքը հայցում է ձեր ձեռքերի շարժումները հետագծելու թույլտվություն
Նախքան ներբեռնելը ստուգեք ֆայլերը
-Պահել հասցեները և դրանցով ինքնալրացնել ձևերը
+Պահել և ավտոմատ լրացնել հասցեները
«» էջը ջնջվեց
Ճամփորդություն
Անձնագրեր
@@ -2355,6 +2355,7 @@
Տանիքածածկում
Որոնիչներ
– Հարցրեք -ին
+Ոչինչ չի գտնվել
Թարմացնել անձնագիրը
Մարտական սպորտաձևեր
@@ -4716,6 +4717,7 @@
Գրառման ստեղծում
Այս սարքի ադմինիստրատորը լրացուցիչ գործառույթների համար հավելվածներ է տեղադրել։ Ձեր տվյալների մի մասը հասանելի է այդ հավելվածներին։
Խափանման լոկալ կոնտեքստը՝
+Թարգմանության լեզու
Անջատել Ավիառեժիմը
Կայքի քուքիներ (վերջերս այցելած կայքերում հաշիվ մտնելու տվյալները կպահվեն)
Կարգավորված չէ:
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_id.xtb chromium-150.0.7871.114/components/strings/components_strings_id.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_id.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_id.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Pembuatan Atap
Mesin telusur
- Tanya
+Hasil Tidak Ditemukan
Perbarui paspor
Olahraga Bertarung
@@ -2377,7 +2378,7 @@
Menggunakan kamera Anda
Buka Ulang Chromium
Kartu virtual
-Update
+Perbarui
Saran penelusuran
, tab dipilih, dari , gunakan panah kiri atau kanan untuk berpindah tab
Kelola sandi...
@@ -4706,6 +4707,7 @@
Buat catatan
Administrator perangkat ini telah menginstal aplikasi untuk fungsi tambahan. Aplikasi memiliki akses ke sebagian data Anda.
Konteks Error Lokal:
+Terjemahkan ke
Nonaktifkan mode pesawat
Cookie situs (status login di situs yang baru-baru ini dikunjungi akan disimpan)
Tidak disetel.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_is.xtb chromium-150.0.7871.114/components/strings/components_strings_is.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_is.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_is.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Þakviðgerðir og þakefni
Leitarvélar
- Spurðu
+Engar niðurstöður fundust
Uppfæra vegabréf
Bardagaíþróttir
@@ -4707,6 +4708,7 @@
Búa til glósu
Kerfisstjóri þessa tækis hefur sett upp forrit fyrir fleiri aðgerðir. Forrit hafa aðgang að einhverjum gögnum í þinni eigu.
Samhengi staðbundins hruns:
+Þýða yfir á
Slökkva á flugstillingu
Fótspor vefsvæða (innskráningarstaða á vefsvæðum sem nýlega voru heimsótt verður varðveitt)
Ekkert valið.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_it.xtb chromium-150.0.7871.114/components/strings/components_strings_it.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_it.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_it.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2346,6 +2346,7 @@
Installazione e riparazione di tetti
Motori di ricerca
- Chiedi a
+Nessun risultato trovato
Aggiorna il passaporto
Sport di combattimento
@@ -4704,6 +4705,7 @@
Crea nota
L'amministratore di questo dispositivo ha installato applicazioni per funzioni aggiuntive. Le applicazioni hanno accesso ad alcuni tuoi dati.
Contesto arresto anomalo locale:
+Traduci in
Disattivare la modalità aereo
Cookie dei siti web (lo stato di accesso sui siti web visitati di recente verrà conservato)
Non impostata.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_iw.xtb chromium-150.0.7871.114/components/strings/components_strings_iw.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_iw.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_iw.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
טיפול בגגות
מנועי חיפוש
– לשאול את
+לא נמצאו תוצאות
לעדכן את פרטי הדרכון?
אומנויות לחימה
@@ -4713,6 +4714,7 @@
יצירת הערה
האדמין של המכשיר הזה התקין אפליקציות שמספקות פונקציות נוספות. לאפליקציות יש גישה לחלק מהנתונים שלך.
ההקשר המקומי של הקריסה:
+תרגום ל
לכבות את מצב הטיסה
קובצי Cookie של אתרים (מצב הכניסה יישמר באתרים שביקרת בהם לאחרונה)
לא מוגדר.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ja.xtb chromium-150.0.7871.114/components/strings/components_strings_ja.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ja.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ja.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -1441,7 +1441,7 @@
の CVC を入力
ライトレッド
ローカル ファイルは に削除されます。ビジネスや個人の重要なデータは外部に保存してください。
-カードのメリット
+カード特典
Google ウォレットに保存できませんでした
シークレット ウインドウでリンクを開く
です。Tab、Enter キーの順に押すと、ブラウザのデザインをカスタマイズできます
@@ -2349,6 +2349,7 @@
屋根材、ルーフ修理
検索エンジン
- に質問
+一致する検索結果は見つかりませんでした
パスポート情報を更新
格闘技
@@ -4708,6 +4709,7 @@
メモを作成
このデバイスの管理者によって、機能を追加するアプリケーションがインストールされました。このアプリケーションでは、ユーザーデータの一部にアクセスする場合があります。
ローカル クラッシュ コンテキスト:
+訳文の言語
機内モードをオフにする
ウェブサイト Cookie(最近アクセスしたウェブサイトのログイン状態が保持されます)
未設定
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ka.xtb chromium-150.0.7871.114/components/strings/components_strings_ka.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ka.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ka.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
გადახურვა
საძიებო სისტემები
— ჰკითხეთ -ს
+შედეგები არ მოიძებნა
პასპორტის განახლება
სპორტის საბრძოლო სახეობები
@@ -4707,6 +4708,7 @@
ჩანიშვნის შექმნა
ამ მოწყობილობის ადმინისტრატორმა დააინსტალირა აპლიკაციები დამატებითი ფუნქციების უზრუნველსაყოფად. აღნიშნულ აპლიკაციებს აქვს წვდომა თქვენს ზოგიერთ მონაცემზე.
ავარიულად გათიშვის ადგილობრივი კონტექსტი:
+თარგმნა შემდეგ ენაზე:
თვითმფრინავის რეჟიმის გამორთვა
ვებსაიტის ქუქი-ჩანაწერები (შესულ რეჟიმში არსებული ან ბოლოს მონახულებული ვებსაიტები შენარჩუნდება)
არ არის დაყენებული.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_kk.xtb chromium-150.0.7871.114/components/strings/components_strings_kk.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_kk.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_kk.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
Шатырларды жөндеу
Іздеу жүйелері
– көмекшісінен сұрау
+Нәтижелер табылмады.
Паспорт деректерін жаңартыңыз
Спорттық жекпе-жек
@@ -4706,6 +4707,7 @@
Ескертпе жасау
Бұл құрылғының әкімшісі қосымша функциялар үшін қолданбалар орнатты. Қолданбалар кейбір деректерді пайдалана алады.
Пайдаланушы компьютеріндегі жаңылыс мәнмәтіні:
+Аударма тілі:
Ұшақ режимін сөндіру
Веб-сайттың cookie файлдары (соңғы кірген веб-сайттардағы аккаунтқа кірген күй сақталады)
Орнатылмаған.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_km.xtb chromium-150.0.7871.114/components/strings/components_strings_km.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_km.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_km.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2353,6 +2353,7 @@
ការងារដំបូល
ម៉ាស៊ីនស្វែងរក
- សួរ
+រកមិនឃើញលទ្ធផលទេ
ធ្វើបច្ចុប្បន្នភាពលិខិតឆ្លងដែន
កីឡាបែបប្រយុទ្ធ
@@ -4713,6 +4714,7 @@
បង្កើតកំណត់ចំណាំ
អ្នកគ្រប់គ្រងឧបករណ៍នេះបានដំឡើងកម្មវិធីសម្រាប់មុខងារបន្ថែម។ កម្មវិធីមានសិទ្ធិចូលប្រើទិន្នន័យមួយចំនួនរបស់អ្នក។
បរិបទនៃការគាំងមូលដ្ឋាន៖
+បកប្រែជា
សូមបិទរបៀបលើយន្តហោះ
ខូគីគេហទំព័រ (ស្ថានភាពដែលបានចូលគណនីនៅលើគេហទំព័រដែលបានចូលមើលថ្មីៗនឹងត្រូវបានរក្សាទុក)
មិនបានកំណត់។
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_kn.xtb chromium-150.0.7871.114/components/strings/components_strings_kn.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_kn.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_kn.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2346,6 +2346,7 @@
ಮೇಲ್ಛಾವಣಿ ದುರಸ್ತಿ
ಹುಡುಕಾಟ ಇಂಜಿನ್ಗಳು
- ಅನ್ನು ಕೇಳಿ
+ಯಾವುದೇ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬಂದಿಲ್ಲ
ಪಾಸ್ಪೋರ್ಟ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ
ಕಾಳಗ ಸ್ಪರ್ಧೆಗಳು
@@ -4704,6 +4705,7 @@
ಟಿಪ್ಪಣಿ ರಚಿಸಿ
ಈ ಸಾಧನದ ನಿರ್ವಾಹಕರು ಹೆಚ್ಚುವರಿ ಕಾರ್ಯವಿಧಾನಗಳಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ. ಅಪ್ಲಿಕೇಶನ್ಗಳು ನಿಮ್ಮ ಕೆಲವೊಂದು ಡೇಟಾಗೆ ಆ್ಯಕ್ಸೆಸ್ ಅನ್ನು ಹೊಂದಿವೆ.
ಸ್ಥಳೀಯ ಕ್ರ್ಯಾಶ್ನ ಸಂದರ್ಭ:
+ಈ ಭಾಷೆಗೆ ಅನುವಾದಿಸಿ
ಏರ್ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಲಾಗುತ್ತಿದೆ
ವೆಬ್ಸೈಟ್ ಕುಕಿಗಳು (ಇತ್ತೀಚೆಗೆ ಭೇಟಿ ನೀಡಿದ ವೆಬ್ಸೈಟ್ಗಳಲ್ಲಿ ಸೈನ್-ಇನ್ ಸ್ಥಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸಲಾಗುತ್ತದೆ)
ಹೊಂದಿಸಿಲ್ಲ.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ko.xtb chromium-150.0.7871.114/components/strings/components_strings_ko.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ko.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ko.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
지붕 수리
검색엔진
- 에게 질문하기
+검색 결과 없음
여권 업데이트
격투기
@@ -4707,6 +4708,7 @@
메모 만들기
이 기기의 관리자가 추가 기능을 위한 애플리케이션을 설치했습니다. 애플리케이션에는 내 데이터 중 일부에 액세스할 권한이 있습니다.
로컬 비정상 종료 컨텍스트:
+도착어
비행기 모드 사용 중지
웹사이트 쿠키(최근 방문한 웹사이트의 로그인 상태는 유지됨)
설정 안됨
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ky.xtb chromium-150.0.7871.114/components/strings/components_strings_ky.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ky.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ky.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
Чатырды оңдоо кызматы
Издөө каражаттары
- 'дан сураңыз
+Натыйжалар табылган жок
Паспортту жаңыртыңыз
Күрөш спорту
@@ -4706,6 +4707,7 @@
Эскертүү түзүү
Бул түзмөктүн администратору кошумча функцияларды иштетүү үчүн колдонмолорду орнотту. Алар айрым нерселериңизге кире алат.
Компьютердин бузулуу идентификатору:
+Кайсы тилге:
Учак режимин өчүрүп көрүңүз
Вебсайттын cookie файлдары (акыркы кирген вебсайттардан чыгарылбайсыз)
Коюлган эмес.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_lo.xtb chromium-150.0.7871.114/components/strings/components_strings_lo.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_lo.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_lo.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
ມຸງຫຼັງຄາ
ເຄື່ອງຈັກຄົ້ນຫາ
- ຖາມ
+ບໍ່ພົບຜົນການຊອກຫາ
ອັບເດດໜັງສືຜ່ານແດນ
ກິລາຕໍ່ສູ້
@@ -4707,6 +4708,7 @@
ສ້າງບັນທຶກ
ຜູ້ເບິ່ງແຍງລະບົບຂອງອຸປະກອນນີ້ໄດ້ຕິດຕັ້ງແອັບພລິເຄຊັນສຳລັບຟັງຊັນເພີ່ມເຕີມແລ້ວ. ແອັບພລິເຄຊັນມີສິດເຂົ້າເຖິງບາງຂໍ້ມູນຂອງທ່ານ.
ບໍລິບົດການຂັດຂ້ອງພາຍໃນເຄື່ອງ:
+ແປພາສາເປັນ
ກຳລັງປິດໂໝດເຮືອບິນ
ຄຸກກີ້ຂອງເວັບໄຊ (ສະຖານະການເຂົ້າສູ່ລະບົບຢູ່ເວັບໄຊທີ່ເຂົ້າເບິ່ງຫຼ້າສຸດຈະໄດ້ຮັບການເກັບຮັກສາໄວ້)
ບໍ່ໄດ້ຕັ້ງ.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_lt.xtb chromium-150.0.7871.114/components/strings/components_strings_lt.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_lt.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_lt.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Stogų remontas ir priežiūra
Paieškos varikliai
– paklauskite „“
+Rezultatų nerasta
Atnaujinkite pasą
Imtynių sportas
@@ -4709,6 +4710,7 @@
Sukurti užrašą
Šio įrenginio administratorius įdiegė papildomų funkcijų programų. Naudojant programas galima pasiekti kai kuriuos jūsų duomenis.
Vietinės strigties kontekstas:
+Versti į
Išjungti lėktuvo režimą
Svetainių slapukai (prisijungimo būsena neseniai lankytose svetainėse bus išsaugota)
Nenustatyta.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_lv.xtb chromium-150.0.7871.114/components/strings/components_strings_lv.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_lv.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_lv.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2347,6 +2347,7 @@
Jumta seguma darbi
Meklētājprogrammas
— jautāt
+Nav atrasti rezultāti
Pases informācijas atjaunināšana
Cīņas sporta veidi
@@ -4706,6 +4707,7 @@
Izveidot piezīmi
Šīs ierīces administrators ir instalējis lietojumprogrammas papildu funkcijām. Lietojumprogrammām ir piekļuve dažiem jūsu datiem.
Lokālais avārijas konteksts:
+Tulkot šādā valodā:
Izslēdziet lidojuma režīmu.
Vietņu sīkfaili (tiks saglabāts pierakstīšanās statuss jūsu nesen apmeklētajās vietnēs)
Nav iestatīta.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_mk.xtb chromium-150.0.7871.114/components/strings/components_strings_mk.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_mk.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_mk.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Услуги за покриви
Пребарувачи
– Прашајте го
+Не се најдени резултати
Ажурирајте го пасошот
Боречки спортови
@@ -4707,6 +4708,7 @@
Создајте белешка
Администраторот на уредов инсталирал апликации за дополнителни функции. Апликациите имаат пристап до некои од податоците.
Контекст на локален пад:
+Преведи на
Да го исклучите авионскиот режим
Колачиња за веб-сајтови (најавената состојба на неодамна отворените веб-сајтови ќе се зачува)
Не е поставено.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ml.xtb chromium-150.0.7871.114/components/strings/components_strings_ml.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ml.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ml.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
റൂഫിംഗ്
തിരയൽ യന്ത്രങ്ങൾ
- എന്നതിനോട് ചോദിക്കുക
+ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല
പാസ്പോർട്ട് അപ്ഡേറ്റ് ചെയ്യുക
കോമ്പാറ്റ് സ്പോർട്സ്
@@ -4705,6 +4706,7 @@
കുറിപ്പ് സൃഷ്ടിക്കുക
ഈ ഉപകരണത്തിന്റെ അഡ്മിൻ, അധിക ഫംഗ്ഷനുകൾക്കുള്ള ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്നു. ആപ്പുകൾക്ക് നിങ്ങളുടെ ചില ഡാറ്റയിലേക്ക് ആക്സസ് ഉണ്ട്.
ലോക്കൽ ക്രാഷ് സന്ദർഭം:
+ഈ ഭാഷയിലേക്ക് വിവർത്തനം ചെയ്യുക
ഫ്ലൈറ്റ് മോഡ് ഓഫാക്കുന്നു
വെബ്സൈറ്റ് കുക്കികൾ (അടുത്തിടെ സന്ദർശിച്ച വെബ്സൈറ്റുകളിൽ സൈൻ ഇൻ ചെയ്ത നില സംരക്ഷിക്കും)
സജ്ജമാക്കിയിട്ടില്ല.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_mn.xtb chromium-150.0.7871.114/components/strings/components_strings_mn.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_mn.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_mn.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Дээвэр нөхөх, засах үйлчилгээ
Хайлтын систем
- -с асуух
+Илэрц олдсонгүй
Паспортыг шинэчлэх
Тулааны спортууд
@@ -4707,6 +4708,7 @@
Тэмдэглэл үүсгэх
Энэ төхөөрөмжийн администратор нэмэлт функцэд зориулж аппликэйшнүүдийг суулгасан. Аппликэйшнүүд таны зарим өгөгдөлд хандах эрхтэй.
Дотоод гэмтлийн контекст:
+Дараах руу орчуулах
Нислэгийн горимыг унтрааж байна
Вебсайтын күүки (саяхан зочилсон вебсайт дээрх нэвтэрсэн төлөвийг хадгална)
Тохиргоо хийгдээгүй.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_mr.xtb chromium-150.0.7871.114/components/strings/components_strings_mr.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_mr.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_mr.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
रूफिंग
शोध इंजिने
- ला विचारा
+कोणतेही परिणाम आढळले नाहीत
पासपोर्टसंबंधित माहिती अपडेट करा
द्वंद्व क्रीडा
@@ -4708,6 +4709,7 @@
टीप तयार करा
या डिव्हाइसच्या अॅडमिनिस्ट्रेटरने अतिरिक्त फंक्शनसाठी अॅप्लिकेशन इंस्टॉल केली आहेत. अॅप्लिकेशनकडे तुमच्या काही डेटाचा अॅक्सेस आहे.
स्थानिक क्रॅश संदर्भ:
+यामध्ये भाषांतर करा
विमान मोड बंद करा
वेबसाइट कुकी (अलीकडे भेट दिलेल्या वेबसाइटवरील साइन-इनची स्थिती कायम ठेवली जाईल)
सेट केलेले नाही.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ms.xtb chromium-150.0.7871.114/components/strings/components_strings_ms.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ms.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ms.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
Perkhidmatan bumbung
Enjin carian
- Tanya
+Tiada Hasil Carian Ditemukan
Kemas kinikan pasport
Sukan Tempur
@@ -4709,6 +4710,7 @@
Buat nota
Pentadbir peranti ini telah memasang aplikasi untuk fungsi tambahan. Aplikasi memiliki akses kepada sesetengah data anda.
Konteks Ranap Sistem Setempat:
+Terjemahkan kepada
Matikan mod pesawat
Kuki laman web (keadaan log masuk pada laman web yang dilawati baru-baru ini akan dikekalkan)
Tidak ditetapkan.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_my.xtb chromium-150.0.7871.114/components/strings/components_strings_my.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_my.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_my.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
အမိုး ပြုပြင်ခြင်း
ရှာဖွေမှု အင်ဂျင်
- ကို မေးပါ
+ရှာမတွေ့ပါ
နိုင်ငံကူးလက်မှတ် အပ်ဒိတ်လုပ်မလား
တိုက်ခိုက်ရေးအားကစား
@@ -4266,7 +4267,7 @@
သင်သုံးလိုက်သည့်စကားဝှက်ကို ဒေတာကျိုးပေါက်မှုတွင် တွေ့ရှိထားသည်။ သင့်စကားဝှက်ကို ယခုပြောင်းရန် ‘Google စကားဝှက်မန်နေဂျာ’ က အကြံပြုပါသည်။
ပုံနှိပ်အရည်အသွေး
ကာဆာကို ပြရန်၊ အက်ပ်များ ပြောင်းရန်၊ စာမျက်နှာကို ပြန်လည် စတင်ရန် (သို့) ပြန်သွားရန်
-Android ဆက်တင်များ တွင် ‘အဆင့်မြင့်ကာကွယ်ရေး’ ကို ဖွင့်ထားသောကြောင့် ဤဝဘ်ဆိုက်ကို ဆက်ပိတ်ထားပါမည်။ ဤသတိပေးချက်အကြောင်း ပိုလေ့လာရန်
+Android ဆက်တင်များ တွင် ‘အဆင့်မြင့်အကာအကွယ်’ ကို ဖွင့်ထားသောကြောင့် ဤဝဘ်ဆိုက်ကို ဆက်ပိတ်ထားပါမည်။ ဤသတိပေးချက်အကြောင်း ပိုလေ့လာရန်
ဤစက်ကိရိယာတွင် ဖိုင်များ သိမ်းပါ
အကူအညီ
အခြားစက်မှ လျှို့ဝှက်ကီးသုံးရန်
@@ -4709,6 +4710,7 @@
မှတ်စုရေးရန်
ဤစက်၏ စီမံခန့်ခွဲသူက ထပ်ဆောင်းဝန်ဆောင်မှုများအတွက် အပလီကေးရှင်းများ ထည့်သွင်းထားသည်။ အပလီကေးရှင်းများက သင့်ဒေတာအချို့ကို ဝင်သုံးခွင့်ရှိပါသည်။
စက်တွင်း ရပ်တန့်သွားမှု အခြေအနေ-
+ဤဘာသာသို့ ပြန်ဆိုရန်
လေယာဉ်ပျံမုဒ်ကို ပိတ်နေသည်
ဝဘ်ဆိုက် ကွတ်ကီးများ (မကြာသေးမီက ဝင်ကြည့်ထားသည့် ဝဘ်ဆိုက်များရှိ လက်မှတ်ထိုးဝင်ထားသော အခြေအနေကို ထိန်းသိမ်းထားပါမည်)
မသတ်မှတ်ရသေး
@@ -4716,7 +4718,7 @@
သင့်ဘရောင်ဇာကို စီမံပုံအကြောင်း ပိုမိုလေ့လာရန်
ကြိုက်ရာမေးရန်
ဈေးနှုန်း စောင့်ကြည့်ခြင်း
-အမျိုးအမည်မသိ သို့မဟုတ် ပံ့ပိုးမထားသည့် ကိရိယာ ( )
+အမျိုးအမည်မသိ သို့မဟုတ် ပံ့ပိုးမထားသည့် စက် ( )
Google Play ဝန်ဆောင်မှုများ
ကုဒ်အသစ် ရယူရန်
ကာစ်လုပ်ခြင်းအတွက် စက်စာရင်းကို ပြပါ
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ne.xtb chromium-150.0.7871.114/components/strings/components_strings_ne.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ne.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ne.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2347,6 +2347,7 @@
छानो मर्मत गर्ने सेवा
खोज इन्धनहरू
- लाई सोध्नुहोस्
+कुनै पनि परिणाम फेला परेन
राहदानीसम्बन्धी जानकारी अपडेट गर्नुहोस्
लडाइँ गर्ने गेमहरू
@@ -4705,6 +4706,7 @@
टिपोट सिर्जना गर्नुहोस्
यो डिभाइसका एड्मिनले थप सुविधाहरू प्राप्त गर्न विभिन्न एप इन्स्टल गरेका छन्। ती एपले तपाईंका केही जानकारी प्रयोग गर्न सक्छन्।
स्थानीय क्र्यासको सन्दर्भ:
+यो भाषामा अनुवाद गर्नुहोस्:
हवाइजहाज मोडलाई निष्क्रिय गर्नुहोस्
वेबसाइटका कुकीहरू (हालसालै खोलिएका वेबसाइटमा साइन इन गरिएको भएमा ती वेबसाइटमा साइन इन अवस्थामै राखिन्छ)
सेट गरिएको छैन।
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_nl.xtb chromium-150.0.7871.114/components/strings/components_strings_nl.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_nl.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_nl.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2343,6 +2343,7 @@
Dakbedekking
Zoekmachines
- Vragen aan
+Geen resultaten gevonden
Paspoort updaten
Vechtsporten
@@ -4701,6 +4702,7 @@
Notitie maken
De beheerder van dit apparaat heeft apps geïnstalleerd voor aanvullende functies. Apps hebben toegang tot sommige van je gegevens.
Lokale crashcontext:
+Vertalen naar het
Zet de vliegtuigmodus uit
Websitecookies (de ingelogde status op recent bezochte websites blijft bewaard)
Niet ingesteld.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_no.xtb chromium-150.0.7871.114/components/strings/components_strings_no.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_no.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_no.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Taktekking
Søkemotorer
– Spør
+Fant ingen resultater
Oppdater pass
Kampsport
@@ -4707,6 +4708,7 @@
Opprett et notat
Enhetsadministratoren har installert programmer for tilleggsfunksjoner. Programmene har tilgang til noen av dataene dine.
Lokal krasjkontekst:
+Oversett til
Slå av flymodus
Nettstedsinformasjonskapsler (påloggingsstatusen på nettsteder du nylig har besøkt, bevares)
Ikke angitt.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_or.xtb chromium-150.0.7871.114/components/strings/components_strings_or.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_or.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_or.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2346,6 +2346,7 @@
ରୁଫିଂ
ସର୍ଚ୍ଚ ଇଞ୍ଜିନ
- କୁ ପଚାରନ୍ତୁ
+କୌଣସି ଫଳାଫଳ ମିଳିଲା ନାହିଁ
ପାସପୋର୍ଟ ଅପଡେଟ କରନ୍ତୁ
କମ୍ବାଟ ସ୍ପୋର୍ଟ୍ସ
@@ -4703,6 +4704,7 @@
ନୋଟ୍ ତିଆରି କରନ୍ତୁ
ଅତିରିକ୍ତ ଫଙ୍କସନ ପାଇଁ ଏହି ଡିଭାଇସର ଆଡମିନିଷ୍ଟ୍ରେଟର ଆପ୍ଲିକେସନଗୁଡ଼ିକୁ ଇନଷ୍ଟଲ କରିଛନ୍ତି। ଆପ୍ଲିକେସନଗୁଡ଼ିକର ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଆକ୍ସେସ ଅଛି।
ସ୍ଥାନୀୟ କ୍ରାସ୍ ପ୍ରସଙ୍ଗ:
+ଏଥିକୁ ଅନୁବାଦ କରନ୍ତୁ
ଏରୋପ୍ଲେନ୍ ମୋଡ୍ ବନ୍ଦ କରନ୍ତୁ
ୱେବସାଇଟ କୁକୀ (ବର୍ତ୍ତମାନ ଭିଜିଟ କରାଯାଇଥିବା ୱେବସାଇଟଗୁଡ଼ିକରେ ସାଇନ-ଇନ ହୋଇଥିବା ସ୍ଥିତି ସଂରକ୍ଷିତ ରହିବ)
ସେଟ୍ ହୋଇନାହିଁ।
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_pa.xtb chromium-150.0.7871.114/components/strings/components_strings_pa.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_pa.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_pa.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2346,6 +2346,7 @@
ਛੱਤ ਬਣਾਉਣਾ
ਖੋਜ ਇੰਜਣ
- ਨੂੰ ਪੁੱਛੋ
+ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਮਿਲਿਆ
ਪਾਸਪੋਰਟ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ
ਲੜਾਈ ਵਾਲੀਆਂ ਖੇਡਾਂ
@@ -4703,6 +4704,7 @@
ਨੋਟ-ਕਥਨ ਬਣਾਓ
ਇਸ ਡੀਵਾਈਸ ਦੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਵਧੀਕ ਫੰਕਸ਼ਨਾਂ ਲਈ ਐਪਲੀਕੇਸ਼ਨਾਂ ਸਥਾਪਤ ਕੀਤੀਆਂ ਹਨ। ਐਪਲੀਕੇਸ਼ਨਾਂ ਕੋਲ ਤੁਹਾਡੇ ਕੁਝ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਹੁੰਦੀ ਹੈ।
ਸਥਾਨਕ ਕ੍ਰੈਸ਼ ਸੰਦਰਭ:
+ਇਸ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰੋ
ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ
ਵੈੱਬਸਾਈਟ ਕੁਕੀਜ਼ (ਹਾਲ ਹੀ ਵਿੱਚ ਦੇਖੀਆਂ ਗਈਆਂ ਵੈੱਬਸਾਈਟਾਂ 'ਤੇ ਸਾਈਨ-ਇਨ ਸਥਿਤੀ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਿਆ ਜਾਵੇਗਾ)
ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ।
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_pl.xtb chromium-150.0.7871.114/components/strings/components_strings_pl.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_pl.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_pl.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Dekarstwo
Wyszukiwarki
– zapytaj
+Nie znaleziono wyników
Zaktualizuj paszport
Sporty walki
@@ -4708,6 +4709,7 @@
Utwórz notatkę
Administrator urządzenia zainstalował aplikacje obsługujące dodatkowe funkcje. Aplikacje mają dostęp do niektórych Twoich danych.
Lokalny kontekst awarii:
+Tłumacz na
Wyłącz tryb samolotowy
Pliki cookie witryn (stan zalogowania na ostatnio odwiedzanych stronach zostanie zachowany)
Nie ustawiono.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_pt-BR.xtb chromium-150.0.7871.114/components/strings/components_strings_pt-BR.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_pt-BR.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_pt-BR.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Serviços de telhadista
Mecanismos de pesquisa
: perguntar ao
+Nenhum resultado encontrado
Atualizar passaporte
Lutas
@@ -4708,6 +4709,7 @@
Criar nota
O administrador do dispositivo instalou aplicativos para funções adicionais. Os aplicativos têm acesso a alguns dos seus dados.
Contexto de falha local:
+Traduzir para
Desativar o modo avião
Cookies de sites (o estado de conta conectada nos sites visitados recentemente será preservado)
Não definida.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_pt-PT.xtb chromium-150.0.7871.114/components/strings/components_strings_pt-PT.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_pt-PT.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_pt-PT.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Coberturas
Motores de pesquisa
- Pergunte ao
+Nenhum resultado encontrado
Atualize o passaporte
Desportos de combate
@@ -4707,6 +4708,7 @@
Criar nota
O administrador deste dispositivo instalou aplicações para funções adicionais. As aplicações têm acesso a alguns dos seus dados.
Contexto local da falha de sistema:
+Traduzir para
Desativar o modo de avião
Cookies de Websites (o estado de sessão iniciada nos Websites visitados recentemente vai ser preservado)
Não definida.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ro.xtb chromium-150.0.7871.114/components/strings/components_strings_ro.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ro.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ro.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Servicii pentru acoperișuri
Motoare de căutare
– Întreabă
+Niciun rezultat
Actualizează pașaportul
Sporturi de luptă
@@ -4708,6 +4709,7 @@
Creează o notă
Administratorul acestui dispozitiv a instalat aplicații pentru funcții suplimentare. Aplicațiile au acces la unele dintre datele tale.
Contextul local al blocării:
+Tradu în
să dezactivezi modul Avion;
cookie-urile de la site-uri (starea de conectare pe site-urile accesate recent va fi păstrată).
Nesetată.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ru.xtb chromium-150.0.7871.114/components/strings/components_strings_ru.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ru.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ru.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
Кровельные работы
Поисковые системы
– Задайте вопрос:
+Ничего не найдено.
Обновить паспортные данные?
Спортивные единоборства
@@ -4707,6 +4708,7 @@
Создать заметку
Чтобы расширить возможности браузера, администратор устройства установил несколько приложений, которым доступны некоторые ваши данные.
Локальный идентификатор сбоя:
+Перевести на
Отключите режим полета.
Файлы cookie (если вы недавно вошли в аккаунт сайта на одном устройстве, то останетесь в нем на другом).
Не задано
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_si.xtb chromium-150.0.7871.114/components/strings/components_strings_si.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_si.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_si.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
වහල සැදීම
සෙවුම් යන්ත්ර
- විමසන්න
+ප්රතිඵල හමු නොවීය
ගමන් බලපත්රය යාවත්කාලීන කරන්න
සටන් ක්රීඩා
@@ -4707,6 +4708,7 @@
සටහන සාදන්න
මෙම උපාංගයෙහි පරිපාලකයා අතිරේක කාර්යයන් සඳහා යෙදුම් ස්ථාපනය කර ඇත. යෙදුම්වලට ඔබේ සමහර දත්තවලට ප්රවේශය ඇත.
ස්ථානීය බිඳ වැටීම් සංදර්භය:
+පරිවර්තනය කරන්න
ගුවන් යානා ප්රකාරය ක්රියාවිරහිත කරමින්
වෙබ් අඩවි කුකීස් (මෑතක දී පිවිසි වෙබ් අඩවිවල පුරනය වූ තත්ත්වය සංරක්ෂණය කරනු ලැබේ)
සකසා නැත.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sk.xtb chromium-150.0.7871.114/components/strings/components_strings_sk.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sk.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sk.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -901,7 +901,7 @@
Legal
Prispôsobiť nástroje dostupnosti v nastaveniach Chromu
Predvolené nastavenie na podnikovej úrovni
-Vyhľadať záložky
+Hľadať v záložkách
Aktualizovať Chrome v jeho nastaveniach
Certifikát servera bol zrušený.
Príprava a plánovanie daní
@@ -2345,6 +2345,7 @@
Montáž striech
Vyhľadávače
– Zadajte otázku alebo pokyn
+Neboli nájdené žiadne výsledky
Aktualizujte pas
Bojové športy
@@ -3307,7 +3308,7 @@
Obálka C2
Interval opakovania pokusov
A4×5
-Vyhľadajte karty
+Prehľadávať karty
Váš text a obsah stránky sa odosielajú Googlu, ale nebude sa pomocou nich zlepšovať umelá inteligencia.
Ďalšie informácie
Prepísať niektoré klávesy na klávesnici, napríklad Esc
@@ -3757,7 +3758,7 @@
Ak chcete vypnúť platobnú aplikáciu v Chrome, prejdite do nastavení platieb
Vaša karta je overená
, , . z v skupine .
-Kopírovať
+Skopírovať
Používateľský agent
Organizácia (O)
Odhlásili ste sa
@@ -4703,6 +4704,7 @@
Vytvoriť poznámku
Správca tohto zariadenia nainštaloval aplikácie pre ďalšie funkcie. Aplikácie majú prístup k niektorým vašim údajom.
Miestny kontext zrútenia:
+Preklad do jazyka
Vypnúť režim v lietadle
Súbory cookie webov (stav prihlásenia na nedávno navštívených weboch bude zachovaný)
Nenastavené.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sl.xtb chromium-150.0.7871.114/components/strings/components_strings_sl.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sl.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sl.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Krovstvo
Iskalniki
– Vprašajte:
+Najden ni bil noben rezultat
Posodobite potni list
Borilni športi
@@ -4708,6 +4709,7 @@
Ustvarjanje zapiska
Skrbnik te naprave je namestil aplikacije zaradi dodatnih funkcij. Aplikacije imajo dostop do nekaterih vaših podatkov.
Lokalni kontekst zrušitve:
+Prevedi v jezik
izklopiti način za letalo
Piškotki spletnega mesta (prijavljeno stanje na nedavno obiskanih spletnih mestih bo ohranjeno)
Ni nastavljen.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sq.xtb chromium-150.0.7871.114/components/strings/components_strings_sq.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sq.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sq.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Ndërtim çatie
Motorët e kërkimit
- Pyet
+Nuk u gjet asnjë rezultat
Përditëso pasaportën
Sporte luftarake
@@ -4706,6 +4707,7 @@
Krijo një shënim
Administratori i kësaj pajisjeje ka instaluar aplikacione për funksionet shtesë. Aplikacionet kanë qasje te disa prej të dhënave të tua.
Konteksti lokal i ndërprerjes aksidentale:
+Përkthe në
Të çaktivizosh modalitetin e aeroplanit
Kukit e uebsajteve (gjendja si i identifikuar për uebsajtet e vizituara së fundi do të ruhet)
Nuk është caktuar.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sr-Latn.xtb chromium-150.0.7871.114/components/strings/components_strings_sr-Latn.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sr-Latn.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sr-Latn.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Krovni radovi
Pretraživači
– Pitajte
+Nije pronađen nijedan rezultat
Ažurirajte pasoš
Borilački sportovi
@@ -4707,6 +4708,7 @@
Napravite belešku
Administrator ovog uređaja je instalirao aplikacije za dodatne funkcije. Aplikacije imaju pristup nekim od podataka.
Kontekst lokalnog otkazivanja:
+Prevodi na jezik
da isključite režim rada u avionu
Kolačići veb-sajta (prijavljeni status na nedavno posećenim veb-sajtovima će se sačuvati)
Nije podešeno.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sr.xtb chromium-150.0.7871.114/components/strings/components_strings_sr.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sr.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sr.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Кровни радови
Претраживачи
– Питајте
+Није пронађен ниједан резултат
Ажурирајте пасош
Борилачки спортови
@@ -4707,6 +4708,7 @@
Направите белешку
Администратор овог уређаја је инсталирао апликације за додатне функције. Апликације имају приступ неким од података.
Контекст локалног отказивања:
+Преводи на језик
да искључите режим рада у авиону
Колачићи веб-сајта (пријављени статус на недавно посећеним веб-сајтовима ће се сачувати)
Није подешено.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sv.xtb chromium-150.0.7871.114/components/strings/components_strings_sv.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sv.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sv.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Takläggning
Sökmotorer
– Fråga
+Inga resultat hittades
Uppdatera passet
Kampsport
@@ -4488,7 +4489,7 @@
Köp nu, betala senare-utfärdare som är tillgängliga för att betala över tid har öppnats över hela skärmen.
Bind
Skärmdelningen med återupptogs
-Organisationen har blockerat användningen av Verktyg för programmerare på den här sidan
+Organisationen har blockerat användningen av DevTools på den här sidan
Inte specificerad
delade flikar
Serverns identitet som gick inte att styrka eftersom den använder ett säkerhetscertifikat som inte är betrott av Chromium eller din systemkonfiguration för kryptering av webbtrafik. Det kan bero på att servern är felkonfigurerad eller att anslutningen har blivit kapad. Visa certifikat.
@@ -4708,6 +4709,7 @@
Skapa anteckning
Administratören för enheten har installerat appar för ytterligare funktioner. Apparna har åtkomst till en del av din data.
Kontext för lokal krasch:
+Översätt till
inaktivera flygplansläget
Webbplatscookies (inloggningsstatus på webbplatser som du har besökt nyligen bevaras)
Inte angiven.
@@ -5051,7 +5053,7 @@
Tillåt alltid annonser på den här webbplatsen
En begränsad lista över webbadresser till sidor som du besöker där äldre teknikhändelser inträffar
Hål uppe till höger
-Verktyg för programmerare tillåts inte på den här sidan
+DevTools tillåts inte på den här sidan
Fråga inte igen.
Låga månadsvisa avbetalningar
Klockan går efter
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_sw.xtb chromium-150.0.7871.114/components/strings/components_strings_sw.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_sw.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_sw.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Uezekaji
Mitambo ya kutafuta
- Uliza
+Hakuna Matokeo Yaliyopatikana
Sasisha maelezo ya pasipoti
Michezo ya Mapigano
@@ -4706,6 +4707,7 @@
Unda kidokezo
Msimamizi wa kifaa hiki amesakinisha programu kwa ajili ya utendaji wa ziada. Programu hizo zina idhini ya kufikia baadhi ya data yako.
Muktadha wa Ripoti ya Kuacha Kufanya:
+Tafsiri kwa
Kuzima hali ya ndegeni
Vidakuzi vya tovuti (hali ya kuingia katika akaunti kwenye tovuti ulizotembelea hivi majuzi itahifadhiwa)
Haijawekwa.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ta.xtb chromium-150.0.7871.114/components/strings/components_strings_ta.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ta.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ta.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
மேற்கூரை பழுதுபார்த்தல்
தேடல் இன்ஜின்கள்
- ஐக் கேளுங்கள்
+முடிவுகள் எதுவும் இல்லை
பாஸ்போர்ட் தகவலை மாற்றவா?
போர் விளையாட்டுகள்
@@ -4703,6 +4704,7 @@
குறிப்பை உருவாக்கு
கூடுதல் செயல்பாடுகளுக்காக, சில ஆப்ஸை இந்தச் சாதனத்தின் நிர்வாகி நிறுவியுள்ளார். உங்களின் சில தரவுக்கான அணுகல் ஆப்ஸிற்கு உள்ளது.
அகச் சிதைவுச் சூழல்:
+இதற்கு மொழிபெயர்க்கும்:
விமானப் பயன்முறையை முடக்குதல்
இணையதளக் குக்கீகள் (சமீபத்தில் பார்வையிட்ட இணையதளங்களில் உள்நுழைந்திருக்கும் நிலை சேமிக்கப்படும்)
அமைக்கப்படவில்லை.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_te.xtb chromium-150.0.7871.114/components/strings/components_strings_te.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_te.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_te.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2344,6 +2344,7 @@
పై కప్పు వేయడం
సెర్చ్ ఇంజిన్లు
- ని అడగండి
+ఫలితాలు ఏవీ కనుగొనబడలేదు
పాస్పోర్ట్ను అప్డేట్ చేయండి
పోరాట క్రీడలు
@@ -4703,6 +4704,7 @@
గమనికను క్రియేట్ చేయండి
ఈ పరికర అడ్మినిస్ట్రేటర్ అదనపు ఫంక్షన్ల కోసం అప్లికేషన్లను ఇన్స్టాల్ చేశారు. మీ డేటాలో కొంత భాగానికి ఎక్స్టెన్షన్లకు యాక్సెస్ ఉంటుంది.
స్థానిక క్రాష్ సందర్భం:
+ఈ భాషలోకి అనువదించండి
ఎయిర్ప్లైన్ మోడ్ను ఆఫ్ చేయడం
వెబ్సైట్ కుక్కీలు (ఇటీవల బ్రౌజ్ చేసిన వెబ్సైట్లలో సైన్-ఇన్ స్థితి భద్రపరచబడుతుంది)
సెట్ చేయలేదు.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_th.xtb chromium-150.0.7871.114/components/strings/components_strings_th.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_th.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_th.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
การมุงหลังคา
เครื่องมือค้นหา
- ถาม
+ไม่พบผลการค้นหา
อัปเดตหนังสือเดินทาง
กีฬาต่อสู้
@@ -4707,6 +4708,7 @@
สร้างโน้ต
ผู้ดูแลระบบของอุปกรณ์นี้ได้ติดตั้งแอปพลิเคชันสำหรับฟังก์ชันเพิ่มเติม แอปพลิเคชันมีสิทธิ์เข้าถึงข้อมูลบางส่วนของคุณได้
บริบทของการขัดข้องในเครื่อง:
+แปลเป็นภาษา
ปิดโหมดบนเครื่องบิน
คุกกี้ของเว็บไซต์ (สถานะที่ลงชื่อเข้าใช้บนเว็บไซต์ที่คุณเข้าชมล่าสุดจะได้รับการเก็บไว้)
ไม่ได้ตั้งค่า
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_tr.xtb chromium-150.0.7871.114/components/strings/components_strings_tr.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_tr.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_tr.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Çatı işleri
Arama motorları
- Siz sorun, yanıtlasın
+Sonuç Bulunamadı
Pasaportu güncelleyin
Dövüş Sporları
@@ -4708,6 +4709,7 @@
Not oluştur
Bu cihazın yöneticisi diğer işlevler için uygulamalar yüklemiş. Söz konusu uygulamaların bazı verilerinize erişimi bulunuyor.
Yerel Kilitlenme Bağlamı:
+Şu dile çevir:
Uçak modunu kapatın
Web sitesi çerezleri (son zamanlarda ziyaret ettiğiniz web sitelerinde oturum açma durumu korunur)
Henüz ayarlanmadı.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_uk.xtb chromium-150.0.7871.114/components/strings/components_strings_uk.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_uk.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_uk.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Покрівельні роботи
Пошукові системи
– запитати
+Результатів не знайдено
Оновіть паспортні дані
Спортивні єдиноборства
@@ -4708,6 +4709,7 @@
Створити нотатку
Адміністратор пристрою встановив додатки для розширених функцій. Ці додатки мають доступ до деяких ваших даних.
Локальний контекст аварійного завершення роботи:
+Перекласти такою мовою:
вимкнути режим польоту
Файли cookie вебсайтів (збережеться вхід на нещодавно відвіданих вебсайтах)
Не встановлено.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_ur.xtb chromium-150.0.7871.114/components/strings/components_strings_ur.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_ur.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_ur.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2350,6 +2350,7 @@
چھت سازی
سرچ انجنز
- سے پوچھیں
+کوئی نتیجہ نہیں ملا
پاسپورٹ کی معلومات اپ ڈیٹ کریں
مقابلہ آرائی کے کھیل کود
@@ -4709,6 +4710,7 @@
نوٹ بنائیں
اس آلے کے منتظم نے اضافی فنکشنز کیلئے ایپلیکیشنز انسٹال کی ہیں۔ ایپلیکیشنز کو آپ کے کچھ ڈیٹا تک رسائی حاصل ہوتی ہے۔
مقامی ناکامی کا سیاق و سباق:
+اس میں ترجمہ کریں
ہوائی جہاز وضع کو آف کیا جا رہا ہے
ویب سائٹ کوکیز (حال ہی میں ملاحظہ کردہ ویب سائٹس پر سائن ان کی حالت کو محفوظ رکھا جائے گا)
سیٹ نہیں ہے۔
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_uz.xtb chromium-150.0.7871.114/components/strings/components_strings_uz.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_uz.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_uz.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2344,6 +2344,7 @@
Tom yopish
Qidiruv tizimlari
- dan soʻrash
+Hech qanday natija topilmadi
Pasportni yangilash
Yakkakurash
@@ -4701,6 +4702,7 @@
Qayd yaratish
Bu qurilma administratori qoʻshimcha funksiyali ilovalarni oʻrnatdi. Bu ilovalar ayrim axborotlaringizdan foydalanishi mumkin.
Qurilmadagi ishdan chiqish konteksti:
+Bu tilga tarjima qilish
Parvoz rejimini o‘chirib ko‘ring
Sayt cookie fayllari (oxirgi ochilgan saytlarga kirilganlik holati saqlanib qoladi)
Tayinlanmagan.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_vi.xtb chromium-150.0.7871.114/components/strings/components_strings_vi.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_vi.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_vi.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2349,6 +2349,7 @@
Lợp mái
Công cụ tìm kiếm
– Hỏi
+Không tìm thấy kết quả nào
Cập nhật thông tin hộ chiếu
Thể thao đối kháng
@@ -4708,6 +4709,7 @@
Tạo ghi chú
Quản trị viên của thiết bị này đã cài đặt một số ứng dụng nhằm bổ sung chức năng. Các ứng dụng sẽ có quyền truy cập vào một số dữ liệu của bạn.
Bối cảnh dẫn đến sự cố trên máy:
+Dịch sang
Tắt chế độ trên máy bay
Cookie của trang web (trạng thái đã đăng nhập trên các trang web bạn truy cập gần đây sẽ được giữ nguyên)
Chưa đặt.
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_zh-CN.xtb chromium-150.0.7871.114/components/strings/components_strings_zh-CN.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_zh-CN.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_zh-CN.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2345,6 +2345,7 @@
屋顶修缮
搜索引擎
- 问问
+找不到任何结果
更新护照信息
格斗运动
@@ -4703,6 +4704,7 @@
创建记事
此设备的管理员已安装了一些应用来提供更多功能。这些应用有权访问您的部分数据。
本机崩溃上下文:
+目标语言
关闭飞行模式
网站 Cookie(最近访问过的网站上的已登录状态将被保留)
未设置。
@@ -4717,7 +4719,7 @@
自定义的根证书
视具体情况而定
如果您在设备上找不到某个文件,请在“”上查找。
-由贵组织管理
+由您的组织管理
危险
这些费用可能会一次性收取,也可能会周期性收取,而且可能不易察觉。仍然显示
自动全屏
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_zh-HK.xtb chromium-150.0.7871.114/components/strings/components_strings_zh-HK.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_zh-HK.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_zh-HK.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2348,6 +2348,7 @@
屋頂工程
搜尋引擎
- 詢問
+找不到相符的結果
更新護照
格鬥運動
@@ -4707,6 +4708,7 @@
建立筆記
此裝置的管理員已安裝支援額外功能的應用程式,這些應用程式可存取你的部分資料。
本機當機內容:
+譯文語言
關閉飛行模式
網站 Cookie (保留近期瀏覽網站的已登入狀態)
未設定。
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_zh-TW.xtb chromium-150.0.7871.114/components/strings/components_strings_zh-TW.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_zh-TW.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_zh-TW.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -1775,7 +1775,7 @@
你先前不允許這個網站使用
出紙槽 9
系統管理員政策不建議複製這項內容並貼到「」
- 想將位置存取權從「概略」改成「精確」
+ 想將位置存取權從「大概」改成「精確」
紙 (證券紙)
;按下 Tab 鍵再按下 Enter 鍵即可在 Google Keep 中快速建立新記事
輸出紙槽
@@ -1936,7 +1936,7 @@
可以要求存取區域網路上的其他裝置
,最新
如要顯示游標,請按下 || 鍵
-概略
+大概
重新開啟分頁
請先登入 Microsoft 帳戶,然後再試一次
重新開啟
@@ -2055,7 +2055,7 @@
使用虛擬實境裝置和資料
健美
登入畫面設定檔
-維持概略位置
+維持大概位置
提供價格記錄等資訊,協助你做出更聰明的購物決策。
當機
<h4>步驟 1:從入口網站登入</h4>
@@ -2347,6 +2347,7 @@
屋頂施工
搜尋引擎
- 問問
+找不到相符的搜尋結果
更新護照
搏擊運動
@@ -4706,6 +4707,7 @@
寫筆記
這部裝置的管理員已安裝支援額外功能的應用程式,這些應用程式可存取你的部分資料。
本機當機內容:
+譯文語言:
關閉飛航模式
網站 Cookie (保留近期造訪網站的登入狀態)
未設定。
diff -Nru chromium-150.0.7871.100/components/strings/components_strings_zu.xtb chromium-150.0.7871.114/components/strings/components_strings_zu.xtb
--- chromium-150.0.7871.100/components/strings/components_strings_zu.xtb 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/strings/components_strings_zu.xtb 2026-07-07 17:43:50.000000000 +0000
@@ -2346,6 +2346,7 @@
Ukufakwa kophahla
Izinjini zosesho
- Buza
+Ayikho imiphumela etholiwe
Buyekeza iphasiphothi
Ezemidlalo Yokulwa
@@ -4704,6 +4705,7 @@
Dala inothi
Umlawuli wale divayisi ufake izandiso zemisebenzi eyengeziwe. Izandiso zinokufinyelela kwenye idatha yakho.
Umongo Wokukhubazeka Kwendawo:
+Humushela ku-
Cisha imodi yendiza
Amakhukhi ewebhusayithi (isimo sokungena ngemvume kumawebhusayithi asanda kuvakashelwa sizolondolozwa)
Akusethiwe.
diff -Nru chromium-150.0.7871.100/components/sync_preferences/common_syncable_prefs_database.cc chromium-150.0.7871.114/components/sync_preferences/common_syncable_prefs_database.cc
--- chromium-150.0.7871.100/components/sync_preferences/common_syncable_prefs_database.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/sync_preferences/common_syncable_prefs_database.cc 2026-07-07 17:43:50.000000000 +0000
@@ -161,11 +161,12 @@
kAutofillAiSyncedOptInStatus = 110,
kIOSPromoReminder = 111,
kAutofillAiReauthBeforeViewingSensitiveData = 112,
- kDriveDisclaimerAccepted = 113,
+ // kDriveDisclaimerAccepted = 113, // (deprecated)
kAutofillAiShoppingEntitiesEnabled = 114,
kPrefTranslateRecentTargets = 115,
kBookmarkBarVisibilityState = 116,
kSyncableAccountScopedPrefForTesting = 117, // For tests.
+ kDriveConsentState = 121,
// New entries should be added above this line.
kSubscriptionEligibilityAiSubscriptionTier =
100338, // (different ID as it's a move from //chrome)
@@ -481,8 +482,8 @@
{prefs::kIOSPromoReminder,
{syncable_prefs_ids::kIOSPromoReminder, syncer::PREFERENCES,
PrefSensitivity::kNone, MergeBehavior::kMergeableDict}},
- {contextual_search::kDriveDisclaimerAccepted,
- {syncable_prefs_ids::kDriveDisclaimerAccepted, syncer::PREFERENCES,
+ {contextual_search::kDriveConsentState,
+ {syncable_prefs_ids::kDriveConsentState, syncer::PREFERENCES,
PrefSensitivity::kNone, MergeBehavior::kNone}},
{subscription_eligibility::prefs::kAiSubscriptionTier,
{syncable_prefs_ids::kSubscriptionEligibilityAiSubscriptionTier,
diff -Nru chromium-150.0.7871.100/components/translate_strings.grdp chromium-150.0.7871.114/components/translate_strings.grdp
--- chromium-150.0.7871.100/components/translate_strings.grdp 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/translate_strings.grdp 2026-07-07 17:43:50.000000000 +0000
@@ -56,12 +56,18 @@
Undo
+
+ Translate to
+
Choose Language to Translate to
Search
+
+ No Results Found
+
Detected Language
diff -Nru chromium-150.0.7871.100/components/translate_strings_grdp/IDS_TRANSLATE_BUBBLE_NO_RESULTS.png.sha1 chromium-150.0.7871.114/components/translate_strings_grdp/IDS_TRANSLATE_BUBBLE_NO_RESULTS.png.sha1
--- chromium-150.0.7871.100/components/translate_strings_grdp/IDS_TRANSLATE_BUBBLE_NO_RESULTS.png.sha1 1970-01-01 00:00:00.000000000 +0000
+++ chromium-150.0.7871.114/components/translate_strings_grdp/IDS_TRANSLATE_BUBBLE_NO_RESULTS.png.sha1 2026-07-07 17:43:50.000000000 +0000
@@ -0,0 +1 @@
+d7c75b1d1f4065c9c285337199a3768ac3dd15d2
\ No newline at end of file
diff -Nru chromium-150.0.7871.100/components/translate_strings_grdp/IDS_TRANSLATE_HEADER.png.sha1 chromium-150.0.7871.114/components/translate_strings_grdp/IDS_TRANSLATE_HEADER.png.sha1
--- chromium-150.0.7871.100/components/translate_strings_grdp/IDS_TRANSLATE_HEADER.png.sha1 1970-01-01 00:00:00.000000000 +0000
+++ chromium-150.0.7871.114/components/translate_strings_grdp/IDS_TRANSLATE_HEADER.png.sha1 2026-07-07 17:43:50.000000000 +0000
@@ -0,0 +1 @@
+373af7186a376518884ecfddc2f69b9ece07eece
\ No newline at end of file
diff -Nru chromium-150.0.7871.100/components/user_education/common/feature_promo/feature_promo_specification.cc chromium-150.0.7871.114/components/user_education/common/feature_promo/feature_promo_specification.cc
--- chromium-150.0.7871.100/components/user_education/common/feature_promo/feature_promo_specification.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/user_education/common/feature_promo/feature_promo_specification.cc 2026-07-07 17:43:50.000000000 +0000
@@ -26,10 +26,11 @@
// It is not to be modified except by the Frizzle team.
bool IsAllowedLegalNotice(const base::Feature& promo_feature) {
// Add the text names of allowlisted critical promos here:
- // static constexpr auto kAllowedPromoNames =
- // base::MakeFixedFlatSet({ });
- // return kAllowedPromoNames.contains(promo_feature.name);
- return false;
+ static constexpr auto kAllowedPromoNames =
+ base::MakeFixedFlatSet({
+ "IPH_PdfGlicSummarizeFeature",
+ });
+ return kAllowedPromoNames.contains(promo_feature.name);
}
bool IsAllowedActionableAlert(const base::Feature& promo_feature) {
diff -Nru chromium-150.0.7871.100/components/user_education/common/feature_promo/impl/feature_promo_controller_impl.cc chromium-150.0.7871.114/components/user_education/common/feature_promo/impl/feature_promo_controller_impl.cc
--- chromium-150.0.7871.100/components/user_education/common/feature_promo/impl/feature_promo_controller_impl.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/components/user_education/common/feature_promo/impl/feature_promo_controller_impl.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1022,6 +1022,24 @@
switch (spec.promo_type()) {
case FeaturePromoSpecification::PromoType::kToast: {
+ if (current_promo_) {
+ if (current_promo_->promo_subtype() ==
+ FeaturePromoSpecification::PromoSubtype::kLegalNotice) {
+ bubble_params.buttons =
+ CreateSnoozeButtons(*spec.feature(), /*can_snooze=*/false);
+ // Generally focus notices when they're shown.
+ bubble_params.focus_on_show_hint =
+ bubble_params.focus_on_show_hint.value_or(true);
+ } else if (current_promo_->promo_type() ==
+ FeaturePromoSpecification::PromoType::kRotating) {
+ bubble_params.buttons = CreateRotatingToastButtons(*spec.feature());
+ // If no hint is set, promos with buttons take focus. However,
+ // toasts do not take focus by default. So if the hint isn't already
+ // set, set the promo not to take focus.
+ bubble_params.focus_on_show_hint =
+ bubble_params.focus_on_show_hint.value_or(false);
+ }
+ }
// Rotating toast promos require a "got it" button.
if (current_promo_ &&
current_promo_->promo_type() ==
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager.cc chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager.cc 2026-07-07 17:43:50.000000000 +0000
@@ -110,6 +110,7 @@
// Generate a new id for this device.
auto session_id = base::UnguessableToken::Create();
SendAudioLogMessage(GetOpenLogString(session_id, device));
+ pending_open_sessions_.insert(session_id);
// base::Unretained(this) is safe, because AudioInputDeviceManager is
// destroyed not earlier than on the IO message loop destruction.
@@ -143,8 +144,12 @@
DCHECK_CURRENTLY_ON(BrowserThread::IO);
SendAudioLogMessage("Close({session_id=" + session_id.ToString() + "})");
auto device = GetDevice(session_id);
- if (device == devices_.end())
+ if (device == devices_.end()) {
+ // The asynchronous device query started by Open() may not have completed
+ // yet. Drop the session so that OpenedOnIOThread() does not register it.
+ pending_open_sessions_.erase(session_id);
return;
+ }
const blink::mojom::MediaStreamType stream_type = device->type;
devices_.erase(device);
@@ -161,10 +166,16 @@
const std::optional& input_params,
const std::optional& matched_output_device_id) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- DCHECK(GetDevice(session_id) == devices_.end());
DCHECK(!input_params || input_params->IsValid());
DCHECK(!matched_output_device_id || !matched_output_device_id->empty());
+ if (!pending_open_sessions_.erase(session_id)) {
+ // The session was closed while the device query was in flight.
+ return;
+ }
+
+ DCHECK(GetDevice(session_id) == devices_.end());
+
SendAudioLogMessage("Opened({session_id=" + session_id.ToString() + "})");
blink::MediaStreamDevice media_stream_device(device.type, device.id,
device.name);
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager.h chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager.h
--- chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager.h 2026-07-07 17:43:50.000000000 +0000
@@ -16,6 +16,7 @@
#include
#include
+#include "base/containers/flat_set.h"
#include "base/memory/raw_ptr.h"
#include "base/observer_list.h"
#include "base/threading/thread.h"
@@ -74,6 +75,12 @@
base::ObserverList::Unchecked listeners_;
blink::MediaStreamDevices devices_;
+ // Sessions for which Open() has been called and the asynchronous device
+ // query is still in flight. A session is removed from this set either when
+ // OpenedOnIOThread() runs or when Close() is called for it before that
+ // happens, in which case OpenedOnIOThread() will discard the result.
+ base::flat_set pending_open_sessions_;
+
const raw_ptr audio_system_;
};
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/media/audio_input_device_manager_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -28,6 +28,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/mediastream/media_stream_request.h"
+using testing::_;
using testing::InSequence;
namespace content {
@@ -378,4 +379,45 @@
}
}
+// Closes a session while its asynchronous open is still pending. The pending
+// open should be aborted and the session should never be registered.
+TEST_F(AudioInputDeviceManagerNoDevicesTest, CloseWhileOpenIsPending) {
+ ASSERT_FALSE(devices_.empty());
+
+ base::UnguessableToken session_id = manager_->Open(devices_.front());
+ manager_->Close(session_id);
+
+ EXPECT_CALL(*audio_input_listener_, Opened(_, session_id)).Times(0);
+ WaitForOpenCompletion();
+
+ EXPECT_EQ(nullptr, manager_->GetOpenedDeviceById(session_id));
+}
+
+// Closes one of two pending sessions. The other session should still open
+// normally.
+TEST_F(AudioInputDeviceManagerNoDevicesTest,
+ CloseOneOfMultiplePendingSessions) {
+ ASSERT_GE(devices_.size(), 2u);
+
+ base::UnguessableToken first_session_id = manager_->Open(devices_[0]);
+ base::UnguessableToken second_session_id = manager_->Open(devices_[1]);
+ manager_->Close(first_session_id);
+
+ EXPECT_CALL(*audio_input_listener_, Opened(_, first_session_id)).Times(0);
+ EXPECT_CALL(*audio_input_listener_,
+ Opened(devices_[1].type, second_session_id))
+ .Times(1);
+ WaitForOpenCompletion();
+
+ EXPECT_EQ(nullptr, manager_->GetOpenedDeviceById(first_session_id));
+ EXPECT_NE(nullptr, manager_->GetOpenedDeviceById(second_session_id));
+
+ base::RunLoop run_loop;
+ EXPECT_CALL(*audio_input_listener_,
+ Closed(devices_[1].type, second_session_id))
+ .WillOnce(testing::InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
+ manager_->Close(second_session_id);
+ run_loop.Run();
+}
+
} // namespace content
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/navigation_controller_impl.cc chromium-150.0.7871.114/content/browser/renderer_host/navigation_controller_impl.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/navigation_controller_impl.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/navigation_controller_impl.cc 2026-07-07 17:43:50.000000000 +0000
@@ -4720,7 +4720,7 @@
/*lcpp_hint=*/nullptr, blink::CreateDefaultRendererContentSettings(),
/*visited_link_salt=*/std::nullopt,
/*local_surface_id=*/std::nullopt,
- /*initial_permission_statuses=*/std::nullopt,
+ node->current_frame_host()->GetCachedPermissionStatuses(),
/*should_skip_screentshot=*/false,
/*force_new_document_sequence_number=*/false,
/*navigation_metrics_token=*/base::UnguessableToken::Create(),
@@ -4893,6 +4893,8 @@
frame_tree_node->AncestorOrSelfHasCSPEE(),
soft_navigation_heuristics_task_id);
commit_params->post_content_type = post_content_type;
+ commit_params->initial_permission_statuses =
+ frame_tree_node->current_frame_host()->GetCachedPermissionStatuses();
if (common_params->url.IsAboutSrcdoc()) {
// TODO(wjmaclean): initialize this in NavigationRequest's constructor
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/navigation_request.cc chromium-150.0.7871.114/content/browser/renderer_host/navigation_request.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/navigation_request.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/navigation_request.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1476,7 +1476,7 @@
/*lcpp_hint=*/nullptr, blink::CreateDefaultRendererContentSettings(),
/*visited_link_salt=*/std::nullopt,
/*local_surface_id=*/std::nullopt,
- /*initial_permission_statuses=*/std::nullopt,
+ frame_tree_node->current_frame_host()->GetCachedPermissionStatuses(),
/*should_skip_screenshot=*/false,
/*force_new_document_sequence_number=*/false,
/*navigation_metrics_token=*/base::UnguessableToken::Create(),
@@ -1643,7 +1643,7 @@
/*lcpp_hint=*/nullptr, blink::CreateDefaultRendererContentSettings(),
/*visited_link_salt=*/std::nullopt,
/*local_surface_id=*/std::nullopt,
- /*initial_permission_statuses=*/std::nullopt,
+ render_frame_host->GetCachedPermissionStatuses(),
/*should_skip_screenshot=*/false,
/*force_new_document_sequence_number=*/false,
/*navigation_metrics_token=*/base::UnguessableToken::Create(),
@@ -2750,7 +2750,9 @@
perfetto::Flow::FromPointer(this));
// Prerendered page activation must run CommitDeferringConditions before
// StartRequest().
- CHECK_LT(state_, WILL_START_NAVIGATION);
+ // TODO(524554855): CHECK-exclusion: Convert to a CHECK once we are confident
+ // it won't be triggered.
+ DCHECK_LT(state_, WILL_START_NAVIGATION);
CHECK(candidate_prerender_host_id.has_value());
CHECK(!activating_prerender_host_id_.has_value());
@@ -9595,14 +9597,16 @@
// policy of the process being used. This is because the content is loaded
// from the MHTML archive within the process. There are no data loaded from
// the network.
+ //
+ // Note: This is a security-critical check that needs to be a CHECK rather
+ // than a DCHECK, and it should never be reverted, even if there are crashes
+ // in the wild.
if (HasRenderFrameHost() &&
!GetRenderFrameHost()->ShouldBypassSecurityChecksForErrorPage(this) &&
!IsForMhtmlSubframe()) {
int process_id = GetRenderFrameHost()->GetProcess()->GetDeprecatedID();
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK(policy->CanAccessOrigin(
+ CHECK(policy->CanAccessOrigin(
process_id, origin,
ChildProcessSecurityPolicyImpl::AccessType::kCanCommitNewOrigin));
}
@@ -9827,8 +9831,8 @@
CHECK_EQ(params->post_id, -1);
params->navigation_token = commit_params().navigation_token;
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
+ // TODO(524700727): CHECK-exclusion: Convert to a CHECK once we are confident
+ // it won't be triggered.
DCHECK_EQ(params->url, common_params().url);
params->should_update_history = true;
// TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
@@ -10158,9 +10162,7 @@
// we only update the value for non-pending commit navigations (i.e. the
// NavigationRequest owned by the FrameTreeNode). See the comments in
// `RenderFrameHostManager::CommitPendingIfNecessary()` for more details.
- // TODO(https://crbug.com/503784536): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK(state_ < READY_TO_COMMIT || state_ == WILL_FAIL_REQUEST)
+ CHECK(state_ < READY_TO_COMMIT || state_ == WILL_FAIL_REQUEST)
<< "Use GetRenderFrameHost() instead when the final RenderFrameHost "
"for the navigation has been picked";
return associated_rfh_type_;
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/navigation_throttle_runner.cc chromium-150.0.7871.114/content/browser/renderer_host/navigation_throttle_runner.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/navigation_throttle_runner.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/navigation_throttle_runner.cc 2026-07-07 17:43:50.000000000 +0000
@@ -152,9 +152,7 @@
void NavigationThrottleRunner::ProcessInternal() {
TRACE_EVENT("navigation", "NavigationThrottleRunner::ProcessInternal",
"current_event", current_event_);
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK_NE(NavigationThrottleEvent::kNoEvent, current_event_);
+ CHECK_NE(NavigationThrottleEvent::kNoEvent, current_event_);
base::Time start_time = base::Time::Now();
if (!event_process_start_time_.has_value()) {
event_process_start_time_ = start_time;
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_impl.cc chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_impl.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_impl.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_impl.cc 2026-07-07 17:43:50.000000000 +0000
@@ -13290,8 +13290,10 @@
// navigations too.
has_committed_any_navigation_ = true;
- CHECK(navigation_request && navigation_request->IsNavigationStarted() &&
- navigation_request->DidEncounterError());
+ // TODO(526397675): CHECK-exclusion: Convert to a CHECK once we are confident
+ // it won't be triggered.
+ DCHECK(navigation_request && navigation_request->IsNavigationStarted() &&
+ navigation_request->DidEncounterError());
}
void RenderFrameHostImpl::AddResourceTimingEntryForFailedSubframeNavigation(
@@ -15406,8 +15408,8 @@
// avoid crashes, this returns a maximally-restrictive value instead.
if (!policy_container_host_) {
// Prevent other code paths from depending on this bandaid.
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
+ // TODO(524734851): CHECK-exclusion: Convert to a CHECK once we are
+ // confident it won't be triggered.
DCHECK_EQ(lifecycle_state_, LifecycleStateImpl::kSpeculative);
// Omitted: reporting endpoint, report-only value and reporting endpoint.
@@ -17576,7 +17578,9 @@
void RenderFrameHostImpl::RemoveServiceWorkerClient(const std::string& uuid) {
CHECK(!service_worker_clients_.empty());
- CHECK(service_worker_clients_.contains(uuid));
+ // TODO(524311946): CHECK-exclusion: Convert to a CHECK once we are confident
+ // it won't be triggered.
+ DCHECK(service_worker_clients_.contains(uuid));
service_worker_clients_.erase(uuid);
}
@@ -19986,6 +19990,51 @@
out);
}
+std::optional>
+RenderFrameHostImpl::GetCachedPermissionStatuses() {
+ using blink::PermissionType;
+ using blink::mojom::PermissionName;
+ static constexpr auto kPermissions =
+ std::to_array>(
+ {{PermissionName::VIDEO_CAPTURE, PermissionType::VIDEO_CAPTURE},
+ {PermissionName::AUDIO_CAPTURE, PermissionType::AUDIO_CAPTURE},
+#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS)
+ // `WEB_APP_INSTALLATION` is only registered for desktop platforms
+ // via `WebsiteSettingsRegistry::DESKTOP`.
+ {PermissionName::WEB_APP_INSTALLATION,
+ PermissionType::WEB_APP_INSTALLATION},
+#endif
+ {PermissionName::GEOLOCATION, PermissionType::GEOLOCATION}});
+
+ base::flat_map permission_map;
+ for (const auto& permission : kPermissions) {
+ PermissionStatus status = GetCombinedPermissionStatus(permission.second);
+ // Default value is ASK, we don't need add the permission status in this
+ // case.
+ if (status != PermissionStatus::ASK) {
+ permission_map.emplace(permission.first, status);
+ }
+ }
+
+ return permission_map;
+}
+
+blink::mojom::PermissionStatus RenderFrameHostImpl::GetCombinedPermissionStatus(
+ blink::PermissionType permission_type) {
+ auto descriptor = content::PermissionDescriptorUtil::
+ CreatePermissionDescriptorForPermissionType(permission_type);
+ if (PermissionUtil::IsDevicePermission(descriptor)) {
+ return GetBrowserContext()
+ ->GetPermissionController()
+ ->GetCombinedPermissionAndDeviceStatus(descriptor, this);
+ }
+ return GetBrowserContext()
+ ->GetPermissionController()
+ ->GetPermissionResultForCurrentDocument(descriptor, this)
+ .status;
+}
+
media::PictureInPictureEventsInfo::AutoPipReasonCallback
RenderFrameHostImpl::CreateAutoPipReasonCallback() {
return base::BindRepeating(
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_impl.h chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_impl.h
--- chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_impl.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_impl.h 2026-07-07 17:43:50.000000000 +0000
@@ -319,6 +319,10 @@
void(RenderFrameHostImpl*, ax::mojom::Event, int)>
AccessibilityCallbackForTesting;
+using CachedPermissionMap =
+ std::optional>;
+
class CONTENT_EXPORT RenderFrameHostImpl
: public RenderFrameHost,
public base::SupportsUserData,
@@ -3286,6 +3290,12 @@
// this instance's AXNodeIdDelegate implementation.
size_t GetAxUniqueIdCountForTesting() const { return ax_unique_ids_.size(); }
+ // Query necessary permission statues in order to propagate to the renderer.
+ // Right now, we're only caring about permissions for Geolocation, Camera, and
+ // Microphone. The permission statuses already take into account the device's
+ // status.
+ CachedPermissionMap GetCachedPermissionStatuses();
+
// Allows tests to disable the unload event timer to simulate bugs that
// happen before it fires (to avoid flakiness).
void DisableUnloadTimerForTesting();
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_manager.cc chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_manager.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/render_frame_host_manager.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_frame_host_manager.cc 2026-07-07 17:43:50.000000000 +0000
@@ -4733,9 +4733,7 @@
SCOPED_CRASH_KEY_STRING64("Bug1400009", "parent_lifecycle",
RenderFrameHostImpl::LifecycleStateImplToString(
parent_rfh->lifecycle_state()));
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK
- // once we are sure this isn't hit.
- DCHECK(render_view_host);
+ CHECK(render_view_host);
}
if (!render_view_host) {
// Before creating a new RenderFrameProxyHost, ensure a RenderViewHost
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_process_host_impl.cc chromium-150.0.7871.114/content/browser/renderer_host/render_process_host_impl.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/render_process_host_impl.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_process_host_impl.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1702,9 +1702,8 @@
perfetto::NamedTrack::FromPointer("RenderProcessHostImpl",
this,
GetChildProcessTracingTrack(id_))) {
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK(!browser_context->ShutdownStarted());
+
+ CHECK(!browser_context->ShutdownStarted());
TRACE_EVENT("shutdown", "RenderProcessHostImpl",
ChromeTrackEvent::kRenderProcessHost, *this);
TRACE_EVENT_BEGIN("shutdown", "Browser.RenderProcessHostImpl", tracing_track_,
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_widget_host_view_aura.cc chromium-150.0.7871.114/content/browser/renderer_host/render_widget_host_view_aura.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/render_widget_host_view_aura.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_widget_host_view_aura.cc 2026-07-07 17:43:50.000000000 +0000
@@ -2318,8 +2318,8 @@
if (GetInputMethod()) {
auto weak_this = weak_ptr_factory_.GetWeakPtr();
GetInputMethod()->OnCaretBoundsChanged(this);
- // `this` may have been deleted inside the IME callout.
if (!weak_this) {
+ // `this` may have been deleted inside the IME callout.
return;
}
UpdateInsetsWithVirtualKeyboardEnabled();
@@ -2534,8 +2534,13 @@
last_pointer_type_before_focus_ = last_pointer_type_;
auto* input_method = GetInputMethod();
- if (input_method)
+ if (input_method) {
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
input_method->CancelComposition(this);
+ if (!weak_this) {
+ return;
+ }
+ }
has_composition_text_ = false;
#if BUILDFLAG(IS_WIN)
@@ -2757,7 +2762,11 @@
if (input_method) {
// Ask the system-wide IME to send all TextInputClient messages to |this|
// object.
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
input_method->SetFocusedTextInputClient(this);
+ if (!weak_this) {
+ return;
+ }
}
ui::BrowserAccessibilityManager* manager =
@@ -3246,6 +3255,9 @@
window_->GetHost()->AddObserver(this);
UpdateScreenInfo();
+ base::WeakPtr weak_this(
+ weak_ptr_factory_.GetWeakPtr());
+
aura::client::CursorClient* cursor_client =
aura::client::GetCursorClient(window_->GetRootWindow());
if (cursor_client) {
@@ -3254,15 +3266,17 @@
}
if (HasFocus()) {
ui::InputMethod* input_method = GetInputMethod();
- if (input_method)
+ if (input_method) {
input_method->SetFocusedTextInputClient(this);
+ if (!weak_this) {
+ return;
+ }
+ }
}
#if BUILDFLAG(IS_WIN)
// `UpdateLegacyWin()` can spin a nested message loop on Windows, potentially
// destroying `this`.
- base::WeakPtr weak_this(
- weak_ptr_factory_.GetWeakPtr());
UpdateLegacyWin();
if (!weak_this) {
return;
@@ -3298,7 +3312,11 @@
void RenderWidgetHostViewAura::DetachFromInputMethod(bool is_removed) {
ui::InputMethod* input_method = GetInputMethod();
if (input_method) {
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
input_method->DetachTextInputClient(this);
+ if (!weak_this) {
+ return;
+ }
#if BUILDFLAG(IS_CHROMEOS)
wm::RestoreWindowBoundsOnClientFocusLost(window_->GetToplevelWindow());
#endif // BUILDFLAG(IS_CHROMEOS)
@@ -3419,8 +3437,15 @@
if (!GetInputMethod())
return;
- if (did_update_state)
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
+
+ if (did_update_state) {
GetInputMethod()->OnTextInputTypeChanged(this);
+ if (!weak_this) {
+ // `this` may have been deleted inside the IME callout.
+ return;
+ }
+ }
const ui::mojom::TextInputState* state =
text_input_manager_->GetTextInputState();
@@ -3462,6 +3487,10 @@
// Ensure that selection bounds changes are sent to the IME.
if (state && state->type != ui::TEXT_INPUT_TYPE_NONE) {
text_input_manager->NotifySelectionBoundsChanged(updated_view);
+ if (!weak_this) {
+ // `this` may have been deleted inside the IME callout.
+ return;
+ }
}
if (auto* render_widget_host = updated_view->host()) {
@@ -3480,8 +3509,14 @@
// TextInputManager::GetActiveWidget() as RenderWidgetHostViewAura can call
// this method to finish any ongoing composition in response to a mouse down
// event.
- if (GetInputMethod())
+ if (GetInputMethod()) {
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
GetInputMethod()->CancelComposition(this);
+ // `this` may have been deleted inside the IME callout.
+ if (!weak_this) {
+ return;
+ }
+ }
has_composition_text_ = false;
}
@@ -3515,8 +3550,14 @@
// changed. e.g. When the rendered text is wider than the input field,
// deleting the last character won't change the caret bounds but will change
// the surrounding text.
- if (GetInputMethod())
+ if (GetInputMethod()) {
+ auto weak_this = weak_ptr_factory_.GetWeakPtr();
GetInputMethod()->OnCaretBoundsChanged(this);
+ if (!weak_this) {
+ // `this` may have been deleted inside the IME callout.
+ return;
+ }
+ }
if (ui::Clipboard::IsSupportedClipboardBuffer(
ui::ClipboardBuffer::kSelection)) {
diff -Nru chromium-150.0.7871.100/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc chromium-150.0.7871.114/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
--- chromium-150.0.7871.100/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -6899,15 +6899,27 @@
}
}
+ void OnTextInputTypeChanged(ui::TextInputClient* client) override {
+ ui::MockInputMethod::OnTextInputTypeChanged(client);
+ if (on_text_input_type_changed_) {
+ std::move(on_text_input_type_changed_).Run();
+ }
+ }
+
void set_on_caret_bounds_changed(base::OnceClosure closure) {
on_caret_bounds_changed_ = std::move(closure);
}
+ void set_on_text_input_type_changed(base::OnceClosure closure) {
+ on_text_input_type_changed_ = std::move(closure);
+ }
+
private:
base::OnceClosure on_caret_bounds_changed_;
+ base::OnceClosure on_text_input_type_changed_;
};
-class RenderWidgetHostViewAuraOnBoundsChangedUAFTest
+class RenderWidgetHostViewAuraReentrantDestructionIME
: public RenderWidgetHostViewAuraTest {
public:
void SetUp() override {
@@ -6936,7 +6948,7 @@
// ~AutoReset both touch freed memory. AutoReset::scoped_variable_ is
// RAW_PTR_EXCLUSION, so it is not MiraclePtr-protected: the ~AutoReset write
// lands in a freed (un-quarantined) slot.
-TEST_F(RenderWidgetHostViewAuraOnBoundsChangedUAFTest,
+TEST_F(RenderWidgetHostViewAuraReentrantDestructionIME,
DestroyDuringOnCaretBoundsChanged) {
InitViewForFrame(nullptr);
ParentHostView(view_, parent_view_);
@@ -6961,6 +6973,37 @@
raw_view->OnBoundsChanged(gfx::Rect(), gfx::Rect(0, 0, 100, 100));
}
+// RWHVA::OnUpdateTextInputStateCalled() calls
+// GetInputMethod()->OnTextInputTypeChanged(this), which on Windows reaches
+// TSFBridge::OnTextInputTypeChanged() -> ITfThreadMgr::SetFocus(). If the
+// active TIP pumps the message queue and the view is destroyed re-entrantly,
+// on unwind the function continues to dereference the freed `this` and
+// `updated_view`.
+TEST_F(RenderWidgetHostViewAuraReentrantDestructionIME,
+ DestroyDuringOnTextInputTypeChanged) {
+ InitViewForFrame(nullptr);
+ ParentHostView(view_, parent_view_);
+ // `view_` shares the root window (and thus the InputMethod) with
+ // `parent_view_`.
+ ASSERT_EQ(static_cast(input_method_.get()),
+ GetInputMethod());
+
+ // Arrange for the view to be synchronously destroyed inside
+ // OnTextInputTypeChanged, simulating re-entrant destruction triggered by a
+ // TSF callout that pumps a queued window.close() / renderer-gone task.
+ input_method_->set_on_text_input_type_changed(
+ base::BindLambdaForTesting([&]() {
+ widget_host_ = nullptr;
+ view_.ExtractAsDangling()->Destroy();
+ }));
+
+ ui::mojom::TextInputState state;
+ state.type = ui::TEXT_INPUT_TYPE_TEXT;
+ // Dispatching this state notifies `view_` (a TextInputManager observer) via
+ // OnUpdateTextInputStateCalled(), which calls into the input method above.
+ GetTextInputManager(view_)->UpdateTextInputState(view_, state);
+}
+
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS)
class MockVirtualKeyboardController final
: public ui::VirtualKeyboardController {
diff -Nru chromium-150.0.7871.100/content/browser/service_worker/service_worker_version.cc chromium-150.0.7871.114/content/browser/service_worker/service_worker_version.cc
--- chromium-150.0.7871.100/content/browser/service_worker/service_worker_version.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/service_worker/service_worker_version.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1100,10 +1100,8 @@
void ServiceWorkerVersion::RestoreControlleeFromBackForwardCacheMap(
const std::string& client_uuid) {
- // TODO(https://crbug.com/497761255): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK(IsBackForwardCacheEnabled());
- DCHECK(!controllee_map_.contains(client_uuid));
+ CHECK(IsBackForwardCacheEnabled());
+ CHECK(!controllee_map_.contains(client_uuid));
if (!bfcached_controllee_map_.contains(client_uuid)) {
// We are navigating to the page using BackForwardCache, which is being
// evicted due to activation, postMessage or claim. In this case, we reload
diff -Nru chromium-150.0.7871.100/content/browser/web_package/signed_exchange_request_handler_browsertest.cc chromium-150.0.7871.114/content/browser/web_package/signed_exchange_request_handler_browsertest.cc
--- chromium-150.0.7871.100/content/browser/web_package/signed_exchange_request_handler_browsertest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/browser/web_package/signed_exchange_request_handler_browsertest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1001,8 +1001,10 @@
// If this fails with ERR_CERT_DATE_INVALID, try to regenerate test data
// by running generate-test-certs.sh and generate-test-sxgs.sh in
// src/content/test/data/sxg. See https://crbug.com/1279652.
+//
+// Disabled as it's failing on 10s of builder. https://crbug.com/526396467
IN_PROC_BROWSER_TEST_F(SignedExchangeRequestHandlerRealCertVerifierBrowserTest,
- Basic) {
+ DISABLED_Basic) {
InstallUrlInterceptor(
GURL("https://cert.example.org/cert.msg"),
"content/test/data/sxg/test.example.org-long-validity.public.pem.cbor");
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/bidder_worklet.cc chromium-150.0.7871.114/content/services/auction_worklet/bidder_worklet.cc
--- chromium-150.0.7871.100/content/services/auction_worklet/bidder_worklet.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/bidder_worklet.cc 2026-07-07 17:43:50.000000000 +0000
@@ -1128,6 +1128,12 @@
AuctionV8Helper::FullIsolateScope isolate_scope(v8_helper_.get());
v8::Isolate* isolate = v8_helper_->isolate();
+ // Needs to outlast ContextRecyclerScope. See crbug.com/527406824.
+ DeprecatedUrlLazyFiller deprecated_render_url(
+ v8_helper_.get(), &browser_signal_render_url,
+ "browserSignals.renderUrl is deprecated."
+ " Please use browserSignals.renderURL instead.");
+
// Short lived context, to avoid leaking data at global scope between either
// repeated calls to this worklet, or to calls to any other worklet.
ContextRecycler context_recycler(v8_helper_.get());
@@ -1176,10 +1182,6 @@
context_recycler.AddReportWinBrowserSignalsLazyFiller();
- DeprecatedUrlLazyFiller deprecated_render_url(
- v8_helper_.get(), &v8_logger, &browser_signal_render_url,
- "browserSignals.renderUrl is deprecated."
- " Please use browserSignals.renderURL instead.");
base::TimeDelta reporting_timeout =
browser_signal_reporting_timeout.has_value()
? *browser_signal_reporting_timeout
@@ -1238,6 +1240,8 @@
}
args.push_back(direct_from_seller_signals);
+ deprecated_render_url.SetLogger(&v8_logger);
+
// An empty return value indicates an exception was thrown. Any other return
// value indicates no exception.
v8_helper_->MaybeTriggerInstrumentationBreakpoint(
@@ -1253,6 +1257,7 @@
v8_helper_->RunScript(context, unbound_worklet_script, debug_id_.get(),
total_timeout.get(), errors_out);
if (result != AuctionV8Helper::Result::kSuccess) {
+ deprecated_render_url.SetLogger(nullptr);
TRACE_EVENT_END("fledge", perfetto::Track(trace_id));
PostReportWinCallbackToUserThread(
std::move(callback), /*report_url=*/std::nullopt,
@@ -1293,6 +1298,7 @@
base::UmaHistogramTimes("Ads.InterestGroup.Auction.ReportWinTime", elapsed);
if (result != AuctionV8Helper::Result::kSuccess) {
+ deprecated_render_url.SetLogger(nullptr);
// Keep Private Aggregation API requests since `reportWin()` might use it to
// detect script timeout or failures.
PostReportWinCallbackToUserThread(
@@ -1399,6 +1405,7 @@
}
// This covers both the case where a report URL was provided, and the case one
// was not.
+ deprecated_render_url.SetLogger(nullptr);
PostReportWinCallbackToUserThread(
std::move(callback), context_recycler.report_bindings()->report_url(),
context_recycler.register_ad_beacon_bindings()->TakeAdBeaconMap(),
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/bidder_worklet_unittest.cc chromium-150.0.7871.114/content/services/auction_worklet/bidder_worklet_unittest.cc
--- chromium-150.0.7871.100/content/services/auction_worklet/bidder_worklet_unittest.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/bidder_worklet_unittest.cc 2026-07-07 17:43:50.000000000 +0000
@@ -8712,6 +8712,33 @@
channel->ExpectNoMoreConsoleEvents();
}
+TEST_F(BidderWorkletTest, ReportWinBrowserSignalRenderUrlDeprecationAsync) {
+ // From https://crbug.com/527406824
+ const char kBody[] = R"(
+ globalThis.savedBrowserSignals = browserSignals;
+ Promise.resolve().then(() => {
+ void globalThis.savedBrowserSignals.renderUrl;
+ });
+
+ // Force reportWin timeout. V8's normal auto microtask checkpoint is
+ // skipped while execution is terminating; AuctionWorklet's
+ // ContextRecyclerScope then performs a later ResetForReuse() microtask
+ // checkpoint after stack unwind.
+ while (true) {}
+ )";
+ AddJavascriptResponse(&url_loader_factory_, interest_group_bidding_url_,
+ CreateReportWinScript(kBody));
+ RunReportWinExpectingResult(
+ /*expected_report_url=*/std::nullopt,
+ /*expected_ad_beacon_map=*/{},
+ /*expected_ad_macro_map=*/{},
+ /*expected_pa_requests=*/{},
+ /*expected_pmt_request_data=*/nullptr,
+ /*expected_reporting_latency_timeout=*/true,
+ /*expected_errors=*/
+ {"https://url.test/ execution of `reportWin` timed out."});
+}
+
// Check that accessing `renderURL` of browserSignals does not display a
// warning.
//
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/context_recycler.cc chromium-150.0.7871.114/content/services/auction_worklet/context_recycler.cc
--- chromium-150.0.7871.100/content/services/auction_worklet/context_recycler.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/context_recycler.cc 2026-07-07 17:43:50.000000000 +0000
@@ -183,12 +183,6 @@
}
void ContextRecycler::ResetForReuse() {
- // Make sure that microtasks get flushed as they would not on timeout.
- {
- AuctionV8Helper::TimeLimitScope time_scope(v8_helper_->GetTimeLimit());
- v8_helper_->isolate()->PerformMicrotaskCheckpoint();
- }
-
for (Bindings* bindings : bindings_list_) {
bindings->Reset();
}
@@ -207,6 +201,12 @@
for (const auto& auction_config_lazy_filler : auction_config_lazy_fillers_) {
auction_config_lazy_filler->Reset();
}
+
+ // Make sure that microtasks get flushed as they would not on timeout.
+ {
+ AuctionV8Helper::TimeLimitScope time_scope(v8_helper_->GetTimeLimit());
+ v8_helper_->isolate()->PerformMicrotaskCheckpoint();
+ }
}
ContextRecyclerScope::ContextRecyclerScope(ContextRecycler& context_recycler)
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/deprecated_url_lazy_filler.cc chromium-150.0.7871.114/content/services/auction_worklet/deprecated_url_lazy_filler.cc
--- chromium-150.0.7871.100/content/services/auction_worklet/deprecated_url_lazy_filler.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/deprecated_url_lazy_filler.cc 2026-07-07 17:43:50.000000000 +0000
@@ -6,6 +6,7 @@
#include
+#include "base/check.h"
#include "base/memory/raw_ptr.h"
#include "content/services/auction_worklet/auction_v8_helper.h"
#include "content/services/auction_worklet/auction_v8_logger.h"
@@ -17,15 +18,16 @@
namespace auction_worklet {
DeprecatedUrlLazyFiller::DeprecatedUrlLazyFiller(AuctionV8Helper* v8_helper,
- AuctionV8Logger* v8_logger,
const GURL* url,
const char* warning)
: LazyFiller(v8_helper, kTag),
- v8_logger_(v8_logger),
+ v8_logger_(nullptr),
url_(url),
warning_(warning) {}
-DeprecatedUrlLazyFiller::~DeprecatedUrlLazyFiller() = default;
+DeprecatedUrlLazyFiller::~DeprecatedUrlLazyFiller() {
+ DCHECK_EQ(v8_logger_, nullptr);
+}
bool DeprecatedUrlLazyFiller::AddDeprecatedUrlGetter(
v8::Local object,
@@ -39,7 +41,9 @@
v8::Local name,
const v8::PropertyCallbackInfo& info) {
DeprecatedUrlLazyFiller* self = GetSelf(info);
- self->v8_logger_->LogConsoleWarning(self->warning_.get());
+ if (self->v8_logger_) {
+ self->v8_logger_->LogConsoleWarning(self->warning_.get());
+ }
AuctionV8Helper* v8_helper = self->v8_helper();
v8::Isolate* isolate = v8_helper->isolate();
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/deprecated_url_lazy_filler.h chromium-150.0.7871.114/content/services/auction_worklet/deprecated_url_lazy_filler.h
--- chromium-150.0.7871.100/content/services/auction_worklet/deprecated_url_lazy_filler.h 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/deprecated_url_lazy_filler.h 2026-07-07 17:43:50.000000000 +0000
@@ -34,12 +34,14 @@
// DeprecatedUrlLazyFiller. Additionally, `url` and `warning` must not be
// modified until the DeprecatedUrlLazyFiller is destroyed.
DeprecatedUrlLazyFiller(AuctionV8Helper* v8_helper,
- AuctionV8Logger* v8_logger,
const GURL* url,
const char* warning);
~DeprecatedUrlLazyFiller() override;
+ // v8_logger must outlast `this` (or should be cleared).
+ void SetLogger(AuctionV8Logger* v8_logger) { v8_logger_ = v8_logger; }
+
// Adds a getter to `object` that, when the `name` field is first accessed,
// will display a warning and return the URL `this` was created with, as a
// string. Subsequent accesses will not display a warning. Does nothing if
@@ -54,7 +56,7 @@
v8::Local name,
const v8::PropertyCallbackInfo& info);
- const raw_ptr v8_logger_;
+ raw_ptr v8_logger_;
const raw_ptr url_;
const raw_ptr warning_;
};
diff -Nru chromium-150.0.7871.100/content/services/auction_worklet/seller_worklet.cc chromium-150.0.7871.114/content/services/auction_worklet/seller_worklet.cc
--- chromium-150.0.7871.100/content/services/auction_worklet/seller_worklet.cc 2026-07-06 22:58:46.000000000 +0000
+++ chromium-150.0.7871.114/content/services/auction_worklet/seller_worklet.cc 2026-07-07 17:43:50.000000000 +0000
@@ -171,7 +171,6 @@
// (With many fields filled in on-demand by an AuctionConfigLazyFiller).
bool AppendAuctionConfig(
AuctionV8Helper* v8_helper,
- AuctionV8Logger* v8_logger,
v8::Local context,
const url::Origin& seller,
base::optional_ref decision_logic_url,
@@ -269,7 +268,7 @@
for (size_t pos = 0; pos < component_auctions.size(); ++pos) {
const auto& component_auction = component_auctions[pos];
if (!AppendAuctionConfig(
- v8_helper, v8_logger, context, component_auction.seller,
+ v8_helper, context, component_auction.seller,
component_auction.decision_logic_url,
component_auction.trusted_scoring_signals_url,
experiment_group_id,
@@ -1143,8 +1142,6 @@
v8::Local context = context_recycler_scope.GetContext();
TRACE_EVENT_END("fledge", perfetto::Track(trace_id)); // "get_seller_context"
- AuctionV8Logger v8_logger(v8_helper_.get(), context);
-
v8::LocalVector args(isolate);
if (!v8_helper_->AppendJsonValue(context, ad_metadata_json, &args)) {
PostScoreAdCallbackToUserThreadOnError(
@@ -1163,10 +1160,10 @@
context_recycler->EnsureAuctionConfigLazyFillers(
1 + auction_ad_config_non_shared_params.component_auctions.size());
if (!AppendAuctionConfig(
- v8_helper_.get(), &v8_logger, context,
- url::Origin::Create(decision_logic_url_), decision_logic_url_,
- trusted_scoring_signals_url_, experiment_group_id_,
- send_creative_scanning_metadata_, auction_ad_config_non_shared_params,
+ v8_helper_.get(), context, url::Origin::Create(decision_logic_url_),
+ decision_logic_url_, trusted_scoring_signals_url_,
+ experiment_group_id_, send_creative_scanning_metadata_,
+ auction_ad_config_non_shared_params,
context_recycler->auction_config_lazy_fillers(),
/*auction_config_lazy_filler_pos=*/0, &args)) {
PostScoreAdCallbackToUserThreadOnError(
@@ -1755,17 +1752,16 @@
ContextRecyclerScope context_recycler_scope(context_recycler);
v8::Local context = context_recycler_scope.GetContext();
- AuctionV8Logger v8_logger(v8_helper_.get(), context);
v8::LocalVector args(isolate);
context_recycler.EnsureAuctionConfigLazyFillers(
1 + auction_ad_config_non_shared_params.component_auctions.size());
if (!AppendAuctionConfig(
- v8_helper_.get(), &v8_logger, context,
- url::Origin::Create(decision_logic_url_), decision_logic_url_,
- trusted_scoring_signals_url_, experiment_group_id_,
- send_creative_scanning_metadata_, auction_ad_config_non_shared_params,
+ v8_helper_.get(), context, url::Origin::Create(decision_logic_url_),
+ decision_logic_url_, trusted_scoring_signals_url_,
+ experiment_group_id_, send_creative_scanning_metadata_,
+ auction_ad_config_non_shared_params,
context_recycler.auction_config_lazy_fillers(),
/*auction_config_lazy_filler_pos=*/0, &args)) {
PostReportResultCallbackToUserThread(std::move(callback),
diff -Nru chromium-150.0.7871.100/debian/changelog chromium-150.0.7871.114/debian/changelog
--- chromium-150.0.7871.100/debian/changelog 2026-07-07 17:47:51.000000000 +0000
+++ chromium-150.0.7871.114/debian/changelog 2026-07-10 05:45:42.000000000 +0000
@@ -1,3 +1,50 @@
+chromium (150.0.7871.114-1~deb13u1) trixie-security; urgency=high
+
+ [ Andres Salomon ]
+ * New upstream security release.
+ - CVE-2026-15112: Use after free in Ozone. Reported by Google.
+ - CVE-2026-15129: Use after free in Views. Reported by Google.
+ - CVE-2026-15132: Uninitialized Use in V8.
+ Reported by Pierre Langlois from Arm.
+ - CVE-2026-15133: Use after free in InterestGroups. Reported by Jihyeon
+ Jeong (Compsec Lab, Seoul National University / Research Intern).
+ - CVE-2026-15108: Integer overflow in Extensions API. Reported by Google.
+ - CVE-2026-15109: Uninitialized Use in ANGLE. Reported by Google.
+ - CVE-2026-15110: Use after free in Extensions. Reported by Google.
+ - CVE-2026-15111: Use after free in Views. Reported by Google.
+ - CVE-2026-15113: Use after free in Autofill. Reported by Google.
+ - CVE-2026-15114: Out of bounds read and write in Codecs.
+ Reported by Google.
+ - CVE-2026-15115: Insufficient validation of untrusted input in
+ WebAppInstalls. Reported by Google.
+ - CVE-2026-15116: Use after free in Actor. Reported by Google.
+ - CVE-2026-15117: Use after free in Payments. Reported by Google.
+ - CVE-2026-15118: Use after free in Input. Reported by Google.
+ - CVE-2026-15119: Inappropriate implementation in GetUserMedia.
+ Reported by Google.
+ - CVE-2026-15120: Use after free in Core. Reported by Google.
+ - CVE-2026-15121: Use after free in WebRTC. Reported by Google.
+ - CVE-2026-15122: Insufficient validation of untrusted input in Codecs.
+ Reported by Google.
+ - CVE-2026-15123: Insufficient data validation in DOM. Reported by Google
+ - CVE-2026-15124: Insufficient policy enforcement in Passwords.
+ Reported by Google.
+ - CVE-2026-15125: Inappropriate implementation in Forms.
+ Reported by Google.
+ - CVE-2026-15126: Use after free in Forms. Reported by Google.
+ - CVE-2026-15127: Inappropriate implementation in WebGL.
+ Reported by Google.
+ - CVE-2026-15128: Inappropriate implementation in Forms.
+ Reported by Google.
+ - CVE-2026-15130: Insufficient policy enforcement in Navigation.
+ Reported by Google.
+ - CVE-2026-15107: Use after free in IndexedDB.
+ Reported by zh1x1an1221 of Ant Group Tianqiong Security Lab.
+ - CVE-2026-15131: Insufficient data validation in Navigation.
+ Reported by Google.
+
+ -- Andres Salomon