summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsky <sky@chromium.org>2016-02-18 20:56:45 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-19 04:58:13 +0000
commit8e9b580709b381c47bed0d091afe610a9e45e8fe (patch)
tree73db21776bedbf98baaffb22ba68d126013f695e
parent6ee2be06467613d8770c041a30e123cc23d8e752 (diff)
downloadchromium_src-8e9b580709b381c47bed0d091afe610a9e45e8fe.zip
chromium_src-8e9b580709b381c47bed0d091afe610a9e45e8fe.tar.gz
chromium_src-8e9b580709b381c47bed0d091afe610a9e45e8fe.tar.bz2
Separates out registering mojo schemes into a function
This way I can register the schemes early on without having to create the shell yet. BUG=581539 TEST=none R=ben@chromium.org Review URL: https://codereview.chromium.org/1712543003 Cr-Commit-Position: refs/heads/master@{#376386}
-rw-r--r--mojo/common/BUILD.gn11
-rw-r--r--mojo/common/mojo_scheme_register.cc23
-rw-r--r--mojo/common/mojo_scheme_register.h15
-rw-r--r--mojo/mojo_shell.gyp2
-rw-r--r--mojo/services/package_manager/BUILD.gn1
-rw-r--r--mojo/services/package_manager/package_manager.cc7
6 files changed, 55 insertions, 4 deletions
diff --git a/mojo/common/BUILD.gn b/mojo/common/BUILD.gn
index 6a12118..ad49a59 100644
--- a/mojo/common/BUILD.gn
+++ b/mojo/common/BUILD.gn
@@ -113,3 +113,14 @@ test("mojo_common_perftests") {
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
}
}
+
+source_set("mojo_scheme_register") {
+ sources = [
+ "mojo_scheme_register.cc",
+ "mojo_scheme_register.h",
+ ]
+
+ deps = [
+ "//url",
+ ]
+}
diff --git a/mojo/common/mojo_scheme_register.cc b/mojo/common/mojo_scheme_register.cc
new file mode 100644
index 0000000..db1224b
--- /dev/null
+++ b/mojo/common/mojo_scheme_register.cc
@@ -0,0 +1,23 @@
+// Copyright 2016 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 "mojo/common/mojo_scheme_register.h"
+
+#include "url/gurl.h"
+#include "url/url_util.h"
+
+namespace mojo {
+
+void RegisterMojoSchemes() {
+ static bool registered = false;
+
+ if (registered)
+ return;
+
+ registered = true;
+ url::AddStandardScheme("mojo", url::SCHEME_WITHOUT_AUTHORITY);
+ url::AddStandardScheme("exe", url::SCHEME_WITHOUT_AUTHORITY);
+}
+
+} // namespace mojo
diff --git a/mojo/common/mojo_scheme_register.h b/mojo/common/mojo_scheme_register.h
new file mode 100644
index 0000000..7ca4981
--- /dev/null
+++ b/mojo/common/mojo_scheme_register.h
@@ -0,0 +1,15 @@
+// Copyright 2016 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.
+
+#ifndef MOJO_COMMON_MOJO_SCHEME_REGISTER_H_
+#define MOJO_COMMON_MOJO_SCHEME_REGISTER_H_
+
+namespace mojo {
+
+// Registers the schemes as used by mojo.
+void RegisterMojoSchemes();
+
+} // namespace mojo
+
+#endif // MOJO_COMMON_MOJO_SCHEME_REGISTER_H_
diff --git a/mojo/mojo_shell.gyp b/mojo/mojo_shell.gyp
index dcbfc53..4151d2e 100644
--- a/mojo/mojo_shell.gyp
+++ b/mojo/mojo_shell.gyp
@@ -7,6 +7,8 @@
'target_name': 'mojo_shell_lib',
'type': 'static_library',
'sources': [
+ 'common/mojo_scheme_register.cc',
+ 'common/mojo_scheme_register.h',
'services/package_manager/loader.cc',
'services/package_manager/loader.h',
'services/package_manager/package_manager.cc',
diff --git a/mojo/services/package_manager/BUILD.gn b/mojo/services/package_manager/BUILD.gn
index c9ae84e..d88f1b6 100644
--- a/mojo/services/package_manager/BUILD.gn
+++ b/mojo/services/package_manager/BUILD.gn
@@ -36,6 +36,7 @@ source_set("lib") {
deps = [
"//base",
+ "//mojo/common:mojo_scheme_register",
"//mojo/common:url_type_converters",
"//mojo/services/package_manager/public/interfaces",
"//mojo/shell/public/cpp",
diff --git a/mojo/services/package_manager/package_manager.cc b/mojo/services/package_manager/package_manager.cc
index 744ec0d..572c4e8 100644
--- a/mojo/services/package_manager/package_manager.cc
+++ b/mojo/services/package_manager/package_manager.cc
@@ -7,6 +7,7 @@
#include "base/bind.h"
#include "base/json/json_file_value_serializer.h"
#include "base/task_runner_util.h"
+#include "mojo/common/mojo_scheme_register.h"
#include "mojo/common/url_type_converters.h"
#include "mojo/util/filename_util.h"
#include "net/base/filename_util.h"
@@ -70,10 +71,8 @@ ApplicationCatalogStore::~ApplicationCatalogStore() {}
PackageManager::PackageManager(base::TaskRunner* blocking_pool,
bool register_schemes)
: blocking_pool_(blocking_pool), catalog_store_(nullptr) {
- if (register_schemes) {
- url::AddStandardScheme("mojo", url::SCHEME_WITHOUT_AUTHORITY);
- url::AddStandardScheme("exe", url::SCHEME_WITHOUT_AUTHORITY);
- }
+ if (register_schemes)
+ mojo::RegisterMojoSchemes();
base::FilePath shell_dir;
PathService::Get(base::DIR_MODULE, &shell_dir);