From d7557cb66ab94c66b0f3bf14644bd728e3594148 Mon Sep 17 00:00:00 2001 From: Heilig Benedek Date: Mon, 4 Feb 2019 16:54:55 +0100 Subject: [PATCH] chore: use c++ manifests instead of json --- BUILD.gn | 26 +---------- atom/app/manifests.cc | 44 +++++++++++++++++++ atom/app/manifests.h | 16 +++++++ atom/browser/atom_browser_client.cc | 21 ++++----- electron_resources.grd | 2 - manifests/BUILD.gn | 23 ++++++++++ ...tron_content_browser_manifest_overlay.json | 14 ------ ...nt_packaged_services_manifest_overlay.json | 5 --- 8 files changed, 93 insertions(+), 58 deletions(-) create mode 100644 atom/app/manifests.cc create mode 100644 atom/app/manifests.h create mode 100644 manifests/BUILD.gn delete mode 100644 manifests/electron_content_browser_manifest_overlay.json delete mode 100644 manifests/electron_content_packaged_services_manifest_overlay.json diff --git a/BUILD.gn b/BUILD.gn index 51b2cfe56879..6bd3938a2cd5 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -2,7 +2,6 @@ import("//build/config/locales.gni") import("//build/config/ui.gni") import("//build/config/win/manifest.gni") import("//pdf/features.gni") -import("//services/service_manager/public/service_manifest.gni") import("//third_party/ffmpeg/ffmpeg_options.gni") import("//tools/generate_library_loader/generate_library_loader.gni") import("//tools/grit/grit_rule.gni") @@ -281,7 +280,6 @@ grit("resources") { deps = [ ":copy_shell_devtools_discovery_page", - ":electron_content_manifest_overlays", ] output_dir = "$target_gen_dir" @@ -330,6 +328,7 @@ static_library("electron_lib") { ":atom_js2c", "buildflags", "chromium_src:chrome", + "manifests", "native_mate", "//base", "//base:base_static", @@ -1055,26 +1054,3 @@ group("electron") { ":electron_app", ] } - -group("electron_content_manifest_overlays") { - deps = [ - ":electron_content_browser_manifest_overlay", - ":electron_content_packaged_services_manifest_overlay", - ] -} - -service_manifest("electron_content_packaged_services_manifest_overlay") { - source = "//electron/manifests/electron_content_packaged_services_manifest_overlay.json" - packaged_services = [ "//services/proxy_resolver:proxy_resolver_manifest" ] - - if (enable_basic_printing) { - packaged_services += [ - "//chrome/services/printing:manifest", - "//components/services/pdf_compositor:pdf_compositor_manifest", - ] - } -} - -service_manifest("electron_content_browser_manifest_overlay") { - source = "//electron/manifests/electron_content_browser_manifest_overlay.json" -} diff --git a/atom/app/manifests.cc b/atom/app/manifests.cc new file mode 100644 index 000000000000..9b5e60862107 --- /dev/null +++ b/atom/app/manifests.cc @@ -0,0 +1,44 @@ +// Copyright (c) 2019 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#include "atom/app/manifests.h" + +#include "base/no_destructor.h" +#include "printing/buildflags/buildflags.h" +#include "services/proxy_resolver/proxy_resolver_manifest.h" +#include "services/service_manager/public/cpp/manifest_builder.h" + +#if BUILDFLAG(ENABLE_PRINTING) +#include "components/services/pdf_compositor/pdf_compositor_manifest.h" +#endif + +#if BUILDFLAG(ENABLE_PRINT_PREVIEW) +#include "chrome/services/printing/manifest.h" +#endif + +const service_manager::Manifest& GetElectronContentBrowserOverlayManifest() { + static base::NoDestructor manifest{ + service_manager::ManifestBuilder() + .WithDisplayName("Electron (browser process)") + .RequireCapability("device", "device:geolocation_control") + .RequireCapability("proxy_resolver", "factory") + .RequireCapability("chrome_printing", "converter") + .RequireCapability("pdf_compositor", "compositor") + .Build()}; + return *manifest; +} + +const std::vector& +GetElectronPackagedServicesOverlayManifest() { + static base::NoDestructor> manifests{{ + proxy_resolver::GetManifest(), +#if BUILDFLAG(ENABLE_PRINTING) + pdf_compositor::GetManifest(), +#endif +#if BUILDFLAG(ENABLE_PRINT_PREVIEW) + chrome_printing::GetManifest(), +#endif + }}; + return *manifests; +} diff --git a/atom/app/manifests.h b/atom/app/manifests.h new file mode 100644 index 000000000000..498eab0de236 --- /dev/null +++ b/atom/app/manifests.h @@ -0,0 +1,16 @@ +// Copyright (c) 2019 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#ifndef ATOM_APP_MANIFESTS_H_ +#define ATOM_APP_MANIFESTS_H_ + +#include + +#include "services/service_manager/public/cpp/manifest.h" + +const service_manager::Manifest& GetElectronContentBrowserOverlayManifest(); +const std::vector& +GetElectronPackagedServicesOverlayManifest(); + +#endif // ATOM_APP_MANIFESTS_H_ diff --git a/atom/browser/atom_browser_client.cc b/atom/browser/atom_browser_client.cc index 22e0d3656b2b..b675f2436775 100644 --- a/atom/browser/atom_browser_client.cc +++ b/atom/browser/atom_browser_client.cc @@ -11,6 +11,7 @@ #include #include +#include "atom/app/manifests.h" #include "atom/browser/api/atom_api_app.h" #include "atom/browser/api/atom_api_protocol.h" #include "atom/browser/api/atom_api_web_contents.h" @@ -716,19 +717,15 @@ void AtomBrowserClient::RegisterOutOfProcessServices( base::Optional AtomBrowserClient::GetServiceManifestOverlay(base::StringPiece name) { - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); - int id = -1; - if (name == content::mojom::kBrowserServiceName) - id = IDR_ELECTRON_CONTENT_BROWSER_MANIFEST_OVERLAY; - else if (name == content::mojom::kPackagedServicesServiceName) - id = IDR_ELECTRON_CONTENT_PACKAGED_SERVICES_MANIFEST_OVERLAY; + if (name == content::mojom::kBrowserServiceName) { + return GetElectronContentBrowserOverlayManifest(); + } else if (name == content::mojom::kPackagedServicesServiceName) { + service_manager::Manifest overlay; + overlay.packaged_services = GetElectronPackagedServicesOverlayManifest(); + return overlay; + } - if (id == -1) - return base::nullopt; - - base::StringPiece manifest_contents = rb.GetRawDataResource(id); - return service_manager::Manifest::FromValueDeprecated( - base::JSONReader::Read(manifest_contents)); + return base::nullopt; } net::NetLog* AtomBrowserClient::GetNetLog() { diff --git a/electron_resources.grd b/electron_resources.grd index 73029b0419b4..e46d6f6e7911 100644 --- a/electron_resources.grd +++ b/electron_resources.grd @@ -17,8 +17,6 @@ - - diff --git a/manifests/BUILD.gn b/manifests/BUILD.gn new file mode 100644 index 000000000000..7c81cefd3b19 --- /dev/null +++ b/manifests/BUILD.gn @@ -0,0 +1,23 @@ +import("//printing/buildflags/buildflags.gni") + +source_set("manifests") { + sources = [ + "//electron/atom/app/manifests.cc", + "//electron/atom/app/manifests.h", + ] + + include_dirs = [ "//electron" ] + + deps = [ + "//printing/buildflags", + "//services/proxy_resolver:proxy_resolver_manifest", + ] + + if (enable_basic_printing) { + deps += [ "//components/services/pdf_compositor:pdf_compositor_manifest" ] + } + + if (enable_print_preview) { + deps += [ "//chrome/services/printing:manifest" ] + } +} diff --git a/manifests/electron_content_browser_manifest_overlay.json b/manifests/electron_content_browser_manifest_overlay.json deleted file mode 100644 index 261ffa87c476..000000000000 --- a/manifests/electron_content_browser_manifest_overlay.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "content_browser", - "display_name": "Electron (browser process)", - "interface_provider_specs": { - "service_manager:connector": { - "requires": { - "device": [ "device:geolocation_control" ], - "proxy_resolver": [ "factory" ], - "chrome_printing": [ "converter" ], - "pdf_compositor": [ "compositor"] - } - } - } -} diff --git a/manifests/electron_content_packaged_services_manifest_overlay.json b/manifests/electron_content_packaged_services_manifest_overlay.json deleted file mode 100644 index 71488f02e098..000000000000 --- a/manifests/electron_content_packaged_services_manifest_overlay.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "content_packaged_services", - "display_name": "Electron Packaged Services", - "interface_provider_specs": {} -}