// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PPAPI_SHARED_IMPL_VAR_TRACKER_H_ #define PPAPI_SHARED_IMPL_VAR_TRACKER_H_ #include <stdint.h> #include <memory> #include <unordered_map> #include <vector> #include "base/memory/ref_counted.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/threading/thread_checker.h" #include "ppapi/c/pp_instance.h" #include "ppapi/c/pp_module.h" #include "ppapi/c/pp_resource.h" #include "ppapi/c/pp_var.h" #include "ppapi/shared_impl/host_resource.h" #include "ppapi/shared_impl/ppapi_shared_export.h" #include "ppapi/shared_impl/var.h" namespace IPC { class Message; } // namespace IPC namespace ppapi { class ArrayBufferVar; // Tracks non-POD (refcounted) var objects held by a plugin. // // The tricky part is the concept of a "tracked object". These are only // necessary in the plugin side of the proxy when running out of process. A // tracked object is one that the plugin is aware of, but doesn't hold a // reference to. This will happen when the plugin is passed an object as an // argument from the host (renderer) as an input argument to a sync function, // but where ownership is not passed. // // This class maintains the "track_with_no_reference_count" but doesn't do // anything with it other than call virtual functions. The interesting parts // are added by the PluginObjectVar derived from this class. class PPAPI_SHARED_EXPORT VarTracker { … }; } // namespace ppapi #endif // PPAPI_SHARED_IMPL_VAR_TRACKER_H_