Skip to content

Commit a14b2c1

Browse files
committed
Remove AtomBrowserContext::SetCookieableSchemes
The standard schemes are already stored, we don't have to duplicate the list for every session.
1 parent 6cd1aa2 commit a14b2c1

File tree

4 files changed

+28
-25
lines changed

4 files changed

+28
-25
lines changed

atom/browser/api/atom_api_protocol.cc

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,26 @@ void ClearJobFactoryInIO(
4242

4343
} // namespace
4444

45+
std::vector<std::string> GetStandardSchemes() {
46+
return g_standard_schemes;
47+
}
48+
49+
void RegisterStandardSchemes(const std::vector<std::string>& schemes) {
50+
g_standard_schemes = schemes;
51+
52+
auto* policy = content::ChildProcessSecurityPolicy::GetInstance();
53+
for (const std::string& scheme : schemes) {
54+
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
55+
policy->RegisterWebSafeScheme(scheme);
56+
}
57+
58+
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
59+
atom::switches::kStandardSchemes, base::JoinString(schemes, ","));
60+
}
61+
4562
Protocol::Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context)
4663
: request_context_getter_(browser_context->GetRequestContext()),
4764
weak_factory_(this) {
48-
browser_context->SetCookieableSchemes(g_standard_schemes);
4965
Init(isolate);
5066
}
5167

@@ -204,24 +220,15 @@ void RegisterStandardSchemes(
204220
return;
205221
}
206222

207-
auto policy = content::ChildProcessSecurityPolicy::GetInstance();
208-
for (const auto& scheme : schemes) {
209-
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
210-
policy->RegisterWebSafeScheme(scheme);
211-
}
212-
213-
auto command_line = base::CommandLine::ForCurrentProcess();
214-
command_line->AppendSwitchASCII(atom::switches::kStandardSchemes,
215-
base::JoinString(schemes, ","));
216-
217-
atom::api::g_standard_schemes = schemes;
223+
atom::api::RegisterStandardSchemes(schemes);
218224
}
219225

220226
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
221227
v8::Local<v8::Context> context, void* priv) {
222228
v8::Isolate* isolate = context->GetIsolate();
223229
mate::Dictionary dict(isolate, exports);
224230
dict.SetMethod("registerStandardSchemes", &RegisterStandardSchemes);
231+
dict.SetMethod("getStandardSchemes", &atom::api::GetStandardSchemes);
225232
}
226233

227234
} // namespace

atom/browser/api/atom_api_protocol.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ namespace atom {
2828

2929
namespace api {
3030

31+
std::vector<std::string> GetStandardSchemes();
32+
void RegisterStandardSchemes(const std::vector<std::string>& schemes);
33+
3134
class Protocol : public mate::TrackableObject<Protocol> {
3235
public:
3336
using Handler =

atom/browser/atom_browser_context.cc

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "atom/browser/atom_browser_context.h"
66

7+
#include "atom/browser/api/atom_api_protocol.h"
78
#include "atom/browser/atom_browser_main_parts.h"
89
#include "atom/browser/atom_download_manager_delegate.h"
910
#include "atom/browser/browser.h"
@@ -88,9 +89,6 @@ AtomBrowserContext::AtomBrowserContext(
8889
use_cache_ = true;
8990
options.GetBoolean("cache", &use_cache_);
9091

91-
// Default schemes that should support cookies.
92-
cookieable_schemes_ = {"http", "https", "ws", "wss"};
93-
9492
// Initialize Pref Registry in brightray.
9593
InitPrefs();
9694
}
@@ -102,13 +100,6 @@ void AtomBrowserContext::SetUserAgent(const std::string& user_agent) {
102100
user_agent_ = user_agent;
103101
}
104102

105-
void AtomBrowserContext::SetCookieableSchemes(
106-
const std::vector<std::string>& schemes) {
107-
if (!schemes.empty())
108-
cookieable_schemes_.insert(cookieable_schemes_.end(),
109-
schemes.begin(), schemes.end());
110-
}
111-
112103
net::NetworkDelegate* AtomBrowserContext::CreateNetworkDelegate() {
113104
return network_delegate_;
114105
}
@@ -199,7 +190,11 @@ net::SSLConfigService* AtomBrowserContext::CreateSSLConfigService() {
199190
}
200191

201192
std::vector<std::string> AtomBrowserContext::GetCookieableSchemes() {
202-
return cookieable_schemes_;
193+
auto default_schemes = brightray::BrowserContext::GetCookieableSchemes();
194+
const auto& standard_schemes = atom::api::GetStandardSchemes();
195+
default_schemes.insert(default_schemes.end(),
196+
standard_schemes.begin(), standard_schemes.end());
197+
return default_schemes;
203198
}
204199

205200
void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {

atom/browser/atom_browser_context.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class AtomBrowserContext : public brightray::BrowserContext {
2727
const base::DictionaryValue& options = base::DictionaryValue());
2828

2929
void SetUserAgent(const std::string& user_agent);
30-
void SetCookieableSchemes(const std::vector<std::string>& schemes);
3130

3231
// brightray::URLRequestContextGetter::Delegate:
3332
net::NetworkDelegate* CreateNetworkDelegate() override;
@@ -59,7 +58,6 @@ class AtomBrowserContext : public brightray::BrowserContext {
5958
std::unique_ptr<AtomDownloadManagerDelegate> download_manager_delegate_;
6059
std::unique_ptr<WebViewManager> guest_manager_;
6160
std::unique_ptr<AtomPermissionManager> permission_manager_;
62-
std::vector<std::string> cookieable_schemes_;
6361
std::string user_agent_;
6462
bool use_cache_;
6563

0 commit comments

Comments
 (0)