diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index cd2e08eb564..009f2e5a473 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -1189,6 +1189,15 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U in Speedreader + + Turn off reader mode + + + Turn on reader mode + + + Speedreader settings + diff --git a/browser/speedreader/speedreader_tab_helper.h b/browser/speedreader/speedreader_tab_helper.h index 31f18cfd879..52c1f33b127 100644 --- a/browser/speedreader/speedreader_tab_helper.h +++ b/browser/speedreader/speedreader_tab_helper.h @@ -24,6 +24,9 @@ class SpeedreaderTabHelper public content::WebContentsUserData { public: enum class DistillState { + // Used as an initialization state + kUnknown, + // The web contents is not distilled kNone, diff --git a/browser/ui/views/speedreader/speedreader_icon_view.cc b/browser/ui/views/speedreader/speedreader_icon_view.cc index e2aa5543102..029d1a414ad 100644 --- a/browser/ui/views/speedreader/speedreader_icon_view.cc +++ b/browser/ui/views/speedreader/speedreader_icon_view.cc @@ -27,8 +27,6 @@ #include "ui/views/animation/ink_drop_host_view.h" #include "ui/views/animation/ink_drop_state.h" -using DistillState = speedreader::SpeedreaderTabHelper::DistillState; - SpeedreaderIconView::SpeedreaderIconView( CommandUpdater* command_updater, IconLabelBubbleView::Delegate* icon_label_bubble_delegate, @@ -58,15 +56,8 @@ void SpeedreaderIconView::UpdateImpl() { if (ink_drop()->GetHighlighted() && !IsBubbleShowing()) ink_drop()->AnimateToState(views::InkDropState::HIDDEN, nullptr); - auto* tab_helper = - speedreader::SpeedreaderTabHelper::FromWebContents(contents); - if (!tab_helper) { - SetVisible(false); - return; - } - const ui::ThemeProvider* theme_provider = GetThemeProvider(); - const DistillState state = tab_helper->PageDistillState(); + const DistillState state = GetDistillState(); const bool is_distilled = speedreader::SpeedreaderTabHelper::PageStateIsDistilled(state); @@ -99,16 +90,7 @@ void SpeedreaderIconView::UpdateImpl() { } const gfx::VectorIcon& SpeedreaderIconView::GetVectorIcon() const { - auto* web_contents = GetWebContents(); - if (!web_contents) - return kBraveReaderModeIcon; - - auto* tab_helper = - speedreader::SpeedreaderTabHelper::FromWebContents(web_contents); - if (!tab_helper) - return kBraveReaderModeIcon; - - const DistillState state = tab_helper->PageDistillState(); + const DistillState state = GetDistillState(); if (state == DistillState::kSpeedreaderMode || state == DistillState::kSpeedreaderOnDisabledPage) { return kBraveSpeedreaderModeIcon; @@ -118,8 +100,20 @@ const gfx::VectorIcon& SpeedreaderIconView::GetVectorIcon() const { } std::u16string SpeedreaderIconView::GetTextForTooltipAndAccessibleName() const { - return l10n_util::GetStringUTF16(GetActive() ? IDS_EXIT_DISTILLED_PAGE - : IDS_DISTILL_PAGE); + int id; + const DistillState state = GetDistillState(); + switch (state) { + case DistillState::kSpeedreaderMode: + case DistillState::kSpeedreaderOnDisabledPage: + id = IDS_SPEEDREADER_ICON_SPEEDREADER_SETTINGS; + break; + case DistillState::kReaderMode: + id = IDS_SPEEDREADER_ICON_TURN_OFF_READER_MODE; + break; + default: + id = IDS_SPEEDREADER_ICON_TURN_ON_READER_MODE; + } + return l10n_util::GetStringUTF16(id); } void SpeedreaderIconView::OnExecuting( @@ -139,5 +133,17 @@ views::BubbleDialogDelegate* SpeedreaderIconView::GetBubble() const { tab_helper->speedreader_bubble_view()); } +DistillState SpeedreaderIconView::GetDistillState() const { + DistillState state = DistillState::kUnknown; + auto* web_contents = GetWebContents(); + if (web_contents) { + auto* tab_helper = + speedreader::SpeedreaderTabHelper::FromWebContents(web_contents); + if (tab_helper) + state = tab_helper->PageDistillState(); + } + return state; +} + BEGIN_METADATA(SpeedreaderIconView, PageActionIconView) END_METADATA diff --git a/browser/ui/views/speedreader/speedreader_icon_view.h b/browser/ui/views/speedreader/speedreader_icon_view.h index 3b85f013cbe..5a31953af08 100644 --- a/browser/ui/views/speedreader/speedreader_icon_view.h +++ b/browser/ui/views/speedreader/speedreader_icon_view.h @@ -6,10 +6,13 @@ #ifndef BRAVE_BROWSER_UI_VIEWS_SPEEDREADER_SPEEDREADER_ICON_VIEW_H_ #define BRAVE_BROWSER_UI_VIEWS_SPEEDREADER_SPEEDREADER_ICON_VIEW_H_ +#include "brave/browser/speedreader/speedreader_tab_helper.h" #include "chrome/browser/ui/views/page_action/page_action_icon_view.h" #include "content/public/browser/web_contents_observer.h" #include "ui/base/metadata/metadata_header_macros.h" +using DistillState = speedreader::SpeedreaderTabHelper::DistillState; + namespace content { class NavigationHandle; } // namespace content @@ -34,6 +37,8 @@ class SpeedreaderIconView : public PageActionIconView { views::BubbleDialogDelegate* GetBubble() const override; std::u16string GetTextForTooltipAndAccessibleName() const override; void UpdateImpl() override; + private: + DistillState GetDistillState() const; }; #endif // BRAVE_BROWSER_UI_VIEWS_SPEEDREADER_SPEEDREADER_ICON_VIEW_H_