| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * * Redistributions of source code must retain the above copyright | 7 * * Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * * Redistributions in binary form must reproduce the above copyright | 9 * * Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "modules/device_orientation/DeviceMotionData.h" | 30 #include "modules/device_orientation/DeviceMotionData.h" |
| 31 #include <v8.h> | 31 #include <v8.h> |
| 32 | 32 |
| 33 namespace WebCore { | 33 namespace WebCore { |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 PassRefPtrWillBeRawPtr<DeviceMotionData::Acceleration> readAccelerationArgument(
v8::Local<v8::Value> value, v8::Isolate* isolate) | 37 PassRefPtrWillBeRawPtr<DeviceMotionData::Acceleration> readAccelerationArgument(
v8::Local<v8::Value> value, v8::Isolate* isolate) |
| 38 { | 38 { |
| 39 if (isUndefinedOrNull(value)) | 39 if (isUndefinedOrNull(value)) |
| 40 return 0; | 40 return nullptr; |
| 41 | 41 |
| 42 // Given the test above, this will always yield an object. | 42 // Given the test above, this will always yield an object. |
| 43 v8::Local<v8::Object> object = value->ToObject(); | 43 v8::Local<v8::Object> object = value->ToObject(); |
| 44 | 44 |
| 45 v8::Local<v8::Value> xValue = object->Get(v8AtomicString(isolate, "x")); | 45 v8::Local<v8::Value> xValue = object->Get(v8AtomicString(isolate, "x")); |
| 46 if (xValue.IsEmpty()) | 46 if (xValue.IsEmpty()) |
| 47 return 0; | 47 return nullptr; |
| 48 bool canProvideX = !isUndefinedOrNull(xValue); | 48 bool canProvideX = !isUndefinedOrNull(xValue); |
| 49 double x = xValue->NumberValue(); | 49 double x = xValue->NumberValue(); |
| 50 | 50 |
| 51 v8::Local<v8::Value> yValue = object->Get(v8AtomicString(isolate, "y")); | 51 v8::Local<v8::Value> yValue = object->Get(v8AtomicString(isolate, "y")); |
| 52 if (yValue.IsEmpty()) | 52 if (yValue.IsEmpty()) |
| 53 return 0; | 53 return nullptr; |
| 54 bool canProvideY = !isUndefinedOrNull(yValue); | 54 bool canProvideY = !isUndefinedOrNull(yValue); |
| 55 double y = yValue->NumberValue(); | 55 double y = yValue->NumberValue(); |
| 56 | 56 |
| 57 v8::Local<v8::Value> zValue = object->Get(v8AtomicString(isolate, "z")); | 57 v8::Local<v8::Value> zValue = object->Get(v8AtomicString(isolate, "z")); |
| 58 if (zValue.IsEmpty()) | 58 if (zValue.IsEmpty()) |
| 59 return 0; | 59 return nullptr; |
| 60 bool canProvideZ = !isUndefinedOrNull(zValue); | 60 bool canProvideZ = !isUndefinedOrNull(zValue); |
| 61 double z = zValue->NumberValue(); | 61 double z = zValue->NumberValue(); |
| 62 | 62 |
| 63 if (!canProvideX && !canProvideY && !canProvideZ) | 63 if (!canProvideX && !canProvideY && !canProvideZ) |
| 64 return 0; | 64 return nullptr; |
| 65 | 65 |
| 66 return DeviceMotionData::Acceleration::create(canProvideX, x, canProvideY, y
, canProvideZ, z); | 66 return DeviceMotionData::Acceleration::create(canProvideX, x, canProvideY, y
, canProvideZ, z); |
| 67 } | 67 } |
| 68 | 68 |
| 69 PassRefPtrWillBeRawPtr<DeviceMotionData::RotationRate> readRotationRateArgument(
v8::Local<v8::Value> value, v8::Isolate* isolate) | 69 PassRefPtrWillBeRawPtr<DeviceMotionData::RotationRate> readRotationRateArgument(
v8::Local<v8::Value> value, v8::Isolate* isolate) |
| 70 { | 70 { |
| 71 if (isUndefinedOrNull(value)) | 71 if (isUndefinedOrNull(value)) |
| 72 return 0; | 72 return nullptr; |
| 73 | 73 |
| 74 // Given the test above, this will always yield an object. | 74 // Given the test above, this will always yield an object. |
| 75 v8::Local<v8::Object> object = value->ToObject(); | 75 v8::Local<v8::Object> object = value->ToObject(); |
| 76 | 76 |
| 77 v8::Local<v8::Value> alphaValue = object->Get(v8AtomicString(isolate, "alpha
")); | 77 v8::Local<v8::Value> alphaValue = object->Get(v8AtomicString(isolate, "alpha
")); |
| 78 if (alphaValue.IsEmpty()) | 78 if (alphaValue.IsEmpty()) |
| 79 return 0; | 79 return nullptr; |
| 80 bool canProvideAlpha = !isUndefinedOrNull(alphaValue); | 80 bool canProvideAlpha = !isUndefinedOrNull(alphaValue); |
| 81 double alpha = alphaValue->NumberValue(); | 81 double alpha = alphaValue->NumberValue(); |
| 82 | 82 |
| 83 v8::Local<v8::Value> betaValue = object->Get(v8AtomicString(isolate, "beta")
); | 83 v8::Local<v8::Value> betaValue = object->Get(v8AtomicString(isolate, "beta")
); |
| 84 if (betaValue.IsEmpty()) | 84 if (betaValue.IsEmpty()) |
| 85 return 0; | 85 return nullptr; |
| 86 bool canProvideBeta = !isUndefinedOrNull(betaValue); | 86 bool canProvideBeta = !isUndefinedOrNull(betaValue); |
| 87 double beta = betaValue->NumberValue(); | 87 double beta = betaValue->NumberValue(); |
| 88 | 88 |
| 89 v8::Local<v8::Value> gammaValue = object->Get(v8AtomicString(isolate, "gamma
")); | 89 v8::Local<v8::Value> gammaValue = object->Get(v8AtomicString(isolate, "gamma
")); |
| 90 if (gammaValue.IsEmpty()) | 90 if (gammaValue.IsEmpty()) |
| 91 return 0; | 91 return nullptr; |
| 92 bool canProvideGamma = !isUndefinedOrNull(gammaValue); | 92 bool canProvideGamma = !isUndefinedOrNull(gammaValue); |
| 93 double gamma = gammaValue->NumberValue(); | 93 double gamma = gammaValue->NumberValue(); |
| 94 | 94 |
| 95 if (!canProvideAlpha && !canProvideBeta && !canProvideGamma) | 95 if (!canProvideAlpha && !canProvideBeta && !canProvideGamma) |
| 96 return 0; | 96 return nullptr; |
| 97 | 97 |
| 98 return DeviceMotionData::RotationRate::create(canProvideAlpha, alpha, canPro
videBeta, beta, canProvideGamma, gamma); | 98 return DeviceMotionData::RotationRate::create(canProvideAlpha, alpha, canPro
videBeta, beta, canProvideGamma, gamma); |
| 99 } | 99 } |
| 100 | 100 |
| 101 } // namespace | 101 } // namespace |
| 102 | 102 |
| 103 void V8DeviceMotionEvent::initDeviceMotionEventMethodCustom(const v8::FunctionCa
llbackInfo<v8::Value>& info) | 103 void V8DeviceMotionEvent::initDeviceMotionEventMethodCustom(const v8::FunctionCa
llbackInfo<v8::Value>& info) |
| 104 { | 104 { |
| 105 DeviceMotionEvent* imp = V8DeviceMotionEvent::toNative(info.Holder()); | 105 DeviceMotionEvent* imp = V8DeviceMotionEvent::toNative(info.Holder()); |
| 106 v8::Isolate* isolate = info.GetIsolate(); | 106 v8::Isolate* isolate = info.GetIsolate(); |
| 107 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, type, info[0]); | 107 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, type, info[0]); |
| 108 bool bubbles = info[1]->BooleanValue(); | 108 bool bubbles = info[1]->BooleanValue(); |
| 109 bool cancelable = info[2]->BooleanValue(); | 109 bool cancelable = info[2]->BooleanValue(); |
| 110 RefPtrWillBeRawPtr<DeviceMotionData::Acceleration> acceleration = readAccele
rationArgument(info[3], isolate); | 110 RefPtrWillBeRawPtr<DeviceMotionData::Acceleration> acceleration = readAccele
rationArgument(info[3], isolate); |
| 111 RefPtrWillBeRawPtr<DeviceMotionData::Acceleration> accelerationIncludingGrav
ity = readAccelerationArgument(info[4], isolate); | 111 RefPtrWillBeRawPtr<DeviceMotionData::Acceleration> accelerationIncludingGrav
ity = readAccelerationArgument(info[4], isolate); |
| 112 RefPtrWillBeRawPtr<DeviceMotionData::RotationRate> rotationRate = readRotati
onRateArgument(info[5], isolate); | 112 RefPtrWillBeRawPtr<DeviceMotionData::RotationRate> rotationRate = readRotati
onRateArgument(info[5], isolate); |
| 113 bool intervalProvided = !isUndefinedOrNull(info[6]); | 113 bool intervalProvided = !isUndefinedOrNull(info[6]); |
| 114 double interval = info[6]->NumberValue(); | 114 double interval = info[6]->NumberValue(); |
| 115 RefPtrWillBeRawPtr<DeviceMotionData> deviceMotionData = DeviceMotionData::cr
eate(acceleration.release(), accelerationIncludingGravity.release(), rotationRat
e.release(), intervalProvided, interval); | 115 RefPtrWillBeRawPtr<DeviceMotionData> deviceMotionData = DeviceMotionData::cr
eate(acceleration.release(), accelerationIncludingGravity.release(), rotationRat
e.release(), intervalProvided, interval); |
| 116 imp->initDeviceMotionEvent(type, bubbles, cancelable, deviceMotionData.get()
); | 116 imp->initDeviceMotionEvent(type, bubbles, cancelable, deviceMotionData.get()
); |
| 117 } | 117 } |
| 118 | 118 |
| 119 } // namespace WebCore | 119 } // namespace WebCore |
| OLD | NEW |