Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(871)

Side by Side Diff: ppapi/shared_impl/resource.cc

Issue 10790078: PPAPI: Make PPB_MessageLoop_Dev::GetForMainThread work (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: add a real test Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ppapi/shared_impl/resource.h" 5 #include "ppapi/shared_impl/resource.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "ppapi/shared_impl/resource_tracker.h" 8 #include "ppapi/shared_impl/resource_tracker.h"
9 #include "ppapi/shared_impl/ppapi_globals.h" 9 #include "ppapi/shared_impl/ppapi_globals.h"
10 10
11 namespace ppapi { 11 namespace ppapi {
12 12
13 Resource::Resource(ResourceObjectType type, PP_Instance instance) 13 Resource::Resource(ResourceObjectType type, PP_Instance instance)
14 : host_resource_(HostResource::MakeInstanceOnly(instance)) { 14 : host_resource_(HostResource::MakeInstanceOnly(instance)) {
15 // The instance should always be valid (nonzero). 15 // The instance should be valid (nonzero).
16 DCHECK(instance); 16 DCHECK(instance);
17 17
18 pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this); 18 pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this);
19 if (type == OBJECT_IS_IMPL) { 19 if (type == OBJECT_IS_IMPL) {
20 // For the in-process case, the host resource and resource are the same. 20 // For the in-process case, the host resource and resource are the same.
21 // 21 //
22 // Note that we need to have set the instance above (in the initializer 22 // Note that we need to have set the instance above (in the initializer
23 // list) since AddResource needs our instance() getter to work, and that 23 // list) since AddResource needs our instance() getter to work, and that
24 // goes through the host resource. When we get the "real" resource ID, 24 // goes through the host resource. When we get the "real" resource ID,
25 // we re-set the host_resource. 25 // we re-set the host_resource.
26 host_resource_.SetHostResource(instance, pp_resource_); 26 host_resource_.SetHostResource(instance, pp_resource_);
27 } 27 }
28 } 28 }
29 29
30 Resource::Resource(ResourceObjectType type, const HostResource& host_resource) 30 Resource::Resource(ResourceObjectType type, const HostResource& host_resource)
31 : host_resource_(host_resource) { 31 : host_resource_(host_resource) {
32 pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this); 32 pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this);
33 if (type == OBJECT_IS_IMPL) { 33 if (type == OBJECT_IS_IMPL) {
34 // When using this constructor for the implementation, the resource ID 34 // When using this constructor for the implementation, the resource ID
35 // should not have been passed in. 35 // should not have been passed in.
36 DCHECK(host_resource_.host_resource() == 0); 36 DCHECK(host_resource_.host_resource() == 0);
37 37
38 // See previous constructor. 38 // See previous constructor.
39 host_resource_.SetHostResource(host_resource.instance(), pp_resource_); 39 host_resource_.SetHostResource(host_resource.instance(), pp_resource_);
40 } 40 }
41 } 41 }
42 42
43 Resource::Resource(Untracked) {
44 pp_resource_ = PpapiGlobals::Get()->GetResourceTracker()->AddResource(this);
45 }
46
43 Resource::~Resource() { 47 Resource::~Resource() {
44 PpapiGlobals::Get()->GetResourceTracker()->RemoveResource(this); 48 PpapiGlobals::Get()->GetResourceTracker()->RemoveResource(this);
45 } 49 }
46 50
47 PP_Resource Resource::GetReference() { 51 PP_Resource Resource::GetReference() {
48 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(pp_resource()); 52 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(pp_resource());
49 return pp_resource(); 53 return pp_resource();
50 } 54 }
51 55
52 void Resource::LastPluginRefWasDeleted() { 56 void Resource::LastPluginRefWasDeleted() {
(...skipping 13 matching lines...) Expand all
66 message); 70 message);
67 } 71 }
68 72
69 #define DEFINE_TYPE_GETTER(RESOURCE) \ 73 #define DEFINE_TYPE_GETTER(RESOURCE) \
70 thunk::RESOURCE* Resource::As##RESOURCE() { return NULL; } 74 thunk::RESOURCE* Resource::As##RESOURCE() { return NULL; }
71 FOR_ALL_PPAPI_RESOURCE_APIS(DEFINE_TYPE_GETTER) 75 FOR_ALL_PPAPI_RESOURCE_APIS(DEFINE_TYPE_GETTER)
72 #undef DEFINE_TYPE_GETTER 76 #undef DEFINE_TYPE_GETTER
73 77
74 } // namespace ppapi 78 } // namespace ppapi
75 79
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698