| // Copyright 2021 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 IOS_WEB_JS_MESSAGING_WEB_FRAME_INTERNAL_H_ |
| #define IOS_WEB_JS_MESSAGING_WEB_FRAME_INTERNAL_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/callback.h" |
| #include "base/time/time.h" |
| #include "base/values.h" |
| |
| namespace web { |
| |
| class JavaScriptContentWorld; |
| |
| class WebFrameInternal { |
| public: |
| // Calls the JavaScript function |name| in the frame context in the same |
| // manner as the inherited CallJavaScriptFunction functions. |content_world| |
| // is optional, but if specified, the function will be executed within that |
| // world. |
| virtual bool CallJavaScriptFunctionInContentWorld( |
| const std::string& name, |
| const std::vector<base::Value>& parameters, |
| JavaScriptContentWorld* content_world) = 0; |
| |
| // Calls the JavaScript function in the same condition as |
| // |CallJavaScriptFunctionInContentWorld| above. In addition, |callback| will |
| // be called with the value returned by the JavaScript execution if it |
| // completes before |timeout| is reached. If |timeout| is reached, |callback| |
| // is called with a null value. |
| // Returns true if function call was requested, false otherwise. Function call |
| // may still fail even if this function returns true. Always returns false if |
| // |CanCallJavaScriptFunction| is false. |
| virtual bool CallJavaScriptFunctionInContentWorld( |
| const std::string& name, |
| const std::vector<base::Value>& parameters, |
| JavaScriptContentWorld* content_world, |
| base::OnceCallback<void(const base::Value*)> callback, |
| base::TimeDelta timeout) = 0; |
| }; |
| |
| } // namespace web |
| |
| #endif // IOS_WEB_JS_MESSAGING_WEB_FRAME_INTERNAL_H_ |