blob: 30a977e5480f5e436c17a10fdc038cf3c543b854 [file] [log] [blame]
// Copyright 2017 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef COBALT_BROWSER_WEBAPI_EXTENSION_H_
#define COBALT_BROWSER_WEBAPI_EXTENSION_H_
#include <string>
#include "base/memory/ref_counted.h"
#include "base/optional.h"
#include "cobalt/dom/window.h"
#include "cobalt/script/global_environment.h"
#include "cobalt/script/wrappable.h"
namespace cobalt {
namespace browser {
// This file declares the interface that Cobalt calls in order to possibly
// inject external functionality into the web app's JavaScript environment.
// See cobalt/doc/webapi_extension.md for more information.
// The implementation of this function should return the name of the property
// to be injected into to the JavaScript window object. If base::nullopt is
// returned, then CreateWebExtensionObject() will not be subsequently called
// and nothing will be injected.
base::optional<std::string> GetWebAPIExtensionObjectPropertyName();
// The actual object that will be assigned to the window property with name
// given by *GetWebExtensionObjectPropertyName(). The returned object should
// be specified by an IDL interface. It is passed a reference to |window|
// so that it can access and introspect any properties of the window object.
// It is passed |global_environment| so that it can access functions of the
// GlobalEnvironment interface, such as using it to execute arbitrary
// JavaScript.
scoped_refptr<script::Wrappable> CreateWebAPIExtensionObject(
const scoped_refptr<dom::Window>& window,
script::GlobalEnvironment* global_environment);
} // namespace browser
} // namespace cobalt
#endif // COBALT_BROWSER_WEBAPI_EXTENSION_H_