Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added theme change support in speedreader. #14307

Merged
merged 8 commits into from
Aug 2, 2022
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/brave_generated_resources.grd
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ Or change later at <ph name="SETTINGS_EXTENIONS_LINK">$2<ex>brave://settings/ext
Speedreader settings
</message>
<message name="IDS_SPEEDREADER_SHOW_ORIGINAL_PAGE_LINK" desc="Text of the link to show original page">
Show original page
View original
</message>
</if>

Expand Down
11 changes: 8 additions & 3 deletions browser/brave_content_browser_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@
#include "brave/components/sidebar/buildflags/buildflags.h"
#include "brave/components/skus/common/skus_sdk.mojom.h"
#include "brave/components/speedreader/common/buildflags.h"
#include "brave/components/speedreader/speedreader_util.h"
#include "brave/components/tor/buildflags/buildflags.h"
#include "brave/components/translate/core/common/brave_translate_switches.h"
#include "brave/grit/brave_generated_resources.h"
Expand Down Expand Up @@ -151,8 +150,10 @@ using extensions::ChromeContentBrowserClientExtensionsPart;
#endif

#if BUILDFLAG(ENABLE_SPEEDREADER)
#include "brave/browser/speedreader/speedreader_service_factory.h"
#include "brave/browser/speedreader/speedreader_tab_helper.h"
#include "brave/components/speedreader/speedreader_throttle.h"
#include "brave/components/speedreader/speedreader_util.h"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not used

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

used in line 744

#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h"
#endif

Expand Down Expand Up @@ -744,11 +745,15 @@ BraveContentBrowserClient::CreateURLLoaderThrottles(
// Only check for disabled sites if we are in Speedreader mode
const bool check_disabled_sites =
state == speedreader::DistillState::kSpeedreaderModePending;
auto* speedreader_service =
speedreader::SpeedreaderServiceFactory::GetForProfile(
Profile::FromBrowserContext(browser_context));
std::unique_ptr<speedreader::SpeedReaderThrottle> throttle =
speedreader::SpeedReaderThrottle::MaybeCreateThrottleFor(
g_brave_browser_process->speedreader_rewriter_service(),
settings_map, tab_helper->GetWeakPtr(), request.url,
check_disabled_sites, base::ThreadTaskRunnerHandle::Get());
speedreader_service, settings_map, tab_helper->GetWeakPtr(),
request.url, check_disabled_sites,
base::ThreadTaskRunnerHandle::Get());
if (throttle)
result.push_back(std::move(throttle));
}
Expand Down
33 changes: 33 additions & 0 deletions browser/speedreader/speedreader_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/test/bind.h"
#include "brave/app/brave_command_ids.h"
#include "brave/browser/speedreader/speedreader_service_factory.h"
#include "brave/browser/speedreader/speedreader_tab_helper.h"
Expand Down Expand Up @@ -378,3 +379,35 @@ IN_PROC_BROWSER_TEST_F(SpeedReaderBrowserTest, ShowOriginalPageOnUnreadable) {
speedreader::kIsolatedWorldId)
.ExtractBool());
}

IN_PROC_BROWSER_TEST_F(SpeedReaderBrowserTest, SetTheme) {
ToggleSpeedreader();
NavigateToPageSynchronously(kTestPageReadable);

constexpr const char kGetTheme[] =
R"js(
document.documentElement.getAttribute('data-theme')
)js";

EXPECT_EQ(speedreader::Theme::kNone, speedreader_service()->GetTheme());

EXPECT_EQ(nullptr, content::EvalJs(ActiveWebContents(), kGetTheme,
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
speedreader::kIsolatedWorldId));
auto* tab_helper =
speedreader::SpeedreaderTabHelper::FromWebContents(ActiveWebContents());
tab_helper->SetTheme(speedreader::Theme::kDark);

EXPECT_EQ("dark", content::EvalJs(ActiveWebContents(), kGetTheme,
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
speedreader::kIsolatedWorldId)
.ExtractString());
EXPECT_EQ(speedreader::Theme::kDark, speedreader_service()->GetTheme());

