#ifndef IOS_WEB_JS_FEATURES_CLIPBOARD_CLIPBOARD_JAVA_SCRIPT_FEATURE_H_
#define IOS_WEB_JS_FEATURES_CLIPBOARD_CLIPBOARD_JAVA_SCRIPT_FEATURE_H_
#import <optional>
#import "base/memory/weak_ptr.h"
#import "base/no_destructor.h"
#import "ios/web/public/js_messaging/java_script_feature.h"
namespace web {
class WebFrame;
class ClipboardJavaScriptFeature : public JavaScriptFeature {
public:
static ClipboardJavaScriptFeature* GetInstance();
ClipboardJavaScriptFeature(const ClipboardJavaScriptFeature&) = delete;
ClipboardJavaScriptFeature& operator=(const ClipboardJavaScriptFeature&) =
delete;
private:
friend class base::NoDestructor<ClipboardJavaScriptFeature>;
friend class ClipboardJavaScriptFeatureTest;
ClipboardJavaScriptFeature();
~ClipboardJavaScriptFeature() override;
std::optional<std::string> GetScriptMessageHandlerName() const override;
void ScriptMessageReceived(WebState* web_state,
const ScriptMessage& message) override;
void HandleClipboardRequest(WebState* web_state,
WebFrame* web_frame,
int request_id,
const std::string& command);
void ResolveClipboardRequest(int request_id,
base::WeakPtr<WebFrame> web_frame,
const std::string& command,
bool allowed);
};
}
#endif