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

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

Issue 637463002: Revert "Remote Assistance on Chrome OS Part III - NativeMessageHost" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/message_service.cc
diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc
index fb72711cea3edad8abece04452af92d8d483a3fd..b6480899d69420bc0d7321932846fb59e0ca723b 100644
--- a/chrome/browser/extensions/api/messaging/message_service.cc
+++ b/chrome/browser/extensions/api/messaging/message_service.cc
@@ -10,7 +10,6 @@
#include "base/json/json_writer.h"
#include "base/lazy_instance.h"
#include "base/metrics/histogram.h"
-#include "base/prefs/pref_service.h"
#include "base/stl_util.h"
#include "base/values.h"
#include "chrome/browser/chrome_notification_types.h"
@@ -34,7 +33,6 @@
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/lazy_background_task_queue.h"
-#include "extensions/browser/pref_names.h"
#include "extensions/browser/process_manager.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_constants.h"
@@ -63,44 +61,6 @@ using content::WebContents;
namespace extensions {
-MessageService::PolicyPermission MessageService::IsNativeMessagingHostAllowed(
- const PrefService* pref_service,
- const std::string& native_host_name) {
- 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;
-}
-
const char kReceivingEndDoesntExistError[] =
"Could not establish connection. Receiving end does not exist.";
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
@@ -411,9 +371,9 @@ void MessageService::OpenChannelToNativeApp(
PrefService* pref_service = profile->GetPrefs();
// Verify that the host is not blocked by policies.
- PolicyPermission policy_permission =
- IsNativeMessagingHostAllowed(pref_service, native_app_name);
- if (policy_permission == DISALLOW) {
+ NativeMessageProcessHost::PolicyPermission policy_permission =
+ NativeMessageProcessHost::IsHostAllowed(pref_service, native_app_name);
+ if (policy_permission == NativeMessageProcessHost::DISALLOW) {
DispatchOnDisconnect(source, receiver_port_id, kProhibitedByPoliciesError);
return;
}
@@ -427,23 +387,22 @@ void MessageService::OpenChannelToNativeApp(
content::RenderWidgetHost::FromID(source_process_id, source_routing_id)->
GetView()->GetNativeView();
- std::string error = kReceivingEndDoesntExistError;
- scoped_ptr<NativeMessageHost> native_host = NativeMessageHost::Create(
- native_view,
- source_extension_id,
- native_app_name,
- policy_permission == ALLOW_ALL,
- &error);
+ scoped_ptr<NativeMessageProcessHost> native_process =
+ NativeMessageProcessHost::Create(
+ native_view,
+ base::WeakPtr<NativeMessageProcessHost::Client>(
+ weak_factory_.GetWeakPtr()),
+ source_extension_id, native_app_name, receiver_port_id,
+ policy_permission == NativeMessageProcessHost::ALLOW_ALL);
// Abandon the channel.
- if (!native_host.get()) {
+ if (!native_process.get()) {
LOG(ERROR) << "Failed to create native process.";
DispatchOnDisconnect(
- source, receiver_port_id, error);
+ source, receiver_port_id, kReceivingEndDoesntExistError);
return;
}
- channel->receiver.reset(new NativeMessagePort(
- weak_factory_.GetWeakPtr(), receiver_port_id, native_host.Pass()));
+ channel->receiver.reset(new NativeMessagePort(native_process.release()));
// Keep the opener alive until the channel is closed.
channel->opener->IncrementLazyKeepaliveCount();
@@ -603,6 +562,11 @@ void MessageService::PostMessage(int source_port_id, const Message& message) {
DispatchMessage(source_port_id, iter->second, message);
}
+void MessageService::PostMessageFromNativeProcess(int port_id,
+ const std::string& message) {
+ PostMessage(port_id, Message(message, false /* user_gesture */));
+}
+
void MessageService::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {

Powered by Google App Engine
This is Rietveld 408576698