// Copyright (c) 2006-2008 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. #include "gpu/np_utils/np_browser_stub.h" #include "base/logging.h" #include "base/message_loop.h" namespace np_utils { StubNPBrowser::StubNPBrowser() : NPBrowser(NULL) { } StubNPBrowser::~StubNPBrowser() { } NPIdentifier StubNPBrowser::GetStringIdentifier(const NPUTF8* name) { static std::set names; std::set::iterator it = names.find(name); if (it == names.end()) { it = names.insert(name).first; } return const_cast((*it).c_str()); } void* StubNPBrowser::MemAlloc(size_t size) { return malloc(size); } void StubNPBrowser::MemFree(void* p) { free(p); } NPObject* StubNPBrowser::CreateObject(NPP npp, const NPClass* cl) { NPObject* object = cl->allocate(npp, const_cast(cl)); object->referenceCount = 1; object->_class = const_cast(cl); return object; } NPObject* StubNPBrowser::RetainObject(NPObject* object) { ++object->referenceCount; return object; } void StubNPBrowser::ReleaseObject(NPObject* object) { DCHECK_GE(object->referenceCount, 0u); --object->referenceCount; if (object->referenceCount == 0) { object->_class->deallocate(object); } } void StubNPBrowser::ReleaseVariantValue(NPVariant* variant) { if (NPVARIANT_IS_STRING(*variant)) { MemFree(const_cast(variant->value.stringValue.UTF8Characters)); } else if (NPVARIANT_IS_OBJECT(*variant)) { ReleaseObject(NPVARIANT_TO_OBJECT(*variant)); } } bool StubNPBrowser::HasProperty(NPP npp, NPObject* object, NPIdentifier name) { return object->_class->hasProperty(object, name); } bool StubNPBrowser::GetProperty(NPP npp, NPObject* object, NPIdentifier name, NPVariant* result) { return object->_class->getProperty(object, name, result); } bool StubNPBrowser::SetProperty(NPP npp, NPObject* object, NPIdentifier name, const NPVariant* result) { return object->_class->setProperty(object, name, result); } bool StubNPBrowser::RemoveProperty(NPP npp, NPObject* object, NPIdentifier name) { return object->_class->removeProperty(object, name); } bool StubNPBrowser::HasMethod(NPP npp, NPObject* object, NPIdentifier name) { return object->_class->hasMethod(object, name); } bool StubNPBrowser::Invoke(NPP npp, NPObject* object, NPIdentifier name, const NPVariant* args, uint32_t num_args, NPVariant* result) { return object->_class->invoke(object, name, args, num_args, result); } NPObject* StubNPBrowser::GetWindowNPObject(NPP npp) { return NULL; } void StubNPBrowser::PluginThreadAsyncCall( NPP npp, PluginThreadAsyncCallProc callback, void* data) { MessageLoop::current()->PostTask(FROM_HERE, NewRunnableFunction(callback, data)); } uint32 StubNPBrowser::ScheduleTimer(NPP npp, uint32 interval, bool repeat, TimerProc callback) { return 0; } void StubNPBrowser::UnscheduleTimer(NPP npp, uint32 timer_id) { } } // namespace np_utils