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

Unified Diff: chrome/browser/extensions/api/messaging/native_message_process_host.cc

Issue 591463003: Remote Assistance on Chrome OS Part III - NativeMessageHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@native_messaging
Patch Set: Created 6 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/messaging/native_message_process_host.cc
diff --git a/chrome/browser/extensions/api/messaging/native_message_process_host.cc b/chrome/browser/extensions/api/messaging/native_message_process_host.cc
index 7d7e37f40dddd6523f13624e297b3bd3b5936e56..1f59191be43a2fb3161fe0f29054012746baeaf0 100644
--- a/chrome/browser/extensions/api/messaging/native_message_process_host.cc
+++ b/chrome/browser/extensions/api/messaging/native_message_process_host.cc
@@ -7,15 +7,12 @@
#include "base/bind.h"
#include "base/files/file_path.h"
#include "base/logging.h"
-#include "base/prefs/pref_service.h"
#include "base/process/kill.h"
#include "base/threading/sequenced_worker_pool.h"
-#include "base/values.h"
#include "chrome/browser/extensions/api/messaging/native_messaging_host_manifest.h"
#include "chrome/browser/extensions/api/messaging/native_process_launcher.h"
#include "chrome/common/chrome_version_info.h"
#include "content/public/browser/browser_thread.h"
-#include "extensions/browser/pref_names.h"
#include "extensions/common/constants.h"
#include "extensions/common/features/feature.h"
#include "net/base/file_stream.h"
@@ -51,55 +48,12 @@ const char kHostInputOuputError[] =
namespace extensions {
-// static
-NativeMessageProcessHost::PolicyPermission
-NativeMessageProcessHost::IsHostAllowed(const PrefService* pref_service,
- const std::string& native_host_name) {
- NativeMessageProcessHost::PolicyPermission allow_result = ALLOW_ALL;
- if (pref_service->IsManagedPreference(
- pref_names::kNativeMessagingUserLevelHosts)) {
- if (!pref_service->GetBoolean(pref_names::kNativeMessagingUserLevelHosts))
- allow_result = ALLOW_SYSTEM_ONLY;
- }
-
- // All native messaging hosts are allowed if there is no blacklist.
- if (!pref_service->IsManagedPreference(pref_names::kNativeMessagingBlacklist))
- return allow_result;
- const base::ListValue* blacklist =
- pref_service->GetList(pref_names::kNativeMessagingBlacklist);
- if (!blacklist)
- return allow_result;
-
- // Check if the name or the wildcard is in the blacklist.
- base::StringValue name_value(native_host_name);
- base::StringValue wildcard_value("*");
- if (blacklist->Find(name_value) == blacklist->end() &&
- blacklist->Find(wildcard_value) == blacklist->end()) {
- return allow_result;
- }
-
- // The native messaging host is blacklisted. Check the whitelist.
- if (pref_service->IsManagedPreference(
- pref_names::kNativeMessagingWhitelist)) {
- const base::ListValue* whitelist =
- pref_service->GetList(pref_names::kNativeMessagingWhitelist);
- if (whitelist && whitelist->Find(name_value) != whitelist->end())
- return allow_result;
- }
-
- return DISALLOW;
-}
-
NativeMessageProcessHost::NativeMessageProcessHost(
- base::WeakPtr<Client> weak_client_ui,
const std::string& source_extension_id,
const std::string& native_host_name,
- int destination_port,
scoped_ptr<NativeProcessLauncher> launcher)
- : weak_client_ui_(weak_client_ui),
- source_extension_id_(source_extension_id),
+ : source_extension_id_(source_extension_id),
native_host_name_(native_host_name),
- destination_port_(destination_port),
launcher_(launcher.Pass()),
closed_(false),
process_handle_(base::kNullProcessHandle),
@@ -123,32 +77,28 @@ NativeMessageProcessHost::~NativeMessageProcessHost() {
}
// static
-scoped_ptr<NativeMessageProcessHost> NativeMessageProcessHost::Create(
+scoped_ptr<NativeMessageHost> NativeMessageHost::Create(
gfx::NativeView native_view,
- base::WeakPtr<Client> weak_client_ui,
const std::string& source_extension_id,
const std::string& native_host_name,
- int destination_port,
bool allow_user_level) {
- return CreateWithLauncher(weak_client_ui, source_extension_id,
- native_host_name, destination_port,
- NativeProcessLauncher::CreateDefault(
- allow_user_level, native_view));
+ return NativeMessageProcessHost::CreateWithLauncher(
+ source_extension_id,
+ native_host_name,
+ NativeProcessLauncher::CreateDefault(allow_user_level, native_view));
}
// static
-scoped_ptr<NativeMessageProcessHost>
-NativeMessageProcessHost::CreateWithLauncher(
- base::WeakPtr<Client> weak_client_ui,
+scoped_ptr<NativeMessageHost> NativeMessageProcessHost::CreateWithLauncher(
const std::string& source_extension_id,
const std::string& native_host_name,
- int destination_port,
scoped_ptr<NativeProcessLauncher> launcher) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- scoped_ptr<NativeMessageProcessHost> process(new NativeMessageProcessHost(
- weak_client_ui, source_extension_id, native_host_name,
- destination_port, launcher.Pass()));
+ scoped_ptr<NativeMessageHost> process(
+ new NativeMessageProcessHost(source_extension_id,
+ native_host_name,
+ launcher.Pass()));
return process.Pass();
}
@@ -229,6 +179,10 @@ void NativeMessageProcessHost::Send(const std::string& json) {
DoWrite();
}
+void NativeMessageProcessHost::set_client(base::WeakPtr<Client> client) {
+ weak_client_ = client;
+}
+
#if defined(OS_POSIX)
void NativeMessageProcessHost::OnFileCanReadWithoutBlocking(int fd) {
DCHECK_EQ(fd, read_file_);
@@ -328,10 +282,12 @@ void NativeMessageProcessHost::ProcessIncomingData(
if (incoming_data_.size() < message_size + kMessageHeaderSize)
return;
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&Client::PostMessageFromNativeProcess, weak_client_ui_,
- destination_port_,
- incoming_data_.substr(kMessageHeaderSize, message_size)));
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&Client::PostMessageFromNativeHost,
+ weak_client_,
+ incoming_data_.substr(kMessageHeaderSize, message_size)));
incoming_data_.erase(0, kMessageHeaderSize + message_size);
}
@@ -392,9 +348,10 @@ void NativeMessageProcessHost::Close(const std::string& error_message) {
closed_ = true;
read_stream_.reset();
write_stream_.reset();
- content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
- base::Bind(&Client::CloseChannel, weak_client_ui_,
- destination_port_, error_message));
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&Client::CloseChannel, weak_client_, error_message));
}
if (process_handle_ != base::kNullProcessHandle) {

Powered by Google App Engine
This is Rietveld 408576698