feat: [extensions] implement a couple of tabs APIs (#21779)
This commit is contained in:
parent
8278a64e00
commit
b9eb68c0b4
21 changed files with 568 additions and 17 deletions
|
@ -6,13 +6,13 @@
|
|||
|
||||
#include "content/public/renderer/render_thread.h"
|
||||
#include "extensions/renderer/dispatcher.h"
|
||||
#include "extensions/renderer/dispatcher_delegate.h"
|
||||
#include "shell/renderer/extensions/electron_extensions_dispatcher_delegate.h"
|
||||
|
||||
namespace electron {
|
||||
|
||||
AtomExtensionsRendererClient::AtomExtensionsRendererClient()
|
||||
: dispatcher_(std::make_unique<extensions::Dispatcher>(
|
||||
std::make_unique<extensions::DispatcherDelegate>())) {
|
||||
std::make_unique<ElectronExtensionsDispatcherDelegate>())) {
|
||||
dispatcher_->OnRenderThreadStarted(content::RenderThread::Get());
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
// Copyright 2014 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/renderer/extensions/electron_extensions_dispatcher_delegate.h"
|
||||
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
#include "chrome/renderer/extensions/tabs_hooks_delegate.h"
|
||||
#include "extensions/renderer/bindings/api_bindings_system.h"
|
||||
#include "extensions/renderer/lazy_background_page_native_handler.h"
|
||||
#include "extensions/renderer/module_system.h"
|
||||
#include "extensions/renderer/native_extension_bindings_system.h"
|
||||
#include "extensions/renderer/native_handler.h"
|
||||
|
||||
using extensions::NativeHandler;
|
||||
|
||||
ElectronExtensionsDispatcherDelegate::ElectronExtensionsDispatcherDelegate() {}
|
||||
|
||||
ElectronExtensionsDispatcherDelegate::~ElectronExtensionsDispatcherDelegate() {}
|
||||
|
||||
void ElectronExtensionsDispatcherDelegate::RegisterNativeHandlers(
|
||||
extensions::Dispatcher* dispatcher,
|
||||
extensions::ModuleSystem* module_system,
|
||||
extensions::NativeExtensionBindingsSystem* bindings_system,
|
||||
extensions::ScriptContext* context) {
|
||||
module_system->RegisterNativeHandler(
|
||||
"lazy_background_page",
|
||||
std::unique_ptr<NativeHandler>(
|
||||
new extensions::LazyBackgroundPageNativeHandler(context)));
|
||||
}
|
||||
|
||||
void ElectronExtensionsDispatcherDelegate::PopulateSourceMap(
|
||||
extensions::ResourceBundleSourceMap* source_map) {}
|
||||
|
||||
void ElectronExtensionsDispatcherDelegate::RequireWebViewModules(
|
||||
extensions::ScriptContext* context) {}
|
||||
|
||||
void ElectronExtensionsDispatcherDelegate::OnActiveExtensionsUpdated(
|
||||
const std::set<std::string>& extension_ids) {}
|
||||
|
||||
void ElectronExtensionsDispatcherDelegate::InitializeBindingsSystem(
|
||||
extensions::Dispatcher* dispatcher,
|
||||
extensions::NativeExtensionBindingsSystem* bindings_system) {
|
||||
extensions::APIBindingsSystem* bindings = bindings_system->api_system();
|
||||
bindings->GetHooksForAPI("tabs")->SetDelegate(
|
||||
std::make_unique<extensions::TabsHooksDelegate>(
|
||||
bindings_system->messaging_service()));
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright 2014 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.
|
||||
|
||||
#ifndef SHELL_RENDERER_EXTENSIONS_ELECTRON_EXTENSIONS_DISPATCHER_DELEGATE_H_
|
||||
#define SHELL_RENDERER_EXTENSIONS_ELECTRON_EXTENSIONS_DISPATCHER_DELEGATE_H_
|
||||
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "extensions/renderer/dispatcher_delegate.h"
|
||||
|
||||
class ElectronExtensionsDispatcherDelegate
|
||||
: public extensions::DispatcherDelegate {
|
||||
public:
|
||||
ElectronExtensionsDispatcherDelegate();
|
||||
~ElectronExtensionsDispatcherDelegate() override;
|
||||
|
||||
private:
|
||||
// extensions::DispatcherDelegate implementation.
|
||||
void RegisterNativeHandlers(
|
||||
extensions::Dispatcher* dispatcher,
|
||||
extensions::ModuleSystem* module_system,
|
||||
extensions::NativeExtensionBindingsSystem* bindings_system,
|
||||
extensions::ScriptContext* context) override;
|
||||
void PopulateSourceMap(
|
||||
extensions::ResourceBundleSourceMap* source_map) override;
|
||||
void RequireWebViewModules(extensions::ScriptContext* context) override;
|
||||
void OnActiveExtensionsUpdated(
|
||||
const std::set<std::string>& extensions_ids) override;
|
||||
void InitializeBindingsSystem(
|
||||
extensions::Dispatcher* dispatcher,
|
||||
extensions::NativeExtensionBindingsSystem* bindings_system) override;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ElectronExtensionsDispatcherDelegate);
|
||||
};
|
||||
|
||||
#endif // SHELL_RENDERER_EXTENSIONS_ELECTRON_EXTENSIONS_DISPATCHER_DELEGATE_H_
|
Loading…
Add table
Add a link
Reference in a new issue