mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
chrome: Add support for persist_session_cookies (fixes issue #3291)
This change configures session restore behavior for the NEXT application restart by setting the "session.restore_on_startup" preference based on the [CefSettings|CefRequestContextSettings].persist_session_cookies value.
This commit is contained in:
@@ -8,9 +8,11 @@
|
|||||||
|
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
#include "chrome/browser/browser_process.h"
|
#include "chrome/browser/browser_process.h"
|
||||||
|
#include "chrome/browser/prefs/session_startup_pref.h"
|
||||||
#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
|
#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
|
||||||
#include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h"
|
#include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h"
|
||||||
#include "chrome/browser/profiles/off_the_record_profile_impl.h"
|
#include "chrome/browser/profiles/off_the_record_profile_impl.h"
|
||||||
|
#include "chrome/common/pref_names.h"
|
||||||
|
|
||||||
ChromeBrowserContext::ChromeBrowserContext(
|
ChromeBrowserContext::ChromeBrowserContext(
|
||||||
const CefRequestContextSettings& settings)
|
const CefRequestContextSettings& settings)
|
||||||
@@ -140,6 +142,15 @@ void ChromeBrowserContext::ProfileCreated(Profile* profile,
|
|||||||
parent_profile->NotifyOffTheRecordProfileCreated(otr_profile);
|
parent_profile->NotifyOffTheRecordProfileCreated(otr_profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!profile_->IsOffTheRecord()) {
|
||||||
|
// Configure the desired profile restore behavior for the next application
|
||||||
|
// restart (checked via ProfileImpl::ShouldRestoreOldSessionCookies).
|
||||||
|
profile_->GetPrefs()->SetInteger(
|
||||||
|
prefs::kRestoreOnStartup, !!settings_.persist_session_cookies
|
||||||
|
? SessionStartupPref::kPrefValueLast
|
||||||
|
: SessionStartupPref::kPrefValueNewTab);
|
||||||
|
}
|
||||||
|
|
||||||
if (!init_callbacks_.empty()) {
|
if (!init_callbacks_.empty()) {
|
||||||
for (auto& callback : init_callbacks_) {
|
for (auto& callback : init_callbacks_) {
|
||||||
std::move(callback).Run();
|
std::move(callback).Run();
|
||||||
|
@@ -45,7 +45,7 @@ index cff1df2490bb6..864a03a2e29c9 100644
|
|||||||
|
|
||||||
bool BrowserCommandController::IsWebAppOrCustomTab() const {
|
bool BrowserCommandController::IsWebAppOrCustomTab() const {
|
||||||
diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc
|
diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc
|
||||||
index 6b644bf006532..9ae5bd273b6dc 100644
|
index 6b644bf006532..4b5082a6a2dfe 100644
|
||||||
--- chrome/browser/ui/views/frame/browser_frame.cc
|
--- chrome/browser/ui/views/frame/browser_frame.cc
|
||||||
+++ chrome/browser/ui/views/frame/browser_frame.cc
|
+++ chrome/browser/ui/views/frame/browser_frame.cc
|
||||||
@@ -74,15 +74,23 @@ bool IsUsingGtkTheme(Profile* profile) {
|
@@ -74,15 +74,23 @@ bool IsUsingGtkTheme(Profile* profile) {
|
||||||
@@ -87,7 +87,16 @@ index 6b644bf006532..9ae5bd273b6dc 100644
|
|||||||
return browser_frame_view_->GetTopInset(false);
|
return browser_frame_view_->GetTopInset(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,15 +191,21 @@ void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds,
|
@@ -172,20 +186,30 @@ bool BrowserFrame::ShouldDrawFrameHeader() const {
|
||||||
|
|
||||||
|
void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds,
|
||||||
|
ui::WindowShowState* show_state) const {
|
||||||
|
+ if (!native_browser_frame_) {
|
||||||
|
+ *show_state = ui::SHOW_STATE_DEFAULT;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
return native_browser_frame_->GetWindowPlacement(bounds, show_state);
|
||||||
|
}
|
||||||
|
|
||||||
content::KeyboardEventProcessingResult BrowserFrame::PreHandleKeyboardEvent(
|
content::KeyboardEventProcessingResult BrowserFrame::PreHandleKeyboardEvent(
|
||||||
const content::NativeWebKeyboardEvent& event) {
|
const content::NativeWebKeyboardEvent& event) {
|
||||||
@@ -109,7 +118,7 @@ index 6b644bf006532..9ae5bd273b6dc 100644
|
|||||||
browser_frame_view_->OnBrowserViewInitViewsComplete();
|
browser_frame_view_->OnBrowserViewInitViewsComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,6 +266,8 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const {
|
@@ -246,6 +270,8 @@ const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const {
|
||||||
|
|
||||||
ui::ColorProviderManager::InitializerSupplier* BrowserFrame::GetCustomTheme()
|
ui::ColorProviderManager::InitializerSupplier* BrowserFrame::GetCustomTheme()
|
||||||
const {
|
const {
|
||||||
@@ -118,7 +127,7 @@ index 6b644bf006532..9ae5bd273b6dc 100644
|
|||||||
Browser* browser = browser_view_->browser();
|
Browser* browser = browser_view_->browser();
|
||||||
// If this is an incognito profile, there should never be a custom theme.
|
// If this is an incognito profile, there should never be a custom theme.
|
||||||
if (browser->profile()->IsIncognitoProfile())
|
if (browser->profile()->IsIncognitoProfile())
|
||||||
@@ -374,7 +396,8 @@ void BrowserFrame::SelectNativeTheme() {
|
@@ -374,7 +400,8 @@ void BrowserFrame::SelectNativeTheme() {
|
||||||
// Select between regular, dark and GTK theme.
|
// Select between regular, dark and GTK theme.
|
||||||
ui::NativeTheme* native_theme = ui::NativeTheme::GetInstanceForNativeUi();
|
ui::NativeTheme* native_theme = ui::NativeTheme::GetInstanceForNativeUi();
|
||||||
|
|
||||||
@@ -128,7 +137,7 @@ index 6b644bf006532..9ae5bd273b6dc 100644
|
|||||||
// No matter if we are using the default theme or not we always use the dark
|
// No matter if we are using the default theme or not we always use the dark
|
||||||
// ui instance.
|
// ui instance.
|
||||||
SetNativeTheme(ui::NativeTheme::GetInstanceForDarkUI());
|
SetNativeTheme(ui::NativeTheme::GetInstanceForDarkUI());
|
||||||
@@ -387,7 +410,8 @@ void BrowserFrame::SelectNativeTheme() {
|
@@ -387,7 +414,8 @@ void BrowserFrame::SelectNativeTheme() {
|
||||||
// display_override so the web contents can blend with the overlay by using
|
// display_override so the web contents can blend with the overlay by using
|
||||||
// the developer-provided theme color for a better experience. Context:
|
// the developer-provided theme color for a better experience. Context:
|
||||||
// https://crbug.com/1219073.
|
// https://crbug.com/1219073.
|
||||||
|
Reference in New Issue
Block a user