| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| var ChromeWebViewImpl = require('chromeWebView').ChromeWebViewImpl; |
| var WebViewContextMenusImpl = require('chromeWebView').WebViewContextMenusImpl; |
| var ControlledFrame = getInternalApi('controlledFrameInternal'); |
| var utils = require('utils'); |
| |
| function ControlledFrameContextMenusImpl(viewInstanceId) { |
| this.viewInstanceId_ = viewInstanceId; |
| } |
| $Object.setPrototypeOf(ControlledFrameContextMenusImpl.prototype, |
| WebViewContextMenusImpl.prototype); |
| |
| ControlledFrameContextMenusImpl.prototype.create = function() { |
| let args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments)); |
| let result = $Function.apply(ControlledFrame.contextMenusCreate, null, args); |
| if (bindingUtil.hasLastError()) { |
| result = bindingUtil.getLastErrorMessage(); |
| bindingUtil.clearLastError(); |
| } |
| return result; |
| } |
| |
| function ControlledFrameContextMenus() { |
| privates(ControlledFrameContextMenus).constructPrivate(this, arguments); |
| } |
| |
| utils.expose(ControlledFrameContextMenus, ControlledFrameContextMenusImpl, { |
| functions: [ |
| 'create', |
| 'remove', |
| 'removeAll', |
| 'update', |
| ] |
| }); |
| |
| class ControlledFrameImpl extends ChromeWebViewImpl { |
| constructor(webviewElement) { |
| super(webviewElement); |
| } |
| |
| createWebViewContextMenus() { |
| return new ControlledFrameContextMenus(this.viewInstanceId); |
| } |
| } |
| |
| exports.$set('ControlledFrameImpl', ControlledFrameImpl); |