Within the Password Manager UI, the title bar contained two redundant
icons to the left of the title:
1. The help icon - since it only takes the user to the generic help
page, this isn't particularly "helpful"
2. The 3 vertical dots simply display an exit option which is also
redundant since the back arrow does the same thing.
Resolvesbrave/brave-browser#52765
Fix race in AdBlockServiceTest.PreRunTestOnMainThread
The RunUntil condition checked a histogram recorded on a background
thread. Due to the incoming-queue/work-queue split in Chromium's
SequenceManager, RunUntil could return after seeing the histogram
sample but before OnEngineLoaded dispatched OnFilterListLoaded on the
UI thread. The observer created in InstallComponent then caught this
stale notification, leaving the histogram count at 1 instead of 2.
Switch to IsFilterListLoadedForTesting(true), a UI-thread flag set
in OnEngineLoaded, which guarantees the reply callback has been fully
processed before RunUntil returns.
Resolvesbrave/brave-browser#55007
This PR corrects several of the dos-and-donts violations under
`tools/cr`. This is particularly useful to prevent future bugs with file
reads and writes that have been persistent from time to time.
Adds a TabStripPlacementCoordinator that owns the parenting of the
horizontal tab strip region view and selects an appropriate parent based
on browser state (vertical tabs, focus mode, default). Callers register
parents per PlacementKind and trigger reassignment via UpdatePlacement.
Migrates BraveVerticalTabStripRegionView off its ad-hoc reparenting
onto the coordinator.
The kTopContainer placement is wired up but left unused; Focus Mode
will register a parent for it in a follow-up.
This PR introduces the foundation for a new rebase routine to be used by
`brockit` when doing `brockit --rebase`. This routine is nearly feature
complete with the standard one, the only exception being the dropping of
support for `--recommit`, which was introduced but never really used in
CI.
This implementation aims at making the code around rebases cleaner, more
reliable, and easier to customise in the future. It is also already
taking steps towards us having an implementation for `--continue`
support.
An interesting feature this v2 code brings is taht when parsing
questions occur, we bubble up these issues to the use through exceptions
that launch the user editor to evaluate what's going on.
Bug: https://github.com/brave/brave-browser/issues/55466
This PR changes the way we are patching `RequestType` to not have to
rely on any particular key, but just introduce our keys at the end of
the enum value. This technique allows for the replacemnt of `kMaxValue
to use the new value we provide.
1. ad_block_service() lazy initializes
2. Inside AdBlockService ctor -> AdBlockSubscriptionServiceManager ctor -> AdBlockSubscriptionDownloadManagerGetter -> MaybeGetDownloadManager-> builds the background download service -> DeferredClientWrapper::InflateClient → CreateAdBlockSubscriptionDownloadClient override
3. That override calls g_brave_browser_process->ad_block_service() again. Since ad_block_service_ is still null (assignment happens after make_unique returns), it constructs a second AdBlockService,
assigns it to ad_block_service_, and the client captures a raw_ptr to that inner instance's subscription_service_manager().
4. Outer make_unique finishes; assignment ad_block_service_ = ... overwrites the unique_ptr -> destroys inner instance.
5. Later, DeferredClientWrapper::DoRunDeferredClosures runs AdBlockSubscriptionDownloadClient::OnServiceInitialized -> dereferences dangling subscription_service_manager_ -> UAF.
* Fix Playlist showing downloaded indicator for missing cached items
Playlist previously rendered the "downloaded" checkmark whenever `PlaylistItem.cachedData` was non-empty, without verifying the underlying bookmarked file still existed on disk.
CarPlay used the stricter synchronous `state(for:)` check, so the two surfaces could disagree, and tapping an apparently-downloaded item would silently re-stream/re-download via `PlaylistMediaStreamer`.
- `PlaylistItemList` now derives its download indicator solely from the async `PlaylistManager.downloadState(for:)` result, dropping the `cachedData` fallback.
- `PlaylistManager.downloadState(for:)` clears stale `cachedData` and emits `.invalid` when the bookmark resolves to a missing file.
- `deleteDanglingManagedAssets()` now also reconciles the reverse direction: items whose bookmarks are stale or point to missing files have their `cachedData` cleared and an `.invalid` state event emitted, so future cold starts reflect reality.
- `CarPlayController` now reads from the same async `downloadState(for:)` path (cached per-refresh) so phone + CarPlay status will be in sync.
* Added Playlist File Manager For debug sessions to delete the files
Signed-off-by: Eli Hini <8249954+EliHini@users.noreply.github.com>
First step of the BraveConfirmInfoBar refactor.
Before refactoring BraveConfirmInfoBar, removed unused BraveConfirmInfoBar subclass.
Dev channel deprecation infobar: not used anymore. Remove.
Resolves - subtask of brave/brave-browser#48822
After NTT began being served on demand, the NTT content can arrive while the
NTP view is already visible. The viewed impression was only fired in
viewDidAppear, so asynchronously delivered NTT never triggered the event.
To fix that the PR adds triggering of the event to `NewTabPageBackground`
`changed()` callback.
Aligns brave:// with chrome:// in IntentHandler.intentHasUnsafeInternalScheme.
The upstream guard is unaware of the Brave alias because the brave:// →
chrome:// rewrite happens after the intent layer.
BraveIntentHandlerClassAdapter redirects the upstream call site through
BraveIntentHandler.intentHasUnsafeInternalScheme. The Brave method defers to
upstream first, then additionally rejects brave:// under the same category
guard upstream uses. A new BraveIntentHandlerInternal helper holds the
bytecode stub used to back-call the (private) upstream method.
Resolves: https://github.com/brave/brave-browser/issues/55473
The display ad pipeline on desktop was already disabled. This PR removes the
remaining frontend code and portions of the mojom code that no longer had any
effect. The remaining mojom code is still required for Android builds and will be
removed in a follow-up when the dead code for Brave News inline content ads
on Android is cleaned up.
Resolvesbrave/brave-browser#55152
Update extrinsic signing routines to add an asset id denoting that the chain's
native token (DOT) will be used to pay the transaction fees.
The asset id is specified to appear after the tip. Tests include signed
extrinsics accepted by AssetHub Westend.
The test intermittently fails with "deepQuery is not defined" because
InjectHelpers injects the helper function into the bubble's WebContents
before the WebUI navigation has committed. WaitForLoadStop returns
immediately when no navigation is pending (e.g., the WebContents is
still at about:blank), so deepQuery is injected into the pre-navigation
context, then lost when chrome://email-aliases.panel/ loads.
Wait for the WebContents to commit a non-empty, non-about:blank URL
before calling WaitForLoadStop and injecting JavaScript.
Fixbrave/brave-browser#55000
Removing these lines so we can introduce `count` value checks to steer
users towards fixed counts only when needed, and away from `count=0`. At
the moment removing these as they are redundant.