diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index 46cebe805ac..e623104d01e 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -1168,7 +1168,7 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U in Speedreader - + Reader Mode diff --git a/browser/speedreader/speedreader_tab_helper.cc b/browser/speedreader/speedreader_tab_helper.cc index 7e1e9004e64..c56d3740c0e 100644 --- a/browser/speedreader/speedreader_tab_helper.cc +++ b/browser/speedreader/speedreader_tab_helper.cc @@ -135,14 +135,21 @@ void SpeedreaderTabHelper::OnBubbleClosed() { browser->window()->UpdatePageActionIcon(PageActionIconType::kReaderMode); } -// Displays speedreader information -void SpeedreaderTabHelper::ShowBubble() { +void SpeedreaderTabHelper::ShowSpeedreaderBubble() { + ShowBubble(true); +} + +void SpeedreaderTabHelper::ShowReaderModeBubble() { + ShowBubble(false); +} + +void SpeedreaderTabHelper::ShowBubble(bool is_bubble_speedreader) { auto* contents = web_contents(); Browser* browser = chrome::FindBrowserWithWebContents(contents); DCHECK(browser); - const bool enabled = distill_state_ == DistillState::kSpeedreaderMode; - speedreader_bubble_ = static_cast(browser->window()) - ->ShowSpeedreaderBubble(this, enabled); + speedreader_bubble_ = + static_cast(browser->window()) + ->ShowSpeedreaderBubble(this, is_bubble_speedreader); browser->window()->UpdatePageActionIcon(PageActionIconType::kReaderMode); } diff --git a/browser/speedreader/speedreader_tab_helper.h b/browser/speedreader/speedreader_tab_helper.h index 05d2f187a6e..1a83ce72772 100644 --- a/browser/speedreader/speedreader_tab_helper.h +++ b/browser/speedreader/speedreader_tab_helper.h @@ -56,7 +56,10 @@ class SpeedreaderTabHelper SpeedreaderBubbleView* speedreader_bubble_view() const; // Displays speedreader information - void ShowBubble(); + void ShowSpeedreaderBubble(); + + // Displays reader mode information + void ShowReaderModeBubble(); // Hides speedreader information void HideBubble(); @@ -68,6 +71,11 @@ class SpeedreaderTabHelper friend class content::WebContentsUserData; explicit SpeedreaderTabHelper(content::WebContents* web_contents); + // Called by ShowSpeedreaderBubble and ShowReaderModeBubble. + // |is_bubble_speedreader| will show a bubble for pages in Speedreader if set + // to true, otherwise pages in reader mode. + void ShowBubble(bool is_bubble_speedreader); + void UpdateActiveState(content::NavigationHandle* handle); // content::WebContentsObserver diff --git a/browser/ui/browser_commands.cc b/browser/ui/browser_commands.cc index 36e64941aca..4fbdd1879b3 100644 --- a/browser/ui/browser_commands.cc +++ b/browser/ui/browser_commands.cc @@ -110,22 +110,22 @@ void ShowSpeedreaderBubble(Browser* browser) { if (!tab_helper) return; + const bool speedreader_enabled = tab_helper->IsSpeedreaderEnabled(); const DistillState state = tab_helper->PageDistillState(); if (state == DistillState::kNone) { // If this is called on an undistilled page, we single shot it. tab_helper->SingleShotSpeedreader(); - - if (tab_helper->IsSpeedreaderEnabled()) - return; } - // If Speedreader is already enabled, don't show the bubble. - // fixme: we need to |or| with an "asked" counter - if (state == DistillState::kNone || state == DistillState::kReaderMode) { - if (tab_helper->IsSpeedreaderEnabled()) - return; + if (state == DistillState::kSpeedreaderMode) { + tab_helper->ShowSpeedreaderBubble(); + } else { + if (speedreader_enabled && !tab_helper->IsEnabledForSite()) { + tab_helper->ShowSpeedreaderBubble(); + } else { + tab_helper->ShowReaderModeBubble(); + } } - tab_helper->ShowBubble(); } } #endif // BUILDFLAG(ENABLE_SPEEDREADER) diff --git a/browser/ui/speedreader/speedreader_bubble_browsertest.cc b/browser/ui/speedreader/speedreader_bubble_browsertest.cc index b2d468d6335..6c872d9c75f 100644 --- a/browser/ui/speedreader/speedreader_bubble_browsertest.cc +++ b/browser/ui/speedreader/speedreader_bubble_browsertest.cc @@ -23,7 +23,12 @@ class SpeedreaderBubbleBrowserTest : public DialogBrowserTest { delete; // DialogBrowserTest: - void ShowUi(const std::string& name) override { tab_helper()->ShowBubble(); } + void ShowUi(const std::string& name) override { + if (tab_helper()->IsSpeedreaderEnabled()) + tab_helper()->ShowSpeedreaderBubble(); + else + tab_helper()->ShowReaderModeBubble(); + } protected: bool NavigateToNewTab() { diff --git a/browser/ui/views/speedreader/speedreader_icon_view.cc b/browser/ui/views/speedreader/speedreader_icon_view.cc index 534843fd6cb..4d9abb52ea2 100644 --- a/browser/ui/views/speedreader/speedreader_icon_view.cc +++ b/browser/ui/views/speedreader/speedreader_icon_view.cc @@ -145,7 +145,6 @@ SkColor SpeedreaderIconView::GetIconLabelBubbleSurroundingForegroundColor() SkColor SpeedreaderIconView::GetIconLabelBubbleInkDropColor() const { return kReaderIconColor; - // return icon_label_bubble_delegate_->GetIconLabelBubbleBackgroundColor(); } SkColor SpeedreaderIconView::GetIconLabelBubbleBackgroundColor() const { diff --git a/components/speedreader/BUILD.gn b/components/speedreader/BUILD.gn index 490d85e0766..47b22720270 100644 --- a/components/speedreader/BUILD.gn +++ b/components/speedreader/BUILD.gn @@ -1,5 +1,3 @@ -import("//brave/components/speedreader/buildflags/buildflags.gni") - source_set("speedreader") { public_deps = [ "rust/ffi",