std::vector<url::SchemeWithType>* standard_schemes,
std::vector<url::SchemeWithType>* referrer_schemes,
std::vector<std::string>* savable_schemes) {
+ // Parse --standard-schemes=scheme1,scheme2
+ auto command_line = base::CommandLine::ForCurrentProcess();
+ std::string custom_schemes = command_line->GetSwitchValueASCII(
+ switches::kStandardSchemes);
+ if (!custom_schemes.empty()) {
+ // Note that url::SchemeWithType requires passing const char*, so we have
+ // to ensure the string still lives after this function exits.
+ static std::vector<std::string> schemes_list;
+ schemes_list = base::SplitString(
+ custom_schemes, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+ for (const std::string& scheme : schemes_list)
+ standard_schemes->push_back({scheme.c_str(), url::SCHEME_WITHOUT_PORT});
+ }
+
standard_schemes->push_back({"chrome-extension", url::SCHEME_WITHOUT_PORT});
}
#include "atom/common/native_mate_converters/callback.h"
#include "atom/common/native_mate_converters/net_converter.h"
#include "atom/common/node_includes.h"
+#include "atom/common/options_switches.h"
+#include "base/command_line.h"
+#include "base/strings/string_util.h"
#include "native_mate/dictionary.h"
#include "url/url_util.h"
const std::vector<std::string>& schemes) {
for (const auto& scheme : schemes)
url::AddStandardScheme(scheme.c_str(), url::SCHEME_WITHOUT_PORT);
+
+ auto command_line = base::CommandLine::ForCurrentProcess();
+ command_line->AppendSwitchASCII(atom::switches::kStandardSchemes,
+ base::JoinString(schemes, ","));
}
mate::Handle<atom::api::Protocol> CreateProtocol(v8::Isolate* isolate) {
if (process_type != "renderer")
return;
+ // Copy following switches to child process.
+ static const char* const kCommonSwitchNames[] = {
+ switches::kStandardSchemes,
+ };
+ command_line->CopySwitchesFrom(
+ *base::CommandLine::ForCurrentProcess(),
+ kCommonSwitchNames, arraysize(kCommonSwitchNames));
+
// The registered service worker schemes.
if (!g_custom_service_worker_schemes.empty())
command_line->AppendSwitchASCII(switches::kRegisterServiceWorkerSchemes,
// Disable HTTP cache.
const char kDisableHttpCache[] = "disable-http-cache";
+// The list of standard schemes.
+const char kStandardSchemes[] = "standard-schemes";
+
// Register schemes to handle service worker.
const char kRegisterServiceWorkerSchemes[] = "register-service-worker-schemes";
extern const char kPpapiFlashPath[];
extern const char kPpapiFlashVersion[];
extern const char kDisableHttpCache[];
+extern const char kStandardSchemes[];
extern const char kRegisterServiceWorkerSchemes[];
extern const char kSSLVersionFallbackMin[];
extern const char kCipherSuiteBlacklist[];