blob: a165ccb22c64b630632c8b86f64faae3d4ba9a00 [file] [log] [blame]
// 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 IOS_WEB_WEB_STATE_UI_WEB_VIEW_JS_UTILS_H_
#define IOS_WEB_WEB_STATE_UI_WEB_VIEW_JS_UTILS_H_
#import <Foundation/Foundation.h>
#include <memory>
#import "ios/web/public/block_types.h"
@class WKWebView;
namespace base {
class Value;
} // namespace base
namespace web {
// The domain for JS evaluation NSErrors in web.
extern NSString* const kJSEvaluationErrorDomain;
// The maximum recursion depth when parsing JS results.
extern int const kMaximumParsingRecursionDepth;
// The type of errors that can occur while evaluating JS.
enum JSEvaluationErrorCode {
// No web view present to evaluate JS.
JS_EVALUATION_ERROR_CODE_NO_WEB_VIEW = -1000,
// JS evaluation is not allowed for security reasons.
JS_EVALUATION_ERROR_CODE_REJECTED = -1001,
};
// Converts result of WKWebView script evaluation to base::Value.
std::unique_ptr<base::Value> ValueResultFromWKResult(id result);
// Executes JavaScript on WKWebView. If the web view cannot execute JS at the
// moment, |completion_handler| is called with an NSError.
void ExecuteJavaScript(WKWebView* web_view,
NSString* script,
JavaScriptResultBlock completion_handler);
} // namespace web
#endif // IOS_WEB_WEB_STATE_UI_WEB_VIEW_JS_UTILS_H_