summaryrefslogtreecommitdiffstats
path: root/ppapi/shared_impl
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/shared_impl')
-rw-r--r--ppapi/shared_impl/ppapi_globals.cc23
-rw-r--r--ppapi/shared_impl/ppapi_globals.h36
-rw-r--r--ppapi/shared_impl/resource.cc10
-rw-r--r--ppapi/shared_impl/resource_tracker_unittest.cc11
-rw-r--r--ppapi/shared_impl/scoped_pp_resource.cc6
-rw-r--r--ppapi/shared_impl/test_globals.cc23
-rw-r--r--ppapi/shared_impl/test_globals.h35
-rw-r--r--ppapi/shared_impl/tracker_base.h3
-rw-r--r--ppapi/shared_impl/url_util_impl.cc3
-rw-r--r--ppapi/shared_impl/var.cc6
-rw-r--r--ppapi/shared_impl/video_decoder_impl.cc4
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) {