2020-01-13 14:55:58 -08:00
|
|
|
// Copyright 2017 The Chromium Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
#include "shell/browser/extensions/electron_messaging_delegate.h"
|
|
|
|
|
|
|
|
#include <memory>
|
2021-01-12 15:31:23 -08:00
|
|
|
#include <utility>
|
2020-01-13 14:55:58 -08:00
|
|
|
|
2023-02-03 12:43:42 +01:00
|
|
|
#include "base/functional/callback.h"
|
2022-10-03 13:21:00 -07:00
|
|
|
#include "base/values.h"
|
2020-01-13 14:55:58 -08:00
|
|
|
#include "components/prefs/pref_service.h"
|
|
|
|
#include "content/public/browser/browser_context.h"
|
|
|
|
#include "content/public/browser/browser_thread.h"
|
|
|
|
#include "content/public/browser/render_frame_host.h"
|
|
|
|
#include "content/public/browser/web_contents.h"
|
2022-06-27 15:50:08 -05:00
|
|
|
#include "electron/shell/common/extensions/api/tabs.h"
|
2020-01-13 14:55:58 -08:00
|
|
|
#include "extensions/browser/api/messaging/extension_message_port.h"
|
|
|
|
#include "extensions/browser/api/messaging/native_message_host.h"
|
|
|
|
#include "extensions/browser/extension_api_frame_id_map.h"
|
|
|
|
#include "extensions/browser/pref_names.h"
|
|
|
|
#include "extensions/common/api/messaging/port_id.h"
|
|
|
|
#include "extensions/common/extension.h"
|
2020-03-11 08:04:31 +01:00
|
|
|
#include "shell/browser/api/electron_api_web_contents.h"
|
2020-01-13 14:55:58 -08:00
|
|
|
#include "ui/gfx/native_widget_types.h"
|
|
|
|
#include "url/gurl.h"
|
|
|
|
|
|
|
|
namespace extensions {
|
|
|
|
|
|
|
|
ElectronMessagingDelegate::ElectronMessagingDelegate() = default;
|
|
|
|
ElectronMessagingDelegate::~ElectronMessagingDelegate() = default;
|
|
|
|
|
|
|
|
MessagingDelegate::PolicyPermission
|
|
|
|
ElectronMessagingDelegate::IsNativeMessagingHostAllowed(
|
|
|
|
content::BrowserContext* browser_context,
|
|
|
|
const std::string& native_host_name) {
|
|
|
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
|
|
|
|
|
|
return PolicyPermission::DISALLOW;
|
|
|
|
}
|
|
|
|
|
2024-01-10 23:23:35 +01:00
|
|
|
std::optional<base::Value::Dict> ElectronMessagingDelegate::MaybeGetTabInfo(
|
2022-09-08 16:23:08 -07:00
|
|
|
content::WebContents* web_contents) {
|
2020-01-15 15:11:51 -08:00
|
|
|
if (web_contents) {
|
2020-07-16 16:16:05 -07:00
|
|
|
auto* api_contents = electron::api::WebContents::From(web_contents);
|
2020-01-15 15:11:51 -08:00
|
|
|
if (api_contents) {
|
2022-06-27 15:50:08 -05:00
|
|
|
api::tabs::Tab tab;
|
2022-09-07 09:46:37 +02:00
|
|
|
tab.id = api_contents->ID();
|
2022-09-08 16:23:08 -07:00
|
|
|
tab.url = api_contents->GetURL().spec();
|
|
|
|
tab.title = base::UTF16ToUTF8(api_contents->GetTitle());
|
2022-09-07 09:46:37 +02:00
|
|
|
tab.audible = api_contents->IsCurrentlyAudible();
|
2022-10-03 13:21:00 -07:00
|
|
|
return tab.ToValue();
|
2020-01-15 15:11:51 -08:00
|
|
|
}
|
|
|
|
}
|
2024-01-10 23:23:35 +01:00
|
|
|
return std::nullopt;
|
2020-01-13 14:55:58 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
content::WebContents* ElectronMessagingDelegate::GetWebContentsByTabId(
|
|
|
|
content::BrowserContext* browser_context,
|
|
|
|
int tab_id) {
|
2020-07-16 16:16:05 -07:00
|
|
|
auto* contents = electron::api::WebContents::FromID(tab_id);
|
2020-01-15 15:11:51 -08:00
|
|
|
if (!contents) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
return contents->web_contents();
|
2020-01-13 14:55:58 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
std::unique_ptr<MessagePort>
|
|
|
|
ElectronMessagingDelegate::CreateReceiverForNativeApp(
|
|
|
|
content::BrowserContext* browser_context,
|
|
|
|
base::WeakPtr<MessagePort::ChannelDelegate> channel_delegate,
|
|
|
|
content::RenderFrameHost* source,
|
|
|
|
const std::string& extension_id,
|
|
|
|
const PortId& receiver_port_id,
|
|
|
|
const std::string& native_app_name,
|
|
|
|
bool allow_user_level,
|
|
|
|
std::string* error_out) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ElectronMessagingDelegate::QueryIncognitoConnectability(
|
|
|
|
content::BrowserContext* context,
|
|
|
|
const Extension* target_extension,
|
|
|
|
content::WebContents* source_contents,
|
|
|
|
const GURL& source_url,
|
2021-01-12 15:31:23 -08:00
|
|
|
base::OnceCallback<void(bool)> callback) {
|
2020-01-13 14:55:58 -08:00
|
|
|
DCHECK(context->IsOffTheRecord());
|
2021-01-12 15:31:23 -08:00
|
|
|
std::move(callback).Run(false);
|
2020-01-13 14:55:58 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace extensions
|