Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(532)

Side by Side Diff: headless/lib/browser/headless_content_browser_client.cc

Issue 2489673005: [headless] Make browser service manifest overlay configurable. (Closed)
Patch Set: fix includes. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "headless/lib/browser/headless_content_browser_client.h" 5 #include "headless/lib/browser/headless_content_browser_client.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <unordered_set>
8 9
9 #include "base/callback.h" 10 #include "base/callback.h"
10 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
11 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
12 #include "content/public/browser/browser_context.h" 13 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/render_process_host.h" 15 #include "content/public/browser/render_process_host.h"
15 #include "content/public/browser/render_view_host.h" 16 #include "content/public/browser/render_view_host.h"
16 #include "content/public/common/service_names.h" 17 #include "content/public/common/service_names.h"
17 #include "headless/grit/headless_lib_resources.h" 18 #include "headless/grit/headless_lib_resources.h"
18 #include "headless/lib/browser/headless_browser_context_impl.h" 19 #include "headless/lib/browser/headless_browser_context_impl.h"
19 #include "headless/lib/browser/headless_browser_impl.h" 20 #include "headless/lib/browser/headless_browser_impl.h"
20 #include "headless/lib/browser/headless_browser_main_parts.h" 21 #include "headless/lib/browser/headless_browser_main_parts.h"
21 #include "headless/lib/browser/headless_devtools_manager_delegate.h" 22 #include "headless/lib/browser/headless_devtools_manager_delegate.h"
22 #include "ui/base/resource/resource_bundle.h" 23 #include "ui/base/resource/resource_bundle.h"
23 24
24 namespace headless { 25 namespace headless {
25 26
27 namespace {
28 const char kCapabilityPath[] =
29 "interface_provider_specs.navigation:frame.provides.renderer";
30 } // namespace
31
26 HeadlessContentBrowserClient::HeadlessContentBrowserClient( 32 HeadlessContentBrowserClient::HeadlessContentBrowserClient(
27 HeadlessBrowserImpl* browser) 33 HeadlessBrowserImpl* browser)
28 : browser_(browser) {} 34 : browser_(browser) {}
29 35
30 HeadlessContentBrowserClient::~HeadlessContentBrowserClient() {} 36 HeadlessContentBrowserClient::~HeadlessContentBrowserClient() {}
31 37
32 content::BrowserMainParts* HeadlessContentBrowserClient::CreateBrowserMainParts( 38 content::BrowserMainParts* HeadlessContentBrowserClient::CreateBrowserMainParts(
33 const content::MainFunctionParams&) { 39 const content::MainFunctionParams&) {
34 std::unique_ptr<HeadlessBrowserMainParts> browser_main_parts = 40 std::unique_ptr<HeadlessBrowserMainParts> browser_main_parts =
35 base::MakeUnique<HeadlessBrowserMainParts>(browser_); 41 base::MakeUnique<HeadlessBrowserMainParts>(browser_);
(...skipping 13 matching lines...) Expand all
49 } 55 }
50 56
51 content::DevToolsManagerDelegate* 57 content::DevToolsManagerDelegate*
52 HeadlessContentBrowserClient::GetDevToolsManagerDelegate() { 58 HeadlessContentBrowserClient::GetDevToolsManagerDelegate() {
53 return new HeadlessDevToolsManagerDelegate(browser_->GetWeakPtr()); 59 return new HeadlessDevToolsManagerDelegate(browser_->GetWeakPtr());
54 } 60 }
55 61
56 std::unique_ptr<base::Value> 62 std::unique_ptr<base::Value>
57 HeadlessContentBrowserClient::GetServiceManifestOverlay( 63 HeadlessContentBrowserClient::GetServiceManifestOverlay(
58 const std::string& name) { 64 const std::string& name) {
59 if (name != content::kBrowserServiceName) 65 if (name != content::kBrowserServiceName ||
66 browser_->options()->mojo_service_names.empty())
60 return nullptr; 67 return nullptr;
61 base::StringPiece manifest_contents = 68
69 base::StringPiece manifest_template =
62 ui::ResourceBundle::GetSharedInstance().GetRawDataResource( 70 ui::ResourceBundle::GetSharedInstance().GetRawDataResource(
63 IDR_HEADLESS_BROWSER_MANIFEST_OVERLAY); 71 IDR_HEADLESS_BROWSER_MANIFEST_OVERLAY_TEMPLATE);
64 return base::JSONReader::Read(manifest_contents); 72 std::unique_ptr<base::Value> manifest =
73 base::JSONReader::Read(manifest_template);
74
75 // Add mojo_service_names to renderer capability specified in options.
76 base::DictionaryValue* manifest_dictionary = nullptr;
77 CHECK(manifest->GetAsDictionary(&manifest_dictionary));
78
79 base::ListValue* capability_list = nullptr;
80 CHECK(manifest_dictionary->GetList(kCapabilityPath, &capability_list));
81
82 for (std::string service_name : browser_->options()->mojo_service_names) {
83 capability_list->AppendString(service_name);
84 }
85
86 return manifest;
65 } 87 }
66 88
67 } // namespace headless 89 } // namespace headless
OLDNEW
« no previous file with comments | « headless/lib/browser/headless_browser_manifest_overlay_template.json ('k') | headless/lib/embedder_mojo_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698