| // Copyright 2017 The Cobalt Authors. 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_ |