diff options
Diffstat (limited to 'ppapi/shared_impl')
-rw-r--r-- | ppapi/shared_impl/ppapi_globals.cc | 23 | ||||
-rw-r--r-- | ppapi/shared_impl/ppapi_globals.h | 36 | ||||
-rw-r--r-- | ppapi/shared_impl/resource.cc | 10 | ||||
-rw-r--r-- | ppapi/shared_impl/resource_tracker_unittest.cc | 11 | ||||
-rw-r--r-- | ppapi/shared_impl/scoped_pp_resource.cc | 6 | ||||
-rw-r--r-- | ppapi/shared_impl/test_globals.cc | 23 | ||||
-rw-r--r-- | ppapi/shared_impl/test_globals.h | 35 | ||||
-rw-r--r-- | ppapi/shared_impl/tracker_base.h | 3 | ||||
-rw-r--r-- | ppapi/shared_impl/url_util_impl.cc | 3 | ||||
-rw-r--r-- | ppapi/shared_impl/var.cc | 6 | ||||
-rw-r--r-- | ppapi/shared_impl/video_decoder_impl.cc | 4 |
11 files changed, 135 insertions, 25 deletions
diff --git a/ppapi/shared_impl/ppapi_globals.cc b/ppapi/shared_impl/ppapi_globals.cc new file mode 100644 index 0000000..9b5e9a8 --- /dev/null +++ b/ppapi/shared_impl/ppapi_globals.cc @@ -0,0 +1,23 @@ +// Copyright (c) 2011 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 "ppapi/shared_impl/ppapi_globals.h" + +#include "base/logging.h" + +namespace ppapi { + +PpapiGlobals* PpapiGlobals::ppapi_globals_ = NULL; + +PpapiGlobals::PpapiGlobals() { + DCHECK(!ppapi_globals_); + ppapi_globals_ = this; +} + +PpapiGlobals::~PpapiGlobals() { + DCHECK(ppapi_globals_ == this); + ppapi_globals_ = NULL; +} + +} // namespace ppapi diff --git a/ppapi/shared_impl/ppapi_globals.h b/ppapi/shared_impl/ppapi_globals.h new file mode 100644 index 0000000..d0936ee --- /dev/null +++ b/ppapi/shared_impl/ppapi_globals.h @@ -0,0 +1,36 @@ +// Copyright (c) 2011 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. + +#ifndef PPAPI_SHARED_IMPL_PPAPI_GLOBALS_H_ +#define PPAPI_SHARED_IMPL_PPAPI_GLOBALS_H_ + +#include "base/basictypes.h" +#include "ppapi/shared_impl/ppapi_shared_export.h" + +namespace ppapi { + +class ResourceTracker; +class VarTracker; + +// Abstract base class +class PPAPI_SHARED_EXPORT PpapiGlobals { + public: + PpapiGlobals(); + virtual ~PpapiGlobals(); + + // Getter for the global singleton. + inline static PpapiGlobals* Get() { return ppapi_globals_; } + + virtual ResourceTracker* GetResourceTracker() = 0; + virtual VarTracker* GetVarTracker() = 0; + + private: + static PpapiGlobals* ppapi_globals_; + + DISALLOW_COPY_AND_ASSIGN(PpapiGlobals); +}; + +} // namespace ppapi + +#endif // PPAPI_SHARED_IMPL_PPAPI_GLOBALS_H_ diff --git a/ppapi/shared_impl/resource.cc b/ppapi/shared_impl/resource.cc index 11ac86a..4e1f2a8 100644 --- a/ppapi/shared_impl/resource.cc +++ b/ppapi/shared_impl/resource.cc @@ -6,7 +6,7 @@ #include "base/logging.h" #include "ppapi/shared_impl/resource_tracker.h" -#include "ppapi/shared_impl/tracker_base.h" +#include "ppapi/shared_impl/ppapi_globals.h" namespace ppapi { @@ -20,21 +20,21 @@ Resource::Resource(PP_Instance instance) { // the host resource, so we need to fill that first even though we don't // have a resource ID yet, then fill the resource in later. host_resource_ = HostResource::MakeInstanceOnly(instance); - pp_resource_ = TrackerBase::Get()->GetResourceTracker()->AddResource(this); + pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this); host_resource_.SetHostResource(instance, pp_resource_); } Resource::Resource(const HostResource& host_resource) : host_resource_(host_resource) { - pp_resource_ = TrackerBase::Get()->GetResourceTracker()->AddResource(this); + pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this); } Resource::~Resource() { - TrackerBase::Get()->GetResourceTracker()->RemoveResource(this); + PpapiGlobals::Get()->GetResourceTracker()->RemoveResource(this); } PP_Resource Resource::GetReference() { - TrackerBase::Get()->GetResourceTracker()->AddRefResource(pp_resource()); + PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(pp_resource()); return pp_resource(); } diff --git a/ppapi/shared_impl/resource_tracker_unittest.cc b/ppapi/shared_impl/resource_tracker_unittest.cc index 371f6e77..2e22d6a 100644 --- a/ppapi/shared_impl/resource_tracker_unittest.cc +++ b/ppapi/shared_impl/resource_tracker_unittest.cc @@ -7,6 +7,7 @@ #include "base/compiler_specific.h" #include "ppapi/shared_impl/resource.h" #include "ppapi/shared_impl/resource_tracker.h" +#include "ppapi/shared_impl/test_globals.h" #include "ppapi/shared_impl/tracker_base.h" namespace ppapi { @@ -68,20 +69,14 @@ class ResourceTrackerTest : public testing::Test, public TrackerBase { ppapi::proxy::InterfaceID id) OVERRIDE { return NULL; } - virtual VarTracker* GetVarTracker() OVERRIDE { - return NULL; - } - virtual ResourceTracker* GetResourceTracker() OVERRIDE { - return &resource_tracker_; - } virtual PP_Module GetModuleForInstance(PP_Instance /* instance */) OVERRIDE { return 0; } - ResourceTracker& resource_tracker() { return resource_tracker_; } + ResourceTracker& resource_tracker() { return *globals_.GetResourceTracker(); } private: - ResourceTracker resource_tracker_; + TestGlobals globals_; }; // Test that LastPluginRefWasDeleted is called when the last plugin ref was diff --git a/ppapi/shared_impl/scoped_pp_resource.cc b/ppapi/shared_impl/scoped_pp_resource.cc index d5a9748..8399208 100644 --- a/ppapi/shared_impl/scoped_pp_resource.cc +++ b/ppapi/shared_impl/scoped_pp_resource.cc @@ -4,9 +4,9 @@ #include "ppapi/shared_impl/scoped_pp_resource.h" +#include "ppapi/shared_impl/ppapi_globals.h" #include "ppapi/shared_impl/resource.h" #include "ppapi/shared_impl/resource_tracker.h" -#include "ppapi/shared_impl/tracker_base.h" namespace ppapi { @@ -64,12 +64,12 @@ PP_Resource ScopedPPResource::Release() { void ScopedPPResource::CallAddRef() { if (id_) - TrackerBase::Get()->GetResourceTracker()->AddRefResource(id_); + PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(id_); } void ScopedPPResource::CallRelease() { if (id_) - TrackerBase::Get()->GetResourceTracker()->ReleaseResource(id_); + PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(id_); } } // namespace ppapi diff --git a/ppapi/shared_impl/test_globals.cc b/ppapi/shared_impl/test_globals.cc new file mode 100644 index 0000000..17ac224 --- /dev/null +++ b/ppapi/shared_impl/test_globals.cc @@ -0,0 +1,23 @@ +// Copyright (c) 2011 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 "ppapi/shared_impl/test_globals.h" + +namespace ppapi { + +TestGlobals::TestGlobals() : ppapi::PpapiGlobals() { +} + +TestGlobals::~TestGlobals() { +} + +ResourceTracker* TestGlobals::GetResourceTracker() { + return &resource_tracker_; +} + +VarTracker* TestGlobals::GetVarTracker() { + return &var_tracker_; +} + +} // namespace ppapi diff --git a/ppapi/shared_impl/test_globals.h b/ppapi/shared_impl/test_globals.h new file mode 100644 index 0000000..c2062b7 --- /dev/null +++ b/ppapi/shared_impl/test_globals.h @@ -0,0 +1,35 @@ +// Copyright (c) 2011 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. + +#ifndef PPAPI_SHARED_IMPL_TEST_GLOBALS_H_ +#define PPAPI_SHARED_IMPL_TEST_GLOBALS_H_ + +#include "base/compiler_specific.h" +#include "ppapi/shared_impl/ppapi_globals.h" +#include "ppapi/shared_impl/resource_tracker.h" +#include "ppapi/shared_impl/var_tracker.h" + +namespace ppapi { + +// Implementation of PpapiGlobals for tests that don't need either the host- or +// plugin-specific implementations. +class TestGlobals : public PpapiGlobals { + public: + TestGlobals(); + virtual ~TestGlobals(); + + // PpapiGlobals implementation. + virtual ResourceTracker* GetResourceTracker() OVERRIDE; + virtual VarTracker* GetVarTracker() OVERRIDE; + + private: + ResourceTracker resource_tracker_; + VarTracker var_tracker_; + + DISALLOW_COPY_AND_ASSIGN(TestGlobals); +}; + +} // namespace ppapi + +#endif // PPAPI_SHARED_IMPL_TEST_GLOBALS_H_ diff --git a/ppapi/shared_impl/tracker_base.h b/ppapi/shared_impl/tracker_base.h index 9ff19d4..940cef4 100644 --- a/ppapi/shared_impl/tracker_base.h +++ b/ppapi/shared_impl/tracker_base.h @@ -44,9 +44,6 @@ class PPAPI_SHARED_EXPORT TrackerBase { virtual FunctionGroupBase* GetFunctionAPI(PP_Instance inst, proxy::InterfaceID id) = 0; - virtual VarTracker* GetVarTracker() = 0; - virtual ResourceTracker* GetResourceTracker() = 0; - // Returns the PP_Module associated with the given PP_Instance, or 0 on // failure. virtual PP_Module GetModuleForInstance(PP_Instance instance) = 0; diff --git a/ppapi/shared_impl/url_util_impl.cc b/ppapi/shared_impl/url_util_impl.cc index 5bced6c..d295fd7 100644 --- a/ppapi/shared_impl/url_util_impl.cc +++ b/ppapi/shared_impl/url_util_impl.cc @@ -5,6 +5,7 @@ #include "ppapi/shared_impl/url_util_impl.h" #include "googleurl/src/gurl.h" +#include "ppapi/shared_impl/ppapi_globals.h" #include "ppapi/shared_impl/tracker_base.h" #include "ppapi/shared_impl/var.h" #include "ppapi/shared_impl/var_tracker.h" @@ -106,7 +107,7 @@ PP_Var URLUtilImpl::ConvertComponentsAndReturnURL( return url; PP_Var result = Canonicalize(url, components); - TrackerBase::Get()->GetVarTracker()->ReleaseVar(url); + PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(url); return result; } diff --git a/ppapi/shared_impl/var.cc b/ppapi/shared_impl/var.cc index 165b8ff..edf339a 100644 --- a/ppapi/shared_impl/var.cc +++ b/ppapi/shared_impl/var.cc @@ -10,7 +10,7 @@ #include "base/string_number_conversions.h" #include "base/string_util.h" #include "ppapi/c/pp_var.h" -#include "ppapi/shared_impl/tracker_base.h" +#include "ppapi/shared_impl/ppapi_globals.h" #include "ppapi/shared_impl/var_tracker.h" namespace ppapi { @@ -78,7 +78,7 @@ int32 Var::GetExistingVarID() const { } int32 Var::GetOrCreateVarID() { - VarTracker* tracker = TrackerBase::Get()->GetVarTracker(); + VarTracker* tracker = PpapiGlobals::Get()->GetVarTracker(); if (var_id_) { if (!tracker->AddRefVar(var_id_)) return 0; @@ -148,7 +148,7 @@ StringVar* StringVar::FromPPVar(PP_Var var) { if (var.type != PP_VARTYPE_STRING) return NULL; scoped_refptr<Var> var_object( - TrackerBase::Get()->GetVarTracker()->GetVar(var)); + PpapiGlobals::Get()->GetVarTracker()->GetVar(var)); if (!var_object) return NULL; return var_object->AsStringVar(); diff --git a/ppapi/shared_impl/video_decoder_impl.cc b/ppapi/shared_impl/video_decoder_impl.cc index 71921f92..0b6d4e5 100644 --- a/ppapi/shared_impl/video_decoder_impl.cc +++ b/ppapi/shared_impl/video_decoder_impl.cc @@ -32,14 +32,14 @@ void VideoDecoderImpl::InitCommon( DCHECK(graphics_context); DCHECK(!gles2_impl_ && !graphics_context_); gles2_impl_ = gles2_impl; - TrackerBase::Get()->GetResourceTracker()->AddRefResource(graphics_context); + PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(graphics_context); graphics_context_ = graphics_context; } void VideoDecoderImpl::Destroy() { graphics_context_ = 0; gles2_impl_ = NULL; - TrackerBase::Get()->GetResourceTracker()->ReleaseResource(graphics_context_); + PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(graphics_context_); } bool VideoDecoderImpl::SetFlushCallback(PP_CompletionCallback callback) { |