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) { |