// New page
NavigateToPageSynchronously(kTestPageReadable);
EXPECT_EQ("dark", content::EvalJs(ActiveWebContents(), kGetTheme,
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
speedreader::kIsolatedWorldId)
.ExtractString());
}
48 changes: 48 additions & 0 deletions browser/speedreader/speedreader_tab_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
#include "base/bind.h"
#include "base/feature_list.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "brave/browser/brave_browser_process.h"
#include "brave/browser/speedreader/speedreader_service_factory.h"
#include "brave/browser/themes/brave_dark_mode_utils.h"
#include "brave/browser/ui/brave_browser_window.h"
#include "brave/browser/ui/speedreader/speedreader_bubble_view.h"
#include "brave/components/l10n/common/locale_util.h"
Expand Down Expand Up @@ -258,6 +260,52 @@ void SpeedreaderTabHelper::OnShowOriginalPage() {
ReloadContents();
}

void SpeedreaderTabHelper::SetTheme(Theme theme) {
auto* speedreader_service =
SpeedreaderServiceFactory::GetForProfile(GetProfile());
if (!speedreader_service)
return;

if (speedreader_service->GetTheme() == theme)
return;

constexpr const char16_t kSetTheme[] =
uR"js(
(function() {
const theme = '$1'
if (theme == '') {
document.documentElement.removeAttribute('data-theme')
} else {
document.documentElement.setAttribute('data-theme', theme)
}
})();
)js";

speedreader_service->SetTheme(theme);

const auto script = base::ReplaceStringPlaceholders(
kSetTheme, base::UTF8ToUTF16(speedreader_service->GetThemeName()),
nullptr);

web_contents()->GetPrimaryMainFrame()->ExecuteJavaScriptInIsolatedWorld(
script, base::DoNothing(), kIsolatedWorldId);
}

Theme SpeedreaderTabHelper::GetTheme() {
const Theme theme =
SpeedreaderServiceFactory::GetForProfile(GetProfile())->GetTheme();
if (theme == Theme::kNone) {
switch (dark_mode::GetActiveBraveDarkModeType()) {
case dark_mode::BraveDarkModeType::BRAVE_DARK_MODE_TYPE_DARK:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is ::BRAVE_DARK_MODE_TYPE_DEFAULT ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// DEFAULT type acts as two ways depends on system theme mode.
// If system dark mode is not supported, we override it with channel based
// policy. In this case, user can see dark or light option in settings.
// Otherwise, it acts like system dark mode mode. It respects system's dark
// mode. In this case, user can see all three options in theme settings.

GetActiveBraveDarkModeType never returns default.

return Theme::kDark;
case dark_mode::BraveDarkModeType::BRAVE_DARK_MODE_TYPE_DEFAULT:
case dark_mode::BraveDarkModeType::BRAVE_DARK_MODE_TYPE_LIGHT:
return Theme::kLight;
}
}
return theme;
}

void SpeedreaderTabHelper::ClearPersistedData() {
if (auto* entry = web_contents()->GetController().GetLastCommittedEntry()) {
SpeedreaderExtendedInfoHandler::ClearPersistedData(entry);
Expand Down
4 changes: 4 additions & 0 deletions browser/speedreader/speedreader_tab_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#define BRAVE_BROWSER_SPEEDREADER_SPEEDREADER_TAB_HELPER_H_

#include <memory>
#include <string>

#include "base/memory/weak_ptr.h"
#include "brave/components/speedreader/common/speedreader.mojom.h"
Expand Down Expand Up @@ -87,6 +88,9 @@ class SpeedreaderTabHelper
// mojom::SpeedreaderHost:
void OnShowOriginalPage() override;

void SetTheme(Theme theme);
Theme GetTheme();

private:
friend class content::WebContentsUserData<SpeedreaderTabHelper>;
explicit SpeedreaderTabHelper(content::WebContents* web_contents);
Expand Down
Loading