user_gestures_native_handler.cc revision 010d83a9304c5a91596085d917d248abff47903a
1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/renderer/user_gestures_native_handler.h" 6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/bind.h" 8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/renderer/script_context.h" 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebScopedUserGesture.h" 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebUserGestureIndicator.h" 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace extensions { 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)UserGesturesNativeHandler::UserGesturesNativeHandler(ScriptContext* context) 15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) : ObjectBackedNativeHandler(context) { 16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RouteFunction("IsProcessingUserGesture", 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Bind(&UserGesturesNativeHandler::IsProcessingUserGesture, 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RouteFunction("RunWithUserGesture", 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Bind(&UserGesturesNativeHandler::RunWithUserGesture, 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RouteFunction("RunWithoutUserGesture", 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Bind(&UserGesturesNativeHandler::RunWithoutUserGesture, 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void UserGesturesNativeHandler::IsProcessingUserGesture( 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const v8::FunctionCallbackInfo<v8::Value>& args) { 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) args.GetReturnValue().Set(v8::Boolean::New( 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) args.GetIsolate(), 31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebUserGestureIndicator::isProcessingUserGesture())); 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void UserGesturesNativeHandler::RunWithUserGesture( 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const v8::FunctionCallbackInfo<v8::Value>& args) { 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebScopedUserGesture user_gesture; 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) CHECK_EQ(args.Length(), 1); 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) CHECK(args[0]->IsFunction()); 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) v8::Handle<v8::Value> no_args; 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) context()->CallFunction(v8::Handle<v8::Function>::Cast(args[0]), 0, &no_args); 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void UserGesturesNativeHandler::RunWithoutUserGesture( 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const v8::FunctionCallbackInfo<v8::Value>& args) { 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebUserGestureIndicator::consumeUserGesture(); 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) CHECK_EQ(args.Length(), 1); 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) CHECK(args[0]->IsFunction()); 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) v8::Handle<v8::Value> no_args; 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) context()->CallFunction(v8::Handle<v8::Function>::Cast(args[0]), 0, &no_args); 50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace extensions 53