mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-12 17:46:04 +01:00
a23e845244
This change removes cookie and request handler functionality that will not supported by the NetworkService. Specifically, it is no longer possible to change cookie storage locations at runime by returning a different CefCookieManager for an already initialized CefRequestContext. After this change you will need to use a separate CefRequestContext when creating a CefBrowser if you require separate cookie storage. The following methods have been removed: - CefCookieManager::CreateManager - CefCookieManager::GetBlockingManager - CefCookieManager::SetStoragePath - CefRequestContextHandler::GetCookieManager The following methods have been renamed: - CefRequestContext::GetDefaultCookieManager to GetCookieManager. This change substantially simplifies the network implementation in CEF because it is no longer necessary to proxy objects that are normally owned by Chromium. Chromium patches that are no longer necessary will be removed as a follow-up commit. To test: Verify that `ceftests --gtest_filter=-PluginTest.*` pass with NetworkService disabled. Plugin tests will be fixed in a follow-up commit.
64 lines
2.5 KiB
C++
64 lines
2.5 KiB
C++
// Copyright (c) 2016 The Chromium Embedded Framework Authors.
|
|
// Portions copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "libcef/browser/chrome_profile_manager_stub.h"
|
|
|
|
#include "libcef/browser/browser_context.h"
|
|
#include "libcef/browser/content_browser_client.h"
|
|
|
|
namespace {
|
|
|
|
// Return the active browser context. This is primarily called from Chrome code
|
|
// that handles WebUI views and wishes to associate the view's data with a
|
|
// particular context (profile). Chrome stores multiple profiles in sub-
|
|
// directories of |user_data_dir| and then uses ProfileManager to track which
|
|
// profile (sub-directory name) was last active.
|
|
//
|
|
// TODO(cef): To most closely match Chrome behavior this should return the
|
|
// context for the currently active browser (e.g. the browser with input focus).
|
|
// Return the main context for now since we don't currently have a good way to
|
|
// determine that.
|
|
CefBrowserContext* GetActiveBrowserContext() {
|
|
return static_cast<CefBrowserContext*>(
|
|
CefContentBrowserClient::Get()->request_context()->GetBrowserContext());
|
|
}
|
|
|
|
} // namespace
|
|
|
|
ChromeProfileManagerStub::ChromeProfileManagerStub()
|
|
: ProfileManager(base::FilePath()) {}
|
|
|
|
ChromeProfileManagerStub::~ChromeProfileManagerStub() {}
|
|
|
|
Profile* ChromeProfileManagerStub::GetProfile(
|
|
const base::FilePath& profile_dir) {
|
|
CefBrowserContext* browser_context =
|
|
CefBrowserContext::GetForCachePath(profile_dir);
|
|
if (!browser_context) {
|
|
// ProfileManager makes assumptions about profile directory paths that do
|
|
// not match CEF usage. For example, the default Chrome profile name is
|
|
// "Default" so it will append that sub-directory name to an empty
|
|
// |user_data_dir| value and then call this method. Use the active context
|
|
// in cases such as this where we don't understand what ProfileManager is
|
|
// asking for.
|
|
browser_context = GetActiveBrowserContext();
|
|
}
|
|
return browser_context;
|
|
}
|
|
|
|
bool ChromeProfileManagerStub::IsValidProfile(const void* profile) {
|
|
if (!profile)
|
|
return false;
|
|
return !!CefBrowserContext::GetForContext(
|
|
reinterpret_cast<content::BrowserContext*>(const_cast<void*>(profile)));
|
|
}
|
|
|
|
Profile* ChromeProfileManagerStub::GetLastUsedProfile(
|
|
const base::FilePath& user_data_dir) {
|
|
// Override this method to avoid having to register prefs::kProfileLastUsed,
|
|
// usage of which doesn't make sense for CEF.
|
|
return GetActiveBrowserContext();
|
|
}
|