| Index: webkit/glue/plugins/pepper_var.cc
|
| ===================================================================
|
| --- webkit/glue/plugins/pepper_var.cc (revision 58357)
|
| +++ webkit/glue/plugins/pepper_var.cc (working copy)
|
| @@ -24,38 +24,6 @@
|
| void Release(PP_Var var);
|
| PP_Var VarFromUtf8(const char* data, uint32_t len);
|
|
|
| -// ---------------------------------------------------------------------------
|
| -// Exceptions
|
| -
|
| -class TryCatch {
|
| - public:
|
| - TryCatch(PP_Var* exception) : exception_(exception) {
|
| - WebBindings::pushExceptionHandler(&TryCatch::Catch, this);
|
| - }
|
| -
|
| - ~TryCatch() {
|
| - WebBindings::popExceptionHandler();
|
| - }
|
| -
|
| - bool HasException() const {
|
| - return exception_ && exception_->type != PP_VARTYPE_VOID;
|
| - }
|
| -
|
| - void SetException(const char* message) {
|
| - DCHECK(!HasException());
|
| - if (exception_)
|
| - *exception_ = VarFromUtf8(message, strlen(message));
|
| - }
|
| -
|
| - private:
|
| - static void Catch(void* self, const NPUTF8* message) {
|
| - static_cast<TryCatch*>(self)->SetException(message);
|
| - }
|
| -
|
| - // May be null if the consumer isn't interesting in catching exceptions.
|
| - PP_Var* exception_;
|
| -};
|
| -
|
| const char kInvalidObjectException[] = "Error: Invalid object";
|
| const char kInvalidPropertyException[] = "Error: Invalid property";
|
| const char kUnableToGetPropertyException[] = "Error: Unable to get property";
|
| @@ -78,30 +46,6 @@
|
| return reinterpret_cast<NPObject*>(var.value.as_id);
|
| }
|
|
|
| -// Returns a PP_Var that corresponds to the given NPVariant. The contents of
|
| -// the NPVariant will be copied unless the NPVariant corresponds to an object.
|
| -PP_Var NPVariantToPPVar(const NPVariant* variant) {
|
| - switch (variant->type) {
|
| - case NPVariantType_Void:
|
| - return PP_MakeVoid();
|
| - case NPVariantType_Null:
|
| - return PP_MakeNull();
|
| - case NPVariantType_Bool:
|
| - return PP_MakeBool(NPVARIANT_TO_BOOLEAN(*variant));
|
| - case NPVariantType_Int32:
|
| - return PP_MakeInt32(NPVARIANT_TO_INT32(*variant));
|
| - case NPVariantType_Double:
|
| - return PP_MakeDouble(NPVARIANT_TO_DOUBLE(*variant));
|
| - case NPVariantType_String:
|
| - return VarFromUtf8(NPVARIANT_TO_STRING(*variant).UTF8Characters,
|
| - NPVARIANT_TO_STRING(*variant).UTF8Length);
|
| - case NPVariantType_Object:
|
| - return NPObjectToPPVar(NPVARIANT_TO_OBJECT(*variant));
|
| - }
|
| - NOTREACHED();
|
| - return PP_MakeVoid();
|
| -}
|
| -
|
| // Returns a NPVariant that corresponds to the given PP_Var. The contents of
|
| // the PP_Var will be copied unless the PP_Var corresponds to an object.
|
| NPVariant PPVarToNPVariant(PP_Var var) {
|
| @@ -845,6 +789,29 @@
|
| return ret;
|
| }
|
|
|
| +PP_Var NPVariantToPPVar(const NPVariant* variant) {
|
| + switch (variant->type) {
|
| + case NPVariantType_Void:
|
| + return PP_MakeVoid();
|
| + case NPVariantType_Null:
|
| + return PP_MakeNull();
|
| + case NPVariantType_Bool:
|
| + return PP_MakeBool(NPVARIANT_TO_BOOLEAN(*variant));
|
| + case NPVariantType_Int32:
|
| + return PP_MakeInt32(NPVARIANT_TO_INT32(*variant));
|
| + case NPVariantType_Double:
|
| + return PP_MakeDouble(NPVARIANT_TO_DOUBLE(*variant));
|
| + case NPVariantType_String:
|
| + return VarFromUtf8(NPVARIANT_TO_STRING(*variant).UTF8Characters,
|
| + NPVARIANT_TO_STRING(*variant).UTF8Length);
|
| + case NPVariantType_Object:
|
| + return NPObjectToPPVar(NPVARIANT_TO_OBJECT(*variant));
|
| + }
|
| + NOTREACHED();
|
| + return PP_MakeVoid();
|
| +}
|
| +
|
| +
|
| NPObject* GetNPObject(PP_Var var) {
|
| if (var.type != PP_VARTYPE_OBJECT)
|
| return NULL;
|
| @@ -862,4 +829,28 @@
|
| return GetStringUnchecked(var);
|
| }
|
|
|
| +TryCatch::TryCatch(PP_Var* exception) : exception_(exception) {
|
| + WebBindings::pushExceptionHandler(&TryCatch::Catch, this);
|
| +}
|
| +
|
| +TryCatch::~TryCatch() {
|
| + WebBindings::popExceptionHandler();
|
| +}
|
| +
|
| +bool TryCatch::HasException() const {
|
| + return exception_ && exception_->type != PP_VARTYPE_VOID;
|
| +}
|
| +
|
| +void TryCatch::SetException(const char* message) {
|
| + DCHECK(!HasException());
|
| + if (exception_)
|
| + *exception_ = VarFromUtf8(message, strlen(message));
|
| +}
|
| +
|
| +// static
|
| +void TryCatch::Catch(void* self, const char* message) {
|
| + static_cast<TryCatch*>(self)->SetException(message);
|
| +}
|
| +
|
| +
|
| } // namespace pepper
|
|
|