diff --git a/.cargo/config.toml.in b/.cargo/config.toml.in index e1e9859e2a9e5..73a4d695b6f62 100644 --- a/.cargo/config.toml.in +++ b/.cargo/config.toml.in @@ -35,9 +35,14 @@ git = "https://github.com/franziskuskiefer/cose-rust" rev = "43c22248d136c8b38fe42ea709d08da6355cf04b" replace-with = "vendored-sources" -[source."git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc"] +[source."git+https://github.com/gfx-rs/rspirv?rev=89ce4d0e64c91b0635f617409dc57cb031749a39"] +git = "https://github.com/gfx-rs/rspirv" +rev = "89ce4d0e64c91b0635f617409dc57cb031749a39" +replace-with = "vendored-sources" + +[source."git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502"] git = "https://github.com/gfx-rs/wgpu" -rev = "3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +rev = "a2c8c0de7cdb57a74070ce70b9912e853893d502" replace-with = "vendored-sources" [source."git+https://github.com/glandium/allocator-api2?rev=ad5f3d56a5a4519eff52af4ff85293431466ef5c"] diff --git a/.claude/skills/android/SKILL.md b/.claude/skills/android/SKILL.md new file mode 100644 index 0000000000000..60897cbe1d778 --- /dev/null +++ b/.claude/skills/android/SKILL.md @@ -0,0 +1,7 @@ +--- +name: android +description: Workflow guide when working with Android builds or the mobile/ directory. +--- + +## Workflow +- Instead of `gradlew`, use `./mach gradle` as the wrapper. Use `-p` argument of gradle if you need to run in a subdirectory diff --git a/Cargo.lock b/Cargo.lock index 5d082d8d6099c..01e14cea83341 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4822,7 +4822,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664" [[package]] name = "naga" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "arrayvec", "bit-set", @@ -6590,9 +6590,8 @@ dependencies = [ [[package]] name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +version = "0.3.0+sdk-1.4.309.0" +source = "git+https://github.com/gfx-rs/rspirv?rev=89ce4d0e64c91b0635f617409dc57cb031749a39#89ce4d0e64c91b0635f617409dc57cb031749a39" dependencies = [ "bitflags 2.9.0", ] @@ -8019,7 +8018,7 @@ dependencies = [ [[package]] name = "wgpu-core" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "arrayvec", "bit-set", @@ -8036,6 +8035,7 @@ dependencies = [ "once_cell", "parking_lot", "profiling", + "raw-window-handle", "ron", "rustc-hash 1.999.999", "serde", @@ -8050,7 +8050,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-apple" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "wgpu-hal", ] @@ -8058,7 +8058,7 @@ dependencies = [ [[package]] name = "wgpu-core-deps-windows-linux-android" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "wgpu-hal", ] @@ -8066,7 +8066,7 @@ dependencies = [ [[package]] name = "wgpu-hal" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "android_system_properties", "arrayvec", @@ -8103,12 +8103,13 @@ dependencies = [ [[package]] name = "wgpu-types" version = "28.0.0" -source = "git+https://github.com/gfx-rs/wgpu?rev=3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc#3f02781bb5a0a1fe1922ea36c9bdacf9792abcbc" +source = "git+https://github.com/gfx-rs/wgpu?rev=a2c8c0de7cdb57a74070ce70b9912e853893d502#a2c8c0de7cdb57a74070ce70b9912e853893d502" dependencies = [ "bitflags 2.9.0", "bytemuck", "js-sys", "log", + "raw-window-handle", "serde", "web-sys", ] diff --git a/accessible/generic/FormControlAccessible.cpp b/accessible/generic/FormControlAccessible.cpp index dd9a7065cb252..1cc4de68a6ced 100644 --- a/accessible/generic/FormControlAccessible.cpp +++ b/accessible/generic/FormControlAccessible.cpp @@ -47,9 +47,7 @@ uint64_t CheckboxAccessible::NativeState() const { return state | states::CHECKED; } - } else if (mContent->AsElement()->AttrValueIs( - kNameSpaceID_None, nsGkAtoms::checked, nsGkAtoms::_true, - eCaseMatters)) { // XUL checkbox + } else if (mContent->AsElement()->GetBoolAttr(nsGkAtoms::checked)) { return state | states::CHECKED; } diff --git a/accessible/generic/LocalAccessible.cpp b/accessible/generic/LocalAccessible.cpp index b568c975e5a3e..eb42a357e5e38 100644 --- a/accessible/generic/LocalAccessible.cpp +++ b/accessible/generic/LocalAccessible.cpp @@ -426,9 +426,8 @@ uint64_t LocalAccessible::NativeLinkState() const { return 0; } bool LocalAccessible::NativelyUnavailable() const { if (mContent->IsHTMLElement()) return mContent->AsElement()->IsDisabled(); - return mContent->IsElement() && mContent->AsElement()->AttrValueIs( - kNameSpaceID_None, nsGkAtoms::disabled, - nsGkAtoms::_true, eCaseMatters); + return mContent->IsElement() && + mContent->AsElement()->GetBoolAttr(nsGkAtoms::disabled); } Accessible* LocalAccessible::ChildAtPoint(int32_t aX, int32_t aY, diff --git a/accessible/xul/XULMenuAccessible.cpp b/accessible/xul/XULMenuAccessible.cpp index 853f9bfc43ea9..04bdbd0eabf05 100644 --- a/accessible/xul/XULMenuAccessible.cpp +++ b/accessible/xul/XULMenuAccessible.cpp @@ -63,9 +63,7 @@ uint64_t XULMenuitemAccessible::NativeState() const { state |= states::CHECKABLE; // Checked? - if (mContent->AsElement()->AttrValueIs(kNameSpaceID_None, - nsGkAtoms::checked, nsGkAtoms::_true, - eCaseMatters)) { + if (mContent->AsElement()->GetBoolAttr(nsGkAtoms::checked)) { state |= states::CHECKED; } } diff --git a/browser/actors/AboutReaderParent.sys.mjs b/browser/actors/AboutReaderParent.sys.mjs index 24116da82723b..4c31452edee49 100644 --- a/browser/actors/AboutReaderParent.sys.mjs +++ b/browser/actors/AboutReaderParent.sys.mjs @@ -173,7 +173,7 @@ export class AboutReaderParent extends JSWindowActorParent { menuitem.hidden = false; doc.l10n.setAttributes(menuitem, "menu-view-close-readerview"); - key.setAttribute("disabled", false); + key.removeAttribute("disabled"); Services.obs.notifyObservers(null, "reader-mode-available"); } else { @@ -184,7 +184,7 @@ export class AboutReaderParent extends JSWindowActorParent { menuitem.hidden = !browser.isArticle; doc.l10n.setAttributes(menuitem, "menu-view-enter-readerview"); - key.setAttribute("disabled", !browser.isArticle); + key.toggleAttribute("disabled", !browser.isArticle); if (browser.isArticle) { Services.obs.notifyObservers(null, "reader-mode-available"); diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 1081682bd94ca..4e39e806a74fa 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -2253,8 +2253,8 @@ pref("browser.aiwindow.apiKey", ''); pref("browser.aiwindow.chatStore.loglevel", "Error"); pref("browser.aiwindow.enabled", false); pref("browser.aiwindow.endpoint", "https://mlpa-prod-prod-mozilla.global.ssl.fastly.net/v1"); -pref("browser.aiwindow.insights", false); -pref("browser.aiwindow.insightsLogLevel", "Warn"); +pref("browser.aiwindow.memories", false); +pref("browser.aiwindow.memoriesLogLevel", "Warn"); pref("browser.aiwindow.firstrun.autoAdvanceMS", 3000); pref("browser.aiwindow.firstrun.modelChoice", ""); pref("browser.aiwindow.model", "qwen3-235b-a22b-instruct-2507-maas"); diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js index cfb6b8dd54439..127941602320a 100644 --- a/browser/base/content/browser-addons.js +++ b/browser/base/content/browser-addons.js @@ -441,13 +441,8 @@ customElements.define( #setAllowButtonEnabled(allowed) { let disabled = !allowed; // "mainactiondisabled" mirrors the "disabled" boolean attribute of the - // "Allow" button. toggleAttribute("mainactiondisabled", disabled) cannot - // be used due to bug 1938481. - if (disabled) { - this.setAttribute("mainactiondisabled", "true"); - } else { - this.removeAttribute("mainactiondisabled"); - } + // "Allow" button. + this.toggleAttribute("mainactiondisabled", disabled); // The "mainactiondisabled" attribute may also be toggled by the // PopupNotifications._setNotificationUIState() method, which can be @@ -2831,7 +2826,7 @@ var gUnifiedExtensions = { if (forBrowserAction) { let area = CustomizableUI.getPlacementOfWidget(widgetId).area; let inToolbar = area != CustomizableUI.AREA_ADDONS; - pinButton.setAttribute("checked", inToolbar); + pinButton.toggleAttribute("checked", inToolbar); const placement = CustomizableUI.getPlacementOfWidget(widgetId); const notInPanel = placement?.area !== CustomizableUI.AREA_ADDONS; @@ -2918,14 +2913,14 @@ var gUnifiedExtensions = { }, async onPinToToolbarChange(menu, event) { - let shouldPinToToolbar = event.target.getAttribute("checked") == "true"; + let shouldPinToToolbar = event.target.hasAttribute("checked"); // Revert the checkbox back to its original state. This is because the // addon context menu handlers are asynchronous, and there seems to be // a race where the checkbox state won't get set in time to show the // right state. So we err on the side of caution, and presume that future // attempts to open this context menu on an extension button will show // the same checked state that we started in. - event.target.setAttribute("checked", !shouldPinToToolbar); + event.target.toggleAttribute("checked", !shouldPinToToolbar); let widgetId = this._getWidgetId(menu); if (!widgetId) { diff --git a/browser/base/content/browser-customization.js b/browser/base/content/browser-customization.js index 72e24ef1e11ac..89fa4a95e0347 100644 --- a/browser/base/content/browser-customization.js +++ b/browser/base/content/browser-customization.js @@ -48,7 +48,7 @@ var CustomizationHandler = { // Re-enable parts of the UI we disabled during the dialog let menubar = document.getElementById("main-menubar"); for (let childNode of menubar.children) { - childNode.setAttribute("disabled", false); + childNode.removeAttribute("disabled"); } gBrowser.selectedBrowser.focus(); diff --git a/browser/base/content/browser-fullScreenAndPointerLock.js b/browser/base/content/browser-fullScreenAndPointerLock.js index 0e1aa344c084a..2162e639e810d 100644 --- a/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/browser/base/content/browser-fullScreenAndPointerLock.js @@ -343,11 +343,7 @@ var FullScreen = { // Toggle the View:FullScreen command, which controls elements like the // fullscreen menuitem, and menubars. let fullscreenCommand = document.getElementById("View:FullScreen"); - if (enterFS) { - fullscreenCommand.setAttribute("checked", enterFS); - } else { - fullscreenCommand.removeAttribute("checked"); - } + fullscreenCommand.toggleAttribute("checked", enterFS); if (AppConstants.platform == "macosx") { // Make sure the menu items are adjusted. @@ -835,7 +831,7 @@ var FullScreen = { // Autohide helpers for the context menu item updateAutohideMenuitem(aItem) { - aItem.setAttribute( + aItem.toggleAttribute( "checked", Services.prefs.getBoolPref("browser.fullscreen.autohide") ); diff --git a/browser/base/content/browser-menubar.inc b/browser/base/content/browser-menubar.inc index 3208c4530b9ea..8b896acd1fbc3 100644 --- a/browser/base/content/browser-menubar.inc +++ b/browser/base/content/browser-menubar.inc @@ -154,7 +154,7 @@ + data-l10n-id="menu-view-full-zoom-toggle"/>