register cookieable schemes with browser context
authordeepak1556 <hop2deep@gmail.com>
Thu, 4 Aug 2016 06:45:45 +0000 (12:15 +0530)
committerdeepak1556 <hop2deep@gmail.com>
Thu, 4 Aug 2016 06:47:30 +0000 (12:17 +0530)
atom/browser/api/atom_api_protocol.cc
atom/browser/atom_browser_context.cc
atom/browser/atom_browser_context.h

index 17182d2..dbd668f 100644 (file)
@@ -17,7 +17,6 @@
 #include "atom/common/options_switches.h"
 #include "base/command_line.h"
 #include "base/strings/string_util.h"
-#include "brightray/common/switches.h"
 #include "content/public/browser/child_process_security_policy.h"
 #include "native_mate/dictionary.h"
 #include "url/url_util.h"
@@ -30,6 +29,9 @@ namespace api {
 
 namespace {
 
+// List of registered custom standard schemes.
+std::vector<std::string> g_standard_schemes;
+
 // Clear protocol handlers in IO thread.
 void ClearJobFactoryInIO(
     scoped_refptr<brightray::URLRequestContextGetter> request_context_getter) {
@@ -43,6 +45,7 @@ void ClearJobFactoryInIO(
 Protocol::Protocol(v8::Isolate* isolate, AtomBrowserContext* browser_context)
     : request_context_getter_(browser_context->GetRequestContext()),
       weak_factory_(this) {
+  browser_context->SetCookieableSchemes(g_standard_schemes);
   Init(isolate);
 }
 
@@ -210,8 +213,8 @@ void RegisterStandardSchemes(
   auto command_line = base::CommandLine::ForCurrentProcess();
   command_line->AppendSwitchASCII(atom::switches::kStandardSchemes,
                                   base::JoinString(schemes, ","));
-  command_line->AppendSwitchASCII(brightray::switches::kCookieableSchemes,
-                                  base::JoinString(schemes, ","));
+
+  atom::api::g_standard_schemes = schemes;
 }
 
 void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
index 7ac5dde..dc158a0 100644 (file)
@@ -88,6 +88,9 @@ AtomBrowserContext::AtomBrowserContext(
   use_cache_ = true;
   options.GetBoolean("cache", &use_cache_);
 
+  // Default schemes that should support cookies.
+  cookieable_schemes_ = {"http", "https", "ws", "wss"};
+
   // Initialize Pref Registry in brightray.
   InitPrefs();
 }
@@ -99,6 +102,13 @@ void AtomBrowserContext::SetUserAgent(const std::string& user_agent) {
   user_agent_ = user_agent;
 }
 
+void AtomBrowserContext::SetCookieableSchemes(
+    const std::vector<std::string>& schemes) {
+  if (!schemes.empty())
+    cookieable_schemes_.insert(cookieable_schemes_.end(),
+                               schemes.begin(), schemes.end());
+}
+
 net::NetworkDelegate* AtomBrowserContext::CreateNetworkDelegate() {
   return network_delegate_;
 }
@@ -188,6 +198,10 @@ net::SSLConfigService* AtomBrowserContext::CreateSSLConfigService() {
   return new AtomSSLConfigService;
 }
 
+std::vector<std::string> AtomBrowserContext::GetCookieableSchemes() {
+  return cookieable_schemes_;
+}
+
 void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
   pref_registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
                                       base::FilePath());
index ed3817d..c19f467 100644 (file)
@@ -6,6 +6,7 @@
 #define ATOM_BROWSER_ATOM_BROWSER_CONTEXT_H_
 
 #include <string>
+#include <vector>
 
 #include "brightray/browser/browser_context.h"
 
@@ -26,6 +27,7 @@ class AtomBrowserContext : public brightray::BrowserContext {
       const base::DictionaryValue& options = base::DictionaryValue());
 
   void SetUserAgent(const std::string& user_agent);
+  void SetCookieableSchemes(const std::vector<std::string>& schemes);
 
   // brightray::URLRequestContextGetter::Delegate:
   net::NetworkDelegate* CreateNetworkDelegate() override;
@@ -36,6 +38,7 @@ class AtomBrowserContext : public brightray::BrowserContext {
       const base::FilePath& base_path) override;
   std::unique_ptr<net::CertVerifier> CreateCertVerifier() override;
   net::SSLConfigService* CreateSSLConfigService() override;
+  std::vector<std::string> GetCookieableSchemes() override;
 
   // content::BrowserContext:
   content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
@@ -56,6 +59,7 @@ class AtomBrowserContext : public brightray::BrowserContext {
   std::unique_ptr<AtomDownloadManagerDelegate> download_manager_delegate_;
   std::unique_ptr<WebViewManager> guest_manager_;
   std::unique_ptr<AtomPermissionManager> permission_manager_;
+  std::vector<std::string> cookieable_schemes_;
   std::string user_agent_;
   bool use_cache_